【发布时间】:2016-06-17 11:55:37
【问题描述】:
我正在创建一个使用不同服务器上的 3 个不同数据库的应用程序。获取数据发生在我的数据映射器中,每个映射器都扩展了一个抽象的 DataMapper 父类:
abstract class DataMapper {
protected $db;
protected $db2;
protected $db3;
function __construct() {
$this->db = new Database('db1');
$this->db2 = new Database('db2');
$this->db3 = new Database('db3');
}
}
但是,对于只需要这 3 个连接之一的页面来说,这有点过分了。为应用程序的每个部分返回正确的数据库连接的最佳方法是什么?我听说过应用程序注册表,但我不知道如何设置类似的东西。
【问题讨论】:
-
我从here 得到它,应用程序服务器和数据库服务器通常应该是不同的,但是为什么你要为同一个应用程序中使用的不同数据库使用不同的服务器(如果我错了)
-
其中一个数据库是 PowerDNS MySQL 数据库,它与我的 Web 服务器位于不同的服务器上。
-
是
new Database('...')你如何建立与所有 3 个的连接?还是那只是伪的? -
@Jeremy 你到底是什么意思?选择数据库时,我与
new Database('database_name')建立连接。我需要找到一种方法,这样我就不必一直输入new Database()。我可以为每个数据库编写 3 个抽象 DataMapper 并扩展我的子数据映射器。这会是一种“好的”方式吗? -
我不确定。我使用自动装配,所以我想我会做的是让控制器请求他们需要的连接,然后让注入器通过反映控制器参数来完成其余的工作。如果您认为它会回答您的问题,我可以详细说明
标签: php design-patterns datamapper