php魔术方法

<?php

header("Content-type:text/html;charset=utf-8");

class Person {

    //下面是人的成员属性,都是封装的私有成员
    private $name;      //人的名子
    private $sex;       //人的性别
    private $age;       //人的年龄

    //__get()方法用来获取私有属性  
    public function __get($property_name) {
        echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
        if (isset($this->$property_name)) {
            return($this->$property_name);
        } else {
            return(NULL);
        }
    }

    //__set()方法用来设置私有属性
    public function __set($property_name, $value) {
        echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";
        $this->$property_name = $value;
    }

    //__call调用未定义的方法执行
    public function __call($name, $arguments) {
        echo "你所调用的函数:$name(参数:<br />";
        var_dump($arguments);
        echo ")不存在!";
    }

    //__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。
    public function __callStatic($name, $arguments) {
        echo "你所调用的静态函数:$name(参数:<br />";
        var_dump($arguments);
        echo ")不存在!";
    } 
}

$p1 = new Person();
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
$p1->name = "张三";
$p1->sex = "男";
$p1->age = 20;

  

原文地址:https://www.cnblogs.com/objectboy/p/5053368.html