Die COM-Klasse

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

Beschreibung

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")

Methoden

COM::__construct ( 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 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.

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
Gibt die Codepage an, die verwendet wird um Zeichenketten nach Unicode und zurück umzuwandeln. Die Umwandlung wird immer dann durchgeührt, wenn eine PHP-Zeichenkette als Parameter übergeben oder von einer Methode dieses COM-Objekts zurückgegeben wird. Die Codepage ist beharrlich, was bedeutet, dass sie sich auf Objekte und Varianten, die von dem Objekt zurückgegeben werden, fortpflanzt. Mögliche Werte sind 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.

Überladene Methoden

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.

COM-Beispiele

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;

?>