簡單談?wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對(duì)象
標(biāo)識(shí)對(duì)象模式
這個(gè)模式主要功能就是創(chuàng)建sql語句中的wehre條件字符串的,下面直接看代碼和注釋:
namespace woo\mapper; //字段對(duì)象 class Field { protected $name = null; //字段名稱 protected $operator = null; //操作符 protected $comps = array(); //存放條件的數(shù)組 protected $incomplete = false; //檢查條件數(shù)組是否有值 function __construct ($name){ $this->name= $name; } //添加where 條件 function addTest($operator,$value){ $this->comps[] = array('name'=>$this->name,'operator'=>$operator,'value'=>$value); } //獲取存放條件的數(shù)組 function getComps(){ return $this->comps; } function isIncomplete(){ return empty($this->comps); } } //標(biāo)識(shí)對(duì)象 class IdentityObject { protected $currentfield = null; //當(dāng)前操作的字段對(duì)象 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; } //主要功能為設(shè)置當(dāng)前需要操作的對(duì)象 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}"); } } //向字段對(duì)象添加where條件 function eq($value){ return $this->operator("=",$value); } function lt($value){ return $this->operator("<",$value); } function gt($value){ return $this->operator(">",$value); } //向字段對(duì)象添加where條件 private function operator($symbol,$value){ if($this->isVoid){ throw new \Exception("no object field defined"); } $this->currentfield->addTest($symbol,$value); return $this; //采用連貫語法 } //獲取此類中所有字段對(duì)象集合的where條件數(shù)組 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); //輸出類似下面的內(nèi)容 /* array{ array('name'=>'name','operator'=>'=','value'=>'The Good Show'), array('name'=>'start','operator'=>'>','value'=>'123456'), //123456表示time()函數(shù)輸出的時(shí)間戳 array('name'=>'start','operator'=>'<','value'=>'123456') } */
以上這篇簡單談?wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對(duì)象就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
thinkphp項(xiàng)目如何自定義微信分享描述內(nèi)容
本文主要講述:在thinkphp框架中,如何獲取微信分享接口權(quán)限、如何設(shè)置安全域名、如何修改微信分享標(biāo)題、修改微信分享描述、修改微信分享圖片、如何定制微信分享內(nèi)容2017-02-02laravel5.6 框架郵件隊(duì)列database驅(qū)動(dòng)簡單demo示例
這篇文章主要介紹了laravel5.6 框架郵件隊(duì)列database驅(qū)動(dòng),結(jié)合實(shí)例形式詳細(xì)分析了laravel5.6郵件隊(duì)列database驅(qū)動(dòng)具體設(shè)置、實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2020-01-01ThinkPHP寫數(shù)組插入與獲取最新插入數(shù)據(jù)ID實(shí)例
這篇文章主要介紹了ThinkPHP寫數(shù)組插入與獲取最新插入數(shù)據(jù)ID的方法,實(shí)例講述了ThinkPHP基于數(shù)組操作數(shù)據(jù)庫的方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安裝實(shí)例(已經(jīng)完成
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安裝實(shí)例(已經(jīng)完成)...2006-12-12