Model MVC: Database ophalen
Ik ben bezig met een klein MVC frameworkje voor mijn eigen projecten en ik ben dus nu aangekomen bij models.
Wat zou ik doen?
Of:
Alvast bedankt
De 2e optie. Je haalt geen database op, je voert een query uit op de database.
Als je het zo doet bepaalt de controller dus blijkbaar de query. Dat wil je niet. De controller vertelt alleen aan het model dat hij data nodig heeft. Hoe dat wordt opgehaald bepaalt het model zelf. Wat je dus zou moeten hebben is een functie die de data ophaalt:
Hoe dat dan in het model verder wordt verwerkt doet niet terzake (voor deze aanroep).
Optie 1 kan ook prima, want getDatabase is gevuld met de te gebruiken database
Zoals hieronder:
EDIT:
De controller is voornamelijk een tussenpersoon tussen de Model en de View.
Controller vraagt Data aan de Model
Controller stuurt Data door aan de View
Controller laad de View in
Gewijzigd op 02/07/2012 09:20:16 door Ykcin Ykcin
Anders kan je ook geen getUsers() doen. Dus ik heb het over IN de model
Waarom zouje IN het model nog de variabele $model aanroepen? Waarvandan wil je de door jou geposte code gebruiken?
Je kan dus beter een adapter pattern gebruiken voor je basis models:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
RF_Model
RF_Model_Database extends RF_Model
RF_Model_File extends RF_Model
RF_Model_File_Xml extends RF_Model_File
RF_Model_File_Yml extends RF_Model_File
...
RF_Model_Database extends RF_Model
RF_Model_File extends RF_Model
RF_Model_File_Xml extends RF_Model_File
RF_Model_File_Yml extends RF_Model_File
...
Gewijzigd op 02/07/2012 11:30:00 door Wouter J
Code (php)
En Database() is dan gewoon een PDO object
Gewijzigd op 02/07/2012 11:42:13 door - Raoul -
- PDO is geen database, de naam getDatabase is dan een beetje misplaatst. PDO is een Data-access abstraction layer, verzin een leuke getter en je bent klaar.
- Het is handig als je PHPdoc gebruik voor je methods, het is dan in 1 keer duidelijk wat je teruggeeft en wat je verwacht.
- Prefix je klassenaam altijd met de projectnaam of een afkorting daarvan, zoals PSR-0 voorschrijft. Anders krijg je straks problemen als je per ongeluk nog iets Model noemt
- Maak een ExceptionHandler die de exceptions afhandelt, je moet dat niet doormiddel van een exit zomaar doen.
- Ik raad je echt aan het Adapter pattern te gebruiken, zal je in de toekomst veel handiger voorkomen dan wat je nu hebt.
- Waarom een eigen PDO object maken? Waarom niet gewoon new PDO() doen?
- Je moet altijd programmeren naar een interface, een superklasse. Dat zorgt voor flexibiliteit als je straks wil gaan uitbreiden. Het zal je in de toekomst helpen met het controleren of je wel een model hebt, enz.