PHP 魔术方法

2018-06-19  本文已影响7人  CaptainRoy
PHP中魔术方法

__construct
__destruct
__set
__get
__isset
__unset

class Person
{
    private $name;
    private $sex;
    private $age;

    // 构造方法
    function __construct($name = '', $sex = '男', $age = 1)
    {
        echo __METHOD__ . PHP_EOL;
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }

    // 析构方法
    function __destruct()
    {
        echo __METHOD__ . PHP_EOL;
    }
    
    function say()
    {
        echo '我的名字: ' . $this->name . ' ,性别: ' . $this->sex . ' ,年龄: ' . $this->age . PHP_EOL;
    }

    function run()
    {
        echo $this->name . ' 在跑步' . PHP_EOL;
    }
}
$roy = new Person('roy', '男', 18); // Person::__construct
$roy->run(); // roy 在跑步
$roy->say(); // 我的名字: roy ,性别: 男 ,年龄: 18
$roy = null; // Person::__destruct
/**
     * @param string $propertyName 成员变量
     * @param mixed $propertyValue 成员变量对应的值
     */
    function __set($propertyName, $propertyValue)
    {
        echo __METHOD__ . ' ,参数: property- ' . $propertyName . '  ,value- ' . $propertyValue . PHP_EOL;
    }
$roy->name = 'lily'; // 自动调用 __set()
/**
  * @param string $propertyName 成员变量
     */
    function __get($propertyName)
    {
        echo __METHOD__ . '参数: Property - ' . $propertyName . PHP_EOL;
    }
echo $roy->age; // 自动调用 __get()
function __isset($propertyName)
    {
        echo __METHOD__ . '参数 : ' . $propertyName . PHP_EOL;
    }

    function __unset($propertyName)
    {
        echo __METHOD__ . '参数 : ' . $propertyName . PHP_EOL;
    }
var_dump(isset($roy->name)); // 自动调用 __isset
unset($roy->age); // 自动调用 __unset
/**
     * @param string $functionName 方法名
     * @param array $arguments 传入的参数
     */
    function __call($functionName, $arguments)
    {
        // TODO: Implement __call() method.
    }
上一篇 下一篇

猜你喜欢

热点阅读