Zend Framework でのファクトリー パターンのアプリケーションの概要
まず、いくつかの概念を引用します。
ファクトリ パターン: 他のクラスのインスタンスの作成を担当するクラスを具体的に定義します。作成されたインスタンスは通常、同じ親クラスを持ちます。ファクトリ パターンは、通常、異なる独立変数に基づいて異なるクラスのインスタンスを返すクラス作成パターンです。
ファクトリ パターンの本質は、ファクトリ クラスが、受信パラメータに基づいてどの製品インスタンスを作成するかを動的に決定することです。工場パターンには、工場の役割、抽象的な製品の役割、および特定の製品の役割が含まれます。
ファクトリー (クリエイター) ロール: これは、すべてのインスタンスを作成する内部ロジックの実装を担当します。ファクトリ クラスは外部から直接呼び出して、必要な製品オブジェクトを作成できます。
抽象プロダクト (Product) の役割: ファクトリ パターンによって作成されるすべてのオブジェクトの親クラスであり、すべてのインスタンスに共通のパブリック インターフェイスを記述します。
具体的なプロダクトの役割: ファクトリ パターンの作成対象です。すべてのオブジェクトは、この役割を果たす特定のクラスのインスタンスです。 ZF の
zend_db はファクトリ パターンの良い例です。
次に分析が始まります。 。 。 。 。 。
zf を構成するときに、データベース接続操作情報を Bootstrap.php ファイルに入れることができます
コードをコピーします コードは次のとおりです:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
function __construct($app){
parent::__construct($app); constant( 'APPLICATION_PATH').DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'config.ini';
$dbconfig=new Zend_Config_Ini($url,null,true);
$db=Zend_Db::factory($) dbconfig->general->db->adapter,$dbconfig->general->db->params->toArray());
// var_dump($db); $db ->query('SET NAMES UTF8');
}
}
?>エントリ ファイル で、Zend_Application オブジェクトを通じて bootstrap() が呼び出されるとき、Bootstrap クラスのコンストラクターが呼び出されます。
コンストラクターでは、Zend_Db::factory() を通じて、データベースを操作するためのオブジェクト インスタンスを取得できます。
Zend_Config_Ini インスタンスを通じて config.ini 内の関連情報を読み取り、それをパラメータとしてファクトリ関数 Zend_Db::factory() に渡します。
Configuration.ini 情報
[general]
db.params.host =localhost
db.params.username =root
db.params.password =
db.params.dbname = データベース名
Zend_Db::factory( )
パラメータ 1: PDO_MYSQL など、操作するデータベースの種類を示します。
パラメータ 2: データベースに接続するための情報 (サーバー名、ユーザー名、パスワード、接続するデータベースなど) を示します
最初に 2 つの質問を投げます:
①操作したいデータベースが MSSQL の場合、どうすればよいですか
②ここでは Zend_Db::factory() を使用します。従来の方法を使用する場合は、どうすればよいですか?私たちはそれを行います
答え:
① config.ini ファイルで PDO_MYSQL を PDO_MSSQL に変更するだけです
② 従来の方法でデータベースを操作するためのオブジェクト インスタンスを作成します:
$ db=new Zend_Db_Adapter_Pdo_Mysql($ config)
その中で: $config 情報は config.ini から読み取られます
ここで問題が発生します: 従来の方法を使用してオブジェクト インスタンスを作成する場合、決定するプロセスが必要です現在操作したいデータベースの種類。
例:
コードをコピー
コードは次のとおりです:
switch ($dbType){ ケース 'PDO_MYSQL' : .... ケース 'PDO_MSSQL':
....ケース 'PDO_SQLITE':
....
}
データベースの種類に応じてデータベースを操作するための異なるステートメントを記述する必要がありますが、これは非常に面倒です
しかし、zf はファクトリ モードを通じてこれらすべてをすでに行っており、非常に便利です
Zf でファクトリー モードを実装するにはどうすればよいですか?
まず、抽象基本クラスが必要です: Zend_Db_Adapter_Abstract。このクラスは、ファクトリ パターンによって作成されるすべてのオブジェクトの親クラスであり、すべてのインスタンスに共通のインターフェイスを提供します。
コードをコピー
コードは次のとおりです:
抽象クラス Zend_Db_Adapter_Abstract
{
//..
}
抽象クラス Zend_Db_Adapter_Pdo_Abstract extends Zend_Db_Adapter_Abstract
{
//..
} > class Zend_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Abstract
{
//...Mysql データベースの操作を実装します
}
class Zend_Db_Adapter_Pdo_Mssql extends Zend_Db_Adapter_Pdo_Abstract
{
//....Mssql データベースの操作を実装する操作
}
class Zend_Db_Adapter_Pdo_Sqlite extends Zend_Db_Adapter_Pdo_Abstract
{
//.... Sqlite データベースの操作を実装
}
次に、Zend_Db::Factory() がさまざまなパラメーターに基づいてさまざまなデータベースをどのように選択するかを追跡しましょう。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
