В моем services.yaml
у меня есть этот код:
services:
# prepare database
DatabaseProvider:
class: Kepler\Providers\DatabaseProvider
arguments: ['%database.reader.dsn%', '%database.reader.username%', '%database.reader.password%']
ReaderPDO:
class: PDO
factory: ['@DatabaseProvider', generateDatabaseConnection]
WriterPDO:
class: PDO
factory: ['@DatabaseProvider', generateDatabaseConnection]
и DatabaseProvider: generateDatabaseConnection
public function generateDatabaseConnection() {
try {
return new PDO($this->host, $this->username, $this->password);
} catch (Exception $e) {
return new PDO($this->host, $this->username, $this->password);
$_GLOBALS['db_error'] = true;
}
}
Так что мой вопрос здесь: будут случаи, когдаPDO-соединение не работает / не работает. Итак, как мне перехватить это исключение и вернуть общую страницу 404 (это страница, на которой мне не нужно соединение с БД)?
Некоторый базовый анализ:
- Я верю в этопроисходит сбой во время загрузки Symfony
- Даже если я верну null или ничего не получу в перехватчике, код будет продолжать autowiring , который затем завершится ошибкой в контроллере, который требует подключения к БД