Сертификат об успешном прохождении курса.
При изучении были рассмотрены темы:
- Service containers - конфигурация, использование.
- Routing, Controller, View - настройка роутинга с аннтотациям или через конфигурацию, обработка запросов в контролерах и рендеринг шеблонов.
- Twig - верстка шаблонов с использованием Twig, собственные расширения для Twig - фильтры, функции
- Event, Event subscribers, Event listener - создание событий и регирование на события symfony.
- Doctrine2 - создание сущностей (entity) и описание через аннтотации типов полей, связей сущеностей, валидации, использование Lifecycle для сущностей, подготовка миграций для БД.
- Symfony security - использование встроенной системы авторизации, событий security бандла, использование анотаций в контролерах для проверки авторизованых пользователей, форма регитсрации пользоватеоя, редактирования профиля.
- Messenger - oтправка почтовых сообщений с использованием consumer-а, вертска писем с использованием шаблонов twig.
- Translating - интернализация приложения с поддержкой двух языков интерфейса, двух языков для электронных писем, перевод сообщений валидации форм.
- Forms - создание html форм, их обработка при отправке данных, валидация данных с использованием компонента Forms.
- Использование Docker для среды разработки и подготовка к деплою приложения в серду с docker контейнерами
- Тестирование классов через PHPUnit - юнит тесты, интеграционные тесты, настройка отчёта процента покрытия тестами кода через "pcov" расширение.
Для проекта нужен docker (docker desktop) а так же docker-compose
|
|_ app/ <-- symfony приложение и фронт часть проекта
|_ docker-files/ <-- настройка для docker контейнеров
|_ docker-compose.yml <--- файл конфига основной для запуска через docker-compose
|_ docker-compose.override.yml <--- файл дополнение для docker контейнеров
consumer Консьюмер symfony
database Postgres база (подключение через localhost порт 5432)
front Контейнерс с NodeJs и фронтовой частью (yarn и symfony encore)
mailcatcher Для разработки и отладки отправки писем с symfony
с интерфейсом просмотра писем http://localhost:1080
nginx Вэб сервер проекта по адресу http://localhost
php Контейнер с symfony
Для настройки переменных окружения docker контейнеров необходимо скопировать файл и внести собственные настройки
cp .env-example .env
Для настройки переменных окружения symfony прокта необходимо скопировать файл и внести собственные настройки для проекта
cp app/.env-example app/.env
собираем контенеры и стратуем docker
docker-compose up -d --build
Собрать фронт часть проекта:
docker-compose run --rm front sh -c "yarn install && yarn encore production"
🏃🏻 Для загрузки тестовых данных "fixtures" выполнить через docker-compose команду
docker-compose run --rm php sh -c "php bin/console doctrine:fixtures:load -n"
📺 или же можно воспользоватся интерактивным режимом зайдя в контейнер php
docker-compose exec php bash
Для выполнения задач связанных с разработкой и настройкой symfony проекта можно заходить в контейнер php и выполнять привычные команды для symfony:
docker-compose exec php bash
появится командная строка интерпретатора bash запущенного внутри контейнера. Например, посмотреть существующие роуты в symfony проекте:
php bin/console debug:route
🚀 Основной проект доступен по адресу
http://localhost
📧 Для отладки отправки писем используется MailCatcher доступен по адресу
http://localhost:1080/
В проекте реализовано тетирование 3х уровней - Unit тесты, Integration тесты, Functional тесты
Для запуска всех тестов достаточно выполнить команду:
docker-compose run --rm php sh -c 'make tests-all'
для запуска только Unit тестов
docker-compose run --rm php sh -c 'make test-unit'
для запуска Integration тестов
docker-compose run --rm php sh -c 'make tests-integration'
для запуска Functional тестов
docker-compose run --rm php sh -c 'make tests-functional'
Так же в ходе разработки тестов может быть удобно выполнять тесты в контейнере php для этого необходимо зайти в запущенный контейнер
docker-compose exec php bash
и выполнять привычные команды PHPUnit уже в контейнере. Например запусить все тесты находясь в контейнере php
make tests-all
--- или же ---
php bin/phpunit
Фронт-часть проекта развернута в контейнере front
Для сборки фронт части в продекшен режиме выполнить команду
docker-compose run --rm front sh -c "yarn encore production"
Для сборки фронт-части в dev режиме
docker-compose run --rm front sh -c "yarn encore dev"
в режиме наблюдения (пересобирает на лету)
docker-compose run --rm front sh -c "yarn encore dev --watch"
Все команды для сборки, запуска или остановки контейнеров выопнять в корневой директории проекта (там где расположен файл docker-compose.yml)
Чтобы пересобрать все контейнеры заново (с нуля) выпонить команду
docker-compose build
Запуск контейнеров (если уже было сделана сборка контейнеров - build) чтобы начать раобтать с проектом:
docker-compose up -d
Для остановки docker контейнеров используйте команду:
docker-compose stop
Если необходимо удалить собранные контейнеры:
docker-compose down
после удаления собранных контейнеров необходимо будет их заново собрать командой docker-compose build