Legyes.hu

Miért nem használok PHP frameworköt?

Felhívom a PHP Pro-k figyelmét, hogy a következő tartalom a nyugalom megzavarására alkalmas!

 

Az előzmények

Már nem is emlékszem évre pontosan pontosan, hogy mikor kezdtem először PHP-val foglalkozni, talán 2004-ben. Az első kecskeméti munkahelyemen, a felvétel egyik követelménye volt. Két napom volt megtanulni alap szinten, úgy, hogy minimális HTML ismerettel rendelkeztem (még a <form> -okat sem használtam előtte soha). Hol voltak még az online oktatók ingyen, a letölthető könyvek, miegymás? Hétvégén a semmiből tanulni, kb. lehetetlen küldetésnek tűnt. Szerencsémre Noxy kimentett és elmagyarázta nekem a lényeget. Akkor már sejthettem, hogy később a „hülyék nyelvének” fogom hívni: ha nekem sikerül megtanulni, akkor bárkinek sikerül.

Akkoriban még senki sem foglalkozott a biztonsággal, a mezők szűrésével. Senkit sem érdekelt az XSS vagy az SQL injection. Jó sok adatot el is loptak, könnyedén, nagyon nagy cégektől. Sok ember volt, aki saját boldogítására PHP-zett. Voltak az önbizalommal teli emberek, akik egyenesen addig merészkedtek, hogy hírportálokat indítsanak egymaguk. Ez utóbbiakba szívesen trollkodtunk bele jelképes JavaScript és PHP tudásunkkal, ráébresztve a készítőt, hogy van még mit tanulnia.

Már majdnem…

Kis szünet után, a következő munkahelyemen foglalkoztam újra PHP-val. Eleinte csak a saját munkám könnyítésére, intranetes oldalacskákat írtam, majd egyre több olyan probléma jött, amit csak PHP-val tudtam megoldani – ugyanis más nyelvet nem ismertem. Eddig nagyobb projektem nem volt, így fel sem merült a framework használata. Ha kellett egy új elem, csak pár perc alatt hozzáírtam és kész. A natív PHP-t később visszanézve is egyből tudtam, hogy mi, mit csinál.

Az első nagyobb projekt

Egy motoros hírportált kellett módosítani/kibővíteni/átírni. Akkor felmerült, hogy valamilyen tartalomkezelő alkalmasabb lenne a feladatra. De valahogy minden újabb igény olyan volt, amire nem volt kész modul és mindig újat kellett volna fejleszteni. Tudom, felelőtlenség a WordPresst frameworknek hívni, de tulajdonképpen az. Mivel nem valami sok WordPress mintapélda volt a neten – amik voltak pedig szörnyen voltak dokumentálva – ezért úgy  döntöttünk, hogy a képességeimnek megfelelően lesz megoldva: sima, natív PHP-val. Ez volt az első eset, hogy a pro fejlesztők szemével nézve, minimum 2 keretrendszert kellett volna használni 🙂

Ekkor még nem volt annyira felkapva az MVC. Az oldalak dugig voltak szöveggel, kicsik voltak a képek, nem volt divat a CSS cserélgetése sem. Megvolt a PSD dizájn, szétszabdaltuk, statikus HTML lett belőle, majd a dinamikus részekbe sok-sok <?php echo ''; ?> -t tettünk. Igen, már akkor sem voltam rajongója a <?= ''; ?> rövidítésnek, mert szeretem, ha valamiről ránézésre látszik, mire való. (Érdekes módon a PHP7-ben végre kinyírták a short_open_tag -et, de a <?= megmaradt);

A kezdő szint

Egyre több olyan projektem lett, ahol már kissé modernebb dolgokra lett szükség: reszponzív dizájn, több oldalas/kategóriás/alkatagóriás/funkcionalitású részekkel. Így felmerült az igény egy framework megismerésére. Viszont az idő szűkössége miatt nem volt idő tanulni és oldalt gyártani, ezért maradt a natív PHP, mindenféle trükközés nélkül. A PHP „router” nem is magában a PHP scriptben volt, hanem az Apache2 webszerverhez kapcsolódó .htaccess fájlban, minden kategóriára/funkcióra egy-egy külön sorral. Ebben az esetben még mindig könnyen követhető, hogy mit is csinál az oldal, hogyan is talál oda a megfelelő részekhez. Valami ilyesmit kell elképzelni:

http://domain.hu/modul/azonosito – ahol a „modul” jelentette azt, hogy melyik view-t kell meghívnia, pontosabban melyik PHP fájlt, ami a megjelenítésért felelős, az „azonosito” pedig a modulhoz tartozó azonsoító. Valahogy így: http://hirportal.hu/hir/10345 vagy http://hirportal.hu/hir/ez-egy-szupi-jo-hir. A PHP-s logikában ez így volt megoldva:

<?php
   //...
switch( $_GET['modul'] ) {
   case 'hir': include_once 'modul/hir/hir.php'; break;
   case 'kapcsolat': include_once 'modul/kapcsolat/kapcsolat.php'; break;
   // ...
   default: include_once 'modul/default/default.php';
}
// ...

Tulajdonképpen ez már egy primitív router, de tulajdonképpen a teljes további logika a modul.php -ben van, a grafikai (view) és a logikai (controller) elemekkel együtt. Ami azt jelenti, hogy maga a modul.php kódja elég csúnya. Komoly hátránya a dolognak,hogy ha a grafikában valami változás áll be, akkor minden egyes modul.php-ben át kell írni a grafikát. Előnye pedig az, hogy nagyon könnyen meg lehet találni a hibákat és azt javítani. Olyan fejlesztőknek is, akik csak kezdő PHP-sok.

A használói-fejlesztői szint:

Most pedig elérkeztünk a valódi válaszhoz, hogy miért is kerülöm a PHP-s frameworkök használatát.

Amit nem szeretek a keretrendszerekben:

Ha még mindig olvasol, akkor nyilván úgy érzed, hogy én vagyok a szakma szégyene, a rendes fejlesztés ellensége és az ilyen embernek nem lenne szabad gép elé ülnie. Részben igazad is van. Részben.

Ami viszont jó dolog a PHP keretrendszerekben:

Természetesen használok keretrendszereket máshol és a PHP-ban is van egy-kettő ami tetszik (pl. RedbeanPHP). A JavaScriptben pl. nagyon megkönnyíti a munkát a jQuery, ami a Microsoft és a Google által is kb. szabvánnyá vált. A kényelem ára viszont a sebesség. De hát JS-ben általában ügye a klienstől vesszük el az erőforrást, szal’ vegyen a látogató erős gépet 😀 ).

 

Exit mobile version