php __call方法 即使用其实现方法重载
2014-08-29 14:42
447 查看
__call() 方法用于监视错误的方法调用。
为了避免当调用的方法不存在时产生错误,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去。
语法:
该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $args 则以数组的方式接收不存在方法的多个参数。
在类里面加入:
当调用一个不存在的方法时(如 test() 方法):
输出的结果如下:
实例
__call()(Method overloading)
为了避免当调用的方法不存在时产生错误,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去。语法:
function __call(string $function_name, array $arguments) { ...... }
该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $args 则以数组的方式接收不存在方法的多个参数。
在类里面加入:
function __call($function_name, $args) { echo "你所调用的函数:$function_name(参数:<br />"; var_dump($args); echo ")不存在!"; }
当调用一个不存在的方法时(如 test() 方法):
$p1=new Person(); $p1->test(2,"test");
输出的结果如下:
你所调用的函数:test(参数: array(2) { [0]=>int(2) [1]=>string(4) "test" } )不存在!
实例
<?php class A{ function __call($name, $args) { $str = 'tt'; if ($name == $str) { //处理tt开头的重载问题 $i = count($args); //tt开头方法的个数 所以tt后面的数字要与参数的个数相同 if (method_exists($this, $f = $str . $i)) { call_user_func_array(array( $this, $f //此时的$f为tt1了而不是tt ), $args); } } } function tt1($a){ echo $a; } function tt2($a,$b){ echo $a,$b; } function tt3($a,$b,$ac){ echo $a,$b,$ac; } } (new A)->tt("a"); echo "t" + 1; ?>
相关文章推荐
- PHP使用方法重载实现动态创建属性的get和set方法
- php 使用__call实现钩子方法
- PHP使用方法重载实现动态创建属性的get和set方法
- php用魔术方法__call实现类函数重载
- PHP使用方法重载实现动态创建属性的get和set方法
- 使用php实现下载生成某链接快捷方式的解决方法
- php实现方法重载
- php中__toString()方法及__call()方法的使用介绍
- 使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
- PHP的方法重载实现
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
- PHP中实现重载的方法
- 用__call()实现方法重载
- PHP中使用cURL实现Get和Post请求的方法
- php通过魔术方法__call实现类函数重载
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
- php的魔法方法__call使用
- 使用JS中的Call方法实现继承和多重继承
- PHP中使用cURL实现Get和Post请求的方法
- Javascript中的重载的实现以及方法apply和call