Переходя с Joomla 2.5 на 3.0 с моим расширением, я борюсь с тем, как выполнить обработку ошибок БД (поскольку GetErrorNum устарел, см. также Joomla! JDatabase::getErrorNum() устарел, вместо этого используйте обработку исключений).
Способ, который, по-видимому, соответствует указанному выше вопросу, заключается в добавлении следующего кода для каждого кода db->query()
:
if (!$db->query()) {
throw new Exception($db->getErrorMsg());
}
На мой взгляд, это делает обработку ошибок БД более неудобной, чем раньше. До сих пор я просто вызывал функцию checkDBError()
после вызова БД, которая запрашивала ErrorNum и соответствующим образом обрабатывала любую возможную ошибку.
Это не зависело от того, как на самом деле был запущен запрос к БД — есть разные способы сделать это и разные результаты при ошибке: $db->loadResult()
возвращает null
при ошибке, $db->query()
возвращает false
. Так что теперь будут разные проверки для разных типов доступа к БД.
Нет ли общего способа справиться с этим, например. способ сообщить Joomla, чтобы он выдал исключение при проблемах с БД? Или мне нужно написать свою собственную оболочку для DatabaseDriver, чтобы добиться этого? Или я упускаю что-то очевидное?
Или я должен просто игнорировать предупреждение об устаревании и продолжать использовать getErrorNum()? Я хотел бы сделать свое расширение ориентированным на будущее, но я также не хочу слишком загромождать его неудобной логикой обработки ошибок.