【发布时间】:2013-04-21 05:31:22
【问题描述】:
在不同 .pm 文件中的“对象”之间共享 $dbh 变量时,有人能给我一些指导吗?
例如,我的主模块说 Foo.pm 有一个新的构造函数等,我可以给它一个 dbh 或创建一个 dbh,然后通过将它作为参数传递给 Bar.pm 的新构造函数来共享它,并且然后在 Bar->new 中重新分配,但这似乎我正在做很多工作来管理这个变量。
这是一种简单而优雅的方法吗?我研究了 Exporter 和其他一些示例,但似乎没有一个是直截了当的。
谢谢!
【问题讨论】:
-
重新设计您的模块。您应该只有 一个 写入数据库。
-
考虑 DBIx::Connector。您的主应用程序可以实例化一个连接器对象,并可以将其提供给应用程序使用的类。连接器对象可以共享一个连接,或者在现有连接失效时启动一个新连接。这是我在完整的 Mojolicious 应用程序中处理数据库交互的方法之一。
-
尝试单例模式。您可以自己编写或尝试使用 CPAN 中的 Singleton 基类。
-
@Borodin,你是对的,那个模块叫做
DBI。如果那不是您所指的那个,那么您的陈述太强烈以至于不真实。在某些情况下,在 DB 和您的业务逻辑之间设置一个层是一种很好的做法(然后您最好确实有 一个 这样的层),但并非在所有情况下,甚至在大多数情况下,我会说。 有不止一种方法可以做到这一点,你知道的。
标签: perl perl-module dbi