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;

看到了吧,它省去了很多繁琐的东西,不过缺点就是,属性和函数都是动态的且不固定的,到时要追踪该类属性和方法比较麻烦。

posted @ 2014-07-28 15:58  [九狐科技]keheng  阅读(319)  评论(0编辑  收藏  举报