Heim >Backend-Entwicklung >PHP-Tutorial >PHP objektorientiertes erweitertes Entwurfsmuster: Datenzugriffsobjektmuster
Was ist das Datenzugriffsobjektmuster?
Das Entwurfsmuster für Datenzugriffsobjekte beschreibt, wie Objekte erstellt werden, die transparenten Zugriff auf beliebige Daten ermöglichen.
Probleme und Lösungen für Data Access Object Pattern-Anwendungen
Für diejenigen, die sowohl PHP als auch MySQL gelernt haben, ist das Data Access Object Design Pattern ein neues und aufregendes Konzept. Dieses Entwurfsmuster soll zwei spezifische Probleme lösen: Duplizierung und Datenquellenabstraktion.
Wir sollten ein Objekt erstellen, das dem Entwurfsmuster für Datenzugriffsobjekte folgt. Dieses Datenzugriffsobjekt kapselt eine intelligente Methode zum Erstellen von SQL-Aufrufen, reduziert die Komplexität und Duplizierung von Instanzerstellungs- und Aktualisierungsprozessen und sollte so geschrieben sein, dass der Benutzer des Objekts die tatsächliche Tabellenstruktur und die verwendete Datenbank-Engine nicht kennt . Darüber hinaus sollten die von diesem Objekt angewendeten Methoden logische Parameter verwenden und die Erstellung von SQL-Anweisungen übernehmen.
Das Data Access Object-Muster hat den zusätzlichen Vorteil, dass es eine Datenbankabstraktionsschicht bereitstellt. Jetzt muss der Hauptverarbeitungscode der Anwendung die Datenbank-Engine oder Tabellenbeziehungen nicht mehr berücksichtigen. Der Aufruf der öffentlichen Methoden eines solchen Objekts gibt jeden Datentyp zurück, unabhängig vom Typ, der von der zugrunde liegenden SQL benötigt wird.
Eine gute Möglichkeit, die Einfachheit von Datenzugriffsobjektklassen zu verwalten, besteht darin, Eltern-Kind-Beziehungen zu erstellen. Erstellen Sie zunächst ein grundlegendes übergeordnetes Objekt. Dieses Objekt sollte für Datenbankverbindungen, die abstrakte Ausführung von Abfragen und die Kommunikation mit untergeordneten Objekten verantwortlich sein. Wenn Sie das Entwurfsmuster „Data Access Object“ verwenden, empfiehlt es sich, zunächst eine Unterklasse einer Eins-zu-eins-Beziehung mit einer Tabelle in der Datenbank zu verknüpfen. Diese Unterklassen enthalten wesentliche Informationen wie Tabellennamen und Primärschlüssel. Darüber hinaus kann eine Unterklasse bestimmte öffentliche Methoden enthalten, die Abfragen der übergeordneten Klasse auf eine Weise ausführen, die nur für die Unterklasse von Bedeutung ist. Beispielsweise könnte eine Unterklasse namens userAddress eine getAddreddesByZip()-Methode enthalten. Das Einfügen dieser Methode in die übergeordnete DAO-Klasse ergibt keinen logischen Sinn und zerstört die Abstraktion, die die übergeordnete Klasse erreichen möchte.
Beim Umgang mit Entitäten, die auf bestimmte Datenbankinformationen verweisen, besteht die beste Vorgehensweise darin, ein Datenzugriffsobjekt zu erstellen.
<?php //数据访问对象模式 //将数据库访问层脱离出来 作为公用的访问接口,方便用户开放,是php中常用的一种设计模式 class BaseDao { private $db; public function __construct($config) { $this->db = mysql_connect($config['user'], $config['pass'], $config['host']); mysql_select_db($config['database'], $this->db); } public function query($sql) { return mysql_query($sql, $this->db); } }
Code: UserDao-Benutzerdatentabellendatenoperation, erbt BaseDao
<?php include("UserDao.php"); class UserDao extends BaseDao { public function addUser() { $sql = "INSERT INTO user (username) VALUES ('initphp')"; return $this->query($sql); } } $UserDao = new UserDao; $UserDao->addUser();
Das obige ist der detaillierte Inhalt vonPHP objektorientiertes erweitertes Entwurfsmuster: Datenzugriffsobjektmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!