Я пытаюсь написать простой скрипт установки с использованием 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()
, который выдает исключение вместо возврата пустого массива.
Поэтому мой вопрос: как мне проверить, существует ли база данных / таблица без исключения или ошибки?