如何为idiorm创建数据存储库?

时间:2016-12-31 09:22:23

标签: php idiorm

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

怎么办呢?

2 个答案:

答案 0 :(得分:0)

通过选择使用ORM,您可以放弃对连接持续时间以及是否重复使用的大量控制。这就是抽象层的本质:简化界面以换取特定控制。

此外,如果您正在构建repository class,我不确定ORM是一个不错的选择。 (从上一个链接:“[T]他[知识库]模式非常受欢迎......,它也经常被误解和误用。”)在某些方面,ORM已经像repository class那样行事。

最后,听起来你可能正在重新创造轮子。除非您有特定需求(即,要纠正您正在积极体验的问题),否则构建存储库类除了使用ORM之外可能不值得。除非你有活动的错误需要你密切管理你的数据库连接,你几乎肯定不希望明确管理它们的麻烦。在需要时创建连接,在不需要时删除它们。更好的是,让ORM为您处理它。

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

答案 1 :(得分:0)

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

对于PDO,您可以这样做:

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

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

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

所以你可以用idiorm做到这一点:

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