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_startdatabasedb_tabledb_id_coldb_data_coldb_time_colsession_cache_limitersession_cookie_domainsession_cookie_httponlysession_cookie_lifetimesession_cookie_pathsession_cookie_securesession_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
