Поиск…


Вступление

Примеры и рекомендации по настройке приложения Symfony, которые не указаны в официальной документации.

Включить все файлы конфигурации из каталога

Через некоторое время вы получите множество элементов конфигурации в config.yml. Это может упростить чтение конфигурации, если вы разделили конфигурацию на несколько файлов. Вы можете легко включить все файлы из каталога таким образом:

config.yml:

imports:
    - { resource: parameters.yml }
    - { resource: "includes/" }

В includes в includes каталог можно поместить, например , doctrine.yml, swiftmailer.yml и т.д.

Использовать полное имя класса (FQCN) в качестве идентификатора службы

Во многих примерах вы найдете идентификатор службы, например, «acme.demo.service.id» (строка с точками). You services.yml будет выглядеть так:

services:
    acme.demo.service.id:
        class: Acme\DemoBundle\Services\DemoService
        arguments: ["@doctrine.orm.default_entity_manager", "@cache"]

В вашем контроллере вы можете использовать эту услугу:

$service = $this->get('acme.demo.service.id');

Хотя с этим нет никаких проблем, вы можете использовать Fully Qualified Class Name (FQCN) как служебный идентификатор:

services:
    Acme\DemoBundle\Services\DemoService:
        class: Acme\DemoBundle\Services\DemoService
        arguments: ["@doctrine.orm.default_entity_manager", "@cache"]

В вашем контроллере вы можете использовать его следующим образом:

use Acme\DemoBundle\Services\DemoService;
// ..
$this->get(DemoService::class);

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

Начиная с Symfony 3.3, вы даже можете удалить атрибут class если ваш служебный идентификатор является FQCN.

Не нужен HTTP-интерфейс?

Если вашему приложению не нужен какой-либо HTTP-интерфейс (например, для консольного приложения), вам нужно отключить хотя бы Twig и SensioFrameworkExtra

Просто прокомментируйте эти строки:

Приложение / AppKernel.php

$bundles = [
//...
//    new Symfony\Bundle\TwigBundle\TwigBundle(),
//    new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
//...
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
//...
//    $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();

приложение / Config / config.yml

framework:
#    ...
#    router:
#        resource: '%kernel.root_dir%/config/routing.yml'
#        strict_requirements: ~
#    ...
#    templating:
#        engines: ['twig']
#...
#twig:
#    debug: '%kernel.debug%'
#    strict_variables: '%kernel.debug%'

приложение / Config / config_dev.yml

#framework:
#    router:
#        resource: '%kernel.root_dir%/config/routing_dev.yml'
#        strict_requirements: true
#    profiler: { only_exceptions: false }

#web_profiler:
#    toolbar: true
#    intercept_redirects: false

Вы также можете удалить связанные требования поставщика от composer.json :

"sensio/framework-extra-bundle": "x.x.x",
"twig/twig": "x.x"

Используя Symfony вообще в таком случае можно утверждать, но, по крайней мере, это может быть временным.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow