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
$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 aufTRUE
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üsselTyp 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
undCLSCTX_ALL
. Wenn nichts anderes angegeben ist, wird als StandardwertCLSCTX_SERVER
angenommen, sofern Sie ebenfalls denServer
-Parameter nicht angegeben haben. Ist der Server angegeben, wirdCLSCTX_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
undCP_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;
?>
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-class.com.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.