Hands on ZF2

Inlägget finns även tillgängligt på: Engelska

Ska till att sätta upp en utvecklingsmiljö för ett hobbyprojekt jag länge tänkt på. Mina ögon har då fallit på Zend Framework 2 som i skrivande stund är i beta 3. Jag sammanfattar i detta inlägget mina synpunkter av ramverket efter en första anblick.

Utgångsläge

Jag har börjat med att ladda ner ZendSkeletonApplication för att snabbt kunna komma igång. Frustrationen med kod i beta kan annars vara lite outhärdlig utan ett fungerande exempel känner jag. Efter en tidigare förälskelse i Doctrine så valde jag också att installera deras modul, DoctrineORMModule, för databas hanteringen, samt DoctrineModule.

Detta är en bra början till ett utgångsläge för en plattform jag vill jobba i. Utöver detta vill jag även ha stöd för Assetic som är ett ramverk i php för projektets tillgångar, dvs filer som css, js, bilder osv. Assetic hjälper till att minifiera och hantera tillgångar samt ger stöd för diverse olika hjälpmedel som t.ex. LESS och Twig.
Den största anledningen som jag vill använda detta i min plattform är dock det stöd det ger för lokala resurser i moduler. Utan ett sånt här hanteringssystem så kommer vi alltså bli tvungna att jobba med symlänkar eller referera utanför modulen.
Värt att nämna är att det finns en modul skapad för ändamålet kallad zf2-assetic-module. När jag försökte installera denna gick det tyvärr mindre bra. Jag fick ett server error som jag inte kunde lösa. Ett problem som får stå sig till vidare försök i framtiden.

Värt att nämna är en hemsida där man kan leta efter moduler till sin ZF applikation: http://modules.zendframework.com/

På den sidan så finns det bl.a en modul, ZfcUser, som hanterar användare. Modulen finns även med en Doctrine adapter. Jag vill dock gärna själv skapa min användarmodul till en början då jag tror det är lärorikt och ett bra första steg för att kunna sätta mig in i hur det fungerar. Jag kommer dock troligen längre fram gå över till att använda ZfcUser -modulen då den underhålls av  ZF-Commons.

För att skapa min User -modul har jag utgått från ZendSkeletonModule och helt enkelt gjort namnbyten där det behövs.

Synpunkter

Ramverket är som sagt i beta stadie och vissa brister är att räkna med. När jag tittar runt i källkoden så märker jag framförallt avsaknandet av ordentlig dokumentation. Skulle gärna se bättre förklarat hur man kan jobba med verktygen som erbjuds direkt i IDE’et, alternativt en länk till online dokumentationen. Jag upptäcker även syntax fel, en del klasser som ärver från abstrakta föräldrar utan att täcka upp abstrakta metoder eller själva deklareras som abstrakta.

Helhetsintrycket är dock positivt. Arkitekturen känns genomtänkt och väl applicerad. Mest tilltalande tycker jag är den nya modulstrukturen som är centralt i arkitekturen. I ZF1 tycker jag denna var rätt så flummigt designad vilket ledde till många problem när det kom till att försöka bevara ett bra mönster.
Hur modulen byggs upp är specificerat i en modul klass vilket ger oss en mycket flexibel bas att arbeta i. I applikationens configfil kan vi specificera vilken ordning modulerna ska laddas på ett väldigt visuellt och logiskt sätt.

Länkar

http://www.slideshare.net/weierophinney/zend-framework-20-patterns-tutorial
http://packages.zendframework.com/docs/latest/manual/en/zend.module.html
http://mwop.net/blog/267-Getting-started-writing-ZF2-modules.html
http://modules.zendframework.com/
http://akrabat.com/