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

这个是非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();

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

$db = new NotORM(new PDO('mysql...'));

$result = $db->user->select('*')->where('uid = ?', 123);

foreach($result as $row) {

//...

}

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

class User extends ORMClassXXX {

public $id;

public $name;

public $password;

}

$result = User::getById(123);

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值