Mi az a Symfony 5 keretrendszer? Mire használjuk?
Valóban igaz az állítás, mi szerint a Symfony a legfejlettebb PHP oldali keretrendszer az összes közül? Miben jobb másoknál?
Manapság nagyon sok különféle weboldal, illetve webes alkalmazás létezik. Ezeknek a nagy része PHP-t használ szerveroldali nyelvként: ahhoz, hogy ez a weboldal megnyíljon, valamilyen szerveroldali nyelv interakciója szükséges, ami jelen esetben, és a legtöbb esetben a PHP nyelv.
Ebből adódóan sejthetjük, hogy-amennyiben a weboldalak többsége PHP alatt fut-hogy mennyire elterjedt lehet manapság ez a scriptnyelv. Rengeteg CMS, és keretrendszer épül erre, ott van például a WordPress: a mai weboldalak teljes mennyiségének 35%-át WordPress tartalomkezelő segítségével készítették el, márpedig az PHP nyelvre épül.
Habár rengeteg mindenről lehetne beszélni a PHP nyelvvel kapcsolatban, mi most a Symfony keretrendszerről szeretnénk egy kicsit bővebben írni. Mire való pontosan, miért használják sokan, és mire érdemes használnunk?
Mi az a keretrendszer? Érdemes használnunk?
Mivel egy keretrendszerről van szó, ezért szeretnénk egy picit előtte arról beszélni, hogy pontosan mit jelent ez a fogalom.
A keretrendszer egy nyelvre épülő különféle könyvtárak gyűjteménye, melyek segítségével a leggyakoribb, általános fejlesztői feladatokra jóval rövidebb idő alatt megoldást találhatunk, mindezt anélkül, hogy a biztonsági, vagy egyéb fontos követelmények sérülnének.
Bizonyára mindenki találkozott már azzal a helyzettel, mikor egy kisebb applikációt kellett elkészíteni: milyen hatalmas munka volt azt megcsinálni nulláról. Legyen szó akár egy szimpla bejelentkezésről, egy egyszerű adatkezelő rendszerről.
Mikor elkezdtünk programozni, akkor előfordult, hogy ezzel néztünk szembe, és azt mondtuk saját magunkban: „Áhh. Nincs kedvem megint elölről kezdeni. Ott az az applikáció, amit a múlt héten írtam. Gyerünk, emeljük át a kód egy részét, ezzel megspóroljuk a munka nagy részét.”
Na, hát pont ez a keretrendszer lényege: egy, valakik által előre megírt kódgyűjtemény, ami abban segíthet minket, hogy gyorsabban tudjunk dolgozni. Ezen felül sokkal jobb eséllyel lesz az applikációnk biztonságos, strukturált és megfelelően funkcionális, és emiatt könnyebb lesz csapatban is dolgozni.
Egyedi keretrendszert használjunk, vagy ismeret?
Mikor annak idején állásinterjúkra mentem, akkor nagyon sokszor találkoztam azzal, hogy az adott cég nem valamilyen ismert, hanem egy egyedi keretrendszert használt, amelyet ők fejlesztettek. Meg is kérdeztem: miért? A legtöbbször azt mondták, azért, mert akkor teljes mértékben látják a kód működését, és ha valami nem működik, vagy hiányzik egy funkció, akkor sokkal könnyebben fogják tudni mindezt korrigálni.
Az egyedi keretrendszerek előnye, hogy teljes mértékben lehetőséget nyújtanak funkcionális személyre szabhatóság terén, emiatt igazán komplex rendszerek fejlesztéséhez inkább ilyeneket szoktak használni. Ezen felül kisebb méretűek is általánosságban véve.
Én magam inkább az ismert keretrendszerek felé hajlok. Általánosságban véve könnyebb megtanulni őket, ugyanis rendelkeznek hivatalos dokumentációval, valamint megfelelő communityvel (közösséggel). Ezek általában sokkal biztonságosabbak, mivel komoly fejlesztői csapatok állnak mögöttük, valamint rengeteg előre elkészített package érhető el hozzájuk. Ezen felül általánosságban véve, gyorsabb is velük a fejlesztés.
Mi az a Symfony keretrendszer?
A Symfony egy nyílt forráskódú PHP könyvtárakból álló gyűjtemény, melyek szeparáltan használhatók, és együtt egy keretrendszert is alkotnak. Alapból egy micro keretrendszer. Egy MVC (Model-View-Controller) architektúrájú PHP oldali architektúra, amely a legfejlettebb ismert keretrendszernek minősül a vetélytársai között.
A különféle könyvtárak installációjára akár egyenként is lehetőség lehet, ebből adódóan nem feltétlenül terhelik az applikációt szükségtelen elemek.
Eredetileg 2005-ben jelent meg, ma már az 5-ös verziója fut.
Miért ez számít a legfejlettebbnek?
Más keretrendszerek is vannak. A legjellemzőbb vetélytársai például a Laravel, YII, CodeIgniter, CakePHP keretrendszerek.
Ezek közül a Laravel keretrendszer az, ami a leginkább hasonlít a Symfonyra, ennek az az oka, hogy eredetileg ebből lett kifejlesztve a Laravel. Habár a Laravel a legnépszerűbb, és legszélesebb körben használt framework, ennek ellenére a legtöbb ember úgy véli, hogy a Symfony fejlettebb, ugyanis gyakorlatilag minden megtalálható benne, ami a Laravelen belül, viszont rendelkezik egyéb, extra Feature-okkal is, például az URL paraméter validáció, vagy a komponensekből való felépíthetőség.
Ha a több ismert keretrendszerrel szeretnénk összehasonlítani, akkor pedig elég egyértelmű a verseny: a CodeIgniter csupán egy nagyon alapszintű bázist biztosít a munkához, és összehasonlíthatatlanul több mindent meg lehet vele csinálni, mint mondjuk a YII2-vel.
Ez természetesen nem jelenti azt, hogy ezeknek a kisebb keretrendszereknek ne lennének előnyei: a legtöbbjük gyors, és kiváló biztonsági szinttel rendelkezik, de mivel például a Symfony minden téren többet tud náluk, ezért elenyésző a kisebb vetélytársak piaci részesedése, és a használtsága ehhez képest.
A Symfony keretrendszer ezen felül lehetőséget ad arra, hogy a különböző komponenseit egyesével installáljuk fel, ebből kihagyva azt, amire éppen nincs szükségünk. Ebből adódóan, a gyorsaságbeli teljesítménye jobb lehet, mint a többi keretrendszeré.
Fejlettségi szintjéből adódóan szeretik igazán komplex, vagy összetett projektek esetén alkalmazni.
Miért érdemes megtanulnunk?
Nem csupán arról van szó, hogy a legkomplexebb applikációkat hozhatjuk vele létre: ma Magyarországon a legtöbb helyen két keretrendszert használnak leginkább, ezek a Symfony, és a Laravel. Számos olyan cég van, aki kifejezetten ezekhez értő fejlesztőt keres, és ez nem mondható el mondjuk a CakePHP-ról, vagy a YII-ről.
Ha megtanuljuk, akkor gyakorlatilag biztos, hogy lesz vele munkánk.
Mennyire felhasználóbarát?
A Symfony 3 keretrendszer még sokkal nehezebben használható volt, a 4-es verziója, valamint a jelenlegi, 5-ös verziója már sokkal inkább felhasználóbarátnak minősül.
Nem a legkönnyebben használható keretrendszer, néha az az érzése lehet valakinek, hogy ágyúval szeretnének verébre lőni: a Laravel ilyen téren szimplább, viszont összeségében véve jól használható. A dokumentációja pedig kiváló, ami mindenképp segítségünkre lehet.
Miért érdemes megtanulni?
Szerettünk volna néhány olyan érvet felsorolni ennek a keretrendszernek a használata mellett, ami mindenképp megfontolandóvá teszi, hogy használni megtanuljuk a használatát, itt leginkább a funkcionalitását, használhatóságát szeretnénk firtatni.
1. Részletes Dokumentáció
A Symfony keretrendszer nagyon részletes dokumentációval rendelkezik. A fejlesztői a legfejlettebb PHP oldali keretrendszert alkották meg, és a dokumentáció összeállításánál is erre törekedtek.
Ez úgy lett kialakítva, hogy mind kezdőbbek, mind haladóbb fejlesztők számára jól használható legyen.
2. Gyorsaság
Mivel egyedi komponensekből tevődik össze, melyeket akár egyénenként is installálhatunk, nagyon könnyedén kordában tudjuk tartani az applikációnk méretét. Még ha a teljes komponenslistát installálva telepítjük, akkor is viszonylag jó teljesítményt nyújt ilyen téren.
3. Beépített ORM
A Symfony keretrendszer egy beépített ORM-et használ, a Doctrinet. Ennek a segítségével nagyon könnyedén nyílik lehetősünk arra, hogy az applikációnkhoz kapcsolt adatbázist kezeljük, és ez számos adatbázist támogat.
4. Átlátható architektúra
Az egyik tulajdonsága, ami kifejezetten kedveltté teszi rengeteg komplex projektre, az az, hogy nagyon átlátható architektúrát biztosít a fejlesztés során, még annak ellenére is kiemelkedik ilyen téren, hogy más keretrendszerek is az átlátható MVC-t használják.
5. Kiterjeszthetőség
Képzeljük el a Symfonyt úgy, mintha pici, különálló csomagokból (bundle) tevődne össze, melyeknek külön-külön funkcionalitása van. Ezeket a pici csomagokat kedvünkre módosíthatjuk, és ezeket a kiegészítő tulajdonságokat viszonylag könnyű is hozzáadni. Ez általánosságban véve nehezebben tehető meg más keretrendszerek esetén.
Ami pedig talán a legszebb: ha egy ilyen egyéni csomagot létrehoztunk, akkor azt más projekteken is tudjuk majd használni, viszonylag könnyedén.
6. Tesztelési lehetőség
A Symfony egyik hatalmas előnye, hogy kiváló lehetőséget nyújt, amennyiben folyamatos tesztelés mellett szeretnénk fejleszteni, akár TDD-ről legyen szó (Test-Driven Development). Ez nemcsak unit (komponens), hanem funkcionális tesztelést is lehetővé tesz.
Ez kifejezetten hasznos komplexebb projektek esetén, ugyanis a megfelelő teszteléssel érhető el, hogy egy nagyobb refaktoráláskor meggyőződjünk arról, hogy minden megfelelően működik továbbra is az applikáción belül.
7. Kiváló Templating
A Symfony alapvetően Twig template engine-t használ. Ez egy nagyon könnyedén, és jól használható módját adja annak, hogy a szerverről érkező adatokat megjelenítsük a felhasználóink részére. Sok szempontból hasonlít a Laravel blade-jára, számomra eleinte kicsit fura volt a használata, viszont egy idő után még jobban meg is tetszett, könnyebb vele az esetleges hibakezelés.
Hogyan működik a Http Processing Symfony alatt?
Ha egy szimpla űrlap elküldésére gondolunk, akkor az alábbi részekre bonthatjuk a folyamatot:
- Egy felhasználó elküldi az űrlap tartalmát
- A böngésző küld egy kérést (requestet) a Symfonynak a szerveren
- A Symfony kreál egy Request Objectet, ami tartalmazza az elküldött adatokat is.
- A Symfony generál egy Response Objectet ez alapján, ami a Request Object adatait is tartalmazza.
- A Symfony a szerveren keresztül visszaküldi a Response-t a böngészőnek.
- A böngésző közli a felhasználó számára ezt az adatot.
Mikor érdemes használnunk?
A Symfony egy nagyon jó keretrendszer, viszont tartsuk észben: leginkább komplexebb projektek esetén szeretik használni. Kisebb projektek esetén gyakran úgynevezett CMS-eket (Control Management System-tartalomkezelő rendszer) használnak, amelyek viszonylag jó megoldást nyújthatnak kisebb weboldalak, webshopok készítése esetén.