Skip to content

agdobrynin/symfony-real

Repository files navigation

Курс "Learn PHP Symfony Hands-On Creating Real World Application" на платформе udemy.com

Сертификат об успешном прохождении курса.

При изучении были рассмотрены темы:

  • 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 контейнеров

Все команды для сборки, запуска или остановки контейнеров выопнять в корневой директории проекта (там где расположен файл docker-compose.yml)

Чтобы пересобрать все контейнеры заново (с нуля) выпонить команду

docker-compose build

Запуск контейнеров (если уже было сделана сборка контейнеров - build) чтобы начать раобтать с проектом:

docker-compose up -d

Для остановки docker контейнеров используйте команду:

docker-compose stop

Если необходимо удалить собранные контейнеры:

docker-compose down

после удаления собранных контейнеров необходимо будет их заново собрать командой docker-compose build

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published