Офіційний гайд по кращим практикам у Symfony

Fabien Potencier, ментейнер Symfony кілька днів тому представив чорнову версію гайда лучшх практик, для розробки додатків з використанням Symfony, як фреймворку (нагадаю, що також це набір незалежних компонентів).
Ми знаємо, як складно відучитися від старих звичок і деякі поради шокують вас, але слідуючи їм ви зможете розробляти програми швидше, зробити їх менш складними і в той же час більш якісними.
У будь-якому випадку варто пам'ятати, що це всього лише рекомендації і ваша команда не зобов'язана їм слідувати. Ви можете продовжувати використовувати свої підходи, Symfony досить гнучкий для будь-яких потреб і це ніколи не зміниться.
Під катом я виписав основні тези, більшість з них детально аргументується всередині книги, в деяких «шокуючих» місцях, крім тези є невелике пояснення.

  • використовуйте Composer для установки Symfony.
  • Створюйте тільки один пакет для логіки програми. Бандл — незалежний компонент, який надалі можна переиспользовать. Наприклад вашому додатку є UserBundle і ProductBundle. Швидше за все ProductBundle не буде коректно працювати без UserBundle, а це не правильно.
  • Параметри середовища(база даних, журналів) та додатки опишіть у файлі
    app/config/parameters.yml
    .
  • Параметри середовища і додатки за замовчуванням опишіть
    app/config/parameters.yml.dist
    .
  • Не змінюються параметри опишіть в константах (прямо в
    app/config/parameters.yml
    ).
  • Назви ваших сервісів повинні бути як можна більш короткі і прості, в ідеалі це має бути одне слово (наприклад slugger, geocoder).
  • Для визначення сервісів додатки використовуйте YAML.
  • Використовуючи Doctrine ORM, визначайте схему за допомогою анотацій. Всі конфігурації мають однакову продуктивність.
  • Контролери додатки повинні успадковувати
    Symfony\Bundle\FrameworkBundle\Controller\Controller
    , використовувати анотації для роутінга і кешування, коли це можливо.
  • Не використовуйте анотацію
    @Template()
    для налаштування шаблону, який використовується контролером. Анотація корисна, але працює «магічно», тому рекомендується її не використовувати. Також використання цієї анотації уповільнює ваш додаток на 21мс.
  • Використовуйте автоматичну конвертацію параметрів, коли це корисно і зручно
    /**
    * @Route("/{id}", name="admin_post_show")
    */
    public function showAction(Post $post)
    

  • Для шаблонізації використовуйте Twig.
  • Зберігайте ваші шаблони в теку
    app/Resources/views/
    .
  • Для кожної форми створюйте клас.
  • Додавайте кнопки в шаблоні, а не в PHP коді.
  • Для переказів використовуйте формат XLIFF.
  • Зберігайте файли у
    app/Resources/translations/
    .
  • Завжди використовуйте ключові слова для перекладу, замість тексту. Наприклад не
    Username
    , а
    label.username
    .
  • Якщо ваш додаток має два варіанти авторизації, рекомендується використовувати один firewall, з включеним параметром
    anonymous
    .
  • Використовуйте алгоритм
    bcrypt
    для хешування користувальницьких паролів.
  • Для автоматичної перевірки прав доступу URL використовуйте
    access_control
    . Коли можливо, використовуйте анотацію
    @Security
    . У більш складних ситуаціях використовуйте сервіс
    security.context
    .
  • Зберігайте статику(ассеты) в теку
    web/
    .
  • Використовуйте Assetic для обробки статики, або інші подібні інструменти, наприклад, GruntJS.
  • При використанні фронтенд-фреймворків, таких як AngularJS, ви повинні відокремити фронтенд і бекенд на два проекти.
  • Пишіть як мінімум функціональні тести для перевірки, що сторінки додатка успішно завантажуються. Хардкодьте URL сторінки, замість використання
    UrlGenerator
    .


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.