欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單談?wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對(duì)象

 更新時(shí)間:2017年06月27日 10:18:01   投稿:jingxian  
下面小編就為大家?guī)硪黄唵握務(wù)凱HP面向?qū)ο笾畼?biāo)識(shí)對(duì)象。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

標(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)文章

  • PHP圖像裁剪縮略裁切類源碼及使用方法

    PHP圖像裁剪縮略裁切類源碼及使用方法

    這篇文章主要介紹了PHP圖像裁剪縮略裁切類源碼及使用方法的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • ThinkPhP5整合微信小程序訂閱消息實(shí)用代碼

    ThinkPhP5整合微信小程序訂閱消息實(shí)用代碼

    記錄一下開發(fā)小程序消息推送的實(shí)例,配合后端tp推送,要使用微信訂閱通知功能,需要用戶首先在小程序點(diǎn)擊訂閱后,后臺(tái)方可推送相關(guān)訂閱通知模板,否則無法直接推送
    2023-08-08
  • Thinkphp5框架異常處理操作實(shí)例分析

    Thinkphp5框架異常處理操作實(shí)例分析

    這篇文章主要介紹了Thinkphp5框架異常處理操作,結(jié)合實(shí)例形式分析了Thinkphp5框架異常處理操作原理、操作方法與相關(guān)使用技巧,需要的朋友可以參考下
    2020-06-06
  • 純PHP代碼實(shí)現(xiàn)支付寶批量付款

    純PHP代碼實(shí)現(xiàn)支付寶批量付款

    最近在做一個(gè)使用支付寶轉(zhuǎn)賬的項(xiàng)目,其中有需求把我難到了:批量支付成功后不知道怎么接收系統(tǒng)返回的通知,經(jīng)過朋友幫忙,此功能實(shí)現(xiàn),下面小編把具體代碼整理分享給大家,供大家參考
    2015-12-12
  • thinkphp項(xiàng)目如何自定義微信分享描述內(nèi)容

    thinkphp項(xiàng)目如何自定義微信分享描述內(nèi)容

    本文主要講述:在thinkphp框架中,如何獲取微信分享接口權(quán)限、如何設(shè)置安全域名、如何修改微信分享標(biāo)題、修改微信分享描述、修改微信分享圖片、如何定制微信分享內(nèi)容
    2017-02-02
  • laravel5.6 框架郵件隊(duì)列database驅(qū)動(dòng)簡單demo示例

    laravel5.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-01
  • ThinkPHP寫數(shù)組插入與獲取最新插入數(shù)據(jù)ID實(shí)例

    ThinkPHP寫數(shù)組插入與獲取最新插入數(shù)據(jù)ID實(shí)例

    這篇文章主要介紹了ThinkPHP寫數(shù)組插入與獲取最新插入數(shù)據(jù)ID的方法,實(shí)例講述了ThinkPHP基于數(shù)組操作數(shù)據(jù)庫的方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php實(shí)現(xiàn)微信發(fā)紅包

    php實(shí)現(xiàn)微信發(fā)紅包

    現(xiàn)在微信發(fā)紅包比較流行,大家都會(huì)使用微信發(fā)紅包,馬上又該過年了,發(fā)紅包又要開始了,小編這就給大家分享一個(gè)php實(shí)現(xiàn)微信發(fā)紅包程序的算法,非常的實(shí)用,這里推薦給小伙伴們,有需要的朋友可以參考下。
    2015-12-12
  • IIS6.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)完成

    IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安裝實(shí)例(已經(jīng)完成)...
    2006-12-12
  • CI(CodeIgniter)框架介紹

    CI(CodeIgniter)框架介紹

    CodeIgniter 是一個(gè)為用 PHP 編寫網(wǎng)絡(luò)應(yīng)用程序的人員提供的工具包。它的目標(biāo)是實(shí)現(xiàn)讓你比從零開始編寫代碼更快速地開發(fā)項(xiàng)目,為此,CI 提供了一套豐富的類庫來滿足通常的任務(wù)需求,并且提供了一個(gè)簡單的接口和邏輯結(jié)構(gòu)來調(diào)用這些庫。CodeIgniter 可以將需要完成的任務(wù)代碼量最小化,這樣你就可以把更多的精力放到項(xiàng)目的開發(fā)上了。
    2014-06-06

最新評(píng)論