PHP自定义拓展函数和属性
由于是java出身,每次看到java的pojo类,就感觉很繁冗,N多属性,然后一堆get/set方法,如果要新增一个属性,那么就必须新增一个行代码。看到Yii源代码里面,它有个很好的思路,就是用一个数组表示key=>value值,属性可以自己任意拓展,事先不知道的都行。下面看看简单例子吧:
1 <?php 2 class A{ 3 private $_m; 4 5 public function __construct(){ 6 } 7 8 public function __set($name,$value){ 9 $this->_m[$name] = $value; 10 } 11 12 public function __get($name){ 13 return isset($this->_m[$name]) ? $this->_m[$name] : null; 14 } 15 16 public function attachBehavior($propertys){ 17 foreach($propertys as $name=>$value){ 18 $this->_m[$name] = $value; 19 } 20 } 21 } 22 23 $a = new A(); 24 $a->attachBehavior(array("key"=>"value")); 25 $a->aaa = "gagag"; 26 echo $a->key; 27 echo $a->aaa;
看到了吧,它省去了很多繁琐的东西,不过缺点就是,属性和函数都是动态的且不固定的,到时要追踪该类属性和方法比较麻烦。