php魔术方法属性重载方法,php魔术属性重载
程序员文章站
2022-04-26 13:36:52
...
php魔术方法——属性重载方法,php魔术属性重载
php有一类很神奇的方法,这些方法是保留方法,通常不会在外部被显式调用,他们使用双下划线(__)开头,他们被称为魔术方法(Magic Methods)。php官方也不建议定义其他双下划线开头的方法。
这次介绍属性重载方法:get/set/isset/unset
public void __set ( string $name , mixed $value ) public mixed __get ( string $name ) public bool __isset ( string $name ) public void __unset ( string $name )
这些方法触发的时机,都是在访问不可访问的属性的时候。
如以下:
1 php 2 3 class Cls{ 4 5 private $a = 0; 6 protected $b = 1; 7 public $c = 2; 8 var $d = 3; 9 10 private $_properties = array(0); 11 12 public function __set($name, $value){ 13 echo __METHOD__ . ' is called! ' . json_encode(func_get_args()) . "\n"; 14 return $this->_properties[$name] = $value; 15 } 16 17 public function __get($name){ 18 echo __METHOD__ . ' is called! ' . json_encode(func_get_args()) . "\n"; 19 return $this->_properties[$name]; 20 } 21 22 public function __isset($name){ 23 echo __METHOD__ . ' is called! ' . json_encode(func_get_args()) . "\n"; 24 return isset($this->_properties[$name]); 25 } 26 27 public function __unset($name){ 28 echo __METHOD__ . ' is called! ' . json_encode(func_get_args()) . "\n"; 29 unset($this->_properties[$name]); 30 } 31 32 public function dump(){ 33 echo "====================== DUMP START ====================\n"; 34 echo STR