Wij gebruiken op het werk een eigen CMS in php geschreven, waarbij de tabellen een bepaalde namingconvention aanhouden.
Nu heb ik vroeger reeds met laravel gewerkt, en zie dat daar data kan opgehaald worden uit de database op de volgende manier:
Nu vroeg ik mij af hoe laravel dit juist voor elkaar krijgt..
Er bestaat namelijk geen mapping van de mogelijke tabellen volgens mij.
Momenteel heb ik een class DBO met enkele statische functies.
Hierbij wil ik dat wanneer je bvb Users::where() oproept, de statische functie DBO::where() opgeroepen wordt EN in DBO::where moet ik dus ook weten dat de zoekterm in de tabel users moet uitgevoerd worden.
Mijn probleem is echter:
Hoe zorg ik er voor dat die Users::where de DBO::where oproept? Ik kan namelijk geen mapping bijhouden.
Wat ik al geprobeerd heb:
Ik heb al wat zitten zoeken ivm de opties van spl_autoload_register
Hierbij kwam ik tot het onderstaande resultaat
Bovenstaande heeft echter altijd DBO terug via get_called_class() (en niet Users in dit geval)
Als tweede optie dacht ik om een factory class te maken, maar aangezien de meeste functies statisch zullen zijn, zal dit dus niet werken...
Kan iemand mij in de juiste richting wijzen waarop ik verder kan om dit voor elkaar te krijgen?
Nu heb ik vroeger reeds met laravel gewerkt, en zie dat daar data kan opgehaald worden uit de database op de volgende manier:
PHP:
1
| Users::where('name', 'jan') |
Nu vroeg ik mij af hoe laravel dit juist voor elkaar krijgt..
Er bestaat namelijk geen mapping van de mogelijke tabellen volgens mij.
Momenteel heb ik een class DBO met enkele statische functies.
Hierbij wil ik dat wanneer je bvb Users::where() oproept, de statische functie DBO::where() opgeroepen wordt EN in DBO::where moet ik dus ook weten dat de zoekterm in de tabel users moet uitgevoerd worden.
Mijn probleem is echter:
Hoe zorg ik er voor dat die Users::where de DBO::where oproept? Ik kan namelijk geen mapping bijhouden.
Wat ik al geprobeerd heb:
Ik heb al wat zitten zoeken ivm de opties van spl_autoload_register
Hierbij kwam ik tot het onderstaande resultaat
PHP:
1
2
3
4
5
6
7
8
9
10
11
| class DBO { public static function where($fieldname, $fieldval) { $table_code = get_called_class(); //dit geeft echter altijd DBO terug , en niet de class alias name echo $table_code.'.'.$fieldname.' = '.$pk_value; } spl_autoload_register(function($name) { if (!class_exists($name)) { class_alias('dbo', $name); } } |
Bovenstaande heeft echter altijd DBO terug via get_called_class() (en niet Users in dit geval)
Als tweede optie dacht ik om een factory class te maken, maar aangezien de meeste functies statisch zullen zijn, zal dit dus niet werken...
Kan iemand mij in de juiste richting wijzen waarop ik verder kan om dit voor elkaar te krijgen?