(PHP 4 >= 4.1.0, PHP 5, PHP 7)
Die COM-Klasse erlaubt Ihnen, ein OLE-kompatibles COM-Objekt zu erzeugen, seine Methoden aufzurufen und auf seine Eigenschaften zuzugreifen.
$obj = new COM("Application.ID")
$module_name
[, mixed $server_name
[, int $codepage
[, string $typelib
]]] )COM-Klassenkonstruktor. Die Parameter haben die folgende Bedeutung:
NULL
angegeben, wird das Objekt auf dem Standardwert dieser Applikation
ausgeführt. Der Standardwert ist typischerweise die Ausführung auf der lokalen
Maschine, obwohl der Administrator die Applikation so konfiguriert haben kann,
dass sie auf einer anderen Maschine startet.
Wenn Sie einen Nicht-NULL
-Wert für den Server angeben, wird PHP das Laden des
Objekts zurückweisen, wenn nicht auch die Konfigurationsoption auf TRUE
gesetzt ist.
Wenn server_name
ein Array ist, sollte es die folgenden
Elemente enthalten (Groß- und Kleinschreibung wird unterschiedlich interpretiert!).
Beachten Sie, dass alle Elemente optional sind (obwohl Sie bei der Angabe eines
Usernamens auch ein Passwort angeben müssen). Wenn Sie die Server-Einstellung
weglassen, wird der Standardserver verwendet (wie oben beschrieben), und die
Instanziierung des Objekts ist nicht von der -Direktive betroffen.
server_name -Schlüssel |
Typ | Beschreibung |
---|---|---|
Server | string | Der Name des Servers. |
Username | string | Der Username, der für die Verbindung verwendet wird. |
Password | string | Das Passwort für Username . |
Flags | integer | Eine oder mehrere der folgenden Konstanten, mittels logischem
OR verknüpft:
CLSCTX_INPROC_SERVER ,
CLSCTX_INPROC_HANDLER ,
CLSCTX_LOCAL_SERVER ,
CLSCTX_REMOTE_SERVER ,
CLSCTX_SERVER und CLSCTX_ALL .
Wenn nichts anderes angegeben ist, wird als Standardwert
CLSCTX_SERVER angenommen, sofern Sie ebenfalls
den Server -Parameter nicht angegeben haben. Ist
der Server angegeben, wird CLSCTX_REMOTE_SERVER
verwendet. Konsultieren Sie die Microsoftdokumentation für
CoCreateInstance, wenn Sie mehr über die Bedeutung dieser Konstanten
erfahren wollen; normalerweise werden Sie sie jedoch nicht verwenden.
|
CP_ACP
(verwende die Standard ANSI-Codepage des Systems - das
ist der Standardwert, wenn dieser Parameter ausgelassen wird),
CP_MACCP
,
CP_OEMCP
, CP_SYMBOL
,
CP_THREAD_ACP
(verwende die Codepage/Locale, die für
den aktuell ausgeführten Thread angegeben wurde), CP_UTF7
und CP_UTF8
. Ebenfalls kann die Nummer einer bestimmten
Codepage verwendet werden; weitere Details zu Codepages und ihren numerischen
Werten können der Microsoft-Dokumentation entnommen werden.
Das zurückgegebene Objekt ist überladen, was bedeutet, dass PHP keine bestimmten Methoden kennt, wie das normalerweise der Fall ist; statt dessen wird jeder Eigenschafts- oder Methodenzugriff an COM weitergereicht.
PHP erkennt automatisch Methoden, die Referenzparameter erwarten, und wird reguläre PHP-Variablen automatisch in eine Form umwandeln, die per Referenz übergeben werden kann. Das heißt, das die Methode sehr natürlich aufgerufen werden kann; es ist kein Zusatzaufwand nötig.
Beispiel #1 COM-Beispiel 1
<?php
// Word starten
$word = new COM("word.application") or die("Konnte Word nicht instanziieren");
echo "Word geladen, Version {$word->Version}\n";
//sichtbar machen
$word->Visible = 1;
//ein leeres Dokument öffnen
$word->Documents->Add();
//irgendetwas damit tun
$word->Selection->TypeText("Dies ist ein Test...");
$word->Documents[1]->SaveAs("Nutzloser Test.doc");
//Word schließen
$word->Quit();
//Objekt freigeben
$word = null;
?>
Beispiel #2 COM-Beispiel 2
<?php
$conn = new COM("ADODB.Connection") or die("Konnte ADO nicht starten");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password");
$rs = $conn->Execute("SELECT * FROM sometable"); // Recordset
$num_columns = $rs->Fields->Count();
echo $num_columns . "\n";
for ($i=0; $i < $num_columns; $i++) {
$fld[$i] = $rs->Fields($i);
}
$rowcount = 0;
while (!$rs->EOF) {
for ($i=0; $i < $num_columns; $i++) {
echo $fld[$i]->value . "\t";
}
echo "\n";
$rowcount++; // Zeilennummer hochzählen
$rs->MoveNext();
}
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;
?>