ik *probeer* het Singleton-pattern te implementeren in m'n project (vnl. om SQL-layer te gebruiken), maar om de een of andere reden lukt het niet zo fijn
Eerst wat code:
het singleton SQL:
m'n testcase:
De werking ervan klopt echter niet. Volgens mijn tests wordt er slechts 1x een SQL-object aangemaakt, maar wanneer ik alle uitgevoerde queries opvraag (mbhv show_debug_info()), staan slechts de queries van $db in de uitgevoerde lijst, terwijl er (volgens mij) toch 3 zouden moeten staan (de 2 van $db en deze van $db2)?
Hopelijk kan er iemand me licht in de duisternis brengen...
Eerst wat code:
het singleton SQL:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| function get_sql() { static $instance_db; global $db_host, $db_user, $db_password, $db_database, $debug_mode; if(!isset($instance_db)) { $instance_db = new sql($db_host, $db_user, $db_password, $db_database, $debug_mode); echo "new SQL <br>"; } echo "<pre>"; print_r($instance_db); echo "</pre>"; return($instance_db); } |
m'n testcase:
PHP:
1
2
3
4
5
6
7
8
9
| $db = get_sql(); $db->q('select * from config WHERE 1=1'); echo "test: $db->_num_queries"; $db->q('select * from config'); $db2 = get_sql(); $db2->q('select * from config where 2=2'); $db->show_debug_info(); |
De werking ervan klopt echter niet. Volgens mijn tests wordt er slechts 1x een SQL-object aangemaakt, maar wanneer ik alle uitgevoerde queries opvraag (mbhv show_debug_info()), staan slechts de queries van $db in de uitgevoerde lijst, terwijl er (volgens mij) toch 3 zouden moeten staan (de 2 van $db en deze van $db2)?
Hopelijk kan er iemand me licht in de duisternis brengen...