Heim > Backend-Entwicklung > PHP-Tutorial > PHP框架里面如何理解DAO (Data Access Object)层??

PHP框架里面如何理解DAO (Data Access Object)层??

WBOY
Freigeben: 2016-06-06 20:40:55
Original
967 Leute haben es durchsucht

PHP框架里面如何理解DAO (Data Access Object)层??

回复内容:

PHP框架里面如何理解DAO (Data Access Object)层??

这个是非DAO的代码

<code>$db = mysql_connect(...);
$query = mysql_query('SELECT * FROM user WHERE uid=123', $db);
while($line = mysql_fetch_array($query)) {
  //xxx
}
</code>
Nach dem Login kopieren

这个是DAO的代码(对,PDO其实就是典型的DAO)

<code>$db = new PDO('mysql...');
$query = $db->prepare('SELECT * FROM user WHERE uid = :uid');
$query->execute(['uid' => 123]);
$result = $query->fetchAll();
</code>
Nach dem Login kopieren

这是另一种DAO的代码,嗯,比PDO好看一点而已

<code>$db = new NotORM(new PDO('mysql...'));
$result = $db->user->select('*')->where('uid = ?', 123);
foreach($result as $row) {
  //...
}
</code>
Nach dem Login kopieren

最后ORM的代码可能是这样的

<code>class User extends ORMClassXXX {
    public $id;
    public $name;
    public $password;
}

$result = User::getById(123);
</code>
Nach dem Login kopieren

DAO和ORM可以说几乎没有任何关系,唯一的关系就是大多数ORM的实现都用了DAO,仅此而已。大概就像汽车和93号汽油的关系,很多汽车都用93号汽油,但也仅此而已,汽车和汽油的形态、功能、用途全都不一样

放到PHP的环境中,由于PHP基本已经废弃了非DAO的mysql_*的访问方式,所以PDO以及DAO基本成为了业界标准,应该没有知名的PHP的ORM下面垫的不是DAO,所以可能造成了题主的困惑。但其实ORM是可以完全不用DAO实现的。打比方说写个后面是Redis的ORM之类

  1. 对数据库链接的封装(Singleton? Pool)?
    Singleton: 可以防止一个请求,创建多个数据库链接,节省资源;
    Pool:节省创建链接的时间;
  2. 对数据存取的面向对象的封装(ORM)?
    方便数据操作,对数据记录可以已对象方式进行管理
Verwandte Etiketten:
php
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage