Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

PEAR - framework pro PHP

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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

davame_internetu_obsah
       

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 :)

Školení: Linux – Firemní server

Na třídenním školení se naučíte nainstalovat a spravovat kompletní linuxový server do Vaší firmy se všemi základními službami, které potřebujete pro provoz Vaší sítě, firemních emailů a webových stránek.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,17

Přehled názorů

no nevim
jane molic 26. 6. 2003 00:16
Nový
Souhlas s předchozím příspěvkem
Miloslav Ponkrác 26. 6. 2003 02:24
Nový
└ 
Re: Souhlas s předchozím příspěvkem
Ondrej Jombik 27. 6. 2003 01:24
Nový
 
└ 
Re: Souhlas s předchozím příspěvkem
Miloslav Ponkrác 27. 6. 2003 11:40
Nový
PEAR vs. ADOdb
Peter Mann 26. 6. 2003 07:19
Nový
└ 
Re: PEAR vs. ADOdb
Peter Mann 26. 6. 2003 07:21
Nový
 
└ 
Re: PEAR vs. ADOdb
Zdenek Bohdanecky 26. 6. 2003 09:14
Nový
a pohled jinam....
Jirka Vagner 26. 6. 2003 07:54
Nový
RE: PEAR
m.i.b 26. 6. 2003 08:07
Nový
├ 
RE: PEAR
Václav 26. 6. 2003 08:19
Nový
└ 
RE: PEAR
Miloslav Ponkrác 26. 6. 2003 09:43
Nový
profici nepouzivaji PEAR
llama 26. 6. 2003 09:00
Nový
├ 
Re: profici nepouzivaji PEAR
hardcoder*ke 26. 6. 2003 09:12
Nový
├ 
Re: profici nepouzivaji PEAR
d.f.h 26. 6. 2003 09:19
Nový
│
└ 
Re: profici nepouzivaji PEAR
hkmaly 26. 6. 2003 17:31
Nový
│
 
└ 
Re: profici nepouzivaji PEAR
binary_runner 27. 6. 2003 11:08
Nový
│
 
 
└ 
Re: profici nepouzivaji PEAR
hkmaly 8. 7. 2003 18:20
Nový
├ 
Re: profici nepouzivaji PHP
Martin Povolny 26. 6. 2003 09:32
Nový
│
├ 
Re: profici nepouzivaji PHP
Stefan 26. 6. 2003 10:55
Nový
│
│
├ 
Re: profici nepouzivaji PHP
Jan Molic 26. 6. 2003 12:23
Nový
│
│
│
└ 
Re: profici nepouzivaji PHP
anonymní uživatel 26. 6. 2003 15:49
Nový
│
│
│
 
└ 
Re: profici nepouzivaji PHP
anonymní uživatel 2. 7. 2003 08:41
Nový
│
│
│
 
 
└ 
Re: profici nepouzivaji PHP
benzin 9. 3. 2005 17:03
Nový
│
│
└ 
Re: profici nepouzivaji PHP
Martin Povolny 26. 6. 2003 15:40
Nový
│
│
 
└ 
Re: profici nepouzivaji PHP
llama 26. 6. 2003 18:15
Nový
│
│
 
 
└ 
Re: profici nepouzivaji PHP
Martin Povolny 26. 6. 2003 18:34
Nový
│
│
 
 
 
└ 
Re: profici nepouzivaji PHP
Tomas Rosa 29. 6. 2003 10:59
Nový
│
│
 
 
 
 
└ 
Re: profici nepouzivaji PHP
benzin 9. 3. 2005 17:09
Nový
│
└ 
Re: profici nepouzivaji PHP
Ondrej Jombik 27. 6. 2003 01:35
Nový
└ 
Re: profici nepouzivaji PEAR
BigBear 24. 11. 2005 19:22
Nový
php sitemanager
d.f.h 26. 6. 2003 09:05
Nový
PHP vs perl
b0rmann 26. 6. 2003 10:18
Nový
└ 
Re: PHP vs perl
emilk 26. 6. 2003 10:55
Nový
 
├ 
Re: PHP vs perl
Miloslav Ponkrác 26. 6. 2003 13:45
Nový
 
│
└ 
Re: PHP vs perl
emilk 26. 6. 2003 14:41
Nový
 
│
 
└ 
Re: PHP vs perl
Miloslav Ponkrác 26. 6. 2003 19:06
Nový
 
├ 
Re: PHP vs perl
Cohen 27. 6. 2003 00:23
Nový
 
│
└ 
Re: PHP vs perl
emilk 27. 6. 2003 15:55
Nový
 
└ 
Re: PHP vs perl
Vojtěch Semecký 25. 7. 2003 13:47
Nový
abstrakce nad DB
wake 26. 6. 2003 10:53
Nový
RUBY
Jan Molic 26. 6. 2003 12:26
Nový
└ 
Re: RUBY
gmmns 26. 6. 2003 13:17
Nový
 
└ 
Re: RUBY
Wejn 26. 6. 2003 21:16
Nový
 
 
└ 
Re: RUBY
gmmns 26. 6. 2003 22:04
Nový
Pickle
obda 26. 6. 2003 13:12
Nový
DBX
Mirek Novak 26. 6. 2003 14:41
Nový
bez titulku
hnhn 26. 6. 2003 14:49
Nový
Framework
Meap 26. 6. 2003 17:48
Nový
└ 
Re: Framework
d.f.h 26. 6. 2003 22:10
Nový
 
└ 
Re: Framework
talpa 13. 3. 2005 17:44
Nový
nespolupracuje
Michal Burda 30. 6. 2003 10:28
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem