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.