PHP魔术方法简介

孟德 258 2020-03-11

<?php


namespace Nphp;


class Object
{
    //1.__get/__set 将对象的属性进行接管
    //2.__call/__callStatic 控制对象的方法调用
    //3.__toString 将对象转换为字符串
    //4.__invoke 将对象转换为函数执行
    // 访问未定义属性会抛出错误 例如
    // $obv->title;
    protected $array = array(); //对对象属性访问映射到数组

    function __set($name, $value)
    {
        //赋值对象时,如果不存在对象就调用该方法
        // TODO: Implement __set() method.
        $this->array[$name] = $value;
    }

    function __get($name)
    {
        //获取对象时,对象不存在就调用该方法
        // TODO: Implement __get() method.
        return $this->array[$name];
    }

    function __call($name, $arguments)
    {
        //$name为方法名称
        //$arguments为方法的参数
        //调用不存在的方法时,会自动调用该方法
        // TODO: Implement __call() method.
        return '方法不存在';
    }

    static function __callStatic($name, $arguments)
    {
        //和__call一样,只是这个是静态方法
        // TODO: Implement __callStatic() method.
        return '静态方法不存在';
    }

    function __toString()
    {
        return __CLASS__;
        //将对象转换为字符串 例如echo $obj;这样调用
        // TODO: Implement __toString() method.
    }

    function __invoke($param)
    {
        //在使用函数方式调用对象时,将调用该函数  例如echo obj($param);
        // TODO: Implement __invoke() method.
    }
}


上一篇:PHP实现链式操作的基本方法
下一篇:PHP设计模式理解
相关文章