この章ではそのほかの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クラスによって自動的に管理されます。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.