Portál AbcLinuxu, 30. dubna 2025 19:12
Nebojte se, jste tu správně. Nebude řeč o ovoci, ale o frameworku pro jazyk oblíbený mezi vývojáři webových aplikací. Tím jazykem je PHP a framework se jmenuje, jak jistě správně tušíte, PEAR.
Webové aplikace se od ostatních liší v mnoha směrech. Jedním z nich je relativně časté opakování stejných problémů. Spousta webových aplikací například musí spravovat uživatelské účty, definuje způsob zobrazování a ukládání obsahu, pracuje s databázemi, zpracovává různé datové formáty jako např. XML atd. Programovací jazyky nabízejí často jen parciální řešení podobných problémů, a tak je nasnadě navrhnout vlastní knihovnu, která poskytne potřebnou funkcionalitu prostřednictvím dobře definovaného rozhraní. Knihovna může žít vlastním životem a s novou verzí zpravidla není složité upgradovat i aplikaci.
Samotný návrh knihovny ovšem není jen otázkou tvorby rozhraní a implementace příslušných algoritmů ve zvoleném jazyce. Je potřeba udržet konzistentní styl psaní kódu a vytvořit jednoduchou a úplnou dokumentaci, aby knihovnu mohli používat i další programátoři. Nakonec všichni skončíme u toho, že definujeme vlastní framework, což není vůbec špatné, ale někdo už to mohl udělat dříve a taky lépe.
Tento seriál se bude věnovat frameworku a distribučnímu systému knihoven a rozšíření pro aplikace psané v jazyce PHP nazvanému PEAR. Začneme seznámením s frameworkem a ukážeme si, jak jej nainstalovat a používat. Další díly budou věnovány konkrétním balíčkům, jak se aplikace a knihovny obsažené v PEARu nazývají.
PEAR (PHP Extension and Application Repository) vznikl z diskuse na PHP Developers' Meeting v roce 2000 a od té doby urazil docela dlouhou cestu. V současnosti archiv balíčků obsahuje na 250 open source knihoven a rozšíření roztříděných tématicky do několika kategorií (např. databáze, souborový systém, HTTP, matematika, text, xml, web services apod.). Archiv doplňuje sofistikovaný distribuční systém, kvalitní dokumentace samotného frameworku, návody, mailing-listy a v neposlední řadě IRC kanál sloužící jak uživatelům, tak vývojářům nových projektů, které usilují o začlenění do repositáře.
PEAR navíc definuje čtyři zvláštní skupiny balíčků. Jednou z nich je repositář PECL (PHP Extension Community Library), který obsahuje rozšíření pro samotné PHP. PECL má vlastní webové stránky a definuje vlastni styl psaní kódu, ovšem distribuční systém včetně struktury balíčků sdílí se svojí sestrou, jak PEAR nazývá (ženský rod je zřejmě používán kvůli věnování frameworku dceři autora). Mimo PECL jsou obzvláště důležité tzv. PHP Foundation Classes (PFC), což je skupina balíčků, které standardní distribuce PHP instalují spolu s nástroji pro práci s archivem. PFC tvoří jen stabilní balíčky, které nejsou vázány na konkrétní systém a jsou díky standardizovanému API do budoucna snadno rozšiřitelné. Pokud budou distribuce PHP i nadále instalovat balíčky z PEARu, budou to ty z PFC.
Ještě než začneme s frameworkem pracovat, podíváme se na proceduru, kterou prošel každý balíček, a na jeho vlastnosti, které z ní vyplynuly. Bude nám pak jasné, jaké konvence balíček dodržuje, jaký kód budeme používat a co můžeme očekávat od jeho autora. Pokud se rozhodnete rozšířit PEAR o vlastní knihovnu, doporučuji vám přečíst si kompletní dokumentaci na webových stránkách projektu. Následující text je vhodný spíše pro uživatele (i ti by se však měli s dokumentací seznámit).
Na začátku vývoje balíčku stojí otázka, k čemu bude knihovna nebo rozšíření sloužit. Podle toho jej autor musí správně pojmenovat a zařadit do kategorie. Svůj návrh pošle do mailové konference a počká na vyjádření, zda neexistuje podobný či stejný balíček a zda vůbec bude přínosem. Nemělo by se tedy stát, že by archiv obsahoval dva balíčky, které řeší stejný problém, a tak se netrapte tím, že jste našli jen jeden, který splňuje vaše představy. Pokud se vám balíček hodí, nezapomeňte zkontrolovat jeho závislosti na ostatních (na ty vás případně upozorní i instalační program) a zjistěte, s jakou licencí je nabízen k použití. Autor se vytvořením zavazuje poskytnout podporu, opravovat nahlášené chyby a také by měl rozšiřovat kód o nové funkce, které navrhnou nebo jimi rovnou přispějí ostatní vývojáři. Může se stát, že objevíte chybu a pak byste ji určitě měli nahlásit správci balíčku. K tomu účelu slouží formulář umístěný v rámci distribučního systému.
Jedním z požadavků kladených na každý balíček je dodržení konvence formátování řídících struktur, názvů proměnných, tříd atd. Zkrátka musí zdrojový kód odpovídat stylu, jehož popis je k dispozici v dokumentaci PEARu. Styl psaní kódu se docela podobá doporučení Sunu pro programovací jazyk Java a převratné novinky v něm určitě nenajdete. Před začátkem vývoje aplikace používající balíčky z PEARu se ovšem rozhodně vyplatí zvážit, zda vlastní kód jejich použitím neznepřehledníte. Pokud se nevyhnete tomu, že budete muset provést vlastní refaktorizaci kódu balíčku, zkuste raději vytvořit wrapper nad rozhraním knihovny/rozšíření. Starší verze se totiž dají díky instalačním nástrojům poměrně snadno upgradovat a balíček mohou používat i jiné aplikace běžící na serveru.
Autor je dále povinen zveřejnit kompletní dokumentaci zdrojových kódů a to buď ve formátu Docbook XML nebo jako "prostý text". Najít ji můžete jak na webu, tak také v adresáři, kde je PEAR nainstalován. Dokumentace, která je součástí instalace, zpravidla představuje jen návod jak balíček nainstalovat a začít používat. V distribučním systému by pro každý balíček měla být dostupná podstránka s dokumentací celého API.
Vývoj balíčku probíhá pod dohledem ostatních vývojářů, kteří také nakonec rozhodují o jeho začlenění do archivu. Jakmile je autor spokojen se současným stavem balíčku, může jej zařadit do hlasovacího procesu. Během hlasování se projekt až na výjimečné případy nesmí měnit a první verze je tak před vydáním dána na milost ostatním. Nutný počet hlasů pro přijetí je relativně malý (stačí nasbírat 5 kladných hlasů (+1 hlas získá projekt za souhlas, -1 za nesouhlas, 0 za nerozhodnutého vývojáře) za 7 dní (14 pokud se během 7 dní hlasování nezúčastní alespoň pět vývojářů)), nicméně projekt je od svých prvopočátků sledován a výsledná kvalita by měla být zřejmá už před hlasováním (pokud ovšem autor nechce riskovat).
Distribuční systém balíčků nabízí mimo funkcí pro získávání zdrojových kódů hlavně jednotné webové rozhraní pro každý balíček, ve kterém najdete informace o jeho stavu, můžete si prohlédnout dokumentaci, zjistit informace o týmu vývojářů, kteří jej mají na starosti, nebo nahlásit nalezené chyby. Pracovat s distribučním systémem se dá pracovat buď přes webové rozhraní, nebo přes správce balíčků, který je obvykle nainstalován spolu s PHP. Obě prostředí ovšem obsahují funkce, které nenabízí to druhé (z webu např. balíčky nenainstalujete, ze shellu zase nenahlásíte nalezené chyby atd.), ale základní funkce (získání a vyhledání balíčku a informací o něm) mají společné.
Pokud máte nainstalováno PHP ve verzi 4.3.0 a vyšší, máte standardně k
dispozici i správce balíčků, ledaže jste při překladu použili volbu
without-pear
.
Jestliže správce balíčků nemáte, můžete ho nainstalovat ručně. Stačí v
shellu zadat lynx -source http://go-pear.org/ |
php
a řídit se instrukcemi.
Jakmile je správce nainstalován, můžete s ním začít pracovat. Seznam argumentů spouštěcího příkazu je výstupem skriptu bez parametrů:
pear
Zvědavé povahy si určitě všimnou, že samotný správce balíčků je PHP aplikace a dokonce je součástí balíčku se jménem PEAR. Někdo si možná prohlédnul kategorii "PEAR", někdo zase nahlédnul do zdrojových kódů a zjistili jste tak, že existují i grafické podoby správce. V současnosti to jsou další dvě verze - jedna webová a druhá postavená na PHP-GTK (balíčky, které PHP-GTK používají, patří do zvláštní skupiny jako např. PFC) - obě zatím jen ve stavu betaverze. V dokumentaci o nich proto není žádná zmínka, ale vezměme webovou variantu a demonstrujme si na ní práci s CLI nástroji.
Seznam dostupných balíčků lze zobrazit příkazem:
pear remote-list
Na terminálu uvidíte názvy všech balíčků a čísla jejich verzí. Balíček,
který chceme nainstalovat, ovšem není zobrazen. Jak je to možné? Chování
správce totiž ovlivňují konfigurační proměnné a
jednou z nich je i preferred_state, která určuje, jakou verzi
(alpha, beta, devel, stable, snapshot) chceme přednostně instalovat. Určitě
šikovná volba, nicméně ovlivní i seznam balíčků, který se zobrazí
(vyhledávání pomocí pear search
neovlivňuje). Dostupná
verze PEAR_Frontend_Web je pouze beta, tudíž změníme nastavení správce:
pear config-set preffered_state beta
Po ukončení experimentů si vraťte nastavení zpět na původní (nejspíš stable).
Teď už balíček v seznamu vidíte a hlavně je možné jej konečně nainstalovat:
pear install PEAR_Frontend_Web
Pracujete-li s čistým PEARem, instalátor vám ohlásí, že PEAR_Frontend_Web potřebuje ještě balíčky Net_UserAgent_Detect a HTML_Template_IT. Nainstalujeme tedy všechny najednou:
pear install PEAR_Frontend_Web NET_UserAgent_Detect
HTML_Template_IT
Abyste mohli frontend vyzkoušet, zkopírujte soubor
WebInstaller.php
, který se nachází v adresáři
PHP_LIB_DIR/php/PEAR/
(PHP_LIB_DIR
nahraďte
adresářem, kde jste PHP řekli, že se nachází knihovny
[/usr/local/lib/
]), do www adresáře webserveru a zkuste jej
zobrazit v prohlížeči.
Balíček odinstalujete triviálním:
pear uninstall PEAR_Frontend_Web
Existují i balíčky, které framework používají, ale nejsou zařazeny v
repositáři. Takové balíčky jsou zpravidla dostupné jako tarbally, přičemž
jejich obsah je vytvořen tak, aby je správce dokázal nainstalovat.
Instalace z tarballu je umožněna díky souboru package.xml
,
jehož formát je vysvětlen v dokumentaci. Při instalaci zadáte místo
názvu balíčku cestu k souboru package.xml.
K webhostingu zpravidla nedostanete přístup k shellu a instalaci pak
musíte provést ručně. Naštěstí to není nic obtížného a většina z vás by
určitě přišla, jak na to. Stáhněte si zdrojové kódy vybraného balíčku a
přes FTP je uploadujte např. do adresáře /include
ve vašem
webovém prostoru. Ve skriptech nezapomeňte pomocí funkce ini_set
nastavit proměnnou "include_path" na /include
.
Tento způsob instalace - pravděpodobně nejčastější, jaký budete provádět - s sebou nese malý zádrhel. Je třeba si ověřit závislosti a "nainstalovat" také balíčky, na kterých vámi zvolený závisí. Samotný balíček PEAR definuje pro PHP4 mj. často používané speciální funkce, které fungují jako destruktory.
Tento díl vás měl s frameworkem seznámit a poskytnout vám základy pro práci s ním. Netvrdím, že jsem vyčerpal všechna zajímavá témata, ale to jsem ani nechtěl. Výborným zdrojem nejen pro začátečníky je určitě online dokumentace, která není příliš rozsáhlá, ale najdete v ní všechno, co budete potřebovat. Pro budoucí přispěvatele je její znalost nutností.
Další díl se dle ohlasu bude věnovat konkrétním balíčkům z archivu. Pokud máte konkrétní přání, můžete jej sdělit v diskusi pod článkem a já se pokusím balíček nastudovat.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.