Symfony (および環境) の構成


Symfony プログラムは、「すべての機能と可能性を提供する」バンドルのセットで構成されています。各バンドルは、YAML、XML、または PHP 形式の構成ファイルを通じてカスタマイズできます。デフォルトのメイン設定ファイルは app/config/ ディレクトリにあり、config.ymlconfig.xml、または config.php# のいずれかになります。 ##、好みに応じて:

YAML:# app/config/config.ymlimports:
    - { resource: parameters.yml }
    - { resource: security.yml }framework:
    secret:          "%secret%"
    router:          { resource: "%kernel.root_dir%/config/routing.yml" }
    # ... # Twig Configurationtwig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%" # ...
XML:<!-- app/config/config.xml --><?xml version="1.0" encoding="UTF-8" ?><container xmlns="http://symfony.com/schema/dic/services"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:framework="http://symfony.com/schema/dic/symfony"    xmlns:twig="http://symfony.com/schema/dic/twig"    xsi:schemaLocation="http://symfony.com/schema/dic/services        http://symfony.com/schema/dic/services/services-1.0.xsd        http://symfony.com/schema/dic/symfony        http://symfony.com/schema/dic/symfony/symfony-1.0.xsd        http://symfony.com/schema/dic/twig        http://symfony.com/schema/dic/twig/twig-1.0.xsd">     <imports>
        <import resource="parameters.yml" />
        <import resource="security.yml" />
    </imports>     <framework:config secret="%secret%">
        <framework:router resource="%kernel.root_dir%/config/routing.xml" />
        <!-- ... -->
    </framework:config>     <!-- Twig Configuration -->
    <twig:config debug="%kernel.debug%" strict-variables="%kernel.debug%" />     <!-- ... --></container>
PHP:// app/config/config.php$this->import('parameters.yml');$this->import('security.yml'); $container->loadFromExtension('framework', array(
    'secret' => '%secret%',
    'router' => array(
        'resource' => '%kernel.root_dir%/config/routing.php',
    ),
    // ...)); // Twig Configuration$container->loadFromExtension('twig', array(
    'debug'            => '%kernel.debug%',
    'strict_variables' => '%kernel.debug%',)); // ...

以下の環境セクションでは、各形式のファイルをロードする方法を指定します。


frameworktwig などの各ルート ノードは、対応するバンドルの構成情報を定義します。たとえば、framework キーは、ルーティング設定、テンプレート設定、その他のカーネル設定を含む、Symfony コアで使用される FrameworkBundle の設定情報を定義します。

これで、各ルート ノードの特定の構成オプションについて心配する必要がなくなります。構成ファイルには、いくつかの意味のあるデフォルト構成がプリロードされています。 Symfony の各部分を詳しく調べて検討すると、各機能の特定の設定オプションの意味が理解できるようになります。

構成ファイル

この章のすべての構成情報ルーチンは 3 つの形式 (YAML、XML、および PHP) で表示されます。それぞれに長所と短所があり、どちらを選択するかはあなた次第です。

  • YAML: シンプル、明確、非常に読みやすい。 (YAML コンポーネントを通じて詳細を確認してください)

  • XML: 場合によっては YAML よりも強力で、IDE コードの自動補完をサポートします。

  • PHP: 非常に強力ですが、標準の構成形式よりも読みにくくなります。

デフォルト構成情報の削除 ¶

コマンド ラインを使用して、指定したバンドルの YAML 形式のデフォルト構成情報を削除できます。

config:dump-referenceコマンド。以下は、FrameworkBundle のデフォルト設定情報を削除する例です:

$  php bin/console config:dump-reference FrameworkBundle

拡張プライベート仮名 (設定ファイル内のルート ノード) も使用できます:

$  php bin/console config:dump-reference framework

# #クックブックの記事「バンドルにサービスの構成情報をロードする方法」を参照して、「独自のバンドルへの構成情報の追加」の関連コンテンツを取得してください。

環境 ¶

