魔术和反射机制节约代码

分类: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分类下, 评论已关闭。

    目前盖楼

    抱歉,评论被关闭

    « »