我正在尝试使用Zend Framework编写一个简单的安装脚本。它应该运行几个测试:
- 测试在application.ini中指定的数据库是否存在(或是否可以访问)。
- 如果存在,则测试数据库中是否存在名为
user
的表。 - 如果存在,则检查是否有站点管理员用户。
如果任何步骤失败,控制器将负责将用户重定向到安装过程的适当步骤。
我创建了一个模型,其中包含以下代码:
public function verify () {
$db = $this->getDefaultAdapter(); //throws exception
if ($db == null) return self::NO_BATABASE;
$result = $db->describeTable('user'); //throws exception
if (empty($result)) return self::NO_USER;
$result = $db->fetchRow('SELECT * FROM user WHERE id = 1');
if ($result == null) return self::USER_EMPTY;
else return self::OK;
}
然而,我高估了我所使用的功能。getDefaultAdapter()
可能返回null
,但如果没有要连接的数据库,则会抛出异常。同样,describeTable()
也会抛出异常而不是返回空数组。
因此,我的问题是:如何检查数据库/表是否存在,而不会出现异常或错误?