成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? PHP面向?qū)ο笾聞?wù)腳本模式(詳解)
全站頭部文字 我要出現(xiàn)在這里
PHP面向?qū)ο笾聞?wù)腳本模式(詳解) 713 2024-01-11   

如下所示:

/*
事務(wù)腳本模式: 類似于thinkphp中的model層,或者說就是操作數(shù)據(jù)庫的類。
個人覺得實(shí)踐中使用起來還是挺簡單方便的,就是SQL語句寫死了的話,靈活性就不夠。
示例代碼如下:

*/

namespace wooprocess;

abstract class Base{
  static $DB;         //pdo對象
  static $stmts = array(); //sql語句句柄
  
  function __construct (){
    $dsn = woobaseApplicationRegistry::getDSN();
    if(is_null($dsn)){
      throw new woobaseAppException("No DSN");
    }
    self::$DB = new PDO($dsn);
    self::$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  }
  
  function prepareStatement($stmt_s){  //緩存sql語句句柄
    if(isset(self::$stmts($stmt_s)){
      return self::$stmts[$stmt_s];
    }
    $stmt_handle = self::$DB->prepare($stmt_s);
    self::$stmts[$stmt_s] = $stmt_handle;
    return $stmt_handle;
  }
  
  protected function doStatement($stmt_s,$values_a){  //執(zhí)行sql并獲取一個語句資源
    $sth = $this->prepareStatement($stmt_s);
    $sth->closeCursor();
    $db_result = $sth->execute($values_a);
    return $sth;
  }
}

//這個類就是向數(shù)據(jù)庫中寫入一些數(shù)據(jù),比較簡單沒什么好多說的
class VenueManager extends Base{
  static $add_venue = "INSERT INTO venue (name) values(?)";
  static $add_space = "INSERT INTO space (name,venue) values(?,?)";
  static $check_slot = "SELECT id,name FROM event WHERE space = ? AND (start+duration)>? AND start <?";
  static $add_event = "INSERT INTO event (name,space,start,duration) values(?,?,?,?)";
  
  function addVenue($name,$space_array){
    $ret = array();
    $ret['venue'] = array($name);
    $this->doStatement(self::$add_venue,$ret['venue']);
    $v_id = self::$DB->lastInsertId();
    $ret['spaces'] = array();
    foreach($space_array as $space_name){
      $values = array($space_name,$v_id);
      $this->doStatement(self::$add_space,$values);
      $s_id = self::$DB->lastInsertId();
      array_unshift($values,$s_id);
      $ret['spaces'][] = $values;
    }
    return $ret;
  }
  
  function bookEvent ($space_id,$name,$time,$duration){
    $values = array($space_id,$time,($time+$duration));
    $stmt = $this->doStatement(self::$check_slot,$values,false);
    if($result = $stmt->fetch()){
      throw new woobaseAppException("double booked! try again");
    }
    $this->doStatement(self::$add_event,array($name,$space_id,$time,$duration));
  }
}

//客戶端,使用起來還是比較簡便的
$venue = new VenueManager();
$venue->addVenue('test',array('test1','test2','test3'));

以上這篇PHP面向?qū)ο笾聞?wù)腳本模式(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持綠夏網(wǎng)。



主站蜘蛛池模板: 二年级下册数学期末考试试卷可打印| cctv16节目表今天目表| 母女大战| 张艺馨个人资料| 申请采购的请示范文| 夜电影| 左雯璐| 1—36集电视剧在线观看| 神州第一刀电影免费观看| 李志毅| 高一英语必修一| 长靴靴虐视频vk| 手机图片jpg格式转换器免费| 男人脱衣服| 我的孩子我的家 电视剧剧情介绍| 星武神诀| 欧美最猛黑人xxxⅹ猛男视频| 郭亚菲| 玉林电视台| 破冰 电影| 定型枕什么时候能给宝宝用| 火烈鸟电影完整版视频| 北风那个吹在线观看免费完整版| 地下车库设计规范| 朱莉·安妮·普雷斯科特| 281封信电视剧演员表| 土壤动植物的乐园教学反思| 王者图片| 海滩修学旅程行| 美女抽烟的视频| 宋学士濂文言文翻译| 蛇欲电影| 周韦彤写真| 林正英复仇电影| 冬日舞蹈教程完整版| 视频欧美| 天津电视台体育频道| 麻美由真番号| 在线看色戒| 眉间尺| 操老女人视频|

!!!站長長期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103