я думаю, что catch «на месте» должен употребляться только для переброса исключений, как в примере с FileNotFound => AdressNotFound. Во всех прочих случаях исключения должны обрабатываться «общей пачкой» на уровне приложения.
<? namespace App\Support\Exceptions\Handlers;
use App\Supprot\Exceptions\Contracts\ExceptionHandlerContract;
use App\Supprot\Exceptions\Handlers\DefaultHandler;
class ExceptionHandler implments ExceptionHandlerContract {
protected $defaultHandler = DefaultHandler::class;
protected $customHandlers = [];
public function handle(Exception $e)
{
$exceptionType = get_class ($e);
if(array_key_exists($exceptionType, $this->customHandlers))
{
$handler = new $this->customHandlers[$exceptionType];
return $this->runHandler($handler, $e);
}
return $this->handleDefault($e);
}
protected function handleDefault(Exception $e)
{
$handler = new $this->defaultHandler;
return $this->runHandler($handler, $e);
}
public function addCustomHandler($exceptionClassName , $handlerClassName)
{
$this->customHandlers[$exceptionClassName] = $handlerClassName;
}
public function runHandler(ExceptionHandlerContract $handler, Exception $e)
{
return $handler->handle($e);
}
}
Прекрасный слог. Последовательно, обстоятельно. Мы бы с Вами написали много прекрасных статей. Жаль, что Вы из «другого лагеря» =)
Послесловие, правда, несколько экспрессивное…
Вы не совсем поняли. Судя по контексту, автор имел ввиду ситуацию, когда каждый конкретный адрес-сущность хранится в отдельном файле
Например, если адреса у нас хранятся в файлах
в файлах, но не в файле.
А вот в случае хранения в файле и отсутствия этого самого файла (таблицы или даже базы) — ошибка более глобальная, чем отсутствие конкретного адреса — вы правы.
Автор — очень занимательный персонаж. Он постоянно висит в чате русского сообщества Laravel и неустанно повторяет транслитом:
routing v vashem laravel govno
arhitectura vashego laravel govno
и так далее… ну взрослый же человек…
Да хоть десять раз говно. Выйди ты из чата и не мучайся. То ли зависть к большому коммьюнити душит, то ли еще какие причины — мне не ведомо. Но подобное поведение для человека, который пытается продвинуть свой продукт, и по сути является лицом своего продукта — как минимум, некрасиво.
Я вообще пишу на php (да простят меня боги)… и на php мы пользуемся «умными» коллекциями уже очень давно. Да, они не в ядре — это отдельные либы, и все же… Я все время слышу что php — недоязык и вообще очень плохой. А теперь я немного удивлен, что для многих в «крутой яве» такой подход явился откровением. Если я что-то не так сказал или не так понял, то поправьте меня.
Вот сразу видно, что Вы не понимаете предмет разговора. Причем здесь тот факт, что кто-то говнокодит? Человек пишет уроки по оптимизации, тестированию, райтвэй, и философии рефакторинга. Да, это правда — кроме этого он еще пишет практические примеры для лары, но это не суть. А если кто-то говнокодит после просмотра «уроков» (кавычки здесь не случайно) от knowcity, а сайт laracasts ( да что там! даже офф доки по ларе) в глаза не видел. то как это связано с Jeffrey Way?
Я тоже за Джеффри. Он внес невероятный вклад в популяризацию PHP. Этот человек действительно помогает людям перестать (прошу прощения) «говнокодить». И это касается не только частного случая Laravel, но и PHP в целом.
Видимо, мы по-разному понимаем слово «нативный». Для меня нативный (буквально — родной), это то, что идет из коробки с основным ПО и/или рекомендовано к употреблению автором этого ПО.
Где-то в дебрях инициализации приложения:
Ну и сам запуск приложения.
Простите, если где-то ошибся накатал прямо сейчас в браузере…
Послесловие, правда, несколько экспрессивное…
в файлах, но не в файле.
А вот в случае хранения в файле и отсутствия этого самого файла (таблицы или даже базы) — ошибка более глобальная, чем отсутствие конкретного адреса — вы правы.
и так далее… ну взрослый же человек…
Да хоть десять раз говно. Выйди ты из чата и не мучайся. То ли зависть к большому коммьюнити душит, то ли еще какие причины — мне не ведомо. Но подобное поведение для человека, который пытается продвинуть свой продукт, и по сути является лицом своего продукта — как минимум, некрасиво.
Спасибо, Вам )