PHP魔术方法

<?php

namespace test;

class ObjectClass
{
    public function __construct($params) // 实例化对象则会被调用__construct()
    {
        echo "<pre>";
        print_r(__METHOD__ .json_encode($params) . PHP_EOL);
        echo "</pre/>";
    }

    public function __invoke($params) // 对象本身不能直接当函数用,如果被当做函数用,会直接回调__invoke()
    {
        echo "<pre>";
        print_r(__METHOD__ .json_encode($params) . PHP_EOL);
        echo "</pre/>";
    }

    public function __sleep($params) // 序列化对象的时候调用
    {
        echo "<pre>";
        print_r(__METHOD__ .json_encode($params) . PHP_EOL);
        echo "</pre/>";
    }

    public function __wakeup($params) // 反序列化对象的时候调用
    {
        echo "<pre>";
        print_r(__METHOD__ .json_encode($params) . PHP_EOL);
        echo "</pre/>";
    }

    public function __destruct() // 反序列化对象的时候调用
    {
        echo "<pre>";
        print_r(__METHOD__ . PHP_EOL);
        echo "</pre/>";
    }

    public function __get($params) // 获取对象不存在的属性则会调用
    {
        echo "<pre>";
        print_r(__METHOD__ .json_encode($params) . PHP_EOL);
        echo "</pre/>";
    }

    public function __set($params, $value) // 设置对象不存在的属性则会调用
    {
        echo "<pre>";
        print_r(__METHOD__ .json_encode($params) . $value . PHP_EOL);
        echo "</pre/>";
    }

    public function __toString() // 把对象当成字符串打印则会调用
    {
        echo "<pre>";
        print_r(__METHOD__  . PHP_EOL);
        echo "</pre/>";

        return __METHOD__  . PHP_EOL;
    }

    public function __clone() // 克隆对象的时候则会调用
    {
        echo "<pre>";
        print_r(__METHOD__  . PHP_EOL);
        echo "</pre/>";
    }

}


$objectClass = new ObjectClass("construct()"); // __construct()
$objectClass("invoke()"); // __invoke()
serialize($objectClass("sleep()")); // __sleep()
unserialize($objectClass("wakeup()")); // __wakeup()
$objectClass->name; // __get()
$objectClass->sex = 1; // __set()
echo $objectClass("toString()"); // __toString()
$clone = clone $objectClass; // __clone()
unset($objectClass); // __destruct()

 

posted @ 2021-03-10 20:37  将来-小志  阅读(85)  评论(0编辑  收藏  举报