zoukankan      html  css  js  c++  java
  • php 魔术方法学习笔记

    __get()  __set()    __isset()   __unset

    __call   __callstatic

    __call是调用不可见(不存在或者没权限)的方法时,自动调用。

    $lisi->say(1,2,3)   对象中并不存在say 方法   __call("say",array(1,2,3))运行

    __get()用来获取私有成员的属性值,有一个参数,参数传入你要获取的私有成员的属性名称,返回的是获取的值。该方法不用我们手工去调用,只需要封装在类里面就好了。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。如下代码

    //__get()方法用来获取私有属性

    class tian{
    private $age=18;
    public function __get($property_name)
    {
    if(isset($this->$property_name)){
    return($this->$property_name);
    }

    }
    }
    $a=new tian();
    echo $a->age;

    如果要调用的私有属性存在,就会返回传递给私有属性的值,否则就为空
    $a=new tian();
    $a->age;此处会得到18,通过__get()魔术方法,使得在类的外部也能调用私有属性。
     
    __set() 为私有属性赋值,有两个参数,一个参数是私有属性的名称,第二个参数是要给私有属性赋的值,没有返回值,同样也不需要我们手动去调用,是封装在类中的。
    例如如下代码

    class tian{
    private $age=18;
    public function __get($property_name)

    if(isset($this->$property_name)){
    return($this->$property_name);
    }

    }

    public function __set($a,$v){
    echo  $this->$a ;

    }
    }
    $a=new tian();
    echo $a->name="大傻逼";

    如果成员属性不是私有的,也不会调用到该函数。

     
  • 相关阅读:
    36、【opencv入门】运动物体检测(2)
    二叉树数
    多边形的三角划分
    乘积最大
    加分二叉树
    c++ 装箱问题
    生物基元问题
    一般性的最少硬币组成问题
    打包
    挤牛奶
  • 原文地址:https://www.cnblogs.com/paddygege/p/6507550.html
Copyright © 2011-2022 走看看