PHP karkasai – Zend Framework ir CodeIgniter

Šiuo metu internete yra daug įvairiausių PHP karkasų (Yii, Kohana, Doo, CakePHP, CodeIgniter, Symfony, Seagul, Zend Framework ir daug kitų) ir dažnai iškyla klausimas kurį pasirinkti, kuris geresnis, kuris greitesnis ir pan.

framecomp

Trumpai

Šiame įraše pasistengsiu apžvelgti turbūt populiariausius šiandienos PHP karkasus tai CodeIgniter ir Zend Framework. Nors su CodeIgniter asmeninės patirties daug neturiu, tačiau bendrą vaizdą jau esu susidaręs, jei klysiu vienoje ar kitoje vietoje kritika bus priimtina. Šiuo įrašu nesistengsiu įteigti naudoti vieną ar kitą karkasą, nors gali pasirodyti ir kitaip.

Palyginimas

Ieškant informacijos kuris karkasas geresnis, t.y. google suvedus užklausą “codeigniter vs zend framework” dauguma straipsnių pasibaigia išvadom, kad CodeIgniter greitesnis už Zend Framework bent du kartus. Ir su tuo nesutikti tikrai negalima. Taip Zend Framework ištiesų lėtas kaip vėžlys. Bet ar tai geras palyginimas? Drystu nesutikti, nes testai atliekami su labai paprastomis užduotimis kurias pavadinčiau “blog tipo”. Kas būtų jei mes pasunkintumėm tinklapį įvairiu funkcionalumu? Toliau išskaidžiau savo mintis į karkasų funkcionalumus kurie dažniausiai naudojami įvairiuose tinklalapiuose.

Modulinė sistema

Kalbant apie didelio masto tinklalapius ar tokius kurie laikui turėtų plėstis reikėtų pamastyti apie modulinę sistemą. Modulinė sistema tai yra atskiri tinklapio blokai pavyzdžiui kaip tinklaraštis, diskusijų forumas, naujienų modulis, administravimo modulis. Modulinė sistema yra patogi tuo, kad su tuo moduliu susiję bylos laikomos atskirai nuo viso kito kodo, Zend Framework turi įdiegtą modulinę sistemą, CodeIgniter norint turėti atskirus modulius teks pasinaudoti trečių šalių bibliotekom, kas yra didelis minusas, nes iškils problemos atnaujinant CodeIgniter bibliotekas ir/arba bus tiesiog nepalaikomos trečių šalių bibliotekos.

Vartotojų prisijungimas ir teisės

Bet kuriam didesniam tinklalapiui reikalingas vartotojų prisijungimas ir jų teisių valdymas. Tai yra svarbu nes laikui bėgant atsiras ir vartotojų grupės, vieni vartotojai galės daryti daugiau kiti mažiau. Tokioms užduotims įgyvendinti Zend Framework turi bibliotekas Zend_Auth ir Zend_Acl. CodeIgniter vėlgi tokioms užduotims įgyvendinti reiktų naudotis trečių šalių bibliotekomis, kas laikui begant gali sukelti sunkumų atnaujinant sistemą.

Kešavimas

Norint, kad sistema išnaudotų kuo galima mažiau resursų reikalingas kodo kešavimas. Šiuo metu kešavimo sprendimų yra įvairiausių, tačiau labai rekomenduojama naudoti memcached kuris yra labai greitas. CodeIgniter vėlgi gali pasigirti tik kešavimu į bylą sprendimu, kas ne visada yra gerai, kiti sprendimai įgyvendinami tik trečių šalių bibliotekomis. Zend Framework palaiko šiuos kešavimo: bylos, sqlite, memcached, apc, xcache, zend platform, two levels, zend server disk, zend server shmem. Kombinuojant įvairias kešavimo sistemas galima pasiekti tikrai gerų rezultatų.

Greitis

Kaip karkasas CodeIgniter Zend Framework greičiu lenkia gal kiek daugiau nei du kartus. Bet reiktų nepamiršti jog tinklalapis laikui bėgant plėsis, gal būt prireiks modulinės sistemos, gal vartotojų teisių valdymo, jau nekalbu apie kešavimą. Visiems reikalingiems funkcionalumams jums prireiks naudoti trečių šalių bibliotekas, kurios teoriškai gali dar labiau apkrauti jūsų sistemą.

