如何为idorm创建数据存储库



我是使用Idiorm作为php轻量级ORM的新手,现在我想创建一个数据存储库类,在多个数据访问类之间共享ORM。用一种更简单的方式来描述,我想配置ORM并一次连接到数据库,并使用它直到我的应用程序结束。

怎么能做到这一点?

通过选择使用ORM,您放弃了对连接持续时间和是否重用的大量控制。这就是抽象层的本质:一个用于交换特定控制的简化接口。

此外,如果您正在构建一个存储库类,我不确定ORM是否是一个好的选择。(来自上一个链接:"[T][repository]模式非常流行……它也经常被误解和误用。")在某些方面,ORM已经起到了存储库类的作用。

最后,听起来你可能在重新制造轮子。除非你有特定的需求(即,纠正你正在经历的问题),否则除了使用ORM之外,构建一个存储库类可能是不值得的。除非你有需要密切管理数据库连接的活动bug,否则你几乎肯定不想显式管理它们。在需要时创建连接,在不需要时放弃连接。更好的是,让ORM为您处理它。

听起来你给一个几乎肯定不需要的项目增加了很多复杂性。

连接数是所使用数据库的低级属性。

在PDO的情况下,你可以这样做:

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>

在[Idiorm manual][1]关于PDO选项的部分中,它有一个将选项传递给PDO:的例子

<?php
ORM::configure('driver_options', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

因此,你可以用白痴来做到这一点是理所当然的

<?php
ORM::configure('driver_options', 
array(PDO::ATTR_PERSISTENT => true));

最新更新