魔术和反射机制节约代码

分类:PHP | 作者:凹凸曼 | 发表于2011/04/29

 在弄数据映射的时候发觉有更加简单的代替原来那种方法!

主要用到了PHP本身的魔术及反射机制,哈哈可以节约代码!

User手工创建getter,setter

UserRe是自动创建

他们两个完成的功能是一样的!

 reflecttest.php 源码所示如下:

<?php
/**
* author:凹凸曼
* email:jar-c@163.com
*/

class User{
    protected $id;
    protected $name='';
    protected $tel='';
   
    public function __construct(){
       
    }
   
    public function setName($name){   
        $this->name=$name; 
    }
   
    public function getName(){
        return $this->name;
    }
   
    public function setTel($tel){
        $this->tel=$tel;
    }
   
    public function getTel(){
        return $this->name;
    }
   
    public function setId($id){
        $this->id=$id;
    }
   
    public function getId(){
        return $this->id;
    }
}
class UserRe{
    protected $id;
    protected $name='';
    protected $tel='';
   
    public function __construct(){
       
    }  
   
    public function __call($name,$args){
       if(preg_match('/^(set|get)(\w+)/',$name,$matches)){
            $ckeys=array_keys(get_class_vars(get_class($this)));
            foreach($ckeys as $v){
                $temp[]=ucwords($v);
            }

            if('get'==$matches[1]){
                if(in_array($matches[2],$temp)){
                    return $this->adttribute;
                }
            }else{
                $this->adttribute=$args[0];
            }
       }
    }
    
}

/******测试区域*********/

$ur1 =new User();
$ur1->setName("User:aotuman 1 ");
echo $ur1->getName();

$ur =new UserRe();
$ur->setName("UserRe:aotuman 2");
echo $ur->getName();
?>

  • PHP__魔术方法简介
  • PHP反射机制实现动态代理的代码
  • 本文出自 “凹凸曼” 博客,请务必保留此出处 http://www.apoyl.com/?p=653

    Tag:

    日志信息 »

    该日志于2011-04-29 01:53由 凹凸曼 发表在PHP分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

    目前盖楼 (0)层:

    发表评论 »

    « »