サーチ…


前書き

symfonyアプリケーションを設定するための公式文書にない例と良い習慣。

ディレクトリのすべての設定ファイルをインクルードする

しばらくすると、config.ymlに多くの設定項目があります。設定を複数のファイルに分割すると、設定を読みやすくすることができます。この方法でディレクトリからすべてのファイルを簡単に含めることができます:

config.yml:

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

includesディレクトリには、例えばdoctrine.yml、swiftmailer.ymlなどを入れることができます。

サービスIDとして完全修飾クラス名(FQCN)を使用する

多くの例では、 'acme.demo.service.id'(ドット付きの文字列)のようなサービスIDがあります。 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');

これに問題はありませんが、完全修飾クラス名(FQCN)をサービスIDとして使用できます。

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);

これにより、コードを理解しやすくなります。多くの場合、クラス名だけではないサービスIDを持つことは意味がありません。

symfony 3.3では、サービスIDがFQCNの場合でもclass属性を削除することさえできます。

HTTPインターフェイスは必要ありませんか?

あなたのアプリケーションにHTTPインタフェースが必要ない場合(例えば、コンソールのみのアプリケーションの場合)、少なくともTwigSensioFrameworkExtraを無効にしたいでしょう

これらの行をコメントアウトしてください:

app / 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();

app / 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%'

app / 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