Home > Article > Backend Development > PHP object-oriented advanced design pattern: data access object pattern
What is the data access object pattern?
The Data Access Object design pattern describes how to create objects that provide transparent access to any data.
Data Access Object Pattern Application Problems and Solutions
For those who have learned both PHP and MySQL, the Data Access Object Design Pattern is a new and exciting concept. This design pattern is intended to solve two specific problems: duplication and data source abstraction.
We should create an object of the data access object design pattern. This data access object encapsulates an intelligent way to create SQL calls, reducing the complexity and duplication of instance creation and update processes, and should be written in such a way that the user of the object will not know the actual table structure and database engine used. In addition, the methods applied by this object should use logical parameters and should handle the creation of SQL statements.
The Data Access Object Pattern has the added benefit of providing a database abstraction layer. Now, the application's main processing code no longer needs to consider the database engine or table relationships. Calling the public methods of such an object will return any data type, regardless of the type required by the underlying SQL.
A good way to manage simplicity in data access object classes is to create parent-child relationships. First, create a basic parent object. This object should be responsible for database connections, abstractly executing queries, and communicating with child objects. When using the Data Access Object design pattern, it is a good idea to start by associating a subclass of a one-to-one relationship with a table in the database. These subclasses have essential information such as table name and primary key. Additionally, a subclass may contain specific public methods that perform queries from the parent class in a way that is meaningful only to the subclass. For example, a subclass named userAddress might contain a getAddreddesByZip() method. Putting this method in the parent DAO class makes no logical sense and will destroy the abstraction that the parent class hopes to achieve.
When dealing with entities that reference specific database information, the best practice is to create a data access object.
<?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: Data operation of UserDao user data table, inherits from 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();
The above is the detailed content of PHP object-oriented advanced design pattern: data access object pattern. For more information, please follow other related articles on the PHP Chinese website!