Andreas Heigl wrote on 30/11/2015 12:23:
Am 30.11.15 um 13:18 schrieb Peter Cowburn:
class A {
const TEST = false;
public function test() {
var_dump(static::TEST);
}
}
class B extends A {
const TEST = true;
public function test() {
A::test();
}
}
$b = new B;
$b->test();
You are calling explicitly A::test().
When you call parent::test() everything works as you'd expect it.
Have a look at https://3v4l.org/RCrRd
Apart from that you are calling an instance-method as a static method by
using A::test().
This appears to be the crucial thing: if you declare the test() method
as static in both classes, it returns false in all versions:
https://3v4l.org/hJoor
It's almost like A::test() is now interpreted as a static call, rather
than a "scope resolution" of the instance method, but $this is still
available, so it's not quite as simple as that: https://3v4l.org/qbT3j
Regards,
--
Rowan Collins
[IMSoP]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php