`

php函数method_exists()与is_callable()的区别

阅读更多

php函数method_exists()与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有method_exists()和is_callable(),相比之下,is_callable()函数要高级一些,它接受字符串变量形式的方法名作为第一个参数,如果类方法存在并且可以调用,则返回true。如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方法名作为参数。数组必须包含对象或类名,以将其作为它的第一个元素,要检查的方法名则作为第二个元素。如果该方法在类中存在,函数返回true。

 

代码示例:

 



  1. if ( is_callablearray$obj$method ) ) )   
  2. {   
  3.     /*要操作的代码段*/  
  4. }  

 

is_callable()可以加收另外一个参数:一个布尔值,如果将该参数设置为true,函数仅仅检查给定的方法或函数名称的语法是否正确,而不检查其是否真正存在。method_exists()函数的参数为一个对象(或类名)和一个方法名,如果给定方法在对象的类中存在,则返回true

代码示例:

 



  1. if ( method_exists( $obj$method ) )   
  2. {   
  3.     /*要操作的代码段*/  
  4. }  

 

php函数method_exists()与is_callable()的区别在于在php5中,一个方法存在并不意味着它就可以被调用。对于private,protected和public类型的方法,method_exits()会返回true,但是is_callable()会检查存在其是否可以访问,如果是private,protected类型的,它会返回false。

http://www.souebooks.com/14.htm

分享到:
评论

相关推荐

    php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析

    本文将深入探讨`function_exists()`, `method_exists()`以及`is_callable()`这三个函数的区别和用法。 首先,`function_exists()`是一个用于检查指定的函数名称是否已定义的函数。它的参数是一个字符串,表示要检测...

    解析php函数method_exists()与is_callable()的区别

    为此,PHP提供了两个重要的函数:`method_exists()` 和 `is_callable()`。虽然这两个函数在功能上有一些相似之处,但在实际使用过程中,它们之间存在着本质的区别。 `method_exists()` 函数是用于检测一个对象或类...

    function_exists函数详解

    3. **与类方法的区别**:需要注意的是,`function_exists()` 只能用于检查全局函数的存在性,而不能用于检查类的方法。对于类的方法,可以使用 `method_exists()` 函数来进行检查。 4. **与其他语言的差异**:不同...

    php获取、检查类名、函数名、方法名的函数方法

    2.is_callable() – 检测参数是否为合法的可调用结构 3.class_exists() – 检查类是否已定义 4.method_exists() – 检查类的方法是否存在 __FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被...

    php数组函数序列之in_array() – 查找数组中是否存在指定值

    - `is_callable()`:判断给定的变量是否可以作为函数调用。 - `array_key_exists()`:检查数组中是否存在指定的键。 - `file_exists()`:检查文件或目录是否存在。 这些函数都是PHP中处理不同场景下的常见工具,...

    详解php 使用Callable Closure强制指定回调类型

    在PHP编程中,回调函数是一种常见的编程技巧,它允许我们将一个...如果需要更深入地了解`callable`和闭包,可以参考相关的PHP文档以及探讨如何使用`method_exists()`和`is_callable()`函数来进一步验证回调的可用性。

    php数组函数序列之in_array() 查找数组值是否存在

    `is_callable()` 检查变量是否可以被当作函数调用。 总的来说,`in_array()` 是 PHP 中用于数组操作的一个重要工具,通过灵活设置其参数,可以满足在数组中查找特定值的各种需求。结合其他数组函数,可以构建出强大...

    PHP array_reverse() 函数原理及实例解析

    - `function_exists()`, `method_exists()`, `is_callable()`:这三个函数分别用于检查函数和类方法是否存在,以及一个变量是否可以被当作函数调用。 - `header()`:设置 HTTP 响应头,常用于处理重定向、设置内容...

    scons接口函数

    根据提供的文件信息,本文将对"Scons接口函数"这一主题进行深入探讨,主要涉及SCons脚本开发中的接口函数及相关的类、方法和属性等内容。 ### SCons介绍 SCons是一个开源的构建工具,用于软件项目的编译和构建管理...

    深入php面向对象、模式与实践

    - **__isset()** 和 **__unset()**:在使用`isset()`或`unset()`操作未定义的属性时,会调用这些方法。 - **__call()**:当尝试调用对象未定义的方法时,此方法会被触发。它可以用于委派调用到其他类,例如在...

    PHP重载基础知识回顾

    PHP提供了一些函数检查的API,如`function_exists`、`method_exists`和`is_callable`,它们依赖于函数的唯一名称来判断函数是否存在。如果允许重载,这些API就需要更复杂的逻辑来处理参数信息,可能会增加编程的...

    导航调用图Navigatingheallraph)1

    `Callable`类是`Method`和`Constructor`的通用超类,代表可以被调用的实体,如方法或构造函数。而`Call`类则是`MethodAccess`, `ClassInstanceExpression`, `ThisConstructorInvocationStmt`和`...

    浅析Python中的getattr(),setattr(),delattr(),hasattr()

    if callable(getattr(a, 'method', None)): getattr(a, 'method')() else: print('Method not found') ``` **应用场景**: - 动态获取对象属性,适用于不确定属性是否存在的场景。 - 实现工厂模式,根据条件动态...

Global site tag (gtag.js) - Google Analytics