您好,登錄后才能下訂單哦!
本篇文章為大家展示了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中面向對象的標識對象是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。