factories.yml設定ファイル
ファクトリはリクエストが存続するあいだにフレームワークが必要とするコアオブジェクトです。
これらはfactories.yml
設定ファイルで設定されsfContext
オブジェクトを通して常にアクセス可能です:
// ユーザーファクトリを取得する sfContext::getInstance()->getUser();
アプリケーションのメインのfactories.yml
設定ファイルはapps/APP_NAME/config/
ディレクトリで見つかります。
はじめの章で説明したように、factories.yml
ファイルは環境を認識し、コンフィギュレーションカスケードのメカニズムが有効になり、定数を格納することができます。
factories.yml
設定ファイルは名前つきのファクトリのリストを格納します:
FACTORY_1: # definition of factory 1 FACTORY_2: # definition of factory 2 # ...
サポートされるファクトリの名前は次のとおりです: controller
、logger
、i18n
、request
、response
、routing
、storage
、user
、view_cache
とview_cache_manager
sfContext
がファクトリを初期化するとき、ファクトリオブジェクトを設定するために使われるファクトリ(class
)とパラメーター(param
)のクラス名のfactories.yml
ファイルを読み込みます:
FACTORY_NAME: class: CLASS_NAME param: { ARRAY OF PARAMETERS }
ファクトリをカスタマイズできることはsymfonyのコアオブジェクトのデフォルトクラスの代わりにカスタムクラスを使うことができることを意味します。 これらに送信するパラメーターをカスタマイズすることでこれらのクラスのデフォルトのふるまいを変更することもできます。
ファクトリクラスがオートロードできないとき、file
パスが定義されファクトリが作成される前に自動的にインクルードできます:
FACTORY_NAME: class: CLASS_NAME file: ABSOLUTE_PATH_TO_FILE
note
factories.yml
設定ファイルはPHPファイルとしてキャッシュされます;
プロセスはsfFactoryConfigHandler
クラスによって自動的に管理されます。
ファクトリ
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
を自動管理するためにsymfonyによって使われます。
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%
note
デフォルトでは、myUser
クラスはsfBasicSecurityUser
を継承します。
これはsecurity.yml
設定ファイルで設定できます。
timeout
timeout
オプションはユーザー認証のタイムアウトを定義します。
これはセッションのタイムアウトとは関係ありません。
デフォルトの設定は30分間何もしていないユーザーの認証を自動的に解除します。
sfBasicSecurityUser
基底クラスを継承するユーザークラスのみがこの設定を使います。
これはmyUser
クラスが生成される例が当てはまります。
note
予期していないふるまいを避けるために、ユーザークラスはセッションガーベッジコレクターの最長有効期間(session.gc_maxlifetime
)をタイムアウトよりも長くなるように強制します。
use_flash
use_flash
オプションはflashコンポーネントを有効もしくは無効にします。
default_culture
default_culture
オプションはサイトに始めて訪問したユーザーのためにデフォルトのcultureを定義します。
デフォルトでは、settings.yml
からのdefault_culture
が使用されるたいていの場合これで十分です。
caution
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
フラグを送信しようとします。
note
それぞれのオプションの説明はsession_set_cookie_params()
関数の説明はPHPの公式サイトに説明に由来しています。
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
caution
cache
設定がon
にセットされている場合にのみこのファクトリは作成されます。
ビューキャッシュマネージャーの設定はparam
キーを含みません。
この設定はview_cache
ファクトリを通して行われます。
これはビューキャッシュマネージャーによって使われる内部のキャッシュオブジェクトを定義します。
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
caution
cache
設定がon
にセットされている場合のみこのファクトリが定義されます。
view_cache
ファクトリはsfCache
を継承するキャッシュクラスを定義します(詳細な情報はキャッシュのセクションを参照)。
i18n
sfContextアクセサー: $context->getI18N()
デフォルトコンフィギュレーション:
i18n: class: sfI18N param: source: XLIFF debug: off 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
caution
i18n
設定がon
にセットされている場合のみこのファクトリが定義されます。
source
source
オプションは翻訳用コンテナーの種類を定義します。
組み込みのコンテナー: XLIFF
、SQLite
、MySQL
、とgettext
debug
debug
オプションはデバッグモードをセットします。
on
にセットされる場合、未翻訳のメッセージはプレフィックスとサフィックスによってデコレートされます(下記を参照)。
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: true extra_parameters_as_query_string: true cache: class: sfFileCache param: automatic_cleaning_factor: 0 cache_dir: %SF_CONFIG_CACHE_DIR%/routing lifetime: 31556926 prefix: %SF_APP_DIR%/routing
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プロジェクトではない外部のルーティングシステムを使いたい場合false
にセットします。
lazy_routes_deserialize
デフォルト: false
true
にセットする場合、lazy_routes_deserialize
設定はルーティングキャッシュの遅延デシリアライズを有効にします。
たくさんのルートを抱えており、マッチするルートが最初のものである場合この設定はアプリケーションのパフォーマンスを改善できます。
特定の状況ではパフォーマンスに悪い影響を与える可能性があるので運用サーバーにデプロイする前に設定をテストすることを強くおすすめします。
caution
symfony 1.2.7とそれ以降でのみこの設定は利用できます。
lookup_cache_dedicated_keys
デフォルト: false
lookup_cache_dedicated_keys
設定はルーティングキャッシュが構成される方法を決定します。
false
にセットされている場合、キャッシュは1つの大きな値として保存されます;
true
にセットされている場合それぞれのルートは独自のキャッシュストアを持ちます。
この設定はパフォーマンス最適化設定です。
経験則として、ファイルベースのキャッシュクラス(たとえばsfFileCache
)を使う際にはこの設定をfalse
に、メモリベースのキャッシュクラス(たとえばsfAPCCache
)を使う際にはtrue
にするとよいです。
caution
symfony 1.2.7とそれ以降でのみこの設定は利用可能です。
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: true 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: ~
caution
このファクトリは常に定義されますが、logging_enabled
設定がon
にセットされている場合のみロギングが行われます。
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
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.