资讯专栏INFORMATION COLUMN

结合php类三种属性说明is_callable和method_exists简单区别

LMou / 1746人阅读

摘要:静态方法可以通过未实例化的类直接访问或者通过实例化的类访问通过或者但是静态属性只能通过类本身访问,实例化的类是不可以访问类的静态属性的拼装数组,结合第二个参数和第三个参数实例化对象也可以如果为为真,如果为或者为假在子类父类本类内部访问只能

,
 *但是静态属性只能通过类本身访问,实例化的类是不可以访问类的静态属性的
 */
$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 "
";
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","
";
var_dump(is_callable($methodVariable5,false,$call_six));// true

echo "call static only but use new object","
";
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"
";

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"

is_callable

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21252.html

相关文章

  • PHP中的重载

    摘要:从兼容性和实用性考虑,个人认为短时间内能以同名函数方式重载的概率非常小。总结的特性决定了其不支持同名函数方式的重载,但并不意味着不支持重载。 转载请注明文章出处:https://tlanyan.me/overload-i... 整理思路时想到一个问题:PHP为什么不允许同名函数存在?即不允许常见于其他语言的重载机制? 重载和重写 先区分一下重载(overload)和重写(overri...

    liukai90 评论0 收藏0
  • Yii2 完整框架分析(详细)

    摘要:行为是如何注册到组件的呢通过注册行为之后,实际上是添加到了的属性中那么行为中的属性,就添加到了,中进行直接调用行为里面的方法的时候,实际上触发了里面的魔术方法继承链图解 Yii2 框架Trace 准备 了解composer的autoload psr0 psr4 加载机制 了解spl_autoload_register 了解依赖注入的实现原理反射 了解常用魔术方法__set,__get...

    spademan 评论0 收藏0
  • php获取设置变量类型

    摘要:检查变量是否是布尔值。检查该变量是否是标量,即,一个整数布尔值字符串或浮点数。设置变量的类型语法说明将变量的类型设置成。 gettype-获取变量类型 语法: string gettype (mixed $var) 返回的字符串的可能值为: boolean integer double string array object resource null unknown type 注意:...

    RebeccaZhong 评论0 收藏0
  • laravel5.2redis_cluster配置

    摘要:纲要中集群的应用对集群模式的底层实现中集群的应用这部分我想分享下中集群的配置官网也有集群的配置讲解但是版还是有点不足只是说了将配置项设为,但光这样一个选项不能代表,一个新手直接可用集群这部分还包括客户端的事,所以后面我也会分享下关于的源码分 纲要: laravel中redis集群的应用 predis对redis集群模式的底层实现 laravel中redis集群的应用 这部分我想分享...

    Joyven 评论0 收藏0
  • laravel5.2redis_cluster配置

    摘要:纲要中集群的应用对集群模式的底层实现中集群的应用这部分我想分享下中集群的配置官网也有集群的配置讲解但是版还是有点不足只是说了将配置项设为,但光这样一个选项不能代表,一个新手直接可用集群这部分还包括客户端的事,所以后面我也会分享下关于的源码分 纲要: laravel中redis集群的应用 predis对redis集群模式的底层实现 laravel中redis集群的应用 这部分我想分享...

    JerryC 评论0 收藏0

发表评论

0条评论

LMou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<