ホームページ  >  記事  >  バックエンド開発  >  PHP デザイン パターン ファクトリ パターン_PHP チュートリアル

PHP デザイン パターン ファクトリ パターン_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:48:50928ブラウズ

私はmysqlデータベースをよく使うので、プログラムはmysqlのデータベース操作クラスを記述するだけです。専門家全員が他のすべてのカテゴリーを書き留めてくれるように願っています。コピーを私に送っていただくのが最善です。
db_mysql.php は db.php インターフェースを継承し、データベース操作のさまざまなメソッドを実装します。データベース プラットフォームが変更されないことが確実な場合は、ファクトリ クラスは必要ありません。これを使用してください。

コードをコピーします コードは次のとおりです:

/**
* @author 黄建文
* @version V1.0
* @email hjwtp2005@qq.com
* @data 2008-12-16
* ================== ================================================
* @example
* 'db_mysql.php' をインクルードします。
* $db=new db_mysql('localhost','root','admin','emtit');
* $sqlstr="SELECT * FROM メンバー WHERE memberid=1";
* var_dump($db->get_one($sqlstr));
* =============================================== ===================
*/
include 'db.php';
class db_mysqlimplements db {

private $connid ;

パブリック関数 db_​​mysql($dbhost,$username,$passowrd,$dbname='',$dbcharset='utf8'){
$this->connid=mysql_connect($dbhost,$username,$passowrd);
if (! $this->connid){
$this->halt('MySQL サーバーに接続できません')
}
if (emptyempty($dbcharset)){
$dbcharset='utf8';
}
/ / mysqlのバージョンが4.1以上の場合、データベースの文字セット設定を有効にする
if($this->version() > '4.1' && $dbcharset)
{
mysql_query("SET NAMES '".$ dbcharset."' " , $this->connid);
}
// mysql バージョンが 5.0 以降の場合、SQL モードを設定します
if($this->version() > '5.0')
{
mysql_query("SET sql_mode=''" , $this->connid)
}
if (!emptyempty($dbname)){
$this->select_db($dbname);
/**
* データベースを選択
*
* @paramknown_type $dbname
*/
パブリック関数 select_db($dbname){
mysql_select_db($dbname,$this->connid)

}
/**
* SQL ステートメントを実行します
*
* @paramknown_type $sqlstr
*/
パブリック関数クエリ($ sqlstr){
$query =mysql_query($sqlstr,$this->connid);
if (!$query){
$this->halt('MySQL クエリ エラー', $sqlstr); $query;
}
/**
* クエリレコードを取得します
*
* @return 不明
*/
パブリック関数 get_one($sqlstr){
$query=$this->query($sqlstr);
$rs = $this->fetch_array($)クエリ);
$this ->free_result($query);
return $rs ;
/**
* 結果セットから連想配列として行を取得します
* @param resource データベースクエリ結果リソース
* @param string 戻り値の型を定義します
* @return array
*/
public function fetch_array($query, $result_type = MYSQL_ASSOC)
{
return mysql_fetch_array( $query, $result_type)
}

/**
* 前回の MySQL 操作の影響を受けたレコード行数を取得します
* @return int
*/
public function_rows()
{
return mysql_affected_rows($this->connid)
}
/**
* 結果セット内の行数を取得します
* @return int
*/
パブリック関数 num_rows($クエリ)
{
return mysql_num_rows($query);

/**
* 結果セット内のフィールドの数を返します
* @return int
*/
パブリック関数 num_fields($query)
{
return mysql_num_fields($query);
/**
* 結果メモリを解放します
*
* @paramunknown_type $query
* @return bool
*/
パブリック関数 free_result($query)
{
return mysql_free_result($query);
}
/**
* 前の INSERT 操作によって生成された ID を取得します
* @return int
*/
public function insert_id()
{
return mysql_insert_id( $this->connid);

/**
* MySQL サーバー情報を取得します
*
* @return string
*/
パブリック関数 version()
{
return mysql_get_server_info($this->connid);
/**
* MYSQL 接続を閉じる
*
* @return bool
* /
パブリック関数 close ()
{
return mysql_close($this->connid);
}
/**
* エラー文字列を返します
*
* @return string
*/ private 関数 error(){
return @mysql_error($this->connid) ;
}
/ **
* エラー番号を返します
*
* @return int
*/
プライベート関数 errno(){
return intval(@mysql_errno($this->connid))
}
/**
* エラーメッセージを出力します
*
* @param string $message
* @param string $sql
*/
プライベート関数 停止($message = ' ', $sql = ''){
exit("MySQL クエリ:$sql
MySQL エラー:".$this->error()."
MySQL エラー番号:" .$this-> ;errno()."
Message:$message");
}
}
?>



db.php データベース操作のメソッドを定義します。


コードをコピー

コードは次のとおりです:

interface db {

function select_db($dbname);//データベースを選択
function query($sqlstr);//SQL文を実行
function get_one($sqlstr);//SQL文を実行レコードは 1 つだけ取得されます
function fetch_array($query); //結果セットから 1 行を連想配列として取得します
functionaffected_rows();//操作の影響を受けるレコードの行数を返します
function num_rows($query) );//結果を取得
function num_fields($query);//結果setのフィールド数を返す
function free_result($query);//リソースを解放
function insert_id(); //最後に挿入されたレコードの ID を返す
function version();//Database version
function close();//データベース接続を閉じる
}

db_factory.php データベース ファクトリ クラスを作成します。データベース プラットフォームをより便利にするには、このクラスを使用する必要があります

コードをコピーします コードは次のとおりです:
/**
* @author 黄建文
* @version v1.0
* @email hjwtp2005@qq.com
* @example
* $db=db_factcory::create('MYSQL','localhost','root','admin' 、'emtit');
* $sqlstr="SELECT * FROM メンバー WHERE memberid=1";
* $db->get_one($sqlstr);
*/
include 'db_mysql.php';
class db_factory {
function db_factory() {
}
static function create($type ,$dbhost,$username,$password,$dbname='',$dbcharset=''){
switch ($type){
case 'MYSQL':
return new db_mysql($dbhost,$username,$password, $dbname,$dbcharset);
case 'SQLSERVER':
return new db_sqlserver($dbhost,$username,$password,$dbname,$ dbcharset);
case 'ACCESS':
新しい db_access($dbhost,$username ,$password,$dbname,$dbcharset);
case 'ORACLE':
新しい db_oracle($dbhost,$username,$password, $dbname,$dbcharset);
}
return false;
function __destruct() {
}
}
?>


http://www.bkjia.com/PHPjc/319675.html

tru​​ehttp://www.bkjia.com/PHPjc/319675.html技術記事私はmysqlデータベースをよく使うので、プログラムはmysqlのデータベース操作クラスを記述するだけです。専門家全員が他のすべてのカテゴリーを書き留めてくれるように願っています。コピーを私に送っていただくのが最善です。 db_mysql.php は db.php インターフェースを継承し、...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。