php ismethod,php is_callable的用法以及和function_exists,method_exists的区别

is_callable

(PHP 4 >= 4.0.6, PHP 5)

is_callable— 验证变量的内容是否能够进行函数调用

Description(描述)

boolis_callable(callback$name[,bool$syntax_only= false[,string&$callable_name]] )

验证变量的内容是否能够进行函数调用。可以用于检查一个变量是否包含一个有效的函数名称,或者一个包含经过合适编码的函数和成员函数名的数组。

Parameters(参数)

name

既可以是一个字符串类型的函数名称,也可以是一个对象和成员函数名的组合数组,比如:array($SomeOject, 'MethodName')

syntax_only

如果设置为true,那么只是验证name是一个函数或者方法,函数仅仅会拒绝不是字符串,亦或是结构不合法的数组作为回调函数。合法结构是指一个包含两个成员的数组,第一个是对象或者字符串,第二个是一个字符串。

callable_name

接收“调用名称”,在下面的例子里它是“someClass::someMethod"。请注意尽管someClass::someMethod()是一个可调用的静态方法,但是这里并不是真的表示一个静态方法

如果可调用返回true,否则返回false。

Examples(例子)

functionsomeFunction()

{

}

$functionVariable = 'someFunction';

var_dump( is_callable($functionVariable, false, $callable_name) );//    输出为:bool(true)

echo $callable_name, "\n";            //    输出为: someFunction

class someClass {

functionsomeMethod()   {

}

}

$anObject = new  someClass();

$methodVariable = array($anObject, 'someMethod');

var_dump( is_callable($methodVariable, true, $callable_name) );//  输出为:bool(true)

echo $callable_name."\n";                //    输出为:someClass::someMethod

?>

区别:

function_exists 比较简单点,就是判断函数有没有被定义。

method_exists 是判断类内的方法存不存在。

is_callable 检测参数是否为合法的可调用结构。

它们的返回值 都是 bool,但是参数不同。

function_exists只有一个参数:函数名 $string

method_exists两个参数 :$object 类对象或$class类名称,$string 方法名

is_callable三个参数:$varmixed 可以是(string或者array) ,$syntax_only(bool),$callback_name(string)

如果is_callable的第一个参数是string,那么 和function_exists 相似 ;如果是数组则和 method_exists相似,但又有不同:

(1)method_exists不会考虑类方法的定义范围public 、protected 、private,只要存在就返回true;而 is_callable 会在方法是被 protecte、 private时返回false。

(2)is_callable会去调用__call魔术方法来判断,而method_exists不会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值