class Man{

public function one(){

echo 'public ';

}

protected function two(){

echo 'protected';

}

static private function three(){

echo 'private';

}

static function four(){

echo 'static only';

}

}

$man1= new Man();

/**

*静态方法可以通过未实例化的类直接访问或者通过实例化的类访问,通过::或者new Obj()->,

*但是静态属性只能通过类本身访问,实例化的类是不可以访问类的静态属性的

*/

$man1::four();

var_dump(is_callable(array($man1,'one')));// true

var_dump(is_callable(array("Man",'one')));// true

var_dump(is_callable(array("Man",'two')));//false

var_dump(is_callable(array($man1,'three')));//false

// 拼装数组,结合第二个参数(bool)和第三个参数($string)

$methodVariable1=array('Man','one');

$methodVariable2=array('Man','two');

$methodVariable3=array($man1,'three');// 实例化对象也可以

$methodVariable4=array('Man','three');

$methodVariable5=array('Man','four');

var_dump(is_callable($methodVariable1,true,$call_one));// true

var_dump(is_callable($methodVariable2,true, $call_two));//true

var_dump(is_callable($methodVariable3,true, $call_three));//true

// 如果method为public ,is_callbale()为真,如果methond为protected或者private 为假

echo "\n";

var_dump(is_callable($methodVariable1,false));//true

var_dump(is_callable($methodVariable2,true));//true

var_dump(is_callable($methodVariable3,false,$call_four));//false protected在子类父类本类内部访问

var_dump(is_callable($methodVariable4,false,$call_five));//false private只能在内部调用,所以为false

// 静态方法

echo 'call static only',"\n";

var_dump(is_callable($methodVariable5,false,$call_six));// true

echo 'call static only but use new object',"\n";

var_dump(is_callable(array($man1,'four'),false,$cal_seven));// true

//method_exists 只能验证类(或者实例化对象)的某个方法是否存在(不在乎调用问题),不能用实例化后类的检测

if(method_exists($man1, 'one')){

echo 'yes';

}else{

echo 'no ';//

}

if(method_exists('Man', 'two')){

echo 'yes';//

}else{

echo 'no ';

}

echo"\n";

var_dump($call_one);//Man::one

var_dump($call_two);//Man::two

var_dump($call_three);//Man::three

var_dump($call_four);//虽然是false,也可以输出

var_dump($call_five);//虽然是false,也可以输出

var_dump($call_six);//"Man::four"

var_dump($call_seven);//"Man::four"

php ismethod,结合php类三种属性说明is_callable和method_exists简单区别相关推荐

  1. 三种属性操作性能比较:PropertyInfo + Expression Tree + Delegate.CreateDelegate

    在<上篇>中,我比较了三种属性操作的性能:直接操作,单纯通过PropertyInfo反射和IL Emit.本篇继续讨论这个话题,我们再引入另外两种额外的属性操作方式:Expression ...

  2. unix/mac/dos-windows三种文本文件的格式的行尾区别

    在项目程序中,用fgets()读一个文本文件,一行一行的读取,之前测试的所有的文件都没有问题,今天突然拿到一个文件测试时却出问题了,调试发现它并没有一行一行的读,但是用notepad++明明可以看到文 ...

  3. 怎样给视频配音?三种配音方法来助力,简单又方便

    怎样给视频配音?三种配音方法来助力,简单又方便 为视频配音是每一位做短视频的作者都应当掌握的一个技能,那么今天我们就来一些学习三种配音方法,各有各的好处,也各有各的不足,不过好在都简单又方便. 方法一 ...

  4. 转载.Android HAL实现的三种方式(1) - 基于JNI的简单HAL设计

    现在在Android上的HAL开发总的来说还是随意性比较大,Android也并没有规范好一个具体的框架,下面我将根据Jollen的Mokoid工程,自己做了一些改动,分别给大家介绍一下三种实现方式. ...

  5. JSON的三种解析方式以及JSONObject、JSONArray区别

    JSON的常用两种解析方式 一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串 ...

  6. FAT32 or exFAT or NTFS,三种U盘格式的联系与区别

    U盘格式包括三种:FAT32.exFAT 和 NTFS,那么这三个格式具体有什么区别呢? (1) FAT32(File Allocation Table 32bit) 32位文件分配表,FAT32文件 ...

  7. 422器件与lvds接收器的区别_SPI、I2C、UART三种串行总线的原理、区别

    SPI.I2C.串口.我相信如果你是从事的是嵌入式开发,一定会用到这三种通信协议,串口的话因为和波特率有关,所以一般的CPU或者MCU只会配有两个或者三个串口,而数据的传输,的话SPI和I2C用得会比 ...

  8. SPI、I2C、UART三种串行总线的原理、区别及应用

    SPI协议解析,链接如下 https://blog.csdn.net/weiqifa0/article/details/82765892 I2C协议解析,链接如下 https://blog.csdn. ...

  9. vmware 虚拟机三种网络模式 桥接 NAT 仅主机区别 是什么意思

    由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations ...

最新文章

  1. 漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3 ?
  2. NHibernate 对分组聚合支持的不好
  3. SVD分解.潜语义分析.PythonCode
  4. unity挺好用的移动端相机控制器(Android和IPhone通用)
  5. 华为机型深色模式下问题
  6. html文档基本格式主要包括以下哪几类,CAD多选题考试题「附答案」
  7. 有了HTML5,Flash还能走多远
  8. 【科普】AHCI模式是什么,与IDE模式有什么区别?
  9. BZOJ5118: Fib数列2
  10. TIPTOP报表提示:foreach: 字元轉換至數字程序失敗.
  11. rsa java模数_RSA加密:利用模数和指数生成公钥加密
  12. 白光干涉仪能做什么丨科普篇
  13. expdp impdp
  14. iOS 正则表达式判断手机号,邮箱等
  15. 数字 IC 笔试面试必考点(12)静态时序分析 STA
  16. 数学建模暑期集训21:主成分分析(PCA)
  17. qq客服不需要加好友的html方法
  18. 企业内网安全建设的全面解析
  19. linux将用户加入多个组,Linux 用命令把同一个用户加入多个组
  20. 云原生实践,政务安全大脑,云端密码应用…腾讯在湾区创见大会发布了哪些重点

热门文章

  1. Windows 目录结构,服务以及端口, DOS常用命令学习
  2. php使用redis持久化,redis是如何持久化的
  3. 查看vsftpd内容为空,不能建立文件夹
  4. ubantu自启脚本
  5. Ajax入门总结--Ajax跨域请求
  6. ES6公用花瓣飘落插件的封装及使用,支持npm安装
  7. OpenCV:Adaboost训练时数据扩增
  8. 实践:使用FLANN.LSH进行检索
  9. CUDA学习(六十三)
  10. 理解Event的冒泡模型