欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

php數(shù)據(jù)庫(kù)層 php數(shù)據(jù)庫(kù)設(shè)計(jì)

求php zf mvc中數(shù)據(jù)庫(kù)層的合理架構(gòu)方案

看到你前面幾段寫(xiě)的就知道你是玩Java的。Java主要用Spring來(lái)實(shí)現(xiàn)主要的解耦功能。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到博興網(wǎng)站設(shè)計(jì)與博興網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋博興地區(qū)。

PHP這里的框架很少,而且PHP也沒(méi)有那么靈活的反射機(jī)制等吧。所以如果要用PHP來(lái)實(shí)現(xiàn)高內(nèi)聚低耦合,有點(diǎn)難度,除非你自己搞框架。

我看discuz論壇都沒(méi)有用那么復(fù)雜的技術(shù),而且我個(gè)人覺(jué)得PHP用MVC來(lái)分,分個(gè)controller,實(shí)在沒(méi)有必要。

如果樓主用了很復(fù)雜的業(yè)務(wù)邏輯,為何不用Java來(lái)做業(yè)務(wù)中心,PHP做前端,使用Java的WebService來(lái)暴露數(shù)據(jù)呢?

個(gè)人拙見(jiàn),一起探討。

thikphp 單獨(dú)php文件怎樣操作數(shù)據(jù)庫(kù)

ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫(kù)訪問(wèn)層,把不同的數(shù)據(jù)庫(kù)操作封裝起來(lái),我們只需要使用公共的Db類進(jìn)行操作,而無(wú)需針對(duì)不同的數(shù)據(jù)庫(kù)寫(xiě)不同的代碼和底層實(shí)現(xiàn),Db類會(huì)自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)來(lái)處理。目前的數(shù)據(jù)庫(kù)包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對(duì)PDO的支持,如果應(yīng)用需要使用數(shù)據(jù)庫(kù),必須配置數(shù)據(jù)庫(kù)連接信息,數(shù)據(jù)庫(kù)的配置文件有多種定義方式。

常用的配置方式是在項(xiàng)目配置文件中添加下面的參數(shù):

?php

//項(xiàng)目配置文件

return array(

//數(shù)據(jù)庫(kù)配置信息

'DB_TYPE' = 'mysql', // 數(shù)據(jù)庫(kù)類型

'DB_HOST' = 'localhost', // 服務(wù)器地址

'DB_NAME' = 'thinkphp', // 數(shù)據(jù)庫(kù)名

'DB_USER' = 'root', // 用戶名

'DB_PWD' = '', // 密碼

'DB_PORT' = 3306, // 端口

'DB_PREFIX' = 'think_', // 數(shù)據(jù)庫(kù)表前綴

//其他項(xiàng)目配置參數(shù)

// ...

);

或者采用如下配置

'DB_DSN' = 'mysql://username:password@localhost:3306/DbName'

使用DB_DSN方式定義可以簡(jiǎn)化配置參數(shù),DSN參數(shù)格式為:

數(shù)據(jù)庫(kù)類型://用戶名:密碼@數(shù)據(jù)庫(kù)地址:數(shù)據(jù)庫(kù)端口/數(shù)據(jù)庫(kù)名

如果兩種配置參數(shù)同時(shí)存在的話,DB_DSN配置參數(shù)優(yōu)先。

注意:如果要設(shè)置分布式數(shù)據(jù)庫(kù),暫時(shí)不支持DB_DSN方式配置。1

如果采用PDO驅(qū)動(dòng)的話,則必須首先配置DB_TYPE 為pdo,然后還需要單獨(dú)配置其他參數(shù),例如:

//PDO連接方式

'DB_TYPE' = 'pdo', // 數(shù)據(jù)庫(kù)類型

'DB_USER' = 'root', // 用戶名

'DB_PWD' = '', // 密碼

'DB_PREFIX' = 'think_', // 數(shù)據(jù)庫(kù)表前綴

'DB_DSN' = 'mysql:host=localhost;dbname=thinkphp;charset=UTF-8'

注意:PDO方式的DB_DSN配置格式有所區(qū)別,根據(jù)不同的數(shù)據(jù)庫(kù)類型設(shè)置有所不同。

配置文件定義的數(shù)據(jù)庫(kù)連接信息一般是系統(tǒng)默認(rèn)采用的,因?yàn)橐话阋粋€(gè)項(xiàng)目的數(shù)據(jù)庫(kù)訪問(wèn)配置是相同的。該方法系統(tǒng)在連接數(shù)據(jù)庫(kù)的時(shí)候會(huì)自動(dòng)獲取,無(wú)需手動(dòng)連接。

可以對(duì)每個(gè)項(xiàng)目和不同的分組定義不同的數(shù)據(jù)庫(kù)連接信息,如果開(kāi)啟了調(diào)試模式的話,還可以在不同的應(yīng)用狀態(tài)的配置文件里面定義獨(dú)立的數(shù)據(jù)庫(kù)配置信息。1

第二種 在模型類里面定義connection屬性

