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
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.