PHP函数/方法存在性检查小结_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP函数/方法存在性检查小结

PHP函数/方法存在性检查小结

 2013/8/24 23:41:23  wildcat11  程序员俱乐部  我要评论(0)
  • 摘要:有些时候,如require文件(避免重复包含某一函数)、选择性调用函数(根据已加载模块调用不同的方法)时,需要检查函数或者方法是否存在,主要借助以下函数:(1)boolfunction_exists(string$function_name)检查函数是否存在,主要针对面向过程函数,内置函数或者用户定义函数;对于语法结构,如include_once、echo,其返回false;var_dump(function_exists('var_dump'));//truevar_dump
  • 标签:方法 PHP 函数 PHP函数

有些时候,如require文件(避免重复包含某一函数)、选择性调用函数(根据已加载模块调用不同的方法)时,需要检查函数或者方法是否存在,主要借助以下函数:

?

(1)bool function_exists( string $function_name )

? ? ? ?检查函数是否存在,主要针对面向过程函数,内置函数或者用户定义函数;

? ? ? ?对于语法结构,如include_once、echo,其返回false;

class="php">var_dump(function_exists ('var_dump'));       // true
var_dump(function_exists ('echo'));           // false
var_dump(function_exists ('include_once'));   // false

?

(2)bool method_exists ( object $object , string $method_name )

? ? ? ??检查类的方法是否存在,$object可以是类实例或者类名,两者之间没有任何区别;

? ? ? ??如果检查类不是已知类,调用此函数会使用任何已注册的autoloader;

? ? ? ??此方法不会检查方法是否可以被调用;

class Test
{
    public function pub_func ()
    {
        print_r(__METHOD__);
    }
    private function pri_func ()
    {
        print_r(__METHOD__);
    }
    public function __call ($name, $args)
    {
        print_r(__METHOD__);
    }
}

var_dump(method_exists ('Test', 'pub_func')); // true
var_dump(method_exists ('Test', 'pri_func')); // true
var_dump(method_exists ('Test', 'not_func')); // false
$t = new Test();
var_dump(method_exists ($t, 'pub_func')); // true
var_dump(method_exists ($t, 'pri_func')); // true
var_dump(method_exists ($t, 'not_func')); // false

?

(3)bool is_callable ( mixed $var [, bool $syntax_only [, string $callable_name ]] )

? ? ? ??检测参数是否为合法的可调用结构,既可用于检查普通函数,也可以用于检查类方法;

? ? ? ??$syntax_only默认为false;

? ? ? ??以类名为参数,且$syntax_only为false时,会尝试调用该方法(仅从可访问性方面,不检测__call),若方法不可访问(private),会出现Fatal error;

? ? ? ??在$syntax_only为true,或者以实例为参数时,__call也会纳入检查;

var_dump(is_callable (array( 'Test', 'pub_func')));        // true
var_dump(is_callable (array( 'Test', 'pub_func'), true));  // true
var_dump(is_callable (array( 'Test', 'pri_func')));        // PHP Fatal error: Call to private method Test::pri_func()
var_dump(is_callable (array( 'Test', 'pri_func'), true));  // true
var_dump(is_callable (array( 'Test', 'not_func')));        // false
var_dump(is_callable (array( 'Test', 'not_func'), true));  // true
$t = new Test();
var_dump(is_callable (array( $t, 'pub_func')));         // true
var_dump(is_callable (array( $t, 'pub_func'), true));   // true
var_dump(is_callable (array( $t, 'pri_func')));         // true
var_dump(is_callable (array( $t, 'pri_func'), true));   // true
var_dump(is_callable (array( $t, 'not_func')));         // true
var_dump(is_callable (array( $t, 'not_func'), true));   // true
上一篇: Asp.net发布的CheckList 下一篇: 没有下一篇了!
发表评论
用户名: 匿名