3. Integrace s dalšími prostředími

Obsah

COM
Java

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.

COM

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.

© Jiří Kosek 2000