我最近的一个问题(here)询问了如何在Bootstrap文件中捕获错误(并使用ErrorController显示它们)。我使用的示例是在数据库实例化期间:如果Bootstrap中发生错误,它只会将错误转储到屏幕上而不调用ErrorController。
但是,比方说,在我的数据库实例化插件中,我有这个代码:
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
$db = Zend_DB::factory("Pdo_Mysql", $this->config);
Zend_Registry::set("db", $db);
}
即使没有连接数据库,也不会抛出任何错误。这是因为Zend_DB
无需检查数据库是否存在,以免浪费资源和时间。
我的问题是我是否应该这样做:
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) {
$db = Zend_DB::factory("Pdo_Mysql", $this->config);
$db->getConnection();
Zend_Registry::set("db", $db);
}
这样,任何连接问题都会在早期发现并显示出来。这是一个好主意吗?我的应用程序是否应该等到第一次使用时检查数据库连接是否存在?
答案 0 :(得分:3)
我会在我的错误控制器中设置Zend_Db异常类型的特定处理。
PHP没有状态,因此每个页面请求都会发生应用程序的初始化。如果我的页面请求甚至不需要DB(例如,我的维护页面,错误页面等)怎么办?
最重要的是,在bootstrap期间正确处理无连接是什么?如何确保为呈现错误页面所需的任何其他资源都已完成引导?
然而,这只是我的偏好。