Heim php教程 PHP开发 Einführung in die Anwendung von Factory-Mustern im Zend Framework

Einführung in die Anwendung von Factory-Mustern im Zend Framework

Jan 05, 2017 am 10:00 AM

Lassen Sie uns zunächst einige Konzepte zitieren:
Factory-Muster: Definieren Sie speziell eine Klasse, die für die Erstellung von Instanzen anderer Klassen verantwortlich ist. Die erstellten Instanzen haben normalerweise dieselbe übergeordnete Klasse. Das Factory-Muster ist ein Klassenerstellungsmuster, das normalerweise Instanzen verschiedener Klassen basierend auf verschiedenen unabhängigen Variablen zurückgibt.
Der Kern des Factory-Musters besteht darin, dass eine Factory-Klasse anhand der eingehenden Parameter dynamisch bestimmt, welche Produktinstanz erstellt werden soll. Das Fabrikmuster umfasst Fabrikrollen, abstrakte Produktrollen und spezifische Produktrollen.
Factory-Rolle (Ersteller): Sie ist der Kern des Factory-Musters. Sie ist für die Implementierung der internen Logik der Erstellung aller Instanzen verantwortlich. Die Factory-Klasse kann direkt von der Außenwelt aufgerufen werden, um die erforderlichen Produktobjekte zu erstellen.
Abstrakte Produktrolle (Produktrolle): Es ist die übergeordnete Klasse aller durch das Factory-Muster erstellten Objekte. Sie ist für die Beschreibung der öffentlichen Schnittstelle verantwortlich, die allen Instanzen gemeinsam ist.
Konkrete Produktrolle: Es ist das Erstellungsziel des Factory-Musters. Alle Objekte sind Instanzen einer bestimmten Klasse, die diese Rolle spielt.
zend_db in ZF ist ein gutes Beispiel für ein Fabrikmuster.
Als nächstes beginnt die Analyse. . . . . .
Bei der Konfiguration von zf können wir die Informationen zum Datenbankverbindungsvorgang in die Datei Bootstrap.php einfügen

<?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); 
} 
} 
?>
Nach dem Login kopieren

Rufen Sie in der Eintragsdatei bootstrap() über ein Zend_Application-Objekt auf, ähnlich wie Bootstrap Der Konstruktor wird aufgerufen werden.
Im Konstruktor können wir über Zend_Db::factory() eine Objektinstanz zum Betreiben der Datenbank erhalten.
Lesen Sie die relevanten Informationen in config.ini über eine Zend_Config_Ini-Instanz und übergeben Sie sie als Parameter an die Factory-Funktion Zend_Db::factory()
Configuration.ini-Informationen
[general]
db.adapter =PDO_MYSQL
db.params.host =localhost
db.params.username =root
db.params.password =
db.params.dbname = Datenbankname
Zend_Db::factory( )
Parameter eins: Gibt den zu bedienenden Datenbanktyp an, z. B. PDO_MYSQL
Parameter zwei: Gibt die Informationen zum Herstellen einer Verbindung zur Datenbank an, einschließlich Servername, Benutzername, Kennwort und der zu verbindenden Datenbank

Werfen Sie zuerst zwei Fragen aus:
①Wenn die Datenbank, die wir betreiben möchten, MSSQL ist, was sollen wir tun?
②Hier verwenden wir Zend_Db::factory() Sollten wir das tun?

Antwort:
① Wir müssen nur PDO_MYSQL in PDO_MSSQL in der config.ini-Datei ändern
② Erstellen Sie eine Objektinstanz für den Betrieb der Datenbank auf herkömmliche Weise:
$db=new Zend_Db_Adapter_Pdo_Mysql($ config)
Unter anderem: $config-Informationen werden aus config.ini gelesen
Das Problem ist: Wenn wir die traditionelle Methode zum Erstellen einer Objektinstanz verwenden, müssen wir einen Prozess bestimmen die Art der zu betreibenden Datenbank?
Zum Beispiel:

switch ($dbType){ 
case &#39;PDO_MYSQL&#39;: 
.... 
case &#39;PDO_MSSQL&#39;: 
.... 
case &#39;PDO_SQLITE&#39;: 
.... 
}
Nach dem Login kopieren

Wir müssen unterschiedliche Anweisungen schreiben, um die Datenbank entsprechend verschiedenen Datenbanktypen zu betreiben.
Ist das jedoch nicht sehr mühsam? Der Werksmodus wurde für uns erstellt und ist sehr bequem zu verwenden.

Wie implementiert man den Werksmodus in Zf?
Zunächst muss es eine abstrakte Basisklasse geben: Zend_Db_Adapter_Abstract. Diese Klasse ist die übergeordnete Klasse aller vom Factory-Muster erstellten Objekte. Sie ist für die Bereitstellung der allen Instanzen gemeinsamen Schnittstelle verantwortlich.
Diese Klasse bietet nicht nur einige Implementierungsmethoden, mit denen wir beim Betrieb von Datenbanken bestens vertraut sind, wie zum Beispiel: Auswählen, Aktualisieren, Einfügen, Löschen, Abfragen, FetchRow, FetchAssoc, sondern auch einige Schnittstellen für die Implementierung in Unterklassen. wie zum Beispiel: limit, getServerVersion, closeConnection, beschreibenTable usw.

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数据库的操作 
}
Nach dem Login kopieren

Die obige Beziehung kann einfach mit einem Bild ausgedrückt werden

工厂模式在Zend Framework中应用介绍

Als nächstes wollen wir Verfolgen Sie, wie Zend_Db::Factory() verschiedene Datenbanken basierend auf verschiedenen Parametern auswählt.

Weitere Artikel über die Anwendung von Factory-Mustern im Zend Framework finden Sie auf der chinesischen PHP-Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)