<?php
error_reporting(-1);
class X { function bar() { var_dump(get_called_class()); } }
class Y { function foo() { X::bar(); } }
class Z extends X { function foo() { X::bar(); } }
(new Y)->foo();
(new Z)->foo();
Fatal error: Uncaught Error: Non-static method X::bar() cannot be called statically in /in/AfQlN:5
Stack trace:
#0 /in/AfQlN(7): Y->foo()
#1 {main}
thrown in /in/AfQlN on line 5
Process exited with code 255.
Deprecated: Non-static method X::bar() should not be called statically in /in/AfQlN on line 5
string(1) "X"
string(1) "Z"
Output for 7.0.0
Deprecated: Non-static method X::bar() should not be called statically in /in/AfQlN on line 5
string(1) "X"
string(1) "X"
Output for 5.6.7 - 5.6.28
Deprecated: Non-static method X::bar() should not be called statically, assuming $this from incompatible context in /in/AfQlN on line 5
string(1) "Y"
string(1) "Z"
Output for 5.4.0 - 5.4.45, 5.5.24 - 5.5.35
Strict Standards: Non-static method X::bar() should not be called statically, assuming $this from incompatible context in /in/AfQlN on line 5
string(1) "Y"
string(1) "Z"