我是使用 Idiorm 作为php轻量级ORM的新手,现在我想创建一个在多个数据访问类之间共享 ORM 的数据存储库类。 以更简单的方式描述我想配置 ORM 并连接到数据库一次并使用它直到我的应用程序结束。
怎么办呢?
答案 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));