Комментарии
Скорее статья не для начинающих, а для тех кто любит «поколбасить» своего кода. Товарищи начинающие! Не тратьте время! Берите готовые библиотеки и лучше пишите что-нибудь полезное!
-4
Чтобы узнать как такое вообще писать — статья годная.
+5
Конечно, использование готовых библиотек более правильное решение, но новичкам всё же необходимо «колбасить». Ведь единственный способ научиться программировать — сидеть и программировать.
+5
Да-да, берите готовое решение — не нужно понимать как это работает.
+5
Статья рассчитана на новичков, tutorial. Где же тесты?
Можно еще в composer.json добавить требования к php.
Можно еще в composer.json добавить требования к php.
+2
Программирование ради программирования
IMHO
IMHO
-1
Годная статья для начинающих! Внесу пару предложений по коду:
- $isEnable => $isEnabled
- По моему мнению свойства класса Route должны быть приватными
- Во многих фреймворках есть устоявшееся название Chain и я бы его использовал Logger => ChainLogger
- Ну и конечно же скрыть имлементацию списка рутов, зачем клиенту знать что там SplObjectStorage? наружу должен быть доступен метод addLogger
+2
SplObjectStorage, вероятно, чтобы можно было удобно detatch'ить роуты. Но совершенно очевидно, что коллекция должна быть приватная.
Напрашивается ответная статья с исправлениями всех ошибок :)
Напрашивается ответная статья с исправлениями всех ошибок :)
0
Методов addLogger, removeLogger и т.п. в Logger нету намеренно, т.к. логер должен логировать. В зону его ответственности не должна входить работа с коллекцией роутов.
Если честно, то Logger и о SplObjectStorage ничего не должен знать, в конструкторе ему тупо должен передаваться Iterator.
Если честно, то Logger и о SplObjectStorage ничего не должен знать, в конструкторе ему тупо должен передаваться Iterator.
-1
Посмотрите на Monolog, там Route — это Handler, и доступны методы pushHandler, popHandler и setHandlers. Так же там разделена ответственность класса Route на Handler и Processor. Handler — знает куда писать, а Processor — форматирует контекст
+1
вы так заботитесь о разделении ответственности (причем странно, так как если там есть список значит надо) что при этом нарушили инкапсуляцию.
0
- Тут согласен, моя очепятка
- Предполагалось, что паблик свойствами будут те, которые можно установить при инициализации роута. Просто косяк в установке этих свойств (устанавливаются и паблик и протектед и приват свойства). А вот методы действительно, не должны быть паблик, мой косяк
- Возможно и так)
- Про SplObjectStorage написал выше
0
НЛО прилетело и опубликовало эту надпись здесь
Потому что помимо syslog надо еще openlog юзать, а значит надо это все инкапсулировать в какой-то сервис. А значит мы берем стандарт psr-3 регламентирующий ткой интерфейс и радуемся. А еще лучше вообще взять monolog, в котором есть хэндлер для syslog.
А еще есть куча случаев когда syslog не катит. Допустим у меня логи кидаются в аргегатор логов напряму (graylog и другие), кто-то любит файлики, кто-то выплевывает их в stderr/stdout docker-контейнера и т.д. И вот за тем что бы у всех все было одинаково хотя бы в плане интерфейса — ввели psr-3.
А еще есть куча случаев когда syslog не катит. Допустим у меня логи кидаются в аргегатор логов напряму (graylog и другие), кто-то любит файлики, кто-то выплевывает их в stderr/stdout docker-контейнера и т.д. И вот за тем что бы у всех все было одинаково хотя бы в плане интерфейса — ввели psr-3.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем свой логер на основе psr/log. Для начинающих