如果在某個(gè)模型類里面定義了connection屬性的話,則實(shí)例化該自定義模型的時(shí)候會(huì)采用定義的數(shù)據(jù)庫(kù)連接信息,而不是配置文件中設(shè)置的默認(rèn)連接信息,通常用于某些數(shù)據(jù)表位于當(dāng)前數(shù)據(jù)庫(kù)連接之外的其它數(shù)據(jù)庫(kù),例如:

//在模型里單獨(dú)設(shè)置數(shù)據(jù)庫(kù)連接信息

protected $connection = array(

'db_type' = 'mysql',

'db_user' = 'root',

'db_pwd' = '1234',

'db_host' = 'localhost',

'db_port' = '3306',

'db_name' = 'thinkphp'

);

也可以采用DSN方式定義,例如:

//或者使用DSN定義

protected $connection = 'mysql://root:1234@localhost:3306/thinkphp';

如果我們已經(jīng)在配置文件中配置了額外的數(shù)據(jù)庫(kù)連接信息,例如:

//數(shù)據(jù)庫(kù)配置1

'DB_CONFIG1' = array(

'db_type' = 'mysql',

'db_user' = 'root',

'db_pwd' = '1234',

'db_host' = 'localhost',

'db_port' = '3306',

'db_name' = 'thinkphp'

),

//數(shù)據(jù)庫(kù)配置2

'DB_CONFIG2' = 'mysql://root:1234@localhost:3306/thinkphp';

那么,我們可以把模型類的屬性定義改為:

//調(diào)用配置文件中的數(shù)據(jù)庫(kù)配置1

protected $connection = 'DB_CONFIG1';

//調(diào)用配置文件中的數(shù)據(jù)庫(kù)配置2

protected $connection = 'DB_CONFIG2';

如果采用的是M方法實(shí)例化模型的話,也可以支持傳入不同的數(shù)據(jù)庫(kù)連接信息,例如:

$User = M('User','other_','mysql://root:1234@localhost/demo');

表示實(shí)例化User模型,連接的是demo數(shù)據(jù)庫(kù)的other_user表,采用的連接信息是第三個(gè)參數(shù)配置的。如果我們?cè)陧?xiàng)目配置文件中已經(jīng)配置了DB_CONFIG2的話,也可以采用:

$User = M('User','other_','DB_CONFIG2');

如果你的個(gè)別數(shù)據(jù)表沒(méi)有定義任何前綴的話,可以在前綴參數(shù)中傳入NULL,例如:

$User = M('User',Null,'DB_CONFIG2');

表示實(shí)例化User模型,連接的是demo數(shù)據(jù)庫(kù)的user表。

需要注意的是,ThinkPHP的數(shù)據(jù)庫(kù)連接的惰性的,所以并不是在實(shí)例化的時(shí)候就連接數(shù)據(jù)庫(kù),而是在有實(shí)際的數(shù)據(jù)操作的時(shí)候才會(huì)去連接數(shù)據(jù)庫(kù)(額外的情況是,在系統(tǒng)第一次實(shí)例化模型的時(shí)候,會(huì)自動(dòng)連接數(shù)據(jù)庫(kù)獲取相關(guān)模型類對(duì)應(yīng)的數(shù)據(jù)表的字段信息)。

怎么樣通過(guò)php在數(shù)據(jù)庫(kù)抽象層簡(jiǎn)單使用PDO

測(cè)試代碼如下:?php/**************************@Filename: pdotest.php@Content : PDO操作MySQL,Access(測(cè)試)**************************/if($_GET['db'] == 'mysql'){ $dns = 'mysql:host=localhost;dbname=test'; $dbuser = 'root'; $dbpass = 'root'; $db = new PDO($dns,$dbuser,$dbpass);}else{ $db = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=".getcwd()."http://test.mdb");}if($_POST['reg']){ $db-exec("INSERT INTO t_user (name,email) VALUES ('".$_POST['name']."','".$_POST['email']."') ;"); // header('Location:'.$_SERVER['PHP_SELF']); ? a href="pdotest.php"返回/a ?}else{ $html = 'div id="new" form action="'.$_SERVER['REQUEST_URI'].'" method="post" Name: input type="text" name="name" size="10" / Email: input type="text" name="email" size="15" / input type="submit" name="reg" value="Register" / /form/div'; $re = $db-query("SELECT uid,name,email FROM t_user ORDER BY email ;"); while($rs = $re-fetch()) { $userlisthtml .= 'trtd'.$rs['uid'].'/tdtd'.$rs['name'].'/tdtd'.$rs['email'].'/td/tr'; } $html .= 'div id="list" table border="1" captionUser List/caption thead trthID/ththName/ththEmail/th/tr /thead tbody'.$userlisthtml.' /tbody /table/div';}echo $html;?

分享標(biāo)題:php數(shù)據(jù)庫(kù)層 php數(shù)據(jù)庫(kù)設(shè)計(jì)
本文來(lái)源:http://www.chinadenli.net/article14/ddoiede.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站商城網(wǎng)站小程序開(kāi)發(fā)虛擬主機(jī)網(wǎng)站收錄品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)