魔术方法(Magic Methods)

  • __construct() 构造方法,类实例化的时候执行

  • __destruct() 析构函数,某个对象所有引用都被删除或者当前对象显示销毁的时候执行

  • __call() 调用类中一个不存在的方法的时候执行

  • __callStatic() 调用不存在的静态方法时,执行

  • __get() 调用不在的数组时执行

  • __set() 设置对象中不存在的属性时执行

  • __isset() 判断一个对象属性是否存在时执行

  • __unset() 销毁一个对象属性时执行

  • __sleep() 序列化一个对象前执行

  • __wakeup() 反序列化一个对象前执行

  • __toString() 把对象当成字符串输出时执行,返回一个字符串

  • __invoke() 把对象以函数的形式调用的时候执行

  • __set_state() 5.1.0时启用,调用var_export函数前执行

  • __clone() 克隆一个的对象的时候调用

示例:

class Test {

    function __call($function_name, $args)
    {
        echo "你所调用的方法:$function_name(参数:<br />";
        var_dump($args);
        echo ")不存在!";
    }

    function __callstatic($function_name, $args)
    {
        echo "你所调用的静态方法:$function_name(参数:<br />";
        var_dump($args);
        echo ")不存在!";
    }
}

$obj = new Test();
$obj->test();
$obj::test();

示例:

注意:经过测试,两个方法不能同时存在,只能有一个被运行(php7下测试运行)

示例:

示例:

实例

资料

php---魔术方法(__tostring(),__set_state())

中年大叔的PHP学习之旅——魔术方法__sleep和__wakeup

Last updated

Was this helpful?