COM Funktionen
DOTNET
COM Funktionen
PHP Manual

# COM

(PHP 4 >= 4.1.0, PHP 5)

COM — COM-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 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
  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

Beispiel #1 COM-Beispiel 1

`<?php
// 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;
?>`

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;
?>`

COM Funktionen
DOTNET
COM Funktionen
PHP Manual