サーチ…
前書き
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インタフェースが必要ない場合(例えば、コンソールのみのアプリケーションの場合)、少なくともTwig
とSensioFrameworkExtra
を無効にしたいでしょう
これらの行をコメントアウトしてください:
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を使用することは疑わしいですが、少なくとも一時的なものになる可能性があります。