Door
Ozzie PHP
op 30-12-2010 16:10
gewijzigd op 06-01-2011 13:17
50.689 views
Hmmm, laat ik de vraag toch maar eens stellen. Ik wil graag een eigen framework / beheersysteem maken. De bedoeling is dat ik als het systeem klaar is heel makkelijk een website kan maken waar meteen al een standaard cms gedeelte in zit.
Ik ben al begonnen met een framework en ik maak daarbij gebruik van Zend Framework, maar nu vraag ik me het volgende af. Ik heb behoorlijk wat PHP kennis en ervaring inmiddels, maar ik heb hier geen opleiding voor gehad. Ik wil het mezelf dan ook altijd zo makkelijk mogelijk maken als ik aan het programmeren ben. Voorbeeld, als ik een databasequery wil uitvoeren dan wil ik niet een hele query in te hoeven typen, maar wil ik simpele functies kunnen gebruiken, bijvoorbeeld: $database->setTable('tabel') en $row = $database->select('naam') etc.
Ook vind ik het handig dat ik in Zend Framework een route makkelijk kan koppelen aan een controller en een actie. Daarnaast gebruik ik de MVC structuur (modules), de Zend_Registry functie om iets op te slaan en gebruik ik de caching functie voor het cachen van gegevens.
Ik gebruik Zend Framework dus voornamelijk voor:
- maken van mooie routes
- routes koppelen aan controller en actie
- MVC structuur (modules)
- Zend_Registry om variabelen op te slaan
- Caching
Voor de rest gebruik in Zend Framework eigenlijk niet. Ik weet dat er heeeel veel mogelijkheden in Zend Framework zitten, maar ik ben niet iemand die dat allemaal wil uitvogelen, en ik wil toch altijd graag mijn eigen code schrijven zodat ik precies weet wat de code doet en hoe deze in elkaar zit (zodat het voor mijzelf logisch is en makkelijk te gebruiken).
Nu vraag ik me 2 dingen af:
1) is het voor mij eigenlijk wel zinvol om Zend Framework te gebruiken aagezien ik er niet heel veel mogelijkheden van benut.
2) zijn de 5 functies waar ik gebruik van maak (makkelijk) ook zelf te maken of is dat heel erg ingewikkeld?
Wat raden jullie aan? Zend Framework blijven gebruiken ook al gebruik ik er maar weinig van? Of toch zelf mijn eigen functies maken en Zend Framework niet meer gebruiken? Ik stel deze vraag ook omdat Zend Framework zo'n 23mb aan serverruimte in beslag neemt.
Ik hoor over CI weinig goeie berichten. Zal hem ook eens downloaden, dan kan ik een onderbouwde mening geven :)
@Ozzie
Ik zou gaan voor de 'doe-het-zelf' optie. Maar ik zal als ik jouw was wel zelf een implementatie maken, want de code is daarin tegen weer niet zoveel soeps :) Laat zo af en toe eens zien wat je hebt dan kunnen wij dat reviewen voor je.
Maar ik zal als ik jouw was wel zelf een implementatie maken, want de code is daarin tegen weer niet zoveel soeps :)
De code in de tutorial bedoel je? Kun je daar een voorbeeldje van geven wat je bedoelt? Ja, ik zal wel kijken wat ik ga doen... moet er nog wel even tijd voor zien vrij te maken :)
Ik zou een andere mappen structuur afdwingen ;) Die van zend framework ben ik zeer tevreden over, maar dat is meer persoonlijke keuze.
Verder de volgende punten:
- Coding standards zijn niet te mijne :)
- Registry is niet veel soeps
- Database is ook niet zoveel soeps
- Router zou ik veel meer uitgebreid maken met regexp endergelijke
- De autoloader kan ook wel wat aanpassingen gebruiken :)
- Mis een optie voor een ini config of een xml config
- Elke controller krijgt het registry als parameter mee, en veel andere klasse ook terwijl dit soms helemaal niet nodig is.
- De V van het MVC zou ik anders oplossen.
- Mis belangrijke zaken zoals caching, validation, authentication etc
Dat zijn juist dingen die zend framework weer wel allemaal netjes heeft geïmplementeerd dus al zou je de keuze aan mij geven dan zou ik zend framework nemen maar goed komt misschien ook omdat ik daar dagelijks mee werk.
Over jouw reactie waarom ik bepaalde dingen niet goed vind het volgende:
Registry is niet soeps
- Geen controle of de variabelen wel zijn gezet, alles wordt zomaar terug gepompt.
- Alleen maar magic methods, wanneer dit niet werkt op een één of andere manier kan je variabelen niet meer ophalen.
- lazy registreren van object zou wel cool wezen
- Overschrijven van waarden is mogelijk. Stel je voor je hebt 'config' is het register gegooid en zonder dat je het zelf weet gooi je een ander object ook met de naam 'config' het register in. En dan sta je verbaasd waarom je bepaalde configuratie waarden niet meer op kan halen terwijl je deze toch gezet hebt.
Routing
Je vroeg om een voorbeeld, hier op phphulp zijn er wel eens twee voorbeelden gemaakt door pim en mijzelf. klik
Autoloading
Ik vind hem een beetje rommelig, en weinig mogelijkheden. Ik zou hem opsplitsen in verschillende autoloaders
- ArrayAutoloader
- PearAutoloader
etc, daar moet je even mee spelen.
V van het MVC
Kijk eens Zend_View dat vind ik een mooie implementatie. De oplossing uit die tut is gewoon te summier.
Verder niet zoveel tijd om zeer uitgebreid te reageren, maar hoop dat ik je wat meer informatie heb gegeven ;)
Ik hoor over CI weinig goeie berichten. Zal hem ook eens downloaden, dan kan ik een onderbouwde mening geven :)
Dan ben ik erg benieuwd naar die weinig goede berichten, want die zijn bij mij niet bekend. Ja oké, behalve dan dat ze qua codestyle niet alles PHP5 hebben. Dus de methodes van hun hebben geen public/private e.d. ervoor staan. Is op zich geen probleem aangezien je eigen classes wel gewoon in je eigen stijl kan doen. Vind je dat echt een probleem dan moet je maar eens naar Symphony kijken. Maar hoe je het ook ziet: alles is beter dan een eigen framework maken (behalve dan dat het leerzaam is). Ik heb gedurende mijn schoolperiode zo'n 3 PHP 'frameworks' geschreven. Leuk om te doen, dat zeker. Maar het wordt niet beter dan bestaande open-source frameworks die continue doorontwikkeld worden door een team van goede programmeurs. Veiligheid zal zeer waarschijnlijk minder goed geregeld zijn. Kijk eens naar http://codeigniter.com/user_guide/database/active_record.html, geniaal toch? Oké, Active Record van Ruby on Rails is nog net wat genialer, maar dat terzijde. Ik ben eerst overgestapt op ZF (lekker uitgebreid), maar echt sneller ging ik er niet van programmeren. Met CodeIgniter kan je snel goede betrouwbare applicaties schrijven.
Mijn advies: stop de tijd die je wil steken in het ontwikkelen van je eigen CMS in het personaliseren van een bestaand framework. Download wat additionele libraries voor bijvoorbeeld authenticatie of Twitter.
- Alleen maar magic methods, wanneer dit niet werkt op een één of andere manier kan je variabelen niet meer ophalen.
- ArrayAutoloader
- PearAutoloader
etc, daar moet je even mee spelen.
Ipv magic methods dan get en set functie maken?
Wat bedoel je met ArrayAutoloader en PearAutoloader?
[size=xsmall]Toevoeging op 31/12/2010 19:52:49:[/size]
The Force op 31/12/2010 19:46:40
Mijn advies: stop de tijd die je wil steken in het ontwikkelen van je eigen CMS in het personaliseren van een bestaand framework. Download wat additionele libraries voor bijvoorbeeld authenticatie of Twitter.
Die database class ziet er leuk uit, maar kan ik ook zelf maken, dat lukt me nog wel... maar er zijn ook dingen die ik niet eerder heb gedaan en die een stuk lastiger zullen zijn. Maar op zich lijkt zelf maken we wel leuk. Waarom denk je dat het minder veilig is overigens? Ik zou juist het tegenovergestelde denken namelijk...
Volgens mij kan je een framework pas goed gebruiken als je weet hoe het werkt. En er is geen beter manier dat te leren dan zelf een basaal framework te maken. Iets als dit