Išvados

Jei jūsų kuriamas tinklalapis nebus sudėtingas, nereikalaus modulinės struktūros ar kokių nors specifinių funkcionalumų, vienareikšmiškai rinkitės CodeIgniter, nes su jį greitai įdiegsite, nereikalinga pati naujausia PHP versija, jis yra pakankamai greitas. Tačiau jei kuriamas produktas yra sudėtingas, ateityje labai plėtojamas įgyvendinami įvairūs funkcionalumai panaudojant įvairias naujausias technologijas, aš visgi rinkčiausi Zend Framework.

Leave a comment ?

7 Comments.

  1. Lyginti šiuos 2 karkasus – tai tas pats kaip lyginti plaktuką su tanku :)

    Codeigniter – tai įrankis, leidžiantis kurti aplikacijas nuo nulio, tuo tarpu ZF kuo toliau, tuo labiau panašėja į PEAR klasių repozitoriją.

  2. Pradėjau nedidelį projektuką būtent su ZF.

    sunkiai perkandamas karkasas, ypač, kai pavyzdžiai internete skirtingi skirtingoms ZF versijoms… :(

    • Na taip ZF bent jau iki 1.10.x versijos keitėsi labai stipriai, dabar yra labiau nusistovėjęs, bent jau kol išeis ZF 2. Na o dėl informacijos ir pavyzdžių, tai geriausias šaltinis visgi oficiali dokumentacija ir API. Dar labai pravartu peržvelgti pačias klases, nes ne viskas būna dokumentacijoje.

  3. Na mokytis si frameworka tikrai ilgokai trunka, pats savo kailiu patyriau (tikekimes kaip zada ZF2 daug ka pakeis sitoj vietoj) :) Ir taip pat kadaise naudojausi CodeIgniter. Kaip pradedanciajam tuo metu labai patiko. Sis tikrai yra paprastas, su aiskia nuoseklia dokumentacija. Paprastiems projektukams labai liux.

    Na bet kai jau reikia kazko rimtesnio su CI jau sunkoka darosi ir cia "islenda" ZF privalumai.

    Ir apskritai siuo metu norint rasti PHP programuotojo darba, moketi ZF arba Symfony turbut privaloma – tiesiog madinga :) )

  4. Ai ir del CodeIgniter – jis gi praktiskai jau seniai nebedevelopinamas … nauju versiju praktiskai nepasirodo jau keli metai. Tad jei jau kas susidomejote siuo frameworku tai manau geriau is karto rinkites "broliska" frameworka Kohana. Sis kadaise kilo is CodeIgniter ir manau gerokai pralenke savo pirmtaka. Tai tiek.

  5. Codeigniter pradėjo kurti versiją 2.0, žada daug pakeitimų. Mano nuomonė apie Zend: tai didelis lėtas griozdas. O su dokumentacija išvis pravalas, Codeigniterio pagrindus perkandau per 20min, kas galėtu tuo pačiu pasigirti perskaitęs Zend dokumentaciją? Daug firmų naudoja Codeigniter arba išvis nenaudoja frameworkų, tad Zend tikrai nėra privalomas norint susirasti darbą.

  6. Dėl ZF:
    čia Jūsų bėdos, jeigu Jum per sunkus šis freimworkas visom prasmėm. PHP išmokti labai paprasta ir daug kas giriasi, jog "moka'. Bet kai reikia naudoti sudėtingesnius įrankius, vat tas Jūsų "mokėjimas" ir pasireiškia taip pat visom prasmėm. Tebunie lis lėtas, bet tas performance kompensuojasi iš servo pusės. Jeigu projektas neuždirba ant servo, tai kam tas projektas reikalingas :)
    Taip, dokumentacija galėtų būti linksmesnė, bet ZF yra skirtas labiau patyrusiems developeriams, kuriems tas išsamus "step by step" manualo skaitymas nelabai ir reikalingas (kiek programavimo kalbų mokat , be php ir js?). Tad nenusiminkit, mokytis ir dar kartą mokytis.

    Galvojat, pas patį prof. goooogle nėra problemų ir visa infrastruktūra įdeali ? nė velnio, kai servų devynios begalės…

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>