]> granicus.if.org Git - php/commitdiff
Added test for bug #32322 (Return values by reference broken( using self::),example...
authorDmitry Stogov <dmitry@php.net>
Wed, 8 Jun 2005 08:43:38 +0000 (08:43 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 8 Jun 2005 08:43:38 +0000 (08:43 +0000)
Zend/tests/bug32322.phpt [new file with mode: 0755]

diff --git a/Zend/tests/bug32322.phpt b/Zend/tests/bug32322.phpt
new file mode 100755 (executable)
index 0000000..f69c525
--- /dev/null
@@ -0,0 +1,80 @@
+--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
+
+Strict Standards: 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
+
+Strict Standards: 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