diff options
author | Dmitry Stogov <dmitry@php.net> | 2006-08-07 15:15:22 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2006-08-07 15:15:22 +0000 |
commit | f5543a428dc1593f200c2b245bed62477b9922a0 (patch) | |
tree | 70af3866fd68c2847b43a2c6df84075ec7ad4432 /Zend/tests/bug38287.phpt | |
parent | ee82fb781a21a272bea8535e6ee150d4d927c10a (diff) | |
download | php-git-f5543a428dc1593f200c2b245bed62477b9922a0.tar.gz |
Fixed bug #38287 (static variables mess up global vars)
Diffstat (limited to 'Zend/tests/bug38287.phpt')
-rwxr-xr-x | Zend/tests/bug38287.phpt | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Zend/tests/bug38287.phpt b/Zend/tests/bug38287.phpt new file mode 100755 index 0000000000..9a53a9335f --- /dev/null +++ b/Zend/tests/bug38287.phpt @@ -0,0 +1,45 @@ +--TEST-- +Bug #38287 (static variables mess up global vars) +--FILE-- +<?php +error_reporting(0); + +something::do_something(); + +// $not_there is really NULL +var_dump($not_there); + +// error occurs here: execution should never get inside the if condition because $not_there is NULL +if ($not_there["invalid_var"]) { + // will print NULL (which is ok, but execution should never get here if the value is NULL) + var_dump($not_there["use_authmodule"]); + // will print "PATH:Array" + print "PATH:".$not_there["use_authmodule"]."\n"; +} + +class something { + public static function get_object() { + static $object=NULL; + if ($object===NULL) + $object=new something; + return $object; + } + + public static function do_something() { + self::get_object()->vars[]=1; + self::get_object()->vars[]=2; + self::get_object()->vars[]=3; + var_dump(self::get_object()->vars); + } +} +?> +--EXPECT-- +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +NULL |