Pokud se zajímáte o vývoj Nette Frameworku, tak jste se mohli před nedávnem na fóru dočíst o tom, jak jeho autor D. Grudl při předělávání nějakých věcí ve frameworku označil jednoho z core vývojářů PHP Marcuse Börgera. "Hlavně mi
vadí, že Marcus je co se týče návrhu API megaprase, protože když někdo v
roce 2005 vymyslí tohle
, tak má šanci uplatnit se leda v PHP."
Jak jste si mohli přečíst ve zprávičce na rootu, PHP rezignovalo na aktuální implementaci php 6 v trunku a pojede se v podstatě nanovo. Jeden z důvodů byl přilákat více přispěvatelů do PHP. Dost často se totiž v minulosti stalo, že člověku bylo řečeno, že "teď ne, až v šestce". A ten dotyčný se na to posléze vykašlal, když viděl jak se php 6 vyvíjí. Zdá se, že to pomalu začíná fungovat a už se začínají rýsovat věci, které by se mohly objevit v následujícím PHP 5.X.
Každá php extension je jedním modulem. Jak už jsem psal v předchozích částech, je modul sbírka funkcí, tříd, konstant atd. Modul se do PHP může dostat buď staticky, přímo se slinkuje s ostatními částmi PHP jako jediný celek, nebo dynamicky jako dynamická knihovna. Tu si pak uživatel můžeme přidat do PHP nejčastěji přes konfigurační direktivy v php.ini nebo pomocí funkce dl
. Pokud píšeme extenzi do PHP platí pro modul pár zásad, které je třeba dodržet. První z nich je nutnost vytvořit konfiguraci pro kompilování modulu.
Už se o tom zmínil Jakub Vrána, ale jeho článek se je poměrně dost povrchní. Zkusím se na php extenzi XHP od Facebooku podívat trochu podrobněji. Z marketingového hlediska je nutné zdůraznit, že možnost používat XML literály v PHP je opravdu velké plus. Je to např. jedna z mála věcí, kterou příznivci C# závidí VBkářům. Na druhou stranu je pravda, že použití XHP je o dost pomalejší oproti přímému zápisu řetězců v PHP.
Tak tedy zkusím něco začít o tom jak na PHP rozšíření. Tenhle a další zápisky budou spíš takové povídací, jako ukázka nějakého základního kódu může posloužit třeba include_path
wrapper, můžete si ho projít projít a stáhnout z repository. Není to sice úplné hello world
, ale zas tak daleko to od něj není. Psát PHP rozšíření není tak přímočarý proces jako psát PHP skript. Postup budu popisovat na Linuxu i když bych se opravdu neoznačil za nějakého Linuxového profíka, 90% času za počítačem trávím na Windows. Linux/Unix je ale základnou pro vývoj PHP a jeho použití pro vývoj extenze je zdaleka nejjednodušší a nejpoužívanější. Tak proč si to zbytečně komplikovat.