php _call()与call_user_func_array()了解
程序员文章站
2024-02-18 14:02:10
...
php __call()与call_user_func_array()理解
1. mixed __call ( string name, array arguments )
The magic method __call() allows to capture invocation of non existing methods. That way __call() can be used to implement user defined method handling that depends on the name of the actual method being called. This is for instance useful for proxy implementations. The arguments that were passed in the function will be defined as an array in the $arguments parameter. The value returned from the __call() method will be returned to the caller of the method.
译文: 这个魔术方法允许用户调用类中不存在的方法,它用于实现那些 依赖于在被调用时的真正方法名的方法. 典型的例子是用来实现代理. 方法的参数$arguments是一个数组 ,__call()的返回值返回给方法调用者
白话文: 这个方法主要是用来实现动态方法调用, 如果再一个类定义了__call()这个方法, 当用户调用这个类的一个不存在的方法时,他可以使用调用的那个不存在的方法的方法名和参数做出用户定义在__call()方法体内的相应操作,此时__call()方法的参数就是被调用的那个不存在的方法的方法名和参数
例子
程序输出
1. mixed __call ( string name, array arguments )
The magic method __call() allows to capture invocation of non existing methods. That way __call() can be used to implement user defined method handling that depends on the name of the actual method being called. This is for instance useful for proxy implementations. The arguments that were passed in the function will be defined as an array in the $arguments parameter. The value returned from the __call() method will be returned to the caller of the method.
译文: 这个魔术方法允许用户调用类中不存在的方法,它用于实现那些 依赖于在被调用时的真正方法名的方法. 典型的例子是用来实现代理. 方法的参数$arguments是一个数组 ,__call()的返回值返回给方法调用者
白话文: 这个方法主要是用来实现动态方法调用, 如果再一个类定义了__call()这个方法, 当用户调用这个类的一个不存在的方法时,他可以使用调用的那个不存在的方法的方法名和参数做出用户定义在__call()方法体内的相应操作,此时__call()方法的参数就是被调用的那个不存在的方法的方法名和参数
例子
'; echo 'and the arguments are
'; var_dump( $args ); } } $person = new Person(); $person->test( 1 , TRUE ); ?>
程序输出
引用
you call method test
and the arguments are
array
0 => int 1
1 => boolean true
2. mixed call_user_func_array ( callback function, array param_arr )
Call a user defined function with the parameters in param_arr.
参数
function
The function to be called.
param_arr
The parameters to be passed to the function, as an indexed array.
返回值
Returns the function result, or FALSE on error.
此方法可以通过传入类名,类中得方法名和方法参数达到动态调用方法的效果
例子
程序输出
and the arguments are
array
0 => int 1
1 => boolean true
2. mixed call_user_func_array ( callback function, array param_arr )
Call a user defined function with the parameters in param_arr.
参数
function
The function to be called.
param_arr
The parameters to be passed to the function, as an indexed array.
返回值
Returns the function result, or FALSE on error.
此方法可以通过传入类名,类中得方法名和方法参数达到动态调用方法的效果
例子
'; echo 'and the arguments are
'; var_dump( $args ); } } $person = new Person(); call_user_func_array( array( $person , 'talk' ) , array( 'hello' ) ); ?>
程序输出
引用
hello
两个方法共用,实现代理模型
程序输出
两个方法共用,实现代理模型
class Person { function talk( $sound ) { echo $sound; } function __call( $method , $args ) { echo 'you call method ' . $method . '
'; echo 'and the arguments are
'; var_dump( $args ); } } class PersonProxy { private $person; function __construct() { $this->person = new Person(); } function __call( $method , $args ) { call_user_func_array( array( $this->person , $method ) , $args ); } } $person_proxy = new PersonProxy(); $person_proxy->talk( 'thank you' );
程序输出
引用
thank you
- 最新文章
- 热门排行
推荐阅读
-
php _call()与call_user_func_array()了解
-
PHP 函数call_user_func和call_user_func_array用法详解
-
php函数call_user_func跟call_user_func_array详解
-
使用call_user_func_array()来回调执行函数与直接使用函数的区别是什么?
-
php _call()与call_user_func_array()了解
-
PHP中call_user_func函数和call_user_func_array函数详解
-
php关于对cookie与session的了解
-
解析php中call_user_func_array的作用
-
PHP 函数call_user_func和call_user_func_array用法详解
-
了解php数据转json格式与前端交互基础
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论专题推荐
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习