Zend Framework 2
Ik vindt de modulaire set-up (net als met de bundles in Symfony2) echt super maar werken met een service manager aka di container is wel nieuw en wennen voor mij net zoals die vele arrays configuraties.
Ik ben zelf een klein projectje gestart op Github om er eens mee te spelen en heb al doctrine2 goed geintegreerd nu. Ga er komende avonden verder mee.
Ik zit er aan te denken om een flinke tutorial te bouwen over ZF2 met Doctrine2 maar ben benieuwd wie daar in geintresseerd is of zelfs me wilt helpen? Dan plaats ik de tutorial gewoon op Github en kunnen we met pull-requests elkaar helpen :)
https://github.com/keesschepers/kmailer
Gewijzigd op 04/12/2012 17:43:31 door Kees Schepers
Een tutorial: Geweldig idee. Aangezien ik al een jaar werk met Symfony2 en daarbij met bundles (modules), DI (service manager) en dat soort dingen kan ik eventueel daar mijn steentje in bijdragen.
Voor een tutorial ben ik uiteraard altijd te porren ;-)
mede omdat in eerste instantie het enkel een collectie functies en classes/libraries was en daarna pas het MVC begrip/principe eromheen gebouwd is.
Ook omdat het aan de zware kant is als ik het vergelijk met andere frameworks (symfony, cakephp, CI, kohana)
Het kan niet altijd op elke share hosting gedraaid worden.
Maar daarbuiten is het een geweldig framework en een geweldig idee om hier een compleet en uitgebreide tutorial over/voor te maken.
Marco, OO is iets dat je opbouwt uit vele losse functies met daaromheen een paar klassen die alles aan elkaar koppelen. Symfony is juist een framework dat daardoor gekenmerkt wordt.
Wat betreft het MVC gedeelte, jij praat echt over 2006 toen er inderdaad nog niet echt MVC in zat nee, maar wat is daar slecht aan? Die tijd was MVC niet zo vanzelf sprekend als nu.
Volgens mij is op shared hostings symfony net zo lastig als ZF(2) om te draaien, kun je uitleggen wat je bedoelt?
Enkel juist dat het lichter en in mijn optiek beter is dan het zend framework.
Het ging er meer om dat het mvc concept bij zend er pas veel later in/bij is gebouwd nadat ze zagen dat de meeste frameworks om hen heen het gebruikte en daarmee succes hadden en niet zozeer van wij bouwen en bieden en goede concrete oplossing maar meer van wij bieden een 'wisselende' oplossing.
Quote:
wij bouwen en bieden en goede concrete oplossing maar meer van wij bieden een 'wisselende' oplossing.
En dat is ook precies wat ik tegen ZF heb. Symfony heeft succes met zijn bundles (zie http://knpbundles.com/ ) en dus bedenkt Zend de modules, Symfony heeft succes met DI en dus bouwt Zend DI in. Als je toch iedereen en alles na gaat bouwen kun je beter stoppen met je project en dat ene succesvolle project (symfony in dit geval) helpen beter te worden. De PHP community kent veel te veel 'concurrentie'. We kunnen trots zijn dat we deel uitmaken van 1 van de grootste script communities in de wereld, wat er alleen is is dat we in postzegeltjes leven. Als we nou eens als een community gingen werken, zoals de Python en Ruby communities, waren we een stuk verder gekomen.
Merk op dat je dat niet alleen met ZF en Symfony hebt, er zijn duizenden te herkennen: Als we PHPmailer hebben waarom dan zonodig Swiftmailer bouwen? Als we Doctrine hebben, waarom is Propel dan nodig? Als we een SonataAdminBundle hebben, waarom hebben we dan nog een AdmingeneratorGeneratorBundle nodig?
Gewijzigd op 04/12/2012 20:20:34 door - Raoul -
Kees zelf ben ik ook geïnteresseerd in je tutorial :). Succes!
Wel vind ik de documentatie niet zo duidelijk waardoor ik me snel afvraag wat ik nu precies wel en niet moet doen.
@Wouter, volgens mij kijken de meeste software pakketten naar concurrenten/collega's wat er goed en fout gaat om daar kennis uit te halen.
@Marco, CI, Kohana en Cakephp bieden ook duidelijk minder functionaliteit dan ZF
Ik moet eerlijk zeggen dat ik geen ervaring heb met Symfony dus de vergelijking daarmee geheel niet kan maken.
Wat ik overigens wil doen is een boilerplate maken met Zend Framework 2 + Doctrine2 + Authentication / ZFCuser / Bootstrap. En dan maak ik daar een tutorial op. Kan nog wel eventjes duren overigens, moet me eerst nog wat meer verdiepen erin ;)
Hmm, ben gister toch even gestart met ZF2 en vindt het nog veel te onduidelijk (zeer slechte documentatie). Ik ben nu bezig de SkeletonApplication om te bouwen naar een directory structure waar ik in geloof, dat lukt aardig. Waar ik me alleen irriteer is die eindeloze array configuraties. Weet iemand toevallig een methode om dat aan te kunnen passen? De Zend\Config component heeft namelijk vele parser, Xml/JSON/PHP/Yml, maar ze gebruiken de enige optie zonder parser (dat is niet eens de PHP parser). Nu dacht ik opzoek te gaan naar de Config dependency, die aan te passen en klaar te zijn. Alleen ik kan nergens deze Config service vinden, weet iemand waar de core services staan?
Code (php)
1
2
3
4
2
3
4
pulic function getConfig() {
$config = new Zend\config\Ini('/path/naar/config.ini');
return $config->toArray();
}
$config = new Zend\config\Ini('/path/naar/config.ini');
return $config->toArray();
}
Of yml, etc maar dat snap je natuurlijk wel :)
Ik moet ook eerlijk zeggen dat ik die array notaties wennen vindt. Ik ben er ook nog niet helemaal uit, misschien ga ik toch maar eens verder met Symfony. Daarnaast is ook het probleem dat Zend Framework 2 wel stabiel is maar alle handige modules die daarvoor geschreven voor zijn nog zo unstable als wat zijn. Om maar een voorbeeld te noemen: zfcAcl en zfcUser etc.
Maar misschien moet ik niet te snel opgeven :)
Quote:
Maar misschien moet ik niet te snel opgeven :)
Dat is ook de gedachte die ik in mijn hoofd heb. Want er zijn natuurlijk ook wel wat mooie dingen die ik de afgelopen dag heb gezien in ZF, maar helaas ook zoveel mindere dingen dat ik telkens weer wil stoppen.
Voor de volledigheid, de code hoort te zijn:
Negatieve punten
Ik ben erg geschrokken van de slechte documentatie. Sommige dingen kloppen helemaal niet, er is nog maar 80% gedocumenteerd en je krijgt het framework beter onder de knie door in de eindeloze code te graven dan door de documentatie te lezen.
Het core framework is gebouwd op een manier die veel gebruik maakt van Event Dispatching en dus het Observer pattern. Nu ben ik wel een voorstander van dat pattern en vindt ik dat Symfony2 hem te weinig gebruikt, maar het zorgt er helaas ook voor dat je code erg onleesbaar wordt. Het is uren zoeken in het core framework om te vinden welke listener naar welk event luistert.
De basis ZendSkeletonApplication vindt ik zeer zwak. Ik ben daarom begonnen aan mijn eigen WjSkeletonApplication. Dat gaat gestaagd door, maar is nog lang niet klaar.
Positieve punten
Ik ben erg gecharmeerd van de EventManager module. Die is beter dan de Symfony Event Dispatcher, door dingen als targets en shared event managers.
Ook de DI module, die doormiddel van Reflection* klassen raadt welke services hij moet injecteren in de service die je aanvraagt vindt ik erg geslaagd. Het is dan weer jammer te noemen dat ZF2 dit component nauwelijks gebruikt en het ServiceManager module voor DI gebruikt en dan vindt ik weer de Symfony Service Container beter.
De Event Dispatching icm met hun goede module zorgt ook voor veel flexibiliteit. Even een nieuwe listener maken, die vastmaken aan een event op in de shared event manager en klaar ben je!
@Wouter, zojuist heb ik jouw variant bekeken van de skeleton application, ziet er goed uit, wel valt het mij op dat jouw skeleton aardig op symfony lijkt.
Persoonlijk heb ik geen probleem met de array configuratie, en om eerlijk te zijn is er weinig verschil wanneer je dit wijzigt in yml.
Voor de geïnteresseerden, een tutorial over zf2/ZfcUser bestaat al, deze is gemaakt door Evan: http://blog.evan.pro/getting-started-with-the-zf2-skeleton-and-zfcuser
Quote:
zojuist heb ik jouw variant bekeken van de skeleton application, ziet er goed uit, wel valt het mij op dat jouw skeleton aardig op symfony lijkt.
Persoonlijk heb ik geen probleem met de array configuratie, en om eerlijk te zijn is er weinig verschil wanneer je dit wijzigt in yml.
Persoonlijk heb ik geen probleem met de array configuratie, en om eerlijk te zijn is er weinig verschil wanneer je dit wijzigt in yml.
Klopt, dat is ook mijn bedoeling. Merk trouwens op dat ik nog volop bezig ben met mijn skeleton application.
En array configuratie vindt ik echt rampzalig, yaml vind ik veel overzichtelijker. Merk op dat je trouwens alle configuratie types kunt gebruiken die Zend_Config_Reader in zich heeft.
Wat het performance gedeelte betreft deze zou zelfs slechter zijn als de oudere versie van Zend Framework. Er is dan wel getest met een Beta versie dus ik kan niet vertellen of de uitslagen nog kloppen: http://www.enrise.com/2012/02/zend-framework-2-performance/