Hlavní navigace

PEAR - framework pro PHP

Roman Šilar

Máte rádi hrušky, hruškovici nebo používáte PHP? Určitě musíte zkusit tenhle skvělý framework :) Článek se pokusí zlehka představit PEAR. Na několika příkládcích také ukáže jeho jednoduchost a použitelnost.

Malý historický výlet

Jak už to tak bývá, někomu se nelíbila roztříštěnost přístupu PHP k databázím. A protože to nebyl lenoch, začal to řešit po svém. Ten někdo byl Stig Bakken a údajně to bylo v pondělí 22. listopadu 1999.

Vývoj se nezastavil, projekt pokračuje vesele dál. V současné době je k dispozici už 177 balíků řešící nejen databáze, ale také např. logování, autentizaci, emailování a mnoho dalšího. Zajímavé je také, že PEAR je oficiální částí PHP od verze 4.3.0.

Název a struktura

Každý správný projekt musí mít jednoduché a snadno zapamatovatelné jméno. Název PEAR to naprosto splňuje. Podle doporučení se vyslovuje jako ono známé ovoce (možná je autor fanouškem hruškového kompotu :). Oficiální název je PHP Extension and Application Repository. (Pozn.: ta hruška a kapalné produkty z ní jsou ale mnohem sympatičtější.)

Projekt kromě kódu samotného obsahuje také další vymoženosti, které zvyšují jeho i tak velkou hodnotu.

  • Systém pro správu a distribuci kódu.
  • Normy pro vývoj. Začínají odsazováním, pokračují přes definice a volání funkcí,… a končí jmennými konvencemi. (Není to tedy projekt typu nahoře huj a vespod fuj, procházet a popř. měnit zdrojáky je radost sama)
  • PHP Foundation Classes (PFC). Zde se autoři zaměřují na kvalitu, kompatibilitu … Hlavní dopad je tedy distribuce balíků ve verzi STABLE – stálé API, vyladěná rychlost, může záviset pouze na STABLE balících atd.
  • PHP Extension Code Library (PECL) anglicky [pickle], česky asi [pikl](kujme pikle?!). Rozšiřování Céčkem, k nastudování za domácí úkol.
  • Poslední částí je bugtrag, mailing list, web, mirrory.

Připoutejte se, odlétáme

Pro začátek něco běžného, co třeba unifikovaný přístup k databázím prostřednictvím balíku PEAR::DB?

  1. require_once 'DB.php';
  2. $db = DB::connect("pgsql://username:password@localhost/sazka");
  3. if (DB::isError($db)) {
        die ($db->getMessage());
     }
  4. $result = $db->query("select * from ne");
  5. if(DB::isError($result)){
        die ($result->getMessage());
     }
  6. while ($row = $result->fetchRow()){
        echo $row[0]."<br>\n";
     }
  7. $db->disconnect();

Uznávám, že ten příklad je hodně „trivoš“, ale na vysvětlení bude stačit. Aspoň je vidět ta jednoduchost.

Řádek 1 snad ani nemá cenu popisovat. Include souboru zvládne i cvičená opice.

Řádek 2 už začíná být zajímavější. Na začátku je uveden ovladač, v tomto případě se tedy budu připojovat k Postgresu. Na výběr jsou samozřejmě i další možnosti, z běžných lze jmenovat MySQL, Oracle, ODBC, SQL Server a ještě pár dalších. Následují login a heslo, počítač a název databáze. (Trochu mi to připomíná Javu, tady se to ale všechno stihne v jednom příkazu.)

Poskočíme na řádek 3. Místo try/catch zde použijeme if a otestujeme případnou chybu, zde selhání přístupu k databázi.

Na řádku 4 se konečně provede dotaz. (Konkrétně se vyberou všechna nedělní losování sazky od roku 1957).

Na pětce opět odchytáváme chybu.

Pokud dotaz proběhl v pořádku, můžeme výsledek začít zpracovávat. Řádek 6 vypíše vždy první pole. Správnější by asi bylo použití hashe, což se dá snadno zařídit. Stačí provést tuto změnu: …->fetchRow(DB_FET­CHMODE_ASSOC) a můžeme vesele používat echo $row[‚rok‘]…

Malá chvilka logování

Další krátká ukázka se bude týkat komponenty pro logování. Možností, kam logovat je několikero, mimo jiné soubor, databáze (samozřejmě používá předchozí), syslog a další. Pro jednoduchost uvedu jenom logování do souboru.

  1. require_once "Log.php";
  2. $log = &Log::singleton('file', '/tmp/log.txt', '--POKUS--');
  3. $log->("ahoj");
  4. $log->log("nazdar",PEAR_LOG_DEBUG);

  Výstup
  Jun 17 23:35:48 --POKUS-- [info] ahoj
  Jun 17 23:35:48 --POKUS-- [debug] nazdar

Tak tomu říkám pohoda. Zařídit logování na dvou řádcích.

Řádek 1 snad ani nepotřebuje komentář.

Na řádku 2 vytvářím kopii objektu. Při změně na …singleton(‚sys­log‘) se hlášení najednou objevují ve /var/log/syslog :) atd.

A dál už jenom používám a loguju a loguju… Závažnost lze měnit od debug až po emerg, celkem 8 stavů.

Jdeme do finále

V předchozím jsem se pokusil pro neznalé aspoň trochu objevit framework PEAR. A úplným závěrem ještě pár bodíků, proč používat zrovna tenhle softík.

  • slušně napsaný kód
  • slušně dokumentovaný
  • zdá se být v dynamickém vývoji
  • a ta cena :)
Našli jste v článku chybu?

24. 11. 2005 19:22

BigBear (neregistrovaný)
No ja nevim nevidim jediny duvod proc pouzivat PEAR. Omezeni na webhostingach (mam na mysli napr. openbase_dir atd) a mit kvuli tomu vlastni server v zadnem pripade. Co potrebuji zvladnu pomoci PHP mysql atd. Realita pouzivani PEAR je jina nez to co se pise v clancich a dokumentacich. Souhlasim s nazorem ze patlat do kodu neustale porad dokola include je na dve veci. Ve vetsich skriptech je includu z PHP az az tak proc tam cpat dalsi????

13. 3. 2005 17:44

talpa (neregistrovaný)
kdyz uz jsme u frameworku nevite o necem slusnem co by bylo slusne na rychle pochopeni a praci? Vse co jsem nasel bylo dost divoke, jak ohledne naprogramovani tak i ohledne slozitosti pouziti.
DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

Root.cz: Nová třída SD karet A1 s vysokým výkonem

Nová třída SD karet A1 s vysokým výkonem

Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

Měšec.cz: Za palivo zaplatíte mobilem (TEST)

Za palivo zaplatíte mobilem (TEST)

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Jak vybrat ořechy do cukroví a kde mají levné

Jak vybrat ořechy do cukroví a kde mají levné

Vitalia.cz: Nejlepší obranou při nachlazení je útok

Nejlepší obranou při nachlazení je útok

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte