[PHP-DEV] static:: and PHP 7 (from bug #70997)
Hi internals, I'm looking for some feedback on a change with regard to static::, which has been present throughout the 7 branch. Have a look-see at https://bugs.php.net/bug.php?id=70997 test(); ?> In PHP 7 it dumps true, in PHP 5 false. I'm looking for info on when, where, why it was introduced, and ultimately some clarification of: a) was this intentional b) it is going to stay (i.e. "not a bug") c) some more to go on so I can document the change clearly If there is already a line in NEWS/UPGRADING or a commit you can point me to, that would be amazing. Whatever tangents this topic wanders off on, I'd like to eventually pull it back to the bug report mentioned above with one eye on formulating the docs changes (if it's really "not a bug"). Cheers, A docs guy.
Re: [PHP-DEV] static:: and PHP 7 (from bug #70997)
> Am 30.11.2015 um 13:23 schrieb Andreas Heigl : > > 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(). > > Cheers > > Andreas We do that, because we may not have any other choice, e.g. when calling a great-parents method. To then use LSB, we have to explicitly name our parent. This is now not possible anymore, and hence I’d consider this as a BC break at least, if not a bug. This definitely is not simply *not a bug*. Bob