Hey
ik ben al een tijdje bezig met het leren van OOP programmeren in PHP.
Ik ben nu bezig met het maken van een factory class. met behulp van deze factory class wil ik een database class aan roepen (dmv singleton pattern). Het probleem is dat de database class die ik wil gebruiken opgeslagen is in een config class. Dat resulteert in de volgende code:
het probleem is dat het volgende stukje code niet op PHP lager dan 5.3.0 werkt:
weet iemand of hier een workaround voor is?
ik heb het volgende ook al geprobeert maar ook dat werkt niet:
hier meer info @ php.net (example 1)
ik ben al een tijdje bezig met het leren van OOP programmeren in PHP.
Ik ben nu bezig met het maken van een factory class. met behulp van deze factory class wil ik een database class aan roepen (dmv singleton pattern). Het probleem is dat de database class die ik wil gebruiken opgeslagen is in een config class. Dat resulteert in de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| class Factory { public static function GetConfig() { $config = new Config; return $config; } public static function GetDb() { $config = self::GetConfig(); if(class_exists($config->dbtype) AND in_array("Database", class_implements($config->dbtype))) {// bestaat de class waarvan de naam is opgegeven als database type en implementeerd deze de interface Database? $db = $config->dbtype::Get(); } else { //nee?? gebruik MySQL $db = MySQL::Get(); } return $db; } } |
het probleem is dat het volgende stukje code niet op PHP lager dan 5.3.0 werkt:
PHP:
1
| $db = $config->dbtype::Get(); |
weet iemand of hier een workaround voor is?
ik heb het volgende ook al geprobeert maar ook dat werkt niet:
PHP:
1
2
| $db = new $config->dbtype; $db = $db::Get(); |
hier meer info @ php.net (example 1)