代码
<?php /** * __call($method,$arg):调用类中不存在的动态方法的时候,自动调用 * __callStatic($method,$arg):调用类中不存在的静态方法的时候,自动调用 * cdll_user_func_array()实行跨类执行一些方法 * 1.重点call_user_func_array([对象,类方法],参数)这个方法;用这个方法跳转到Demo1类中,取值 * 2.重点call_user_func_array([类名,类方法],参数)这个是静态方法;用这个方法跳转到Demo1类中,取值 */ include 'text.php'; class Demo { public function __call($name, $argm) { return call_user_func_array([(new Text),$name],$argm); } public static function __callStatic($name, $argm) { return call_user_func_array(['Text',$name],$argm); } } $obj =new Demo; echo $obj->hello('是非静态方法吗?','是的'); echo '<hr>'; echo Demo::get('我是静态方法','请用类名调用');
要跳转页面的代码:
<?php class Text { public function hello($arg1,$arg2) { return '我才是真正的非静态的方法:'.'参数是:'.$arg1.$arg2; } public static function get($arg1,$arg2) { return '我是真正的静态方法:'.'参数是:'.$arg1.$arg2; } }
运行结果图: