Tips beginnen met OOP
Hallo,
Ik ben al een jaar geleden me gaan verdiepen in OOP, ondertussen heb ik ook gekeken naar het MVC-model en bestaande frameworks als Zend Framework en CakePHP, en nu wil ik de stap eindelijk maken om ermee te beginnen.
Ik heb erg veel wijze berichten gelezen van Jelmer, waaruit ik ook heb besloten dat het systeem dat Jelmer altijd gebruikt/aanraadt wel erg handig is, ik zou het wel willen gaan gebruiken. Ik doel daarbij op één Store-classe, en één classe per object. Iets duidelijker is dit misschien:
Ik vroeg me ook nog af hoe je dit opslaan doet, om zo efficiënt mogelijk (zo weinig mogelijk query's) te werk te gaan. Moet je tijdens het ophalen de gegevens kopiëren in een array van de Store, en tijdens het opslaan controleren welke rijen en welke kolommen veranderd zijn, en die dan updaten?
Hmm, ik bedenk me net, is het niet slimmer om gewoon bij iedere aanroep van setXxx ergens op te slaan dat dat gewijzigd is, en dat de Store-classe dat uit kan lezen?
Ik twijfel nog of ik het MVC-model hier (volledig) in wil verwerken, ik zou dus graag van jullie willen weten of ik de opzet hierboven éénvoudig met het MVC-model kan combineren. Een codevoorbeeldje of een duidelijke uitleg zijn gewenst ;-)
Graag dus jullie tips, raad, en alles wat ik moet weten om met OOP van start te gaan.
Alvast bedankt!
Groeten,
Jonathan
Ik ben al een jaar geleden me gaan verdiepen in OOP, ondertussen heb ik ook gekeken naar het MVC-model en bestaande frameworks als Zend Framework en CakePHP, en nu wil ik de stap eindelijk maken om ermee te beginnen.
Ik heb erg veel wijze berichten gelezen van Jelmer, waaruit ik ook heb besloten dat het systeem dat Jelmer altijd gebruikt/aanraadt wel erg handig is, ik zou het wel willen gaan gebruiken. Ik doel daarbij op één Store-classe, en één classe per object. Iets duidelijker is dit misschien:
Quote:
BerichtenStore
- new
- getById
- save
Bericht
- getNaam
- setNaam
- getBericht
- setBericht
- new
- getById
- save
Bericht
- getNaam
- setNaam
- getBericht
- setBericht
Ik vroeg me ook nog af hoe je dit opslaan doet, om zo efficiënt mogelijk (zo weinig mogelijk query's) te werk te gaan. Moet je tijdens het ophalen de gegevens kopiëren in een array van de Store, en tijdens het opslaan controleren welke rijen en welke kolommen veranderd zijn, en die dan updaten?
Hmm, ik bedenk me net, is het niet slimmer om gewoon bij iedere aanroep van setXxx ergens op te slaan dat dat gewijzigd is, en dat de Store-classe dat uit kan lezen?
Ik twijfel nog of ik het MVC-model hier (volledig) in wil verwerken, ik zou dus graag van jullie willen weten of ik de opzet hierboven éénvoudig met het MVC-model kan combineren. Een codevoorbeeldje of een duidelijke uitleg zijn gewenst ;-)
Graag dus jullie tips, raad, en alles wat ik moet weten om met OOP van start te gaan.
Alvast bedankt!
Groeten,
Jonathan
Gewijzigd op 01/01/1970 01:00:00 door Jonathan -
Gesponsorde koppelingen:
Wat wil je precies met een "Store"-object?
Ik zou eens Googlen naar Data Access Objecten (DAO's), Data Service Objecten (DSO's) en Data Objecten. Kijk ook eens naar Zend_Db_Table en Zend_Db_Table_Row (die implementeren bepaalde design patterns) en de opbouw van ActiveRecord.
Wat betreft MVC; de M is niet echt gedefinieerd in het principe MVC. Dus een opzet met data-objecten is erg nuttig voor de M van MVC.
Ik zou eens Googlen naar Data Access Objecten (DAO's), Data Service Objecten (DSO's) en Data Objecten. Kijk ook eens naar Zend_Db_Table en Zend_Db_Table_Row (die implementeren bepaalde design patterns) en de opbouw van ActiveRecord.
Wat betreft MVC; de M is niet echt gedefinieerd in het principe MVC. Dus een opzet met data-objecten is erg nuttig voor de M van MVC.
Ik ben op MSN overtuigd door PHPerik om Zend Framework te gaan gebruiken, dus...
Kijk in dat geval goed naar Zend_Db_Table en Zend_Db_Table_Row. Dan heb je in ieder geval je data abstraction snel geregeld, dan hoef je in principe nog maar 1 laag tussen je controller en Zend_Db_Table-objecten. Namelijk je data access layer, zodat je niet afhankelijk bent van 1 vorm van data (database) maar ook XML of iets anders kan gebruiken. Maak nooit query's IN je controller en probeer dataobjecten direct door te geven aan je view zodat je niet je model, view en controller alle 3 hoeft aan te passen als er bijvoorbeeld een record bijkomt.
Dus niet:
Controller:
$data = $model->getSomeShit();
$view->assign('title', $data['title']);
$view->assign('page', $data['page']);
//etc
Maar wel:
$data = $model->getSomeShit();
$view->assign($data);
Hierbij kan je view even goed Smarty zijn of een ander systeem dan Zend_View (al zou ik dan een Smarty implementatie van Zend_View maken/gebruiken).
Dus niet:
Controller:
$data = $model->getSomeShit();
$view->assign('title', $data['title']);
$view->assign('page', $data['page']);
//etc
Maar wel:
$data = $model->getSomeShit();
$view->assign($data);
Hierbij kan je view even goed Smarty zijn of een ander systeem dan Zend_View (al zou ik dan een Smarty implementatie van Zend_View maken/gebruiken).
Gewijzigd op 01/01/1970 01:00:00 door PHP erik



