Советы при разработке на Symfony2

Автор: Aport Суббота, Январь 31st, 2015 Нет комментариев

Рубрика: Язык PHP

…по мотивам доклада Романа Лапина на конференции PHP Frameworks Day 2013 - «Как превратить проект на Symfony 2 в боль«. С некоторыми ошибками ведения проекта на Symfony 2 скорее всего вы уже сталкивались в процессе разработки первого проекта или в самом начале изучения этого фреймворка.Добрую часть ошибок я допускал при первом знакомстве с Symfony 2, но все же доклад стоит посмотреть.

Роман Лапин - Как превратить проект на Symfony 2 в боль

Видео

Собственно — советы:

  1. Добавьте в .gitignore на системном уровне каталог .idea/, файлы *.DS_Store,  *.iml;
  2. Не забывайте в каждом проекте добавлять в .gitignore следующие файлы: vendors/,  parameters.yml;
  3. Не меняйте дефолтную структуру файлов и каталогов без крайней необходимости!
  4. Окружение не должно зависеть от «машины», на которой вы запускаете проект. Окружение — это определенная конфигурация проекта в момент его запуска. Если конфигурация зависит от машины — используйте свой локальный app/config/parameters.yml  который нужно добавите в .gitignore;
  5. Также не завязывайте приложение на конкретное окружение в коде! Не нужно проверять окружение в самом коде — лучше использовать параметры предопределенные для нужного окружения.
  6. Не изменяйте исходный код в каталоге vendors/! Воспринимайте vendors/ как черный ящик. Ваше приложение должно знать только о файле автозагрузки - vendor/autoload.php. При необходимости используйте namespace для подмены пути к переопределенному классу;
  7. Не добавляйте в .gitignore файл composer.lock - вам нужно знать историю работоспособной связки всех зависимостей;
  8. Не делайте composer update на продакшене! На локалке лучше обновлять зависимости пошагово и прогонять тесты (надеюсь они у вас есть) после обновления нужной зависимости;
  9. Не суньте в post-install composer‘а то, что там не нужно!
  10. Не используйте системный временный каталог /tmp для логов/кеша — у каждого проекта на Symfony 2 должен быть отдельный каталог для логов и кеша;
  11. Не нужно без крайней необходимости инжектить @service_container в каждую зависимость, ведь можно заинжектить только конкретные необходимые для каждого класса зависимости (если их не вагончик);
  12. Вместо инжекта в класс @security_context для определения прав доступа, проверьте права в контроллере и выполните нужное/доступное действие. Так вы сможете использовать этот класс в консоли, которая ничего не знает по @security_context;
  13. Не используйте ACL. Она довольно сложна и может вызвать нежелательную нагрузку. Используйте Voters:
    $this->sc->isGranted(...);

    Voters также упростит последующие модификации прав доступа.

  14. Вычищайте все лишнее после кодо-генерации контроллеров!
  15. Будьте вежливыми — используйте фикс код стайла:
    bin/php-cs-fixer fix src
  16. Помните о нежелательных:
    1. Fat Controllers - контроллер должен выполнять самый минимум действий: принял запрос, инициализировал сервис, вызвал метод, отдал ответ;
    2. Tight Coupling;
    3. Code Immobility;
  17. Заведите README.md!
  18. …продолжаем делать проекты на Symfony 2 лучше

Источник: 1

 

Источник: yapro.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты