1. Mi a PEAR?

Mi a PEAR?

A PEAR a "PHP Extension and Application Repository" rövidítése, kiejtése megegyezik az angol "körte" szóval (pear, píör). A PEAR céljai:

  • Nyílt forráskódú programrészletek, programok struktúrált könyvtára a PHP felhasználói számára
  • Kódmegosztási és csomagkarbantartási rendszer
  • Szaványos kódolási stílus PHP nyelven írt kódokhoz, lásd itt
  • The PHP Foundation Classes (PFC), lásd lejjebb
  • The PHP Extension Community Library (PECL), lásd lejjebb
  • Egy weboldal, levelezőlisták és letöltési tükrök a PHP/PEAR közösség támogatásához

A PEAR egy közösség által működtetett projekt, vezetősége a PEAR csoport (PEAR Group). A projektet Stig S. Bakken 1999-ben alapította, azóta rengetegen csatlakoztak hozzá.

A PHP kód struktúrált könyvtára

A PEAR-ban lévő kód csomagokra van bontva. Minden csomag egy különálló projekt a saját fejlesztőcsapatával, verziószámával, dokumentációjával és kapcsolataival a többi csomaghoz (beleértve a függőségeket). A csomagok gzip-elt tar fájlokként kerülnek terjesztésre egy-egy leírófájllal együtt, és a PEAR telepítő (installer) segítségével kerülnek telepítésre egy rendszerre.

A csomagoknak két típusa van: forráscsomagok (csak forrásnyelvi fájlokat tartalmaznak), és bináris csomagok (platform-specifikus bináris fájlokat tartalmaznak, és tartalmazhatnak forrásnyelvi fájlokat is). C nyelvi forráscsomagok telepítése magától értetődően C build környezetet igényel.

A PEAR egy csomag-fát határoz meg, ahol minden egyes csomópont egy csomag nevének egy-egy része. A csomópontoknak egyszerű, értelemszerű nevük van. A csomagok nevében az egyes részeket hangosközzel (underscore, "_") választjuk el egymástól. Csomagnevek például az "MP3_Id", "Archive_Tar" és a "HTTP_Post".

A csomagok explicit függőségeken keresztül kapcsolatban állhatnak egymással, ugyanakkor egy csomag és a fában lévő szülője között nincs kötelezően kapcsolat (például a "HTTP_Post" nem függ a "HTTP" csomagtól).

A fában néhány felsőszintű csomópontot alraktárnak (sub-repository) nevezünk, mivel speciális funkciók vannak. Ezek jelenleg a PECL, a Gtk és az App. Mindegyikükre különböző szabályok érvényesek, bővebben lásd az egyes alraktárak leírásánál, lejjebb.

A PEAR Coding Standards (rövidítve PCS), egy kódolási szabvány (stíluskalauz), amely a PEAR fejlesztők közötti együttműködést hivatott megkönnyíteni. Célja a minőség és a hordozhatóság elősegítése, és a PEAR közreműködőknek segítségnyújtás konzisztens API-k fejlesztéséhez. A PFC-ben lévő csomagokra szigorúan érvényes, a nem-PFC csomagok kevésbé veszik szigorúan.

Kódmegosztás és csomagkarbantartás

Minden PEAR csomag regisztrálva van és fel van töltve a központi adatbázisba, amely a pear.php.net címen érhető el. Nyílt forrású, harmadik fél által készített (third-party) csomagok is regisztrálásra kerülhetnek, és feltölthetők. Zárt forrású csomagok is telepíthetők a PEAR telepítő segítségével, de a PEAR adatbázis csak nyílt forrású programoknak ad helyet.

A pear.php.net mind felhasználóbarát (HTML), mind "gép-barát" (jelenleg XML-RPC) interfészt nyújt a PEAR adatbázishoz. A csomagok letöltése egyszerű HTTP protokollon keresztül történik. A pear.php.net site által nyújtott további funkciók:

  • felhasználó account menedzsment (integrálva a CVS szerverrel)
  • csomag menedzsment
  • release menedzsment

A csomagokat gzipelt tar fájlokban terjesztik egy-egy leíró fájllal (XML) együtt. A leíró fájl információkat tartalmaz magáról a csomagról, tartalmaz továbbá egy fájllistát a benne lévő fájlok szerepével, valamint egy leírást a függőségekről.

A PHP Foundation Classes

A PHP Foundation Classes a PEAR egy részhalmaza; minőségre, általánosításra, interoperabilitásra (együttműködés) és kompatibilitásra fókuszál. Ha a PHP továbbra is folytatja a PEAR csomagok szállítását a saját telepítőkészletén belül, akkor a PFC-t fogja szállítani.

A fókusz a minőségen azt jelenti, hogy stabilnál (stable) alacsonyabb állapotban lévő csomagok (releasek) nem lehetnek a PFC-ben.

Az általánosítás jelentése: a csomagok az indokoltnál jobban ne legyenek specifikusak semmilyen környezethez sem (pl. a HTML kimeneti formátumhoz, egy operációs rendszerhez, egy webszerverhez vagy egy SAPI-backend-hez stb).

Az együttműködésre kiélezett (interoperable) csomagok helyesen együttműködnek más csomagokkal, stabil, szabványosított API-juk van, előnyben részesítenek más, jól megírt (és interoperábilis) komponenseket, valamint jól működnek különböző környezetekben (PHP verziók, SAPI backend, operációs rendszerek stb.)

A kompatibilitás a korábbi verzióktól eltérően nem csak a megegyező szintaxis támogatásáról és a szemantikáról szól, hanem az előre tervezésről is. Az így tervezett kódot egyszerű lenne (vagy legalábbis lehetséges) továbbfejleszteni olyan igényekkel, melyek valószínűleg később jelentkezhetnek majd (előre-kompatibilis kód).

A PHP Extension Community Library (PECL)

PECL

PECL (ejtve "piköl") a PEAR al-raktára C-bővítményeknek, melyek a PHP 4-el kerültek terjesztésre. A PECL létrehozásának egyik motivációja az volt, hogy a PHP-ből át kellett valahová helyezni a bővítményeket (extensions). A PECL-ben lévő bővítmények a PHP kódolási szabványát követik a PEAR szabványok helyett, de PEAR csomagokként kerülnek szállításra és telepítésre.

A PHP-ből PECL-be történő bővítmény-áthelyezést nevezzük "pickling"-nek.

2003 októberében a PECL egy független projektté vált, ami nem tartozik többé a PEAR-hez (kivéve az infrastruktúra, amit a PECL a PEAR-től kölcsönöz). További információk, valamint az összes PECL csomag megtalálhatók a PECL honlapján. A PECL kiválása során a projekt átnevezésre került "PHP Extension Code Library"-ről "PHP Extension Community Library"-re.

Gtk csomagok

Gtk

A Gtk csomagok a PHP-GTK projekt technológiájára épülő csomagok. A PHP-GTK alraktárban lévő kód a PEAR kódolási szabványokat követi.

Jelenleg nincs végleges terv arról, hogy hogyan jelennek majd meg a Gtk csomagok a PEAR-ban.

Alkalmazás Csomagok (Application Packages)

App

TBD

Bevezetés (Previous) Támogatás (Next)
Last updated: Wed, 23 Apr 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.