Добавлено: 17.12.2019 / 15:02
Новости разработки
Всем привет!
Давно не писал новостей, хотя разработка идет полным ходом.
Новости от Макса Вы уже читали, теперь добавлю я
Те, кто внимательно следит за разработкой, наверно заметили, что появился новый пакет
johncms/system. Это ядро системы (системный фреймворк), то есть то, что находилось в папке /system/src было выделено в отдельную библиотеку. На нее были навешаны всякие лютые проверки и CI сервисы, качество кода взято под самый жесткий контроль.
Идет процесс
покрытия кода тестами.
Если глянуть отчеты от Scrutinizer-ci, то у нас там еще пока много Legacy низкокачественного кода, но постепенно от него избавимся, качество доведем до уровня не ниже 9.
Новость 2.
В систему опять интегрирован стэк PSR-7 и не просто интегрирован, но уже активно используется в пакете johncms/system. Кто не знает, что это такое и не является программистом, проходите мимо этой новости. Для интересующихся же, расскажу о причине, почему опять встроил PSR-7...
Причина-1: для манипуляции с изображениями была использована библиотека (огромная шо ужоснах) intervention/image, которая почему-то тянет за собою прицепом зависимость в виде guzzle/psr7. В принципе, Guzzle неплохая и легкая реализация PSR-7, хоть мне и не совсем нравится их стиль кода, но работает все хорошо и свои задачи выполняет. Раз уж у нас по любому (в принудительном порядке) есть эта библиотека, то почему бы именно ее не задействовать?
Причина-2: При написании Unit-тестов для johncms/system я столкнулся с непреодолимыми препятствиями в виде использования суперглобальных переменных $_SERVER, $_POST и т.д. Проблема в том, что без абстракции их невозможно протестировать, следовательно покрытие было бы неполным. А коль уж зашла речь об абстракции, в первую очередь на ум приходит принудительно навязанная нам библиотека guzzle/psr7 которая как раз и является той самой абстракцией. Логично было ее применить,
что и было сделано. Теперь достаточно из контейнера
дернуть ServerRequestInterface и весть реквест от PSR-7 в Вашем распоряжении. Пример использования вместо старого $_SERVER
тут. Просто получаем $server = $request->getServerParams(); переменная $server и является полным аналогом старого $_SERVER и можно смело использовать.
Добавлено: 17.12.2019 / 15:19
Да, насчет активного использования PSR-7 я погорячился, активно используется не весь (он довольно многогранен), а только его часть ServerRequestInterface.