検索
ホームページphp教程PHP开发Zend Framework でのファクトリー パターンのアプリケーションの概要

まず、いくつかの概念を引用しましょう:
ファクトリ パターン: 他のクラスのインスタンスの作成を担当するクラスを具体的に定義します。作成されたインスタンスは通常、同じ親クラスを持ちます。ファクトリ パターンは、通常、異なる独立変数に基づいて異なるクラスのインスタンスを返すクラス作成パターンです。
ファクトリ パターンの本質は、ファクトリ クラスが、受信したパラメータに基づいてどの製品インスタンスを作成するかを動的に決定することです。工場パターンには、工場の役割、抽象的な製品の役割、および特定の製品の役割が含まれます。
ファクトリー (クリエイター) ロール: これは、すべてのインスタンスを作成する内部ロジックの実装を担当します。ファクトリ クラスは外部から直接呼び出して、必要な製品オブジェクトを作成できます。
抽象プロダクト (Product) の役割: ファクトリ パターンによって作成されるすべてのオブジェクトの親クラスであり、すべてのインスタンスに共通のパブリック インターフェイスを記述します。
具体的なプロダクトの役割: これは、ファクトリ パターンの作成ターゲットです。すべてのオブジェクトは、この役割を果たす特定のクラスのインスタンスです。 ZF の
zend_db はファクトリー パターンの良い例です。
次に分析が始まります。 。 。 。 。 。
zfを設定する際、データベース接続操作情報をBootstrap.phpファイルに入れることができます

<?php 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
function __construct($app){ 
parent::__construct($app); 
$url=constant(&#39;APPLICATION_PATH&#39;).DIRECTORY_SEPARATOR.&#39;configs&#39;.DIRECTORY_SEPARATOR.&#39;config.ini&#39;; 
$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(&#39;SET NAMES UTF8&#39;); 
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 &#39;PDO_MYSQL&#39;: 
.... 
case &#39;PDO_MSSQL&#39;: 
.... 
case &#39;PDO_SQLITE&#39;: 
.... 
}

データベースを操作するには、データベースの種類に応じて異なるステートメントを作成する必要があります。これは非常に面倒ではありませんか?
ただし、これはすべて 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 Framework中应用介绍

次に、Zend_Db::Factory() がデータベースのさまざまなパラメーターに基づいてさまざまな選択をどのように実装するかを追跡しましょう。 。

Zend Framework でのファクトリー パターンのアプリケーションを紹介するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

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

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール