Melyik PHP frameworkot, keretrendszert érdemes választanunk fejlesztéshez?
Sokféle keretrendszert használhatunk szerveroldalon. Mi alapján dönthetjük el, hogy melyik lenne a nyerő? A cikkünkben a legjobb ismert PHP frameworköket szeretnénk bemutatni, azok előnyeivel, és hátrányaival.
Sok esetben, mikor egy specifikációt kapunk egy munkához, felmerül bennünk a következő kérdés: mit kellene használni, hogyan kellene elkészíteni? Ez természetesen projektenként, és feladatonként nagyon változó lehet. Valójában az a fogalom, hogy „programozói munka” is egy nagyon tág fogalmat ölel fel magában: teljesen más egy Delhpi fejlesztő élete, mint mondjuk egy PHP vonalon mozgó backend-fejlesztőé.
Mivel én jómagam leginkább PHP vonalon mozgok, és ez adja az alapját az általános webfejlesztésnek, erről szeretnék kicsit bővebben beszélni.
Szükségünk van egyáltalán ismert keretrendszerekre?
Az első, és legfontosabb kérdés az az, hogy érdemes-e egyáltalán bármilyen ismert keretrendszert használni. A válasz erre a kérdésre nagyon elérő lehet: találkoztam már olyan cégekkel, akik csak és kizárólag az egyedi architektúrák felé hajlottak, míg voltak olyanok is, akik az összes projektjüket egy jól ismert keretrendszerben kivitelezték, kivétel nélkül.
Az ismert keretrendszerek előnye a jobb biztonsági szint, a könnyebb tanulhatóság, jó Community, a gyorsabb fejlesztési idő, valamint a későbbi megtérülés a technológiai tudásban-más cégeknél.
Az egyedi keretrendszerek előnye, hogy a kódot teljes mértékben a kezünkben tarthatjuk, és sokkal kisebb méretűek. Ezen felül, komolyabb programozói szemléletre tehetünk szert általuk.
Mindenki eldönteni, hogy mi felé hajlik, én inkább az ismert keretrendszerek felé. Valamilyen keretrendszert viszont mindenképp érdemes használnunk, még sose találkoztam olyan emberrel, aki hosszú távon mindig minden projektet nulláról kezdett volna el fejleszteni.
Mit kell tudnia egy keretrendszernek-általában?
Egy keretrendszernek az az egyik legfőbb feladata, hogy könnyedén, viszonylag gyorsan lehessen vele dolgozni. Fontos, hogy ne tartalmazzon alapvető biztonsági réseket, a lehető legoptimalizáltabb legyen a működése, és gyors a betöltési idővel bírjon.
Minden keretrendszer kell, hogy rendelkezzen egy elfogadható dokumentációval. Ez nem csupán a könnyebb tanulhatóságot segíti elő, hanem az esetleges módosíthatóságot is.
Melyek a legjobb ismert PHP oldali keretrendszerek?
Sok szempont alapján lehet a különféle keretrendszereket értékelni. Tanulási görbe, gyorsaság, flexibilitás, fejlettség, népszerűség: meg merném kockáztatni, hogy nem létezik olyan, hogy a „legjobb” PHP oldali keretrendszer.
Mindenkinek mások az igényei, valaki egyiket szereti jobban, valaki a másikat. Én egy személyes listát állítottam össze, ami azt írja le, hogy én melyiket preferálom, és miért.
1. Laravel
2011-ben jelent meg, később, mint például a Symfony, de ma már egyértelműen ő vezeti a népszerűségi versenyt-Magyarországon vannak olyan cégek, akik a projektjeiket szinte kivétel nélkül ezzel készítik el. Népszerűségében adódóan hihetetlenül gyorsan fejlesztik, már a 7-es verziónál tart.
Az egyik legbiztonságosabb, és legkönnyebb architektúra, aki kezdőként szeretne megtanulni valamilyen keretrendszert, és egy kis sikerélményt szerezni, annak erősen tudom ajánlani. MVC architektúrát követ, ahogy a legtöbb ismert PHP oldali keretrendszer. Beépített ORM-el rendelkezik, az úgynevezett Eloquenttel, amin kiváló lehetőséget nyújt arra, hogy az adatbázisunkat könnyedén kezelhessük.
A Laravel-t alapból Blade Template Engine-vel adják, ez viszonylag könnyen kezelhető, nagy előnye, hogy nem kell a jól ismert PHP nyitó, és táró tag-eket használni benne, ez által tisztábbá válik a kód.
2. Symfony
Először 2005-ben jelent meg. A Symfony keretrendszer a Laravel „bátyja”, ugyanis ebből alakították ki az utóbbit.
A második legnépszerűbb keretrendszernek minősül. Sok ember jobbnak tartja az előbbinél, ugyanis fejlettebb: több elérhető feature van benne, ilyen például az URL paraméter validáció. Azonfelül jobb strukturáltságra ad lehetőséget, ebből adódóan komplexebb projektekre jobban szeretik használni. Hasonló ORM-el bír, mint a Laravel, csak alapból Doctrinet használ.
Ezt a keretrendszert Twig Template Engine-val adják alapból, nekem először kicsit szokatlan volt, viszont véleményem szerint legalább olyan jó összeségében véve, ha az esetvizsgálatokat nézzük.
Hátránya a Laravellel szemben, hogy sokszor az az érzése támad az embernek, hogy mindent túlbonyolít: nekem sokszor volt az „ágyúval verébre” érzésem, mikor használtam. Ugyanúgy nagyon erős biztonsági szintje van.
3. YII
Ismerek olyan embereket, akiknek az összes PHP oldali keretrendszer közül ez tetszett a legjobban. Nagyon könnyű installálni, és gyorsan használható, könnyű vele dolgozni. Hátránya, hogy egy igényes, áttekinthető kód létrehozásához némi fegyelem szükséges, ugyanis egy adott műveletet sokféleképp meg lehet vele oldani.
Ezen felül hihetetlenül gyors, ami nem utolsó szempont.
4. CodeIgniter
Egy elég könnyed keretrendszer, mindössze 2 MB-nyi méretű. A legtöbb alap funkció, ami a fejlesztéshez szükséges, megtalálható benne, szintén MVC architektúrára épül.
Más nagyobb keretrendszerekkel összemérve összehasonlíthatatlanul gyorsabb. Véleményem szerint szintén kevésbé jó választás egy kezdőnek, érteni kell, hogy hogyan működik az objektumorientált-programozás a megfelelő használatához.
Hátránya, hogy sokkal kevesebb előre definiált funkció van benne. Mikor én használtam, akkor nagyon hiányoltam belőle a Laravel jól elkészített, részletes ORM-jét, legalábbis egy ahhoz hasonlót.
Hogyan érdemes választanunk?
Igazából mindig az adott projekt dönti el, hogy mit érdemes használnunk. Habár én szeretem a YII, valamint a CodeIgniter keretrendszereket is, kevésbé használom őket, ennek az az oka, hogy a gyorsaságukat leszámítva nem igazán van olyan szempont, ami alapján jobbnak lehetne őket beállítani, mint mondjuk a Laravelt.
Ha nem ígérkezik komplexebbnek egy applikáció, akkor sem veszíthetünk azzal semmit, ha a legfejlettebb keretrendszerekkel készítjük el azt. Amennyiben a projekt ilyen irányba később bonyolódik, akkor biztosan nem lesz probléma ebből.
Azt is tartsuk szem előtt, hogy nem mindig éri meg ismert keretrendszert használni. Kifejezetten komplex projektek esetén például egyáltalán nem biztos, hogy jó ötlet, mert jöhet egy olyan speciális igény, amit a keretrendszer nem tud kezelni.
Amennyiben valakit az érdekelne, hogy hogyan működik az objektumorientált PHP programozás, vagy hogy milyen frontend keretrendszert lenne érdemes választanunk, akkor ajánljuk figyelmébe az alábbi írásokat.