Ik gebruik het Singleton pattern bij oa. een database class, maar terwijl ik aan het debuggen was met xdebug viel me op dat er 3 keer mysql_connect werd aangeroepen. Hierna heb ik een test script gemaakt die er als volgt uitziet:
Als ik deze uitvoer, dan krijg ik de volgende output:
Als ik de regel:
wijzig in:
dan krijg ik de volgende output:
Mijn vraag is nu, is dit een bug in PHP, of klopt er iets niet in mijn denkwijze? Ik gebruik trouwens PHP-4.3.4 op Windows.
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
| <?php class Test { var $_microtime; function &Test() { $this->_microtime = microtime(); } function &getMicrotime() { return $this->_microtime; } function &getInstance() { static $instance; if(!isset($instance)) { $instance =& new Test(); } return $instance; } } $a = Test::getInstance(); $b = Test::getInstance(); $c = Test::getInstance(); print('$a->_microtime: ' . $a->getMicrotime() . '<br />'); print('$b->_microtime: ' . $b->getMicrotime() . '<br />'); print('$c->_microtime: ' . $c->getMicrotime() . '<br />'); ?> |
Als ik deze uitvoer, dan krijg ik de volgende output:
code:
1
2
3
| $a->_microtime: 0.50899500 1078238283 $b->_microtime: 0.50910000 1078238283 $c->_microtime: 0.50917100 1078238283 |
Als ik de regel:
PHP:
22
| $instance =& new Test(); |
wijzig in:
PHP:
22
| $instance = new Test(); |
dan krijg ik de volgende output:
code:
1
2
3
| $a->_microtime: 0.34313800 1078238472 $b->_microtime: 0.34313800 1078238472 $c->_microtime: 0.34313800 1078238472 |
Mijn vraag is nu, is dit een bug in PHP, of klopt er iets niet in mijn denkwijze? Ik gebruik trouwens PHP-4.3.4 op Windows.
[ Voor 24% gewijzigd door Tom-Eric op 02-03-2004 16:52 ]
i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels