Немного о бандлах в Symfony.

В версиях Symfony до 4.0 было рекомендовано организовать собственный код приложения через использование бандлов. Это больше не рекомендуется, и бандлы следует использовать только для совместного использования кода и функций между несколькими приложениями.

Бандлы похожи на плагины в другом программном обеспечении, но даже лучше. Основные функции фреймворка Symfony реализованы с помощью бандлов (FrameworkBundle, SecurityBundle, DebugBundle и т. Д.). Они также используются для добавления новых функций в ваше приложение через сторонние бандлы.

 

Пакеты, используемые в ваших приложениях, должны быть включены для каждой переменной среды в файле config / bundles.php.

// config/bundles.php
 return [
     // 'all' means that the bundle is enabled for any Symfony environment
     Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
     Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
     Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
     Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
     Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true],
     Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
     Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
     // this bundle is enabled only in 'dev' and 'test', so you can't use it in 'prod'
     Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
 ];

В приложении Symfony по умолчанию, которое использует Symfony Flex, пакеты включаются / отключаются автоматически для вас при их установке / удалении, поэтому вам не нужно просматривать или редактировать этот файл bundles.php.

Начните с создания каталога src /Acme/TestBundle/ и добавления нового файла с именем AcmeTestBundle.php:

// src/Acme/TestBundle/AcmeTestBundle.php
 namespace App\Acme\TestBundle;
 use Symfony\Component\HttpKernel\Bundle\Bundle;
 class AcmeTestBundle extends Bundle
 {
 }

Имя AcmeTestBundle соответствует стандартным соглашениям об именах пакетов. Вы также можете сократить имя пакета до TestBundle, назвав этот класс TestBundle (и назвав файл TestBundle.php).

Этот пустой класс — единственное, что вам нужно для создания нового бандла. Хотя этот класс обычно пуст, он является мощным и может использоваться для настройки поведения пакета. Теперь, когда вы создали пакет, включите его:

// config/bundles.php
 return [
     // …
     App\Acme\TestBundle\AcmeTestBundle::class => ['all' => true],
 ];

Структура директорий в бандлах.

Структура каталогов бандла предназначена для обеспечения согласованности кода между всеми бандлами Symfony. Он следует набору соглашений, но может быть изменен при необходимости:

  • Controller/
    • Содержит контроллеры бандла (например, RandomController.php).
  • DependencyInjection/
    • Содержит определенные классы расширения внедрения зависимостей, которые могут импортировать конфигурацию сервисов, регистрировать проходы компилятора или многое другое (этот каталог не обязателен).
  • Resources/config/
    • Главная конфигурация, включая конфигурацию маршрутизации (например, routing.yaml).
  • Resources/views/
    • Содержит шаблоны, организованные по имени контроллера (например, Random/index.html.twig).
  • Resources/public/
    • Содержит веб-ресурсы (изображения, таблицы стилей и т. Д.) И копируется или символически связывается в каталог проекта public / с помощью консольной команды assets: install.
  • Tests/
    • Каталог содержит тесты для текущего бандла.

Бандл может быть как маленьким, так и большим, в зависимости от реализуемой в нем функции. Он содержит только нужные вам файлы и ничего больше.

В бандлах можно все: сохранять объекты в базе данных, создавать и проверять формы, создавать переводы для вашего приложения, писать тесты и многое другое. У всего будет свое место и роль в бандлах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *