Ik heb me sinds kort ingelezen in het MVC pattern, en dit wil ik nu ook gaan toepassen.
De register classe wil ik graag in een singleton ontwerp, zodat hij overal makkelijk aanroepbaar is, en er een enkele instansie van aanwezig mag zijn.
Bijvoorbeeld de database classe wil ik na registratie in het register object kunnen aanroepen als zijnde:
Mijn code
Maar als ik nu de database registreer dmv:
Dan krijg ik de volgende error:
De register classe wil ik graag in een singleton ontwerp, zodat hij overal makkelijk aanroepbaar is, en er een enkele instansie van aanwezig mag zijn.
Bijvoorbeeld de database classe wil ik na registratie in het register object kunnen aanroepen als zijnde:
Ik dacht dat als ik creatief omging met de __set methode, en de __get methode dit wel mogelijk zou moeten zijn.register::$database
Mijn 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| class register { private static $vars = array(); private static $instance; public static function _construct() { if(!isset(self::$instance)) self::$instance = new self; return self::$instance; } public static function __set($var, $value) { //Add a new register item try { if(isset(self::$vars[$var])) throw new exceptionH("Register-Error: '" . $var . "' bestaat al en kan niet overschreven worden."); else //Add to register self::$vars[$var] = $value; } catch(exceptionH $e) { $e->getError(); echo $e->getMessage() . "<br />"; } } public static function __get($var) { //Get a register item try { if(!isset(self::$vars[$var])) throw new exceptionH("Register-Error: '" . $var . "' bestaat niet, en kan niet gelezen worden."); else return self::$vars[$var]; } catch(exceptionH $e) { $e->getError(); echo $e->getMessage() . "<br />"; } } } |
Maar als ik nu de database registreer dmv:
code:
1
2
| $database = new database("localhost","username","password"); register::$database = $database; |
Dan krijg ik de volgende error:
Ik heb al wat gegoogled op 'static __get()' en de error, maar echt veel wijzer wordt ik er niet van.Fatal error: Access to undeclared static property: register::$database in /srv/wwwroot/indev/htdocs/cms/main.php on line 20