factories.yml 設定ファイル
ファクトリはリクエストが存在しているあいだにフレームワークが必要とするコアオブジェクトです。これらのコンフィギュレーションは factories.yml
設定ファイルで変更され、sfContext
オブジェクトを通してつねにアクセスできます:
// ユーザーファクトリを取得する sfContext::getInstance()->getUser();
アプリケーションのメイン設定ファイルである factories.yml
は apps/APP_NAME/config/
ディレクトリで見つかります。
設定ファイルの原則の章で説明したように、factories.yml
ファイルでは、環境が認識され、コンフィギュレーションカスケードのメカニズムがはたらき、定数を定義することができます。
factories.yml
設定ファイルには、名前つきファクトリのリストが用意されています:
---
FACTORY_1:
# ファクトリ1の定義
FACTORY_2:
# ファクトリ2の定義
# ...
サポートされているファクトリの名前は次のとおりです: controller
、logger
、i18n
、request
、response
、routing
、storage
、 user
、view_cache
と view_cache_manager
sfContext
がファクトリを初期化するとき、ファクトリオブジェクトを設定するために使うファクトリのクラス名 (class
) とパラメータ (param
) を得るために、sfContext
は factories.yml
ファイルを読み込みます:
---
FACTORY_NAME:
class: CLASS_NAME
param: { ARRAY OF PARAMETERS }
ファクトリをカスタマイズできることが意味するのは、symfony コアのデフォルトクラスの代わりにカスタムクラスを使うことができるということです。これらのクラスに渡すパラメータをカスタマイズすることで、これらのクラスのデフォルトのふるまいを変更することもできます。
ファクトリクラスがオートロードされないとき、file
パスが定義され、ファクトリが作られる前に自動的にインクルードされます:
---
FACTORY_NAME:
class: CLASS_NAME
file: ABSOLUTE_PATH_TO_FILE
factories.yml
設定ファイルは PHP ファイルとしてキャッシュされます。処理は ~sfFactoryConfigHandler
~ クラスによって自動管理されます。
ファクトリ
-
auto_start
database
db_table
db_id_col
db_data_col
db_time_col
session_cache_limiter
session_cookie_domain
session_cookie_httponly
session_cookie_lifetime
session_cookie_path
session_cookie_secure
session_name
mailer
sfContext アクセサ: $context->getMailer()
デフォルトコンフィギュレーション:
---
mailer:
class: sfMailer
param:
logging: %SF_LOGGING_ENABLED%
charset: %SF_CHARSET%
delivery_strategy: realtime
transport:
class: Swift_SmtpTransport
param:
host: localhost
port: 25
encryption:
username:
password:
test
環境のデフォルトコンフィギュレーション:
---
mailer:
param:
delivery_strategy: none
dev
環境のデフォルトコンフィギュレーション:
---
mailer:
param:
delivery_strategy: none
~charset
~
charset
オプションはメールメッセージに使う文字集合を定義します。デフォルトでは、settings.yml
の charset
設定が使われます。
~delivery_strategy
~
delivery_strategy
オプションはメーラーによってメールメッセージがどのように配信されるのかを定義します。デフォルトでは、4つの戦略を選ぶことが可能で、すべての共通ニーズに適しています:
-
realtime
: メッセージはリアルタイムで送信されます。 -
single_address
: メッセージは単独のアドレスに送信されます。 -
spool
: メッセージはキューに保存されます。 -
none
: メッセージは単に無視されます。
~delivery_address
~
delivery_address
オプションは、delivery_strategy
が single_address
にセットされているときにすべてのメッセージの受信アドレスを定義します。
~spool_class
~
spool_class
オプションは、delivery_strategy
が spool
にセットされているときに使われるスプールクラスを定義します:
-
~
Swift_FileSpool
~: メッセージはファイルシステムに保存されます。 -
~
Swift_DoctrineSpool
~: メッセージは Doctrine モデルに保存されます。 -
~
Swift_PropelSpool
~: メッセージは Propel モデルに保存されます。
スプールがインスタンス化されるとき、~
spool_arguments
~ オプションはコンストラクタの引数に使われます。
~spool_arguments
~
spool_arguments
オプションはスプールのコンストラクタの引数を定義します。組み込みのキュークラスで利用できるオプションは次のとおりです:
-
Swift_FileSpool
:- キューディレクトリの絶対パス (メッセージはこのディレクトリに保存されます)
-
Swift_DoctrineSpool
:-
メッセージを保存する Doctrine モデル (デフォルトは
MailMessage
) -
メッセージ保存に使われるカラムの名前 (デフォルトは
message
) -
送信するメッセージを読み出すために呼び出すメソッド (オプション)。このメソッドはキューオプションを引数にとります。
-
-
Swift_PropelSpool
:-
メッセージを保存するために使う Propel モデル (デフォルトは
MailMessage
) -
メッセージ保存に使うカラムの名前 (デフォルトは
message
) -
送信するメッセージを読み出すために呼び出すメソッド (オプション)。このメソッドは現在の Criteria を引数にとります。
-
Doctrine スプールのコンフィギュレーションの典型例は次のとおりです:
---
# factories.yml のコンフィギュレーション
mailer:
class: sfMailer
param:
delivery_strategy: spool
spool_class: Swift_DoctrineSpool
spool_arguments: [ MailMessage, message, getSpooledMessages ]
~transport
~
transport
オプションはメールメッセージを実際に送信するために使うトランスポートを定義します。
class
設定は Swift_Transport
を実装する任意のクラスになります。デフォルトでは、3つの設定が提供されます:
-
~
Swift_SmtpTransport
~: メッセージの送信に SMTP サーバーを使います。 -
~
Swift_SendmailTransport
~: メッセージの送信にsendmail
を使います。 -
~
Swift_MailTransport
~: メッセージの送信に PHP ネイティブのmail()
関数を使います。
param
設定をセットすることでトランスポートを細かく調整できます。組み込みのトランスポートクラスと異なるパラメータについて知る必要のある情報は Swift Mailer の公式ドキュメントの 「Transport Types」 の節で網羅されています。
request
sfContext アクセサ: $context->getRequest()
デフォルトコンフィギュレーション:
---
request:
class: sfWebRequest
param:
logging: %SF_LOGGING_ENABLED%
path_info_array: SERVER
path_info_key: PATH_INFO
relative_url_root:
formats:
txt: text/plain
js: [application/javascript, application/x-javascript, text/javascript]
css: text/css
json: [application/json, application/x-json]
xml: [text/xml, application/xml, application/x-xml]
rdf: application/rdf+xml
atom: application/atom+xml
~path_info_array
~
path_info_array
オプションは情報検索に使われるグローバルな PHP 配列を定義します。コンフィギュレーションしだいではデフォルトの SERVER
から ENV
に変更するとよいでしょう。
~path_info_key
~
path_info_key
オプションは PATH_INFO
の情報を見つけられるキーを定義します。
IIFR
もしくは ISAPI
のような rewrite モジュールが付属する IIS を使う場合、このオプションの値を HTTP_X_REWRITE_URL
に変更するとよいでしょう。
~formats
~
formats
オプションはファイルの拡張子と Content-Type
の配列です。このオプションはリクエスト URI の拡張子に合わせてレスポンスの Content-Type
を自動管理するのに使われます。
~relative_url_root
~
relative_url_root
オプションは URL のなかのフロントコントローラより前の部分を定義します。ほとんどの場合、このオプションはフレームワークによって自動検出されるので、変更する必要はありません。
response
sfContext アクセサ: $context->getResponse()
デフォルトコンフィギュレーション:
---
response:
class: sfWebResponse
param:
logging: %SF_LOGGING_ENABLED%
charset: %SF_CHARSET%
send_http_headers: true
test
環境のデフォルトコンフィギュレーション:
---
response:
class: sfWebResponse
param:
send_http_headers: false
~send_http_headers
~
send_http_headers
オプションは、レスポンスのコンテンツに加えて HTTP レスポンスヘッダーを送信するかどうかを指定します。ヘッダーを実際に送信するのは PHP の header()
関数です。この関数が出力の後でヘッダーを送信しようとすると警告を発してくれるので、このオプションはテストの際に重宝します。
~charset
~
charset
オプションはレスポンスに使う文字集合を定義します。デフォルトでは、settings.yml
の charset
設定が使われます。ほとんどの場合、デフォルトで十分です。
~http_protocol
~
http_protocol
オプションはレスポンスに使う HTTP プロトコルのバージョンを定義します。デフォルトでは、利用可能であれば、$_SERVER['SERVER_PROTOCOL']
の値もしくは HTTP/1.0
です。
user
sfContext のアクセサ: $context->getUser()
デフォルトコンフィギュレーション:
---
user:
class: myUser
param:
timeout: 1800
logging: %SF_LOGGING_ENABLED%
use_flash: true
default_culture: %SF_DEFAULT_CULTURE%
デフォルトでは、
myUser
クラスはsfBasicSecurityUser
を継承します。このクラスはsecurity.yml
設定ファイルで変更できます。
~timeout
~
timeout
オプションはユーザー認証のタイムアウトを定義します。このオプションはセッションのタイムアウトとは関係ありません。デフォルトでは、30分間何もしていないユーザーの認証が自動的に解除されます。
このオプションを使えるのは sfBasicSecurityUser
基底クラスを継承するユーザークラスだけです。具体例として myUser
生成クラスが当てはまります。
予期しないふるまいを避けるために、セッションガベージコレクタの最長有効期間 (
session.gc_maxlifetime
) がタイムアウトよりもはるかに長くなるように、ユーザークラスによって強制されます。
~use_flash
~
use_flash
オプションはフラッシュコンポーネントを有効もしくは無効にします。
~default_culture
~
default_culture
オプションはサイトに初めて訪問したユーザーのためにデフォルトカルチャを定義します。デフォルトでは、settings.yml
の default_culture
が使われ、ほとんどの場合これで十分です。
factories.yml
もしくはsettings.yml
の ~default_culture
~ 設定を変更した場合、結果を確認するためにブラウザの Cookie を消去する必要があります。
storage
HTTP リクエストにおけるユーザーデータの一貫性を保つために、ストレージファクトリはユーザーファクトリによって使われます。
sfContext アクセサ: $context->getStorage()
デフォルトコンフィギュレーション:
---
storage:
class: sfSessionStorage
param:
session_name: symfony
test
環境のデフォルトコンフィギュレーション:
---
storage:
class: sfSessionTestStorage
param:
session_path: %SF_TEST_CACHE_DIR%/sessions
~auto_start
~
auto_start
オプションは (session_start()
関数を通して) PHP のセッション自動開始機能を有効もしくは無効にします。
~session_name
~
session_name
オプションはユーザーセッションを保存するために symfony によって使われる Cookie の名前を定義します。デフォルトの名前は symfony
で、このことが意味するのは、すべてのアプリケーションが同じ Cookie (と対応する認証と承認) を共有するということです。
session_set_cookie_params()
パラメータ
storage
ファクトリは session_set_cookie_params()
関数に次のオプションの値を渡します:
- ~
session_cookie_lifetime
~: セッション Cookie の有効期間。秒単位で定義されます。 - ~
session_cookie_path
~: Cookie が機能するドメインのパスです。ドメインのパスに単独のスラッシュ (/
) が使われます。 - ~
session_cookie_domain
~: Cookie のドメインで、たとえばwww.php.net
です。すべてのサブドメインで Cookie が見えるようにするには、.php.net
のようにドメインのプレフィックスとしてドットをつけなければなりません。 - ~
session_cookie_secure
~:true
にセットされている場合、Cookie はセキュアなコネクションを通してのみ送信されます。 - ~
session_cookie_httponly
~:true
にセットされている場合、セッション Cookie を設定する際に、PHP はhttponly
フラグを送信しようとします。
それぞれのオプションの説明は PHP 公式マニュアルの
session_set_cookie_params()
関数のページにあります。
~session_cache_limiter
~
session_cache_limiter
オプションがセットされている場合、PHP の session_cache_limiter()
関数が呼び出され、オプションの値は引数に渡されます。
データベースストレージ固有のオプション
sfDatabaseSessionStorage
クラスを継承するストレージを使うとき、いくつかの追加オプションが利用できます:
- ~
database
~: データベースの名前 (必須) - ~
db_table
~: テーブルの名前 (必須) - ~
db_id_col
~: 主キーのカラムの名前 (デフォルトはsess_id
) - ~
db_data_col
~: データカラムの名前 (デフォルトはsess_data
) - ~
db_time_col
~: 時間カラムの名前 (デフォルトはsess_time
)
view_cache_manager
sfContext アクセサ: $context->getViewCacheManager()
デフォルトコンフィギュレーション:
---
view_cache_manager:
class: sfViewCacheManager
param:
cache_key_use_vary_headers: true
cache_key_use_host_name: true
cache
設定がtrue
にセットされている場合にのみこのファクトリが作られます。
このファクトリのコンフィギュレーションの大半は view_cache
ファクトリを通して変更されます。view_cache
ファクトリはビューキャッシュマネージャによって使われる内部のキャッシュオブジェクトを定義します。
~cache_key_use_vary_headers
~
cache_key_use_vary_headers
オプションはキャッシュキーに Vary ヘッダーの部分が含まれるかどうかを指定します。実際には、vary
キャッシュパラメータで指定されるように、このオプションの使い道はページキャッシュが HTTP ヘッダーに依存するかどうかを伝えることです (デフォルト: true
)。
~cache_key_use_host_name
~
cache_key_use_host_name
オプションはキャッシュキーにホスト名の部分が含まれるかどうかを指定します。このオプションの実際の使い道は、ページキャッシュがホスト名に依存するかどうかを伝えることです (デフォルト: true
)。
view_cache
sfContext アクセサ: なし (view_cache_manager
ファクトリによって直接使われます)
デフォルトコンフィギュレーション:
---
view_cache:
class: sfFileCache
param:
automatic_cleaning_factor: 0
cache_dir: %SF_TEMPLATE_CACHE_DIR%
lifetime: 86400
prefix: %SF_APP_DIR%/template
cache
設定がtrue
にセットされている場合のみこのファクトリが定義されます。
view_cache
ファクトリは sfCache
を継承するキャッシュクラスを定義します (詳しい情報はキャッシュの節を参照)。
i18n
sfContext アクセサ: $context->getI18N()
デフォルトコンフィギュレーション:
---
i18n:
class: sfI18N
param:
source: XLIFF
debug: false
untranslated_prefix: "[T]"
untranslated_suffix: "[/T]"
cache:
class: sfFileCache
param:
automatic_cleaning_factor: 0
cache_dir: %SF_I18N_CACHE_DIR%
lifetime: 31556926
prefix: %SF_APP_DIR%/i18n
i18n
設定がtrue
にセットされている場合のみこのファクトリが定義されます。
~source
~
source
オプションは翻訳コンテナの種類を定義します。
組み込みのコンテナ: XLIFF
、SQLite
、MySQL
と gettext
~debug
~
debug
オプションはデバッグモードをセットします。true
にセットされている場合、未翻訳のメッセージはプレフィックスとサフィックスによって飾りつけられます (下記を参照)。
~untranslated_prefix
~
untranslated_prefix
は未翻訳のメッセージに使われるプレフィックスを定義します。
~untranslated_suffix
~
untranslated_suffix
は未翻訳のメッセージに使われるサフィックスを定義します。
~cache
~
cache
オプションは国際化対応データのキャッシュに使われる匿名キャッシュファクトリを定義します (詳しい情報はキャッシュの節を参照)。
routing
sfContext アクセサ: $context->getRouting()
デフォルトコンフィギュレーション:
---
routing:
class: sfPatternRouting
param:
load_configuration: true
suffix: ''
default_module: default
default_action: index
debug: %SF_DEBUG%
logging: %SF_LOGGING_ENABLED%
generate_shortest_url: false
extra_parameters_as_query_string: false
cache:
~variable_prefixes
~
デフォルト: :
variable_prefixes
オプションは、ルートパターンにおける変数のプレフィックスのリストを定義します。
~segment_separators
~
デフォルト: /
と .
segment_separators
オプションはルートの区切り文字のリストを定義します。特定のルート以外、ルーティング全体でこのオプションをオーバーライドすることはほとんどないでしょう。
~generate_shortest_url
~
デフォルト: 新しいプロジェクトでは true
、アップグレードしたプロジェクトでは false
true
にセットされている場合、generate_shortest_url
オプションはルーティングシステムに実現可能な最短ルートを生成するよう指示します。symfony 1.0 と 1.1 と後方互換性のあるルートがほしければ、false
にセットします。
~extra_parameters_as_query_string
~
デフォルト: 新しいプロジェクトでは true
、アップグレードしたプロジェクトでは false
ルート生成に使われていないパラメータがあるとき、extra_parameters_as_query_string
はルート生成に使われていないパラメータをクエリ文字列に変換します。symfony 1.0 もしくは 1.1 のふるまいに戻すのであれば、false
にセットします。これらのバージョンでは、ルート生成に使われていないパラメータはルーティングシステムによって無視されるだけでした。
~cache
~
デフォルト: なし
cache
オプションはルーティングコンフィギュレーションとデータのキャッシュに使われる匿名キャッシュファクトリを定義します (詳しい情報はキャッシュの節を参照)。
~suffix
~
デフォルト: なし
すべてのルートに使われるデフォルトのサフィックスです。このオプションは推奨されないので、もはや役に立ちません。
~load_configuration
~
デフォルト: true
load_configuration
オプションは routing.yml
ファイルをオートロードの対象にして、パースする必要があるかどうかを決めます。symfony プロジェクト外部の symfony ルーティングシステムを使いたければ、false
にセットします。
~lazy_routes_deserialize
~
デフォルト: false
true
にセットされている場合、lazy_routes_deserialize
設定はルーティングキャッシュの遅延デシリアライゼーションを有効にします。たくさんのルートをかかえており、マッチするルートが最初のほうにある場合、この設定はアプリケーションのパフォーマンスを改善できます。特定の状況では、パフォーマンスにわるい影響を与える可能性があるので、運用サーバーにデプロイする前に、この設定をテストすることをぜひおすすめします。
~lookup_cache_dedicated_keys
~
デフォルト: false
lookup_cache_dedicated_keys
設定はルーティングキャッシュを構築する方法を決めます。false
にセットされている場合、キャッシュは1つの大きな値として保存されます。true
にセットされている場合、それぞれのルートに専用のキャッシュストアクラスが用意されます。この設定はパフォーマンスを最適化します。
経験則によれば、ファイルベースのキャッシュクラス (たとえば sfFileCache
) を使う場合には、この設定を false
に、メモリベースのキャッシュクラス (たとえば sfAPCCache
) を使う場合には、true
にするとよいです。
logger
sfContext アクセサ: $context->getLogger()
デフォルトコンフィギュレーション:
---
logger:
class: sfAggregateLogger
param:
level: debug
loggers:
sf_web_debug:
class: sfWebDebugLogger
param:
level: debug
condition: %SF_WEB_DEBUG%
xdebug_logging: false
web_debug_class: sfWebDebug
sf_file_debug:
class: sfFileLogger
param:
level: debug
file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log
prod
環境のデフォルトコンフィギュレーション:
---
logger:
class: sfNoLogger
param:
level: err
loggers:
sfAggregateLogger
を使いたくなければ、loggers
パラメータに null
を指定することをお忘れなく。
このファクトリはつねに定義されていますが、ロギングが実行されるのは
logging_enabled
設定がtrue
にセットされている場合のみです。
~level
~
level
オプションはロガーのレベルを定義します。
利用可能な値: EMERG
、ALERT
、CRIT
、ERR
、WARNING
、NOTICE
、INFO
もしくは DEBUG
~loggers
~
loggers
オプションは使用するロガーのリストを定義します。リストは匿名ロガーファクトリの配列です。
組み込みのロガークラス: sfConsoleLogger
、sfFileLogger
、sfNoLogger
、 sfStreamLogger
と sfVarLogger
controller
sfContext アクセサ: $context->getController()
デフォルトコンフィギュレーション:
---
controller:
class: sfFrontWebController
匿名キャッシュファクトリ
コンフィギュレーションのなかでキャッシュオブジェクトが定義されていれば、いくつかのファクトリ (view_cache
、i18n
と routing
) はこのファクトリを利用できます。キャッシュオブジェクトのコンフィギュレーションはすべてのファクトリと似ています。cache
キーは匿名キャッシュファクトリを定義します。ほかのファクトリと同じように、このファクトリには class
と param
エントリが用意されています。param
エントリは任意のキャッシュクラスで利用可能な任意のオプションをとります。
もっとも重要なのは prefix
オプションで、異なる環境/アプリケーション/プロジェクトのあいだでキャッシュを共有するもしくは分離することができます。
組み込みのキャッシュクラス: sfAPCCache
、sfEAcceleratorCache
、sfFileCache
、sfMemcacheCache
、 sfNoCache
、sfSQLiteCache
と sfXCachCache
インデックス
Document Index
関連ページリスト
Related Pages
日本語ドキュメント
Japanese Documents
- 2011/01/18 Chapter 17 - Extending Symfony
- 2011/01/18 The generator.yml Configuration File
- 2011/01/18 Les tâches
- 2011/01/18 Emails
- 2010/11/26 blogチュートリアル(8) ビューの作成
リリース情報
Release Information
- 2.0 : 2.0.15(2011/05/30)
Symfony2日本語ドキュメント - 1.4 : 1.4.18(2012/05/30)
Changelog