美文网首页PHP开发
PHP常用的魔术方法讲解

PHP常用的魔术方法讲解

作者: hankviv | 来源:发表于2018-04-26 21:04 被阅读0次

    PHP常见的魔术方法

    • __get 获得一个类的成员变量时调用
    • __set 设置一个类的成员变量时调用
    • __toString 类被当成字符串时的回应方法
    • __construct 类的构造函数
    • __call 在对象中调用一个不可访问方法时调用
    • __callStatic 用静态方式中调用一个不可访问方法时调用
    • __invoke 调用函数的方式调用一个对象时的回应方法

    __construct:

    class Object{
        function __construct()
        {
            echo 'hello world';
        }
    }
        
    new \IMooc\Object();
    \IMooc\Object::say();
    

    当实例化的时候会运行__construct,注意静态调用不会。

    __get,__set:

      function __set($name, $value)
        {
            $this->$name = $value;
        }
    
        function __get($name)
        {
           return $this->$name;
        }
    $obj = new \IMooc\Object();
    $obj->title = 1;
    var_dump($obj->title);
    

    当获取和设置一个成员变量的时候会调用set和get方法。set方法有两个参数,第一个是设置变量名字,第二个变量的值。

    __call,__callStatic:

     function __call($func, $params)
        {
            var_dump($func,$params);
            return "magic function \n";
        }
    
        static function __callStatic($func, $params)
        {
            var_dump($func,$params);
            return "magic function \n";
        }
    $obj = new \IMooc\Object();
    //__call
    $obj->noFunction();
    //__callStatic
    \IMooc\Object::noFunction();
    

    当调用一个不存在或者无法调用(无权限,不可访问,受保护)的方法的时候,会调用__call方法,静态调用会使用__callStatic方法。第一个是函数名称,第二个是函数参数。

    __toString:

        function __toString()
        {
            return __CLASS__;
        }
    $obj = new \IMooc\Object();
    echo $obj;
    

    当类被当作字符串处理的时候就会调用该方法。

    __invoke:

       function __invoke($params)
        {
            var_dump($params);
            return "invoke\n";
        }
    $obj = new \IMooc\Object();
    $obj('hello');
    

    当一个类被当作函数来执行的时候,就会调用invoke方法。参数为传递给对象的参数。

    相关文章

      网友评论

        本文标题:PHP常用的魔术方法讲解

        本文链接:https://www.haomeiwen.com/subject/donmlftx.html