ID: 45728 Updated by: [EMAIL PROTECTED] Reported By: thinice at gmail dot com -Status: Open +Status: Closed Bug Type: Scripting Engine problem Operating System: FreeBSD PHP Version: 5.2.6 New Comment:
As of PHP5.3 you can do class A { public static $foo = 2; } $a = new A; echo $a::$foo; // 2 $a used in a classname context will simply be converted to the class of the object. so it's equivalent to: $n = get_class($a); echo $n::$foo; // 2 Previous Comments: ------------------------------------------------------------------------ [2008-08-07 15:07:56] thinice at gmail dot com All I can see in documentation is that you can't use :: for accessing the static from an instantiated object. e.g.: Documentation explicitly says this will -not- work: $myClass = new MyClass; echo $myClass::myVar; But this isn't the problem. ------------------------------------------------------------------------ [2008-08-07 15:01:59] thinice at gmail dot com You can access non-statics this way. $myClass = 'MyClass'; echo $myClass->anythingElse; Why wouldn't you be able to access variables via :: ? I don't see anything on whether this should, or should not work. But why shouldn't/wouldn't it be possible to access a static variable using a variable to set the object name? ------------------------------------------------------------------------ [2008-08-07 09:53:09] [EMAIL PROTECTED] Where exactly it says this should work..? ------------------------------------------------------------------------ [2008-08-06 02:00:46] thinice at gmail dot com Description: ------------ When you try to access a static variable within a class using a variable variable to determine which class and static to use. Reproduce code: --------------- <? class MyTest { static $myVar = 'testval'; } $sClass = 'MyTest'; echo "Expected output: ".MyTest::$myVar; echo "<br/>"; $s = $sClass.'::$myVar'; echo "Using this as the string: ".$s."<br/>"; echo "Using Variable-named reference: ".${$s}; ?> Expected result: ---------------- Expected output: testval Using this as the string: MyTest::$myVar Using Variable-named reference: testval Actual result: -------------- Expected output: testval Using this as the string: MyTest::$myVar Using Variable-named reference: ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45728&edit=1