PHP开发

PHP常用的魔术方法讲解

2018-04-26  本文已影响0人  hankviv

PHP常见的魔术方法


__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方法。参数为传递给对象的参数。

上一篇 下一篇

猜你喜欢

热点阅读