日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php事务 面向对象,关于PHP面向对象的事务脚本模式

發(fā)布時(shí)間:2023/12/10 php 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php事务 面向对象,关于PHP面向对象的事务脚本模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面為大家?guī)硪黄狿HP面向?qū)ο笾聞?wù)腳本模式(詳解)。內(nèi)容挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。

如下所示:

/*

事務(wù)腳本模式: 類似于thinkphp中的model層,或者說就是操作數(shù)據(jù)庫的類。

個(gè)人覺得實(shí)踐中使用起來還是挺簡單方便的,就是SQL語句寫死了的話,靈活性就不夠。

示例代碼如下:

*/

namespace woo\process;

abstract class Base{

static $DB; //pdo對象

static $stmts = array(); //sql語句句柄

function __construct (){

$dsn = \woo\base\ApplicationRegistry::getDSN();

if(is_null($dsn)){

throw new \woo\base\AppException("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并獲取一個(gè)語句資源

$sth = $this->prepareStatement($stmt_s);

$sth->closeCursor();

$db_result = $sth->execute($values_a);

return $sth;

}

}

//這個(gè)類就是向數(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 \woo\base\AppException("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'));

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請關(guān)注PHP中文網(wǎng)!

相關(guān)推薦:

總結(jié)

以上是生活随笔為你收集整理的php事务 面向对象,关于PHP面向对象的事务脚本模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。