數據對象PDO (PHP Ddata Object) 擴展爲PHP訪問數據庫定義了一個輕量級的一致接口。提供了一個數據訪問抽象層,這意味着,不管使用哪種數據庫,都可以用相同的函數(方法)來查詢和獲取數據。強調的是數據庫連接。
數據存取對象DAO(Data Access Object)描述瞭如何創建透明訪問數據源的對象,目的就是爲了解決重複與數據源抽象化。應用程序的主要處理代碼不再需要考慮數據庫引擎或表關係。DAO 是一個層,數據訪問層。調用者可以使用統一的API操作不同類型的數據庫。
對象關係映射ORM(Object Relational Mapping)基本上是一種數據映射,是將數據庫實體映射到對象的概念,可以理解成一個對象對應的就是數據庫的一張表。
這個是非DAO的代碼
$db = mysql_connect(...);
$query = mysql_query('SELECT * FROM user WHERE uid=123', $db);
while($line = mysql_fetch_array($query)) {
//xxx
}
這個是DAO的代碼(對,PDO其實就是典型的DAO)
$db = new PDO('mysql...');
$query = $db->prepare('SELECT * FROM user WHERE uid = :uid');
$query->execute(['uid' => 123]);
$result = $query->fetchAll();
ORM
class User extends ORMClassXXX {
public $id;
public $name;
public $password;
}
$result = User::getById(123);
參考:
https://segmentfault.com/q/1010000002385211
https://m.xp.cn/c.php/79724.html