<?php abstract class X { public function a() { } private function b() { } protected function c() { } } class Y extends X { private function bb() { } public static function test() { var_dump(get_class_methods('X')); var_dump(get_class_methods('Y')); } } var_dump(get_class_methods('X')); var_dump(get_class_methods('Y')); Y::test();
<?php class X { public function __invoke($x) { var_dump($x); } public function test() { $this(10); call_user_func($this, 300); call_user_func_array($this, array(0, 1)); } } class Y { public function test($x) { $x(10); call_user_func($x, 300); call_user_func_array($x, array(0, 1)); } } $x = new X(); $x->test(); $y = new Y(); $y->test($x);