全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

简单谈谈PHP面向对象之标识对象

标识对象模式

这个模式主要功能就是创建sql语句中的wehre条件字符串的,下面直接看代码和注释:

namespace woo\mapper;


//字段对象
class Field {
  protected $name = null;     //字段名称
  protected $operator = null;     //操作符  
  protected $comps = array();     //存放条件的数组  
  protected $incomplete = false;   //检查条件数组是否有值
  
  function __construct ($name){
    $this->name= $name;
  }
  
  //添加where 条件
  function addTest($operator,$value){
    $this->comps[] = array('name'=>$this->name,'operator'=>$operator,'value'=>$value);
  }
  
  //获取存放条件的数组
  function getComps(){
    return $this->comps;
  }
  
  function isIncomplete(){
    return empty($this->comps);
  }
}


//标识对象
class IdentityObject {
  protected $currentfield = null;    //当前操作的字段对象
  protected $fields = array();    //字段集合
  private $and = null;
  private $enforce = array();      //限定的合法字段    
  
  function __construct($field = null, array $enforce = null){
    if(!is_null($enforce)){
      $this->enforce = $enforce;
    }
    if(!is_null($field)){
      $this->field($field);
    }
  }
  
  //获取限定的合法字段
  function getObjectFields(){
    return $this->enforce;
  }
  
  //主要功能为设置当前需要操作的对象
  function field($fieldname){
    if(!$this->isVoid()&& $this->currentfield->isIncomplete()){
      throw new \Exception("Incomplete field");
    }
    $this->enforceField($fieldname);
    if(isset($this->fields[$fieldname]){
      $this->currentfield = $this->fields[$fieldname];
    } else {
      $this->currentfield = new Field($fieldname);
      $this->fields[$fieldname] = $this->currentfield;
    }
    return $this;          //采用连贯语法
  }
  
  //字段集合是否为空
  function isVoid(){
    return empty($this->fields);
  }
  
  //检查字段是否合法
  function enforceField ($fieldname){
    if(!in_array($fieldname,$this->enforce) && !empty($this->enforce)){
      $forcelist = implode(',',$this->enforce);
      throw new \Exception("{$fieldname} not a legal field {$forcelist}");
    }
  }
  
  
  //向字段对象添加where条件
  function eq($value){
    return $this->operator("=",$value);
  }
  
  function lt($value){
    return $this->operator("<",$value);
  }
  
  function gt($value){
    return $this->operator(">",$value);
  }
  
  //向字段对象添加where条件
  private function operator($symbol,$value){
    if($this->isVoid){
      throw new \Exception("no object field defined");
    }
    $this->currentfield->addTest($symbol,$value);
    return $this;                   //采用连贯语法
  }
  
  //获取此类中所有字段对象集合的where条件数组
  function getComps(){
    $ret = array();
    foreach($this->fields as $key => $field){
      $ret = array_merge($ret,$field->getComps());
    }
    return $ret;
  }
}

//客户端代码
$idobj = new IdentityObject ();
$idobj->field("name")->eq("The Good Show")->field("start")->gt(time())->lt(time()+(24*60*60));
$test = $idobj->getComps();
var_dump($test);

//输出类似下面的内容

/*
array{
  array('name'=>'name','operator'=>'=','value'=>'The Good Show'),
  array('name'=>'start','operator'=>'>','value'=>'123456'),  //123456表示time()函数输出的时间戳
  array('name'=>'start','operator'=>'<','value'=>'123456')
}

*/

以上这篇简单谈谈PHP面向对象之标识对象就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# 面向对象之标识对象  # 老生常谈PHP面向对象之标识映射  # PHP 面向对象详解  # PHP面向对象教程之自定义类  # 实例讲解PHP面向对象之多态  # 给大家  # 主要功能  # 希望能  # 这篇  # 小编  # 大家多多  # 面向对象  # 为空  # 类中  # 客户端  # 是否合法  # false  # function  # array  # incomplete  # comps  # operator  # empty  # isIncomplete  # IdentityObject 


相关文章: nginx修改上传文件大小限制的方法  建站之星如何优化SEO以实现高效排名?  如何获取PHP WAP自助建站系统源码?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  企业微网站怎么做,公司网站和公众号有什么区别?  建站主机数据库如何配置才能提升网站性能?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何做网站制作流程,*游戏网站怎么搭建?  行程制作网站有哪些,第三方机票电子行程单怎么开?  网站按钮制作软件,如何实现网页中按钮的自动点击?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  如何通过IIS搭建网站并配置访问权限?  如何将凡科建站内容保存为本地文件?  制作网站的公司有哪些,做一个公司网站要多少钱?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  高防服务器租用如何选择配置与防御等级?  制作公司内部网站有哪些,内网如何建网站?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  如何在腾讯云服务器上快速搭建个人网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  如何在自有机房高效搭建专业网站?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何快速搭建高效简练网站?  如何实现建站之星域名转发设置?  C#如何使用XPathNavigator高效查询XML  建站主机与服务器功能差异如何区分?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何通过建站之星自助学习解决操作问题?  安徽网站建设与外贸建站服务专业定制方案  临沂网站制作企业,临沂第三中学官方网站?  如何快速使用云服务器搭建个人网站?  如何在西部数码注册域名并快速搭建网站?  如何通过免费商城建站系统源码自定义网站主题与功能?  如何零基础开发自助建站系统?完整教程解析  家具网站制作软件,家具厂怎么跑业务?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  建站主机选购指南:核心配置优化与品牌推荐方案  如何解决ASP生成WAP建站中文乱码问题?  建站与域名管理如何高效结合?  建站之星安装失败:服务器环境不兼容?  教学网站制作软件,学习*后期制作的网站有哪些?  如何获取开源自助建站系统免费下载链接? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。