I found this on a zend engine 2 list archive, but didn't see an answer, has
it been resolved? I am trying to create a singleton class heirarchy without
having to override getInstance....
<?php
class Test {
public static function getInstance() {
return new self();
}
}
class Foo extends Test {
}
var_dump(Foo::getInstance());
?>
thekid@friebes:~/devel/php/tests > php5 self.php
object(test)#1 (0) {
}
Expected output would be "object(foo)", so I guess either "self" should
not be evaluated at compile time or this should be disallowed. I'd
prefer the first:)
self:: is always evaluated at compile-time and refers to the class it is
defined in and not the concrete object/class.
Andi
At 05:03 PM 3/8/2004 -0700, Jeffrey Moss wrote:
I found this on a zend engine 2 list archive, but didn't see an answer, has
it been resolved? I am trying to create a singleton class heirarchy without
having to override getInstance....<?php
class Test {
public static function getInstance() {
return new self();
}
}class Foo extends Test {
}var_dump(Foo::getInstance());
?>
thekid@friebes:~/devel/php/tests > php5 self.php
object(test)#1 (0) {
}Expected output would be "object(foo)", so I guess either "self" should
not be evaluated at compile time or this should be disallowed. I'd
prefer the first:)
self:: is always evaluated at compile-time and refers to the class it is
defined in and not the concrete object/class.Andi
I think it would be a better for self to refer to the concrete class.
Otherwise it is not possible to access overridden static functions or
to instantiate the concrete class.
--
Ferdinand Beyer
<fb@fbeyer.com