Hi!
In PHP5, the objects are supposed to be passed by reference, right? I
try to use a singleton pattern but it's not working. I just compile the
lastest php version (5.0.4) and I still have the problem.
My code :
<?php
class Example
{
// Hold an instance of the class
private static $instance;
public $testvar = 'init';
// The singleton method
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// Prevent users to clone the instance
public function __clone()
{
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
$test = Example::singleton();
$test2 = Example::singleton();
$test->testvar = 1;
$test2->testvar = 2;
echo $test->testvar." ; ".$test2->testvar;
?>
Output :
Fatal error: Clone is not allowed. in
/usr/home/usagers/linux/step_html/stationnement/test.php on line 21
Phpinfo : http://step.polymtl.ca/~linux/stationnement/phpinfo.php
Should I set something in the php.ini? What can I do?
Thanks for your help!
Jean-Francois
On Thu, 02 Jun 2005 09:05:24 -0400
Jean-Francois Levesque linux@step.polymtl.ca wrote:
Hi!
In PHP5, the objects are supposed to be passed by reference, right? I
try to use a singleton pattern but it's not working. I just compile the
lastest php version (5.0.4) and I still have the problem.My code :
<?php
class Example
{
// Hold an instance of the class
private static $instance;
public $testvar = 'init';// The singleton method public static function singleton() { if (!isset(self::$instance)) { $c = __CLASS__; self::$instance = new $c; } return self::$instance; } // Prevent users to clone the instance public function __clone() { trigger_error('Clone is not allowed.', E_USER_ERROR); }
}
$test = Example::singleton();
$test2 = Example::singleton();$test->testvar = 1;
$test2->testvar = 2;echo $test->testvar." ; ".$test2->testvar;
?>
Output :
Fatal error: Clone is not allowed. in
/usr/home/usagers/linux/step_html/stationnement/test.php on line 21Phpinfo : http://step.polymtl.ca/~linux/stationnement/phpinfo.php
Should I set something in the php.ini? What can I do?
I get "2 ; 2" and no error with latest snapshots of 5.0.5-dev and HEAD.
Check if you have zend.ze1_compatibility_mode Off.
--
Wbr,
Antony Dovgal aka tony2001
antony@zend.com