php __set() __get() 方法访问属性

来源:互联网 发布:学日语 报班 知乎 编辑:程序博客网 时间:2024/06/07 13:03

<?phpheader("Content-type:text/html;charset=utf-8");class Obj{    function __set($name,$value){        $setter = 'set'.ucfirst($name);        if (method_exists($this, $setter)) {            $this->$setter($value);        }elseif (method_exists($this, 'get'.$name)){            throw new Exception('write-only property:'.$name);        }else {            throw new Exception('unknown property:'.$name);        }    }    function __get($name){        $getter = 'get'.ucfirst($name);        if (method_exists($this, $getter)) {            return $this->$getter();        }elseif (method_exists($this, 'set'.$name)){            throw new Exception('read-only property:'.$name);        }else{            throw new Exception('unknown property:'.$name);        }    }}class person extends Obj{        private $name;    private $age;    private $address; /**     * @return the $name     */    public function getName()    {        return $this->name;    } /**     * @return the $age     */    public function getAge()    {        return $this->age;    } /**     * @return the $address     */    public function getAddress()    {        return $this->address;    } /**     * @param field_type $name     */    public function setName($name)    {        $this->name = $name;    } /**     * @param field_type $age     */    public function setAge($age)    {        $this->age = $age;    } /**     * @param field_type $address     */    public function setAddress($address)    {        $this->address = $address;    }    }$p = new person();$p->name = '王宝强';echo "value:",$p->name;

__set() __get() 


0 0
原创粉丝点击