《PHP應(yīng)用:簡單談?wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對象》要點(diǎn):
本文介紹了PHP應(yīng)用:簡單談?wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對象,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP應(yīng)用標(biāo)識(shí)對象模式
PHP應(yīng)用這個(gè)模式主要功能就是創(chuàng)建sql語句中的wehre條件字符串的,下面直接看代碼和注釋:
PHP應(yīng)用
namespace woo\mapper;
//字段對象
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í)對象
class IdentityObject {
protected $currentfield = null; //當(dāng)前操作的字段對象
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)前需要操作的對象
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條件數(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')
}
*/
PHP應(yīng)用以上這篇簡單談?wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對象就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持維易PHP.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/570.html