jQuery插件實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)菜單效果
683
2024-03-19
標(biāo)識(shí)對(duì)象模式
這個(gè)模式主要功能就是創(chuàng)建sql語句中的wehre條件字符串的,下面直接看代碼和注釋:
namespace woomapper; //字段對(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') } */
以上這篇簡(jiǎn)單談?wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對(duì)象就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持綠夏網(wǎng)。
#免責(zé)聲明#
本站[綠夏技術(shù)導(dǎo)航]提供的一切軟件、教程和內(nèi)容信息僅限用于學(xué)習(xí)和研究目的;不得將上述內(nèi)容用于商業(yè)或者非法用途,否則,一切后果請(qǐng)用戶自負(fù)。本站信息來自網(wǎng)絡(luò)收集整理,版權(quán)爭(zhēng)議與本站無關(guān)。您必須在下載后的24個(gè)小時(shí)之內(nèi),從您的電腦或手機(jī)中徹底刪除上述內(nèi)容。如果您喜歡該程序或內(nèi)容,請(qǐng)支持正版,購買注冊(cè),得到更好的正版服務(wù)。我們非常重視版權(quán)問題,如有侵權(quán)請(qǐng)郵件[admin@lxwl520.com]與我們聯(lián)系進(jìn)行刪除處理。敬請(qǐng)諒解!