1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- --TEST--
- Bug #32322 (Return values by reference broken( using self::),example singleton instance)
- --INI--
- error_reporting=4095
- --FILE--
- <?php
- class test
- {
- private static $instance = null;
- private $myname = '';
- private function __construct( $value = '' )
- {
- echo "New class $value created \n";
- $this -> myname = $value;
- }
- private function __clone() {}
- static public function getInstance()
- {
- if ( self::$instance == null )
- {
- self::$instance = new test('Singleton1');
- }
- else {
- echo "Using old class " . self::$instance -> myname . "\n";
- }
- return self::$instance;
- }
- static public function getInstance2()
- {
- static $instance2 = null;
- if ( $instance2 == null )
- {
- $instance2 = new test('Singleton2');
- }
- else {
- echo "Using old class " . $instance2 -> myname . "\n";
- }
- return $instance2;
- }
- public function __destruct()
- {
- if ( defined('SCRIPT_END') )
- {
- echo "Class " . $this -> myname . " destroyed at script end\n";
- } else {
- echo "Class " . $this -> myname . " destroyed beforce script end\n";
- }
- }
- }
- echo "Try static instance inside class :\n";
- $getCopyofSingleton = test::getInstance();
- $getCopyofSingleton = null;
- $getCopyofSingleton = &test::getInstance();
- $getCopyofSingleton = null;
- $getCopyofSingleton = test::getInstance();
- echo "Try static instance inside function :\n";
- $getCopyofSingleton2 = test::getInstance2();
- $getCopyofSingleton2 = null;
- $getCopyofSingleton2 = &test::getInstance2();
- $getCopyofSingleton2 = null;
- $getCopyofSingleton2 = test::getInstance2();
- define('SCRIPT_END',1);
- ?>
- --EXPECTF--
- Try static instance inside class :
- New class Singleton1 created
- Using old class Singleton1
- Notice: Only variables should be assigned by reference in %sbug32322.php on line 49
- Using old class Singleton1
- Try static instance inside function :
- New class Singleton2 created
- Using old class Singleton2
- Notice: Only variables should be assigned by reference in %sbug32322.php on line 55
- Using old class Singleton2
- Class Singleton1 destroyed at script end
- Class Singleton2 destroyed at script end
|