method_exists()和is_callable()方法进行判断。那么两则区别是什么呢?

已知类文件如下:

class Student{
private $alias=null;
private $name='';
public function __construct($name){
$this->name=$name;
}
private function setAlias($alias){
$this->alias=$alias;
}
public function getName(){
return $this->name;
}
}

当方法是private,protected类型的,method_exists会报错,is_callable会返回false。

实例

下面是判断某一对象中是否存在方法getName

通过method_exists实现
$xiaoming=new Student('xiaoming');
if (method_exists($xiaoming, 'getName')) { 
echo 'exist';
}else{
echo 'not exist';
}
exit();

输出exist

通过is_callable实现
$xiaoming=new Student('xiaoming');
if (is_callable(array($xiaoming, 'getName'))) { 
echo 'exist';
}else{
echo 'not exist';
}
exit();

输出exist

下面是判断某一对象中是否存在方法setAlias
当使用method_exists的时候报错如下

当使用is_callable的时候,输出not exist

php中method_exists()和is_callable()如何进行语句判断的更多相关文章

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

    php函数function_exists (),method_exists() 与is_callable()的区别在哪? 先来讲下后两个:method_exists() 与is_callable(): ...

  2. php函数method_exists() 与is_callable()区别

    php函数method_exists()与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有method_exi ...

  3. function_exists (),method_exists()与is_callable()的区别

    is_callable()函数要高级一些,它接受字符串变量形式的方法名作为 第一个参数,如果类方法存在并且可以调用,则返回true.如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方 ...

  4. postgres中几个复杂的sql语句

    postgres中几个复杂的sql语句 需求一 需要获取一个问题列表,这个问题列表的排序方式是分为两个部分,第一部分是一个已有的数组[0,579489,579482,579453,561983,561 ...

  5. 在Windows8 Winrt中 高性能处理多个条件语句 用于实现自定义手势

    http://blog.csdn.net/wangrenzhu2011/article/details/8578806 (转) 在winrt中 多点触控 控件的应用越来越多,例如 各种手势与 控件之间 ...

  6. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...

  7. Java异常处理中finally中的return会覆盖catch语句中的return语句

    Java异常处理中finally中的return会覆盖catch语句中的return语句和throw语句,所以Java不建议在finally中使用return语句 此外 finally中的throw语 ...

  8. 逻辑推理:在一个100条语句的列表中,第n条语句是“在这个列表中,恰有n条语句为假”,可以得出什么结论?

    <离散数学及其应用>第六版1.1练习题第43题的个人分析 题目:在一个100条语句的列表中,第n条语句是"在这个列表中,恰有n条语句为假"..........      ...

  9. SQL Server中存储过程比直接运行SQL语句慢的原因

    原文:SQL Server中存储过程比直接运行SQL语句慢的原因 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以 ...

随机推荐

  1. 分布式消息系统Kafka初步

    终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到.从这一篇开始分布式消息系统的入门. 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到 ...

  2. C读取文件

    C读取文件,这种写法不会多一行. #include "stdafx.h" #include <vector> using namespace std; struct P ...

  3. [OpenS-CAD]屏幕坐标转换分析

    蓝色为地理坐标系XOY,记为坐标系A:黄色为屏幕坐标系xoy,记为坐标系B.地图的左下角点为(X0,Y0)可很容易的平移到坐标原点.因此这里只考虑地图位于坐标原点的情况,如图二也记为坐标系A. 设地理 ...

  4. python format

    python自2.6后,新增了一种格式化字符串函数str.format(),威力十足,可以替换掉原来的% 注:以下操作版本是python2.7 映射示例 语法 通过{} 和 :  替换 % 通过位置 ...

  5. SQL Update实现使用一个表的数据更新另一张表

    表结构 功能 SQL Serevr Access 表结构

  6. Visual Studio 快速返回上次浏览/编辑的位置

    参考资料: http://stackoverflow.com/questions/4927375/how-to-navigate-back-to-the-last-cursor-position-in ...

  7. PLSQL 的简单命令之三

    -- 查找两个表中ID相等的 select a.id, a.name,b.math from stu a,scores b where a.id = b.id -- 右外连接 select b.id, ...

  8. docker note from UC blog

    -------------------------------------------------------------------------- original url http://tech. ...

  9. Java基础之创建窗口——使用SpringLayout管理器(TrySpringLayout)

    控制台程序. 可以把JFrame对象aWindow的内容面板的布局管理器设置为javax.swing.SpringLayout管理器. SpringLayout类定义的布局管理器根据javax.swi ...

  10. asp.net mvc 后台怎么接受前端返回的array list dictionary

    参考了别人的文章,我这样尝试去写: 数据源:memberInRoles var memberInRoles= {}; for(var i=0;i<sureOptions.length;i++){ ...