SymfonyWorld Online 2021 Winter Edition December 9 – 10, 2021 100% Online 25 talks and 10 workshops
Caution: You are browsing the legacy symfony 1.x part of this website.

そのほかの設定ファイル

1.2
Symfony version
1.4
Language

この章ではそのほかのsymfonyの設定ファイルを説明します。 これらを変更する必要性はほとんどありません。

autoload.yml

autoload.yml設定はsymfonyによってオートロードされる必要のあるディレクトリを決定します。 それぞれのディレクトリはPHPクラスとインターフェイスを見つけるためにスキャンされます。

最初の章で説明したように、autoload.ymlファイルはコンフィギュレーションカスケードのメカニズムが有効で、定数を格納することができます。

note

autoload.yml設定ファイルはPHPファイルとしてキャッシュされます;

たいていのプロジェクトではデフォルトコンフィギュレーションで十分です:

autoload:
  # project
  project:
    name:           project
    path:           %SF_LIB_DIR%
    recursive:      on
    exclude:        [model, symfony]
 
  project_model:
    name:           project model
    path:           %SF_LIB_DIR%/model
    recursive:      on
 
  # application
  application:
    name:           application
    path:           %SF_APP_LIB_DIR%
    recursive:      on
 
  modules:
    name:           module
    path:           %SF_APP_DIR%/modules/*/lib
    prefix:         1
    recursive:      on

それぞれの設定は名前を持ち、その名前を持つキーの下でセットしなければなりません。 これによってオーバーライドされるデフォルトの設定が可能になります。

tip

ご覧のとおり、デフォルトではlib/vendor/symfony/ディレクトリは除外されます。 symfonyはコアクラスには異なるオートロードのメカニズムを利用するからです。

オートロードのふるまいをカスタマイズするためにいくつかのキーを使うことができます:

  • name: 説明
  • path: オートロードするパス
  • recursive: サブディレクトリでPHPクラスを探すか
  • exclude: 検索から除外するディレクトリの名前の配列
  • prefix: パスで見つかるクラスが指定されたモジュールのみをオートロードする場合trueにセットする(デフォルトではfalse)
  • files: PHPクラスのために明示的に解析するファイルの配列
  • ext: PHPクラスの拡張子(デフォルトは.php)

たとえば、lib/ディレクトリの下でプロジェクト内部で大きなライブラリを埋め込み、オートロード機能がすでにサポートされている場合、パフォーマンスを向上させるためにprojectのオートロードコンフィギュレーションを修正することでsymfonyのデフォルトのオートロードシステムからそのライブラリを除外できます:

autoload:
  project:
    name:           project
    path:           %SF_LIB_DIR%
    recursive:      on
    exclude:        [model, symfony, vendor/large_lib]

config_handlers.yml

config_handlers.yml設定ファイルはほかのすべてのYAML設定ファイルを解釈するために使われるコンフィギュレーションハンドラークラスを記述します。 settings.yml設定ファイルをロードするために使われるデフォルトコンフィギュレーションは次のとおりです:

config/settings.yml:
  class:    sfDefineEnvironmentConfigHandler
  param:
    prefix: sf_

それぞれの設定ファイルはクラス(classエントリー)によって定義しparamセクションの下でパラメーターを定義することでさらにカスタマイズできます。

デフォルトのconfig_handlers.ymlファイルは次のようにパーサークラスを定義します:

設定ファイル コンフィギュレーションハンドラークラス
autoload.yml sfAutoloadConfigHandler
databases.yml sfDatabaseConfigHandler
settings.yml sfDefineEnvironmentConfigHandler
app.yml sfDefineEnvironmentConfigHandler
factories.yml sfFactoryConfigHandler
core_compile.yml sfCompileConfigHandler
filters.yml sfFilterConfigHandler
routing.yml sfRoutingConfigHandler
generator.yml sfGeneratorConfigHandler
view.yml sfViewConfigHandler
security.yml sfSecurityConfigHandler
cache.yml sfCacheConfigHandler
module.yml sfDefineEnvironmentConfigHandler

core_compile.yml

core_compile.yml設定ファイルはsymfonyのロード時間を加速するためにprod環境で1つの大きなファイルにマージされるPHPファイルを記述します。 デフォルトでは、symfonyのメインのコアクラスはこの設定ファイルで定義されます。 アプリケーションがそれぞれのリクエストごとにロードする必要のあるいくつかのクラスに依存する場合、プロジェクトもしくはアプリケーションのcore_compile.yml設定ファイルを作成しこれらのクラスを設定ファイルに追加できます。 デフォルトコンフィギュレーションの抜粋は次のとおりです:

- %SF_SYMFONY_LIB_DIR%/autoload/sfAutoload.class.php
- %SF_SYMFONY_LIB_DIR%/action/sfComponent.class.php
- %SF_SYMFONY_LIB_DIR%/action/sfAction.class.php
- %SF_SYMFONY_LIB_DIR%/action/sfActions.class.php

はじめの章で説明したように、core_compile.ymlファイルはコンフィギュレーションカスケードのメカニズムが有効で、定数を格納することができます。

note

core_compile.yml設定ファイルはPHPファイルとしてキャッシュされます; 処理はsfCompileConfigHandlerクラスによって自動的に管理されます。