PHP Portal » PHP Handbuch » COM

Werbung

COM


(PHP 4 >= 4.1.0, PHP 5)

COMCOM-Klasse

$obj = new COM("Application.ID")

Beschreibung

Die COM-Klasse erlaubt Ihnen, ein OLE-kompatibles COM-Objekt zu erzeugen, seine Methoden aufzurufen und auf seine Eigenschaften zuzugreifen.

Methoden

com COM::COM ( string $module_name [, mixed $server_name [, int $codepage [, string $typelib ]]] )

COM-Klassenkonstruktor. Die Parameter haben die folgende Bedeutung:

module_name
Kann eine ProgID, Klassen-ID oder der Moniker der zu ladenden Komponente sein. Eine ProgID ist typischerweise der Applikations- oder DLL-Name, gefolgt von einem Punkt, gefolgt vom Objektnamen, z.B. Word.Application Eine Klassen-ID ist die UUID, die eineindeutig eine bestimmte Klasse identifiziert. Ein Moniker ist eine spezielle Form der Benennung, konzeptähnlich dem URL-Schema, das eine Ressource identifiziert und angibt, wie sie geladen werden soll. Beispielsweise könnten Sie Word laden und ein Objekt erzeugen, das ein Worddokument repräsentiert, indem Sie den vollständigen Pfad zum Worddokument als Modulnamen angeben, oder Sie können LDAP: als einen Moniker verwenden, um das ADSI-Interface zu LDAP zu nutzen.
server_name
Name des DCOM-Servers, auf dem die Komponente geladen und ausgeführt werden soll. Ist 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 Laufzeit-Konfiguration 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 Laufzeit-Konfiguration-Direktive betroffen.

DCOM-Servername
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.
codepage
Spezifiziert die Codepage, welche zur Konvertierung der PHP-Strings in Unicode-Strings und umgekehrt verwendet wird. Mögliche Werte sind CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 und CP_UTF8.

COM-Beispiele

PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Word starten $word = new COM("word.application") or die("Konnte Word nicht instanziieren"); echo "Word geladen, Verison {$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;

PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$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;