亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中面向對象的標識對象是什么

發布時間:2020-12-18 14:52:54 來源:億速云 閱讀:212 作者:Leah 欄目:開發技術

本篇文章為大家展示了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中面向對象的標識對象是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏尼特右旗| 武鸣县| 安阳县| 城步| 淮南市| 麻栗坡县| 蓝田县| 田阳县| 长武县| 方城县| 和龙市| 全州县| 玉环县| 大安市| 鄂伦春自治旗| 台北市| 建德市| 浪卡子县| 康平县| 西宁市| 安康市| 永清县| 铁岭市| 云和县| 兴安盟| 扎兰屯市| 四平市| 方山县| 孝昌县| 永丰县| 泌阳县| 南通市| 建瓯市| 象山县| 嘉峪关市| 积石山| 陈巴尔虎旗| 丰都县| 四子王旗| 依兰县| 临湘市|