一連のプログラムは複数の環境で実行できます。異なる環境は同じ PHP コード (フロントエンド コントローラーを除く) を共有しますが、使用する構成ファイルは異なります。たとえば、dev 環境では警告レベルとエラー レベルのログが記録されますが、prod 環境ではエラー情報のみが記録されます。 dev 環境では、一部のファイルは (開発者の便宜のため) リクエストごとに再構築されますが、prod 環境に到着するとキャッシュされます。すべての環境が同じマシン上に共存し、同じプログラムを実行します。

一般に、Symfony プロジェクトには 3 つの環境 (devtestprod) がありますが、新しい環境の作成は簡単です。ブラウザーでフロントエンド コントローラーを切り替えることで、さまざまな環境でプログラムがどのように動作するかを確認できます。 dev 環境を確認するには、プログラム フロント コントローラーの開発バージョンにアクセスしてください:

localhost/app_dev.php/random/10

運用環境でのプログラムの実行を確認したい場合は、 に変更してください。 prod バージョン フロントエンド コントローラー:

localhost/app_dev.php/random/10

prod 環境は速度のために最適化されており、構成情報、ルーティング、および Twig テンプレートはネイティブ PHP クラスにコンパイルされ、キャッシュされます。 。 prod 環境の変更を確認する必要がある場合は、これらのキャッシュ ファイルをクリアして再構築する必要があります:

$  php bin/console cache:clear --env=prod --no-debug

web/app を開いた場合.php ファイルを開くと、prod 環境が明示的に構成されていることがわかります:

$kernel = new AppKernel('prod', false);

新しい環境用に新しいフロントエンド コントローラーを作成するには、上記の行をコピーします。コードを作成し、prod を別の値に置き換えます。

#test 環境は自動テストに使用され、ブラウザから直接アクセスすることはできません。詳細については、「フレームワーク ガイド」の テスト の章を参照してください。

server:run コマンドを使用してサーバーを起動すると、localhost:8000/ がプログラムを使用します。の開発フロントエンド コントローラー。

環境構成

AppKernel クラスは、指定した構成ファイルをロードする役割を果たします:

// app/AppKernel.phppublic function registerContainerConfiguration(LoaderInterface $loader){
    $loader->load(
        __DIR__.'/config/config_'.$this->getEnvironment().'.yml'
    );}

すでにご存知のとおり 。 yml# XML または PHP を使用して構成を完了する場合は、## サフィックスを .xml または .php に変更できます。各環境は独自の構成ファイルをロードすることに注意してください。 dev 環境の設定ファイルを確認してください:

YAML:# app/config/config_dev.ymlimports:
    - { resource: config.yml }framework:
    router:   { resource: "%kernel.root_dir%/config/routing_dev.yml" }
    profiler: { only_exceptions: false } # ...
XML:<!-- app/config/config_dev.xml --><?xml version="1.0" encoding="UTF-8" ?><container xmlns="http://symfony.com/schema/dic/services"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:framework="http://symfony.com/schema/dic/symfony"    xsi:schemaLocation="http://symfony.com/schema/dic/services        http://symfony.com/schema/dic/services/services-1.0.xsd        http://symfony.com/schema/dic/symfony        http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">     <imports>
        <import resource="config.xml" />
    </imports>     <framework:config>
        <framework:router resource="%kernel.root_dir%/config/routing_dev.xml" />
        <framework:profiler only-exceptions="false" />
    </framework:config>     <!-- ... --></container>
PHP:// app/config/config_dev.php$loader->import('config.php'); 
$container->loadFromExtension('framework', array(    'router' => array(        'resource' => '%kernel.root_dir%/config/routing_dev.php',    ),  
  'profiler' => array('only-exceptions' => false),)); 
// ...

import ルート キー (PHP の include ステートメントと同様)主力の確保 設定ファイル (config.yml) が最初にロードされます。このファイルの残りの部分は、デフォルト構成の調整、ロギング機能の強化、および開発環境に有益なその他の設定に使用されます。

環境が

prod であっても test 環境であっても、同じモデルに従います。各環境は最初に基本構成ファイルをインポートし、次にその構成値を調整します。それぞれの環境、特定の環境に合わせて。ただし、これは単なる規則であり、構成ファイル内のほとんどの内容を再利用し、さまざまな環境に合わせてローカル構成をカスタマイズできます。