まず、いくつかの概念を引用しましょう:
ファクトリ パターン: 他のクラスのインスタンスの作成を担当するクラスを具体的に定義します。作成されたインスタンスは通常、同じ親クラスを持ちます。ファクトリ パターンは、通常、異なる独立変数に基づいて異なるクラスのインスタンスを返すクラス作成パターンです。
ファクトリ パターンの本質は、ファクトリ クラスが、受信したパラメータに基づいてどの製品インスタンスを作成するかを動的に決定することです。工場パターンには、工場の役割、抽象的な製品の役割、および特定の製品の役割が含まれます。
ファクトリー (クリエイター) ロール: これは、すべてのインスタンスを作成する内部ロジックの実装を担当します。ファクトリ クラスは外部から直接呼び出して、必要な製品オブジェクトを作成できます。
抽象プロダクト (Product) の役割: ファクトリ パターンによって作成されるすべてのオブジェクトの親クラスであり、すべてのインスタンスに共通のパブリック インターフェイスを記述します。
具体的なプロダクトの役割: これは、ファクトリ パターンの作成ターゲットです。すべてのオブジェクトは、この役割を果たす特定のクラスのインスタンスです。 ZF の
zend_db はファクトリー パターンの良い例です。
次に分析が始まります。 。 。 。 。 。
zfを設定する際、データベース接続操作情報をBootstrap.phpファイルに入れることができます
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { function __construct($app){ parent::__construct($app); $url=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_Db_Table::setDefaultAdapter($db); } } ?>
エントリファイルで、Zend_Applicationオブジェクトを介してbootstrap()を呼び出すと、Bootstrapクラスのコンストラクタが呼び出されます。
コンストラクターでは、Zend_Db::factory() を通じて、データベースを操作するためのオブジェクト インスタンスを取得できます。
Zend_Config_Ini インスタンスを通じて config.ini 内の関連情報を読み取り、それをパラメーターとしてファクトリ関数 Zend_Db::factory() に渡します
Config.ini 情報
[一般]
db.adapter =PDO_MYSQL
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){ case 'PDO_MYSQL': .... case 'PDO_MSSQL': .... case 'PDO_SQLITE': .... }
データベースを操作するには、データベースの種類に応じて異なるステートメントを作成する必要があります。これは非常に面倒ではありませんか?
ただし、これはすべて zf によってすでに行われています。それを使用してみましょう。とても便利です
Zf でファクトリーモードを実装するにはどうすればよいですか?
まず、抽象基本クラスが必要です: Zend_Db_Adapter_Abstract。このクラスは、ファクトリ パターンによって作成されるすべてのオブジェクトの親クラスであり、すべてのインスタンスに共通のインターフェイスを提供します。
このクラスは、select、update、insert、delete、query、fetchRow、fetchAssoc など、データベースの操作によく知られているいくつかの実装メソッドを提供するだけでなく、次のようなサブクラスでの実装用のインターフェイスも提供します。 :limit、getServerVersion、closeConnection、describeTable など。
abstract class Zend_Db_Adapter_Abstract { //.. } abstract class 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() がデータベースのさまざまなパラメーターに基づいてさまざまな選択をどのように実装するかを追跡しましょう。 。
Zend Framework でのファクトリー パターンのアプリケーションを紹介するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Dreamweaver Mac版
ビジュアル Web 開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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