Symfony (および環境) の構成
Symfony プログラムは、「すべての機能と可能性を提供する」バンドルのセットで構成されています。各バンドルは、YAML、XML、または PHP 形式の構成ファイルを通じてカスタマイズできます。デフォルトのメイン設定ファイルは app/config/
ディレクトリにあり、config.yml
、config.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%',)); // ...以下の環境セクションでは、各形式のファイルをロードする方法を指定します。
framework や
twig などの各ルート ノードは、対応するバンドルの構成情報を定義します。たとえば、
framework キーは、ルーティング設定、テンプレート設定、その他のカーネル設定を含む、Symfony コアで使用される FrameworkBundle の設定情報を定義します。
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 つの環境 (dev
、test
、prod
) がありますが、新しい環境の作成は簡単です。ブラウザーでフロントエンド コントローラーを切り替えることで、さまざまな環境でプログラムがどのように動作するかを確認できます。 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 環境であっても、同じモデルに従います。各環境は最初に基本構成ファイルをインポートし、次にその構成値を調整します。それぞれの環境、特定の環境に合わせて。ただし、これは単なる規則であり、構成ファイル内のほとんどの内容を再利用し、さまざまな環境に合わせてローカル構成をカスタマイズできます。