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.

Ik gebruik Zend Framework met name omdat ik mooie routes kan maken, bijvoorbeeld www.mijnsite.nl/kantoorartikelen/nietmachine in plaats van www.mijnsite.nl/?category=4&product=2.

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.

Ja, inderdaad kan ook... alleen die definities uit een configuratiebestand halen lijkt me niet heel fijn, omdat je dan in je controller niet direct kunt zien wat er wordt gevalideerd.

Dit is ook een optie:
$validator->validate(array('name', 'address', 'mail'), $_POST);
(waarbij veld 1 wordt gevalideerd als naam, veld 2 als adres en veld 3 als mailadres)

...of iets dergelijks. Enige nadeel van bovengenoemde is dat je de exacte benamingen moet kennen om vergissingen te voorkomnen, bijv. e-mail ipv mail.

Wat dat betreft lijkt dit me ook handig:
$validator->validateName($_POST['name']);
$validator->validateAddress($_POST['address']);
$validator->validateMailAddress($_POST['mail']);

etc.


[size=xsmall]Toevoeging op 24/01/2011 17:03:55:[/size]

En foute waardes in de validator class opslaan of iets dergelijks...
beetje offtopic, maar wat is de beste manier om data op te slaan in de database en die vervolgens weer uit te lezen?

is alleen mysql_real_escape_string voldoende bij het opslaan? of..? met uitlezen? addslashes, stripslashes, htmlent, htmlspec etc etc?
De beste manier lijkt het me om een query uit te voeren....
Als je je afvraagt hoe je veilig user input in die queries stopt, is het gebruik van mysql_real_escape_string idd het goede antwoord.
Zelf werk ik al een tijd met CakePHP. In cake heb je gewoon je layouts waarin je views ingeladen worden, voor elke functie/pagina een apparte view. Forms worden gemaakt met een formhelper classe, validatie gaat super makkelijk, je defineerd in je model de validatierules etc, en wanneer je in je controller zegt $this->Modelname->save($this->data) wordt de data automatisch gevalideerd en vervolgens opgeslagen. Velden die onjuist zijn ingevuld krijgen automatisch een error-classe mee etc, super handig. Ook bij het wijzigen van data werkt het ideaal, je set in de controller het id wat je wilt aanpassen ($this->Modelname->id = $id) en als je alles even op een juist manier doet worden je forms automatisch gevuld met de waardes uit de database.

Werkt super handig en niet al te moeilijk na te bouwen. Volg even dezetut en je komt al een heel eind.
Ja die tut heb ik al eerder gezien... ben ik wel even zoet mee!
Die tutorial maakt alleen geen OOP framework, wat ik je toch aanraad.
Waarom is dit geen OOP eigenlijk? Er wordt toch gewoon met classes gewerkt?
Dat zegt nog niets, een classe is slechts een verzameling van functies. Het gaan om het denken in objecten.

Edit: je kan trouwens eerst nog eens proberen:)

Maar zeg nou eerlijk, het is nu al een topic met 9 pagina's waar vrijwel nog niets gebeurd is (corrent me if im wrong), er wordt door de gebruikers met de moeilijkste termen gegooid. Zou je niet eerst even met de basis beginnen van het programmeren in OO, voordat je begint aan geavanceerde MVC-frameworken?
Moet je voor alles een object aanmaken om het OOP te laten zijn?

Wat mij overigens meteen brengt tot een andere leuke vraag...

Stel je wil een pagina tonen met daarop producten, laten we voor het gemak uitgaan van fietsen. De pagian is een overzichtspagina en toont van 50 fietsen de naan, de prijs en een plaatje. Hoe zou je deze fietsen dan tonen?

- van alle 50 fietsen een object maken? (waarin behalve de naam, prijs en plaatje ook een omschrijving en specificaties zijn opgenomen. Met andere woorden je laadt dus veel te veel informatie in)
- van alle 50 fietsen een object maken, maar niet alle gegevens inladen?
- gewoon de relevante gegevens uit de database ophalen en in een array zetten en dus niet met objecten werken?

Wanneer gebruik je OOP nou eigenlijk?
Haha Marcel, het lijkt erop alsof je een standaard antwoord herkauwt zonder überhaupt naar de code te kijken...
De dispatching - het oproepen van de juiste controller - gebeurt in een functie, niet in een klasse.

Ook wordt het 'model' gebruikt. Ik ken dat begrip als 'Domain Object', zeg User, of als 'Domain Model', het geheel van Domain Objects en dus de applicatie-specifieke code. Hier is het een Database Abstraction Layer... Raar...

Reageren