Signatur
Beschreibung
com_print_typeinfo() analysiert die Typbibliothek eines COM-Objekts oder einer angegebenen Typbibliothek und gibt eine PHP-Klassendefinition aus, die das zugehörige Dispatch-Interface beschreibt. Die ausgegebene Klasse enthält Methoden- und Eigenschafts-Stubs, die das Interface widerspiegeln.
Die Funktion ist primär ein Entwicklungswerkzeug: Entwickler können damit schnell eine Vorlage für eigene PHP-Wrapper-Klassen rund um ein COM-Objekt generieren, ohne die Typbibliothek manuell zu inspizieren. Die Ausgabe erfolgt direkt in den Output-Buffer (z. B. den Browser oder die Kommandozeile).
Mit dem Parameter $wantsink kann gesteuert werden, ob anstelle der normalen Interface-Definition eine sogenannte Sink-Klasse ausgegeben werden soll, die für das Empfangen von COM-Ereignissen (Event-Callbacks) genutzt werden kann. In Verbindung mit com_event_sink() lassen sich so COM-Ereignisse in PHP verarbeiten.
Die Funktion steht nur auf Windows-Plattformen zur Verfügung und setzt die PHP-COM-Erweiterung voraus. Sie ist ausschließlich für Entwicklungszwecke gedacht und sollte nicht in produktivem Code eingesetzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $obj_or_typelibname Pflicht | variant|COMObject | Ein instanziiertes COM-Objekt oder ein String, der den Namen oder Pfad einer Typbibliothek identifiziert, aus der die Klassendefinition generiert werden soll. | |
| $dispinterface | int | -1 | Der Index des Dispatch-Interfaces innerhalb der Typbibliothek, das ausgegeben werden soll. Standardmäßig (-1) wird das erste (oder einzige) gefundene Interface verwendet. |
| $wantsink | bool | false | Wenn true, wird eine Sink-Klasse für das Empfangen von COM-Ereignissen ausgegeben, anstelle der normalen Interface-Klassendefinition. Diese Sink-Klasse kann zusammen mit com_event_sink() verwendet werden. |
Rückgabewert
true zurück, wenn die Typinformation erfolgreich gefunden und ausgegeben wurde, andernfalls false.Beispiele
Klassendefinition eines COM-Objekts ausgeben
<?php
// Voraussetzung: Windows mit COM-Erweiterung
// Erstelle eine COM-Instanz (hier: Microsoft Word)
$word = new COM('Word.Application');
// Gibt eine PHP-Klassendefinition für das Word-Application-Interface aus
echo '<pre>';
com_print_typeinfo($word);
echo '</pre>';
// Das COM-Objekt wieder freigeben
unset($word);
Sink-Klasse für COM-Ereignisse generieren
<?php
// Erstelle eine COM-Instanz
$excel = new COM('Excel.Application');
// Gibt die Sink-Klassendefinition aus, die für Ereignis-Callbacks verwendet werden kann
echo '<pre>';
com_print_typeinfo($excel, -1, true);
echo '</pre>';
// Die generierte Klasse kann dann als Basis für eine eigene Implementierung dienen:
// class MeinExcelSink extends GenerierteKlasse {
// function WorkbookOpen($Wb) {
// echo "Arbeitsmappe geöffnet!\n";
// }
// }
//
// com_event_sink($excel, new MeinExcelSink(), 'AppEvents');
unset($excel);
// Wichtig · Fallstricke
Nur unter Windows verfügbar: com_print_typeinfo() ist ausschließlich auf Windows-Systemen mit aktivierter PHP-COM-Erweiterung nutzbar. Auf anderen Plattformen steht die Funktion nicht zur Verfügung.
Nur für Entwicklungszwecke: Die Funktion schreibt direkt in die Ausgabe und ist nicht für den Einsatz in produktivem Code geeignet. Sie sollte ausschließlich während der Entwicklung genutzt werden, um Wrapper-Klassen zu erstellen oder die Struktur eines COM-Interfaces zu erkunden.
Die Ausgabe der Funktion ist eine Orientierungshilfe und muss in der Regel manuell angepasst werden, bevor sie als funktionsfähige Klasse eingesetzt werden kann.