欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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
相关标签: php6