3v4l.org

run code in 500+ PHP versions simultaneously
<?php class ParentClass { public static function whoAmI(): void { var_dump(static::class); } } class ChildClass extends ParentClass { public function byCallUserFunc(): void { call_user_func([\ParentClass::class, "whoAmI"]); } public function bySyntaxCall(): void { $className = ParentClass::class; $className::whoAmI(); } public function directCall(): void { ParentClass::whoAmI(); } public function callSelf(): void { self::whoAmI(); } } echo "ParentClass::whoAmI()" . PHP_EOL; ParentClass::whoAmI(); echo PHP_EOL . 'call_user_func([\ParentClass::class, "whoAmI"])' . PHP_EOL; call_user_func([\ParentClass::class, "whoAmI"]); $child = new ChildClass(); echo PHP_EOL . 'call_user_func([\ParentClass::class, "whoAmI"]) on ChildClass' . PHP_EOL; $child->byCallUserFunc(); echo PHP_EOL . '$className::whoAmI()' . PHP_EOL; $child->bySyntaxCall(); echo PHP_EOL . "ParentClass::whoAmI() on ChildClass" . PHP_EOL; $child->directCall(); echo PHP_EOL . "self::whoAmI()" . PHP_EOL; $child->callSelf();
Output for 8.1.19 - 8.1.34, 8.2.0 - 8.2.34, 8.3.0 - 8.3.35, 8.4.1 - 8.4.26, 8.5.0 - 8.5.11
ParentClass::whoAmI() string(11) "ParentClass" call_user_func([\ParentClass::class, "whoAmI"]) string(11) "ParentClass" call_user_func([\ParentClass::class, "whoAmI"]) on ChildClass string(10) "ChildClass" $className::whoAmI() string(11) "ParentClass" ParentClass::whoAmI() on ChildClass string(11) "ParentClass" self::whoAmI() string(10) "ChildClass"

preferences:
28.01 ms | 1137 KiB | 7 Q