Ik heb in PHP de volgende files:
iDatabase - interface voor database modules
DatabaseFactory - Geeft instance van gewenste database class terug (SINGLETON)
MySQLDatabase - Database class implements iDatabase
Nu laat ik de factory de instance teruggeven. Als de instance er al is, geeft ie de bestaande instance terug. Maar als ik de pagina refresh blijft hij nieuwe instances maken. Waarom werkt mijn singleton niet?
Misschien pas ik het pattern niet helemaal goed toe. Ik heb het wel eens toegepast in Java en toen ging het goed...Of kan PHP geen objecten vasthouden omdat het stateless is? (sessies?)
iDatabase - interface voor database modules
DatabaseFactory - Geeft instance van gewenste database class terug (SINGLETON)
MySQLDatabase - Database class implements iDatabase
Nu laat ik de factory de instance teruggeven. Als de instance er al is, geeft ie de bestaande instance terug. Maar als ik de pagina refresh blijft hij nieuwe instances maken. Waarom werkt mijn singleton niet?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| class DatabaseFactory { function &getInstance ($class) { //Array om instances vast te houden static $instances = array(); //Als de opgevraagde class nog niet bestaat if (!array_key_exists($class, $instances)) { //Class instantie maken require_once ($class .'.php'); $instances[$class] = new $class; } //Class instance terug geven $instance =& $instances[$class]; return $instance; } } |
Misschien pas ik het pattern niet helemaal goed toe. Ik heb het wel eens toegepast in Java en toen ging het goed...Of kan PHP geen objecten vasthouden omdat het stateless is? (sessies?)
[ Voor 3% gewijzigd door Verwijderd op 24-10-2007 14:13 ]