php __set() __get() 方法訪問屬性
阿新 • • 發佈:2019-02-13
<?php header("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()