Поиск…
Вступление
Примеры и рекомендации по настройке приложения 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 вообще в таком случае можно утверждать, но, по крайней мере, это может быть временным.