Informační technologie se vyvíjejí nebývalou rychlostí, vznikají neustále nové jazyky, protokoly atd. Na druhou stranu lze tyto i velice různorodé technologie čím dál, tím lépe vzájemně kombinovat a propojovat. Ani PHP se tomuto trendu nevyhnulo, a tak ve své čtvrté verzi umožňuje přímo využívat COM objekty a javové třídy. V budoucnu možná ještě přibude podpora Corby.
Rozhraní COM je dobře známé všem programátorům, kteří se pohybují ve světe Windows. COM umožňuje vytvářet binární komponenty, které lze využívat v mnoha různých jazycích právě díky tomu, že používají jednotné rozhraní. Komponenty jsou však binární, takže je lze provozovat pouze na platformě Win32 (Windows 95/98/NT/2000).
Kromě toho, že si každý může vytvářet komponenty jaké chce, je mnoho komponent standardní součástí Windows, případně webového serveru IIS. Většina aplikací jako třeba Word a Excel nabízí pomocí COM rozhraní většinu svých funkcí ostatním aplikacím. Na využití COM objektů je postaven i vývoj webových aplikací v ASP (Active Server Pages). Vzhledem k tomu, že v ASP se standardně používají velice „chudé“ jazyky jako JScript nebo VBScript, je potřeba i na tak triviální věci jako je přístup k databázi nebo odeslání e-mailu volat speciální komponenty.
Pokud PHP provozujete pod Windows můžete si ve skriptech vytvářet instance jednotlivých komponent a volat jejich metody a vlastnosti. Tuto možnost jste v omezené míře měli již v PHP3 pomocí funkcí jako COM_Load(), COM_Invoke() apod. Kdo s těmito funkcemi někdy pracoval však potvrdí, že mnoho věcí nefungovalo a občas to spadlo.
PHP4 je díky novému jádru schopno pracovat s COM objekty zcela stejně jako se svými vlastními objekty. Po vytvoření COM objektu můžeme pomocí běžné notace (->) volat jednotlivé metody a přistupovat k vlastnostem.
Instance COM objektu se vytváří velice jednoduše. Stačí znát identifikátor objetu:
$objekt = new COM("ProgId");
Na následujícím příkladě je vidět, jak lze z PHP spustit o ovládat MS Excel. Moc užitečná aplikace to není, ale je vidět, co všechno lze pomocí COM udělat.
<? // Vytvoříme si instanci Excelu $excel = new COM("Excel.Application"); // Excel má být vidět $excel->Visible = true; // Varování se nebudou zobrazovat $excel->DisplayAlerts = false; // Otevřeme si nový sešit $excel->WorkBooks->Add(); // Do aktuální buňky vložíme aktuální čas $excel->ActiveCell->Value = "Aktuální čas: " . Date("H:i:s"); // Chvilku počkáme, aby si to všichni prohlédli Sleep(3); // Excel ukončíme $excel->Quit(); ?>
Pěkná hračka, že. COM objekty samozřejmě většina z nás asi ve spojení s PHP používat nebude, protože je nelze využívat v unixových systémech. Nicméně se podpora COM může hodit. Pokud potřebujeme napsat webové rozhraní k existující aplikaci, která má COM rozhraní, může pro nás být pohodlnější využít k tomu PHP než ASP.