Symfony

Как работает Symfony

1. FrontController (принимает запросы от cli или web)
2. Autoload (настраивается автозагрузка классов).
3. Kernel (создает ряд действий):
    1. Инициализируется список Бандлов (Kernel::initializeBundles).
    2. Создается Контейнер зависимостей (Dependency Injection Container - Kernel::initializeContainer).
        1. Создается контейнер с основными параметрами.
        2. Бандлы модифицирует контейнер (тут контейнер еще не полон, некоторые бандлы еще не подгружены, так себе идея: BundleInterface::build).
        3. Загружается конфигурация приложения.
        4. Контейнер компилируется (CompilerPass):
            1. Обрабатываются расширения (CompilerPassInterface).
            2. Ссылки на параметры заменяются реальными значениями.
            3. Контейнер переводится в режим только на чтение (frozen).
    3. Запускаются бандлы.
4. Запускается ядро.

Детальнее »

Различия в версиях

CommandInfo
bin/console api:openapi:export --yaml --output=/my/api-platform.yamlГенерация OpenApi Спецификации
bin/console cache:warmupПрогрев кэша
bin/console doctrine:schema:update --dump-sqlПосмотреть отличия схемы бд от сущностей
bin/console doctrine:migrations:diffСоздать миграцию на основе изменений в сущностях
bin/console make:migrationСоздать миграцию на основе изменений в сущностях
bin/console doctrine:migrations:migrate --no-interactionПрименить миграции
bin/console doctrine:migrations:migrate current-1Откатить миграцию
bin/console doctrine:schema:validateПроверить валидность маппинга
bin/console doctrine:generate:entities NameOfYouBundleОбновит Ваши Entity-классы согласно Yml-схемам
doctrine:ensure-production-settings

Удалена, см. `orm:ensure-production-settings` в UPGRADE.md

Что делала: убеждалась, что доктрина правильно настроена для prod-a среды

bin/console lint:containerПроверка типов аргументов, которые инъектятся в сервисы
bin/console makeУтилита для создания чего-либо в симфони
bin/console aboutИнформация о системе, симфони и т.п.
bin/console config:dump-referenceПросмотр списка бандлов
bin/console config:dump-reference securityПросмотр дефолтного конфига для бандла, вместо security можно указать bundle_name
bin/console config:dump bundle_name^как я понимаю, есть еще одна идентичная команда
bin/console debug:config bundle_nameПросмотр нашего конфига для бандла
bin/console debug:container --parametersПросмотр всех определенных параметров (можно добавлять опцию --env=prod чтобы посмотреть например параметры для прода).
bin/console debug:dotenvПосмотреть на то как Symfony парсит .env файлы, но почему-то показываются не все переменные. ВАЖНО: команда доступна если установлен пакет "symfony/dotenv", который я не рекомендую из-за проблем в его работе.
bin/console debug:dotenv --env=testПри этом можно указать окружение и увидеть приоритет значений (если в нескольких файлах указаны одинаковые переменные).
bin/console debug:container --env-varsПросмотр переменных окружения
bin/console debug:container --env-vars foofilter the list of env vars by name
bin/console debug:container --env-var=FOOshow all the details for a specific env var
bin/console debug:container --tag=data_collectorСписок сервисов помеченых тегом "data_collector". Симфони поставляется с несколькими коллекторами, которые предоставляют информацию о: request, the logger, the routing, the cache, etc.
bin/console debug:container some_service_nameПример нахождения интерфейса/класса по Service ID
bin/console debug:container --show-hiddenПросмотр только приватных сервисов (зарегистрированных)
bin/console debug:container 'App\Service\Mailer' --show-argumentsПросмотр аргументов класса
bin/console debug:container --env=testПросмотр контейнера в тестовом окружении
bin/console debug:autowiringПросмотр сервисов которые возможно использовать для autowiring-а
bin/console debug:routerСписок правил роутинга
bin/console router:match /lucky/number/8Найти имя роута по URI
bin/console debug:translationСписок переводов
bin/console cache:pool:listСписок pull-ов кэша
bin/console cache:pool:clear my_cache_poolОчистить один pull
bin/console cache:clearОчиститель системного кэша
bin/console cache:pool:clear cache.app_clearerОчистить все pull-ы
bin/console cache:pool:clear cache.global_clearerОчистить все кеши везде - очищает все элементы кэша в каждом пуле
bin/console security:encodeСоздание хэша для пароля
bin/console security:hash-passwordСоздание хэша для пароля (еще одна, более новая)
bin/console debug:autowiring clientПеременные, которые можно использовать в DI (autowiring)
bin/console debug:event-dispatcherИнформация о событиях и подписчиках
bin/console debug:event-dispatcher kernel.exception 
bin/console debug:event-dispatcher kernelmatches "kernel.exception", "kernel.response" etc.
bin/console debug:event-dispatcher Securitymatches "Symfony\Component\Security\Http\Event\CheckPassportEvent"
bin/console debug:event-dispatcher --dispatcher=security.event_dispatcher.mainполучить зарегистрированных прослушивателей для определенного диспетчера событий
bin/console app:my-command --profile -vvvпоказать ссылку на профайл + информацию о расходе памяти

Интересные моменты:

  1. именование функций (методов)
  2. стандарты кодирования
  3. как писать YAML
  4. опциональные зависимости

EventDispatcher

Событие kernel.view срабатывает только когда экшен контроллера возвращает не объект Response:

if (!$response instanceof Response) {

Удачки.


28.12.2010 08:35