Zend Framework vs. CodeIgniter: the good, the bad

Geschreven door: Kim Ausloos - 18 reacties

Websites maken komt vaak nog steeds neer op een op maat gemaakte oplossing. Wel gaat men steeds vaker een framework gebruiken om de ontwikkeling sneller te laten gaan, daarom maken we een kleine vergelijking tussen Zend Framework en CodeIgniter.

PHP Frameworks

Een framework laat een developer toe om sneller en makkelijker te ontwikkelen. Bekijk het als een zelfbouwpakket van Ikea vs. een omgezaagde boom waar je nog planken van moet maken. Voor de meeste mensen die actief zijn in de webdevelopment wereld klinken Zend Framework en CodeIgniter bekend in de oren. Maar ze gebruiken beide vaak dezelfde keywords: snel, stabiel, open source, community, .... Maar wat is nu het verschil tussen deze 2 grote namen en waarom is het ene beter dan het andere?

In de praktijk is dit net zoals bij javascript libraries afhankelijk van de ontwikkelaar, de ene zweert bij het Zend Framework terwijl er voor de andere niets anders bestaat dan CodeIgniter. Ik probeer vandaag deze 2 grote namen met elkaar te vergelijken voor jullie.

Zend Framework: ontstaan

Het Zend Framework is origineel onder andere geschreven door het welbekende Zend Technologies, dat de ontwikkeling van de Zend PHP Engine op zich neemt. Hiermee zijn ze gestart in 2005 toen de vraag naar goede en vooral snel op te zetten websites steeg. Omdat er toen geen oplossing voor handen was om snel een op maat gemaakte website op te zetten zijn ze zelf aan de slag gegaan.

Zend Framework: the good

Het framework heeft als eerste doel om modulair en makkelijk aanpasbaar te zijn. Het is dus vrij makkelijk om achteraf bv. een webshop module toe te voegen aan een reeds bestaande Zend Framework website. Je kunt het dus bekijken als een grote verzameling aparte modules, het framework laat de ontwikkelaar de keuze of hij gebruik maakt van bv. de MVC componenten en database interactie functionaliteit. Verder richt het ZF zich ook op een zo goed mogelijke ondersteuning van verschillende aspecten van het Internet. Zo is er standaard ondersteuning voor een breed scala aan webtechnologieen zoals email (pop3, mbox, imap) en de meest courante databases (MySQL, Oracle, MS SQL server, SQLite, ...). Ook andere handigheden zoals SOAP, RSS, PDF, Amf worden ondersteund. Tegenwoordig worden ook meer en meer mogelijkheden van bestaande websites vrijgegeven dus Zend kan ook API's van third party's aan, zo is er onder andere ondersteuning voor de meeste Google producten, OpenId en de vooral in de USA bekende Amazon schaalbare webhosting diensten. Verder is er standaard makkelijk te activeren ondersteuning voor meertalige websites, een pluspunt dus. Zoals je kunt zien is het ZF vooral een framework dat het moet hebben van de goede ondersteuning voor allerhande technologieën en modulariteit.

Zend Framework: the bad

Het ZF kan natuurlijk nooit klein zijn met zulk een ondersteuning. De gecomprimeerde download van de minimale installatie van versie 1.9.3 van het Zend Framework weegt 5,4Mb en uitgepakt komt dit neer op 27,1Mb. Op zich is dit geen probleem, webspace kost niet zoveel tegenwoordig, maar als je een ietwat uitgebreide website maakt zul je al snel een groot deel van de verschillende modules moeten inladen vooraleer de gebruiker de website op z'n scherm krijgt. Dit heeft als nadeel dat het ZF allesbehalve licht is en vrij veel geheugen zal gebruiken. Wanneer je een website op shared hosting zet en na verloop van tijd redelijk wat bezoekers krijgt, zul je merken dat de response tijd naar omhoog gaat wat de website sloom maakt. Ook kunnen er problemen ontstaan met de database wanneer je de standaard database module gebruikt en niet voldoende aandacht besteed aan de configuratie. Zend gaat per pagina die de gebruiker bekijkt bijkomende queries uitvoeren om te ontdekken hoe de database er uit ziet. Dit zorgt natuurlijk voor meer stress op de database server wat de server trager maakt en in extreme gevallen kan overbelasten. Het is natuurlijk wel mogelijk om caching te activeren of de database laag uitgebreid te configureren zodat het aantal extra queries afneemt en de website weer wat sneller gaat worden.

CodeIgniter: ontstaan

CodeIgniter is in februari 2006 gemaakt door EllisLabs, dat je misschien ook kent van ExpressionEngine. Het is een framework dat net zoals Zend Framework zeer goed onderhouden is, er komt regelmatig een nieuwe release die bugs aanpakt.

CodeIgniter: the good

Net zoals Zend is CodeIgniter een MVC framework, het laat je dus onder andere toe om de verschillende lagen te scheiden waardoor je geen html met php moet mixen. CodeIgniter staat ook bekend als lichtgewicht, en dat is het zeker als je het vergelijkt met het Zend Framework. De zipfile van CodeIgniter is 2,2Mb groot maar bevat standaard ook de user guide. Wanneer we de zip uitpakken en de user guide weglaten is de volledig uitgepakte folder 1,6Mb groot. Omdat CodeIgniter met opzet klein gehouden wordt is het ook extreem snel. Als je een ietwat uitgebreide website wil opzetten op shared hosting is het dus beter om CodeIgniter te gebruiken, het framework zelf zal de server zeer weinig belasten waardoor de reactietijd snel blijft en het geheugengebruik laag is. Nog een sterk punt van CodeIgniter is de leercurve. Een kleine website heb je redelijk snel opgezet, zelfs al is het de eerste keer dat je gebruik maakt van het framework. Dit is deels te verklaren door de beknopte configuratie en de zeer goede documentatie, CodeIgniter streeft naar een zo goed mogelijke documentatie, en dat merk je ook.

CodeIgniter: the bad

Natuurlijk is CodeIgniter niet perfect, er zijn zaken die makkelijker te maken zijn in het Zend Framework dan in CodeIgniter. Omdat CodeIgniter zo klein is, mist het ook veel out-of-the-box functionaliteiten die je in het Zend Framework wel hebt. Zo denk ik bv. aan de Zend Layout class, die toelaat om zeer snel een bestaande website een volledig nieuwe layout te geven. Dit kan uiteraard ook in CodeIgniter maar in Zend is dit net iets makkelijker met behulp van zogenaamde View Helpers. Door het afwezig zijn van geavanceerde standaard modules zul je moeten zoeken naar plugins of libraries wanneer je dingen zoals bv. SOAP gaat gebruiken. Dit heeft tot gevolg dat je het framework en de libraries up to date moet houden wat na tijdje moeilijk kan worden.

Conclusie

Zoals gezegd is de keuze van een framework een persoonlijke keuze, ik heb al uitgebreid met het Zend Framework gewerkt en begin nu CodeIgniter te verkennen. Mijn persoonlijke mening is dat je beter af bent met het Zend Framework wanneer je een website maakt die een groot publiek zal aantrekken, je een zware server hebt, een applicatie maakt die verscheidene jaren ondersteund moet worden en van verscheidene technologien gebruik gaat maken. Wanneer je echter een kleinere website moet ontwikkelen, kun je waarschijnlijk veel sneller de ontwikkeling afronden met CodeIgniter en zal je website ook veel makkelijker te hosten zijn. Natuurlijk is dit slechts een kleine vergelijking tussen 2 grote namen die beide hun diensten meermaals bewezen hebben, alles in detail bespreken zou bijna onmogelijk zijn.

Ken je nog een ander framework dat beter is dan de 2 samen of heb je toch een andere visie, laat gerust je mening achter!

18 Reacties op deze blogpost:

Joeri Dehouwer
Door Joeri Dehouwer op 06 november 2009

Mijn voorkeur gaat uit naar cakePHP ;)

Junni
Door Junni op 06 november 2009

Ik werk met het Symfony Framework, sinds een jaar of drie nu schat ik. Zeer tevreden van, maar kan (nog) niet vergelijken met Zend Framework en/of CodeIgniter.

Kim
Door Kim op 06 november 2009

@Junni Als je snel even wil kijken of het gras groener is aan de andere kant, zou ik je CodeIgniter aanraden. Daarin heb je in een uurtje of 2 de ganse basis zeker en vast gezien en heb je een eenvoudige website aangemaakt. Echt een aanrader als je zo'n klein projectje hebt waarvoor je toch geen CMS kunt gebruiken. Met Symfony heb ik persoonlijk nog niet gewerkt, wie weet komt dat nog :)

@Joeri CakePHP was ook een kanshebber voor deze blogpost, het ging tussen Zend en cakePHP of CodeIgniter. Het is dan dus uiteindelijk CI geworden :)

Gert Bangels
Door Gert Bangels op 06 november 2009

De leercurve voor CodeIgniter is inderdaad een stuk minder stijl dan die van het Zend Framework / Symphony. Ben ook pas begonnen met CodeIgniter onder de loep te nemen en het brengt toch een stuk minder "gevloek" met zich mee ;-). Nuja, developen is dan ook niet mijn sterkste kant.

Glenn Veugen
Door Glenn Veugen op 07 november 2009

Ik ben door school ook in aanraking gekomen met CakePHP, en ik heb de indruk dat dit framework toch ook met de grote spelers gaat meedoen in de nabije toekomst. Helaas bestaat er volgens mij nog niets als een CakePHP certificate, iets wat men bij Zend wel heeft, en ook van het nodige aanzien geniet in de bedrijfswereld :)

Thomas Timmers
Door Thomas Timmers op 07 november 2009

Ik gebruik zelf op dit moment CodeIgniter omdat na wat bekijken dit toch het meest simpele framework (van zend en cake) en ik me zo het heel framework gebeuren rustig wil aanleren. :)

CI is denk ik ideaal voor vlug en snel een "simpele" site te maken maar mist toch een aantal interessante zaken (die wel oplosbaar zijn via eigen lib's of 3th party lib's)

Ik hoop binnen afzienbare tijd de overschakeling te kunnen maken naar het Zend framework. Aangezien dat toch ook in relatief wat bedrijven wordt gebruikt.

Waarom gebruikt Inventis trouwens zijn eigen framework en bv. geen Zend is dit iets wat gegroeid is of is het een bewuste keuze?

Junni
Door Junni op 08 november 2009

@Kim Als het op zo'n korte tijd kan, ga ik die CodeIgniter inderdaad even verkennen. Zelfs voor kleine projecten zonder CMS gebruik ik momenteel Symfony, omdat het gewoon snel werkt en een mooie basis biedt voor eventuele uitbreiding later. Nadeel is dat het waarschijnlijk wat teveel overhead creëert voor een website van 5 pagina's. CI ga ik in ieder geval toch eens testen. CakePHP leunt wel dicht bij Symfony aan.

Pieter Claerhout
Door Pieter Claerhout op 09 november 2009

Wij gebruiken bij ons het Yii framework (http://www.yiiframework.com/) en zijn daar heel tevreden over. Het is een PHP 5 framework (in tegenstelling tot CI) en bevat out-of-the-box al een hele hoop functionaliteit en is bovendien nog eens snel ook.

kim
Door kim op 09 november 2009

@Junni het is zeker mogelijk op zo'n korte tijd en het zal inderdaad veel minder overhead met zich mee brengen. Laat iets weten hoe het je bevalt!

@Pieter Ik heb al van Yii gehoord maar nog niet zelf mee gewerkt. Als je interesse hebt in een puur PHP5 framework, dan bestaat er ook nog kohana ( http://www.kohanaphp.com/ ), dat kun je zien als CI maar dan in OO-PHP5. Ze hebben dezelfde doelen als CI, maar zijn veel minder bekend spijtig genoeg...

Maarten Tibau
Door Maarten Tibau op 09 november 2009

Ik werk sinds 2009 met het Zend Framwork, gestart bij versie 1.7 en bij het uitkomen van 1.8 bijna direct overgeschakeld. En tot op heden heb ik nog geen seconde spijt dat ik deze keuze gemaakt heb.

ZF is zeker geen framework waar je binnen de 5 minuten mee weg bent, maar als je al wat ervaring hebt met PHP 5, OOP dan lukt het normaal wel snel. Persoonlijk vind ik de online reference guide van ZF niet echt geweldig om mee te werken, maar natuurlijk zijn er tal van andere alternatieven om aan info te geraken.

Mijn favo's:
- Zend Casts
- Alex Tech Adventures

Boeken:
- Zend Framework 1.8 Web Application Development

Wat ik ook een pluspunt vind is dat je een certificaat kan behalen voor het ZF. Dit certificaat behaal je echt niet zomaar, op dit moment zijn er nog maar 10 gecertificieerde ZF engineers in België, maar het aantal stijgt langzaam, vermits meer en meer bedrijven het ZF gaan gebruiken.

In mijn ogen lijkt ZF een soort standaard te worden in de wereld van PHP, of dit ook echt zal gebeuren, only time will tell. Maar om nu nog zelf een framework te gaan ontwikkelen lijkt me de domste zet te zijn, want waarom nog eens het wiel uitvinden.. er zijn meer dan genoeg goeie frameworks.

Goeie post Kim!

Steven Dobbelaere
Door Steven Dobbelaere op 10 november 2009

Ik gebruik Codeigniter en ben er tevreden van. Hoewel ik regelmatig beroep met doen op third party libs omdat de standaard libs niet volstaan of niet aanwezig zijn. Documentatie is zeer goed bij Codeigniter. Voor ik begonnen ben met een framework heb ik cakePHP en Kohana getest en deze leken me wat van hetzelfde kaliber en zelfde manier van werken. Ik zal Zend ook wel eens proberen.

Maarten Tibau
Door Maarten Tibau op 10 november 2009

Is er bij Inventis al de overweging geweest om over te stappen op een ander framework dan het in huis ontwikkelde framework?

FinalFrag
Door FinalFrag op 10 november 2009

Ik ben ook al enkele jaren grote CodeIgniter fan en ook al een paar mensen ertoe aangezet (he Thomas :p). Zend, cakePHP, Symphony en al de rest zullen ook wel hun sterke punten hebben, maar voorlopig blijf ik bij CI, al is het maar uit luiheid om een nieuw framework aan te leren ;)

kim
Door kim op 10 november 2009

@steven Zend is zeer leuk om mee te werken, maar kost je extra moeite om het project op te zetten, zeker in het begin als je het niet helemaal gewend bent. Nadien werkt het super makkelijk en merk je dat het gemaakt is om echt als php application framework te gebruiken. Ook vind je veel info over Zend op fora. De Zend Doc kon inderdaad beter (zoals sommigen al zeiden) maar uiteindelijk zul je wel het antwoord vinden.

@FinalFrag en @maarten Elk framework heeft voordelen dat de andere niet hebben, zeker als je na verloop van tijd al een paar extra dingen zelf geschreven hebt. Een framework is en blijft iets dat je zelf nog moet inrichten. Als je alles hebt wat je moet hebben en het framework doet alles wat het moet doen, dan is er geen enkele reden om te switchen

Hoppa66
Door Hoppa66 op 28 mei 2010

Kohana is een fork van CI die wel gebaseerd is op PHP5, en een stuk "schoner" is dan CI: www.kohanaphp.com

Kees Schepers
Door Kees Schepers op 05 juni 2011

Toch zou ik voor Zend Framework gaan als het om serieuze projecten gaat. Code Igniter is erg basis en maakt het daarom leuk om te gebruiken als framework om MVC en het werken met frameworks onder de knie te krijgen. Echter met commercieel oogpunt en consolidatie van je applicatie voor de lange termijn kan niet anders dan Zend Framework gekozen worden in mijn ogen. Hier zit een commercieel bedrijf achter en word onderhouden door een mega grote communicatie en word aangevuld met werk vanuit Zend Technologies zelf. Tevens biedt Zend een divers soort tools aan om het ontwikkelen in Zend Framework gemakkelijker te maken.

Zend Framework is in het begin stadium welliswaar wat pittig maar zodra je het eenmaal door hebt kun je flink gas geven met je projecten. Daarnaast ben je ook niet verplicht om alle onderdelen van het ZF te gebruiken en kun je ook je eigen lagen erin schrijven.

Kees Schepers
Door Kees Schepers op 05 juni 2011

Ik wist niet goed hoe ik mijn reactie kon bewerken maar hierbij nog een aanvulling:

"Zend gaat per pagina die de gebruiker bekijkt bijkomende queries uitvoeren om te ontdekken hoe de database er uit ziet. Dit zorgt natuurlijk voor meer stress op de database server wat de server trager maakt en in extreme gevallen kan overbelasten. Het is natuurlijk wel mogelijk om caching te activeren of de database laag uitgebreid te configureren zodat het aantal extra queries afneemt en de website weer wat sneller gaat worden."

Om het geheugen gebruik te minderen kun je eventueel ook gebruik maken van APC caching in Apache. Dit cached PHP files en zorgt voor aanzienlijk minder geheugen gebruik en snellere servering van pagina's. Uiteraard moet je wel de mogelijkheden hebben om dit aan te kunnen zetten al dan niet te installeren op je webserver.

Verder kun je het beste Zend Framework forken met Doctrine 2.0. Doctrine is een ORM die dusdanig ver doorontwikkeld is om communicatie tussen je database en je server side code zo minimaal mogelijk te houden, want dat is nogal een nadeel bij diverse frameworks. Echter blijft mijn mening dat het vaak niet aan het framework ligt dat een website traag is maar eerder andere zaken zoals niet geoptimaliseerde databases, of queries en ook client-side data die veel beter gecomprimeerd kan worden.

RayIT
Door RayIT op 23 september 2011

Leuke discussie!!
Waar ik werkte had men alles in asp.net, dit heb ik allemaal omschreven naar gewoon 'plain' PHP, wat een verbetering hihi. Vervolgens collega's ook helemaal gek van php gemaakt.

Vervolgens ook gaan zoeken naar een mooi framework en vanalles uitgeprobeerd.
Probleem toen was dat we mssql en oracle databases gebruiken en dat ZEnd framework (denk zo'n 4 jaar geleden) heel buggy was met mssql.
Uiteindelijk op codeignitor uitgekomen. Echter weer vanaf gestapt. Waarom???
Laatste codeigniter moest ik in 2 dagen omschrijven naar gewoon php omdat ik codeigniter niet geupgrade kreeg en de server al geupgrade was! Dus werkte de boel niet meer.
Denk ook dat we in de huidige omgeving niet zomaar kunnen overstappen.
MVC werkt niet altijd zoals je zou willen vooral met complexe oracle databases.

Momenteel eigen framework gemaakt op basis van wat tutorials.
Vooral deze fungeerde als basis (zonder de mobile jquery gedeelte):
http://devgrow.com/jquery-mobile-php-mvc-framework/

Voordeel is total control, als we bv applicatie overzetten dan kan ik gewoon in de view de hele php net html code zetten en alles werkt. Als ik dan later iets moet aanpassen veranderen dan haal ik de logica uit de view en zet hem in de controller/model.

Laatst nog even django geprobeert echt super maar omdat we met een team werken(en niet iedereen makkelijk een nieuwe taal leert etc..) zijn we weer terug op php, een leerzaam uitstapje van 2 weken.

Wil in de toekomst Zend nog een kans geven alhoewel er niet echt behoefte is en het eigen framework eigenlijk perfect voldoet.

Denk wel dat belangrijk is dat er zoals bij linux niet te veel keuze is, waardoor je mensen afschrikt.
Ook vind ik persoonlijk dat je eigenlijk alles zonder framework zou moeten kunnen zodat je niet gebonden bent en gewoon een 'domme' gebruiker....

Reageer ook op dit artikel

U kan optioneel inloggen met Twitter of Facebook. U krijgt dan de mogelijk om uw reactie ook te delen via Twitter of Facebook
Login with twitter
Aanmelden
{* Remarketing tag *}