php keretrendszerek iii.

Ott tartom az előző epizódban, hogy összehasonlítottam a Zend Frameworköt és CodeIgnitert a saját szubjektív szempontjaim alapján és a tesztelhetőségről ejtettem pár szót.

Na most azt tudni kell, illetve aki esetleg olvasta azóta Miško Hevery blogját az tudja is, hogy a Google teszt-szakértője szerint a tesztelhetőség egyik szent grálja az úgynevezett függőség beszúrás (dependency injection, link2) és az ahhoz tartozó konténer. Na most ezek Java környezetben már jól kiforrott rendszerek, PHP-ban viszont a fejlesztők többsége szerintem még nem is hallott róla. Igaz, mostanában mintha ez a közösség is kezdené felkapni a témát. Most nem fogom mélységeiben kifejteni a dolgot, de hamarosan erre is sor kerítek, addig is ajánlom mindenkinek a fent említett Hevery, vagy Marton Fowler blogjait.

Na de nézzük mit rejteget a PHP világa a témában. Először is van egy nagy halom kis könyvtár, ami segít kezelni, megvalósítani és karbantartani a függőségbeszúráshoz szükséges konténer osztályt, ami az egyes objektumainkat a függőségeikkel együtt elő tudja állítani vagy vissza tudja adni. Ezek igen kis méretű dolgok, talán kivétel nélkül mindegyik 100KB alatti, de a Symfony keretrendszer mögött álló Fabian Potencier egy egészen vicces, 140 karakteres osztállyal is meglepte a közösséget, melyet Tweety névre keresztelt. Ami engem illet, nekem két fontos kritériumom volt a használandó könyvtárral kapcsolatban. Az egyik, hogy támogassa a konstruktoron keresztüli és szetter függvényen keresztüli beszúrást is, mégpedig azon egyszerű okból, hogy az elterjedt Java könyvtárak előbb-utóbb mind rákényszerültek mindkettő támogatására, ami nekem azt jelzi, hogy a kiforrott rendszerek nélkülözhetetlen részei. A másik elvárásom az volt, hogy álljon mögötte olyan személy vagy szervezet, ami garantálja, hogy a projekt nem hal hamvába időnek előtt. Ez számomra az alábbi opciókat hozta:

Bár nem tudom pontosan ki áll a projekt mögött, de a japán Seasar szintén elég összeszedettnek tűnik, feltételezem ők sem fognak eltűnni. Igaz, nem próbáltam a rendszerüket.

Rövidnek tűnik a lista? Valóban az, valószínűleg elsősorban azért, mert volt még egy elvárásom, mégpedig az, hogy tudjam használni a könyvtárat a már meglévő projektjeimmel. Néhány php keretrendszer szintén kínál függőség beszúrást, de amennyire a nyitóoldalaikból kitűnt, ezek többnyire integráltak a rendszerbe, legalábbis önállóan nem letölthetőek. Ráadásul ezek a rendszerek többnyire a második/harmadik vonalba tartoznak, ami az ismertségüket illeti. Persze ez önmagában nem probléma, a Kohana is egy nagyszerű rendszer a maga nemében. Ezeket találtam én, talán vannak még mások is:

Némileg később találtam összesen három Zend Frameworkel és függőségbeszúrással kapcsolatos projektet. Az egyik a Xyster nevű keretrendszer kiterjesztés volt, ami nekem több okból nem szimpatikus, a második egy Zend_Di nevű könyvtár, amiről összesen csak ezt a cikket sikerült fellelni. Ezen kívül van még egy Ossigeno nevű tartalomkezelő rendszer, amit az általam nagyra tartott Giorgio Sironi jegyez, de sajnos nem igazán fektet bele energiát.

Sebaj, a Symfony rendszere mindent tud, amire nekem szükségem van és nagyszerűen integrálható bármilyen php5-öt támogató rendszerbe, CodeIgniterben is vígan elfut.

Ezzel nagyjából párhuzamosan futottam bele egy másik tesztelhetőségi problémába, nevezetesen, hogy hogyan is kellene egy adatbázist tesztelni, ugyanis én akkorra elsősorban a Kohana ORM rendszerét használtam, ami villámgyors megoldásokat eredményez, ellenben statikus factory függvényhívásokkal működik, ami sajnos szerepel Miško feketelistáján. Ez ugyan kikerülhető, de addigra már egyre gyakrabban futottam bele a Doctrine ORM rendszerbe, melyet szinte minden komolyabb fórumon megemlítettek, beleértve az általam próbált összes keretrendszer fórumait. Kipróbálgattam és nagyon tetszett, el is határoztam, hogy majd valami komolyabb projektnél ezt fogom használni és fel is iratkoztam az RSS-ére. Pár nap múlva aztán vagy egy bejegyzés vagy hozzászólás linkjeit használva valahogy leesett, hogy a Symfony igen komolyan támogatja Doctrine-t, igaz opcionálisan működik anélkül is, de ez engem kevéssé érdekelt. Úgy döntöttem hát hogy adok egy esélyt a Symfonynak is. Amikor aztán elolvastam, hogy a Symfony alapból támogatja a Zend Framework könyvtárainak használatát, akkor igencsak rákattantam a rendszerre. Jelenleg gyakorlatilag itt tartok, a negyedik részben viszont igyekszem bemutatni, hogy miket is tanultam a Symfonyval kapcsolatban. Ha energiám engedi, akkor igyekszem még a cikk-sorozat keretein belül bemutatni a FLOW 3 és Lion rendszereket is, hátha megérdemelnek egy kis reklámot, de majd meglátjuk.

A következő bejegyzésem némileg könnyedebb témákat érint majd negyedik rész várhatóan egy hét múlva lesz elérhető, remélem sokan visszanéztek majd!

Címkék: php keretrendszerek

A bejegyzés trackback címe:

https://szajtbilder.blog.hu/api/trackback/id/tr81407808

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.