Start · Sprachen · PHP · Referenz · com_load_typelib

com_load_typelib

Funktion

Lädt eine COM-Typelib und registriert ihre Konstanten im PHP-Namensraum.

seit PHP 4.1.0 Kategorie: misc

Signatur

com_load_typelib(string $typelib_name, bool $case_insensitive = true): bool

Beschreibung

com_load_typelib() lädt eine COM-Typbibliothek (Typelib) und macht alle darin definierten Konstanten als PHP-Konstanten verfügbar. Dies ist nützlich, wenn man mit COM-Objekten arbeitet, die bestimmte vorzeichenbehaftete Ganzzahl-Konstanten (z. B. Flags oder Enumerationen) aus einer Typelib benötigen, ohne diese manuell definieren zu müssen.

Der Parameter $typelib_name kann entweder ein vollständiger Pfad zu einer .tlb-Datei, ein Programmatic Identifier (ProgID), eine CLSID oder ein Typelib-Name aus der Windows-Registry sein. PHP sucht in der Registry nach dem passenden Eintrag, wenn kein direkter Pfad angegeben wird.

Durch das Laden der Typelib werden alle enthaltenen Konstanten als PHP-Konstanten mit globalem Gültigkeitsbereich definiert, sodass sie direkt verwendet werden können (z. B. wdFormatDocument für Microsoft Word). Der Parameter $case_insensitive steuert, ob die Konstantennamen ohne Rücksicht auf Groß-/Kleinschreibung registriert werden.

Diese Funktion ist ausschließlich unter Windows verfügbar und setzt die PHP-COM-Extension voraus. Sie wird typischerweise einmal beim Start eines Skripts aufgerufen, das intensiv mit einem bestimmten COM-Objekt arbeitet.

Parameter

Name Typ Default Beschreibung
$typelib_name Pflicht string Name oder Pfad der zu ladenden Typelib. Kann ein Datei-Pfad zu einer .tlb-Datei, eine ProgID, eine CLSID oder ein in der Windows-Registry eingetragener Typelib-Name sein.
$case_insensitive bool true Legt fest, ob die Konstantennamen aus der Typelib ohne Rücksicht auf Groß-/Kleinschreibung registriert werden sollen (true) oder exakt so, wie sie in der Typelib definiert sind (false).

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Typelib erfolgreich geladen und die Konstanten registriert wurden, andernfalls false.

Beispiele

Microsoft Word Typelib laden und Konstante verwenden

<?php
// Typelib für Microsoft Word laden
if (com_load_typelib('Word.Application')) {
    // Konstanten aus der Typelib stehen jetzt zur Verfügung
    $word = new COM('Word.Application');
    $word->Visible = false;

    $doc = $word->Documents->Add();
    $doc->SaveAs('C:\\Temp\\test.doc', wdFormatDocument); // wdFormatDocument aus der Typelib
    $doc->Close();
    $word->Quit();
    echo 'Dokument erfolgreich gespeichert.';
} else {
    echo 'Typelib konnte nicht geladen werden.';
}
Dokument erfolgreich gespeichert.

Typelib über direkten Pfad laden

<?php
// Typelib direkt über Dateipfad laden
$loaded = com_load_typelib('C:\\Windows\\System32\\stdole2.tlb', false);

if ($loaded) {
    echo 'Typelib wurde erfolgreich geladen (Gross-/Kleinschreibung beachtet).';
} else {
    echo 'Fehler beim Laden der Typelib.';
}
Typelib wurde erfolgreich geladen (Gross-/Kleinschreibung beachtet).

// Wichtig · Fallstricke

Nur Windows: com_load_typelib() ist ausschließlich unter Windows mit aktivierter COM-Extension (extension=php_com_dotnet.dll in der php.ini) verfügbar. Auf anderen Betriebssystemen steht die Funktion nicht zur Verfügung.

Alternative via php.ini: Typelibs können auch dauerhaft in der php.ini über die Direktive com.typelib_file vorgeladen werden, sodass ein manueller Aufruf von com_load_typelib() im Skript entfällt.

Namenskonflikte: Wenn eine geladene Typelib Konstanten definiert, die mit bereits existierenden PHP-Konstanten oder anderen geladenen Typelib-Konstanten kollidieren, kann es zu unvorhergesehenem Verhalten kommen. Es empfiehlt sich, nur die tatsächlich benötigten Typelibs zu laden.

Siehe auch