-1

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

怎么能做到这一点?

4

2 回答 2

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));
于 2017-01-04T19:09:34.210 回答
0

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

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

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

听起来您正在为几乎可以肯定不需要的项目添加大量复杂性。

于 2017-01-04T18:56:05.990 回答