Разберём устройство тестовых фреймворков. Спрограммируем свой тестовый фреймворк на примере PHPUnit. В нём как в реальном сделаем сканирование тестовых файлов, тестирование ожидаемых выбрасываемых исключений и написание параметризованных тестов с провайдерами данных с атрибутом DataProvider.Заодно отрефакторим полученный код, избавив его от нарушения инкапсуляции и от побочных эффектов записи результатов и прямого вывода на экран. Вынесем принтер
Изучим методы повышения быстродействия веб-приложения. От простого активации OpCache, кеширования настроек и ленивой инициализации сервисов до применения Preload с JIT и RoadRunner, асинхронности, использования Fibers и других особенностей в различных фреймворках. Выполним практику на проектах с бенчмарками. Обсудим потенциальные проблемы, удобство разработки stateless-сервисов и способы передачи контекста запроса.
Мы уже рассмотрели высокоуровневое разделение проекта на модули и микросервисы, чтобы уменьшить количество связей между отдельными подсистемами. В качестве примера использовалась сложная растущая программная система для крупного завода железобетонных изделий, предлагающего бетон с ароматом клубники для VIP-клиентов.
Тогда мы вскользь упомянули принципы и паттерны SOLID и GRASP применительно к модулям. Эта тема интересна сама по себе, и к ней все