关于php中判断方法或函数是否存在,PHP提供了以下三个函数:
function_exists()
: 用于判断函数是否存在method_exists()
: 用于判断方法是否存在is_callable()
: 用于判断函数或方法是否可调用
function_exists()
function_exists()
函数用于判断指定的函数是否被定义。该函数需要传入一个参数,表示要判断的函数的名称,返回值为TRUE
或FALSE
。
示例:
if (function_exists('date')) {
// 如果date函数存在,就执行相应的代码
echo date('Y-m-d H:i:s');
}
上述代码中,首先判断date
函数是否存在,如果存在就调用该函数,输出当前时间。如果date
函数不存在,就不执行相应的代码。
method_exists()
method_exists()
函数用于判断指定的类方法是否被定义。该函数需要传入两个参数,第一个参数是要判断的类的名称或对象,第二个参数是要判断的方法的名称,返回值为TRUE
或FALSE
。
示例:
class MyClass {
public function foo() {
// 方法内容
}
}
$obj = new MyClass();
if (method_exists($obj, 'foo')) {
// 如果foo方法存在,就执行相应的代码
$obj->foo();
}
上述代码中,先定义了一个名为MyClass
的类,该类中有一个名为foo
的公共方法。然后创建了一个MyClass
对象,并使用method_exists()
函数判断该对象是否存在foo
方法,如果存在就调用该方法。
is_callable()
is_callable()
函数用于判断给定方法是否可以调用。该函数需要传入一个参数,表示要判断的方法或函数名,返回值为TRUE
或FALSE
。
示例:
class MyClass {
public function foo() {
// 方法内容
}
}
$obj = new MyClass();
if (is_callable([$obj, 'foo'])) {
// 如果foo方法可以调用,就执行相应的代码
$obj->foo();
}
上述代码中,同样定义了一个MyClass
类和一个foo
方法,然后创建了一个MyClass
对象,并使用is_callable()
函数判断该对象中的foo
方法是否可以调用,如果可以就调用该方法。
区别总结
以上三个函数的区别:
function_exists()
用于判断函数是否存在,仅需要传入函数名即可,返回值为TRUE或FALSE。method_exists()
用于判断类方法是否存在,需要传入类名或类的实例以及方法名,返回值为TRUE或FALSE。is_callable()
用于判断函数或方法是否可调用,需要传入函数名或方法名,以及可选的第二个参数true
或false
,表示是否允许调用某些特殊类型的函数,返回值为TRUE或FALSE。
因此,在实际应用中,需要根据具体需求选择使用不同的函数。
示例总结:
function testFunc() {
echo '这是一个测试函数';
}
class MyClass {
public function foo() {
echo '这是MyClass类的一个函数foo';
}
}
$obj = new MyClass();
// 判断函数是否存在
if (function_exists('testFunc')) {
// 如果testFunc函数存在,就执行相应的代码
testFunc();
}
// 判断类方法是否存在
if (method_exists($obj, 'foo')) {
// 如果foo方法存在,就执行相应的代码
$obj->foo();
}
// 判断函数是否可调用
if (is_callable('testFunc')) {
// 如果testFunc函数可以调用,就执行相应的代码
testFunc();
}
// 判断类方法是否可调用
if (is_callable([$obj, 'foo'])) {
// 如果foo方法可以调用,就执行相应的代码
$obj->foo();
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析 - Python技术站