![]() |
|
The symfony Reference Bookfactories.yml設定ファイル |
|
You are currently reading "The symfony Reference Book" which is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.
request path_info_array path_info_key formats relative_url_root response send_http_headers charset http_protocol user timeout use_flash default_culture storage auto_start session_name session_set_cookie_params()パラメーター session_cache_limiter view_cache_manager view_cache i18n source debug untranslated_prefix untranslated_suffix cache routing variable_prefixes segment_separators generate_shortest_url extra_parameters_as_query_string cache suffix load_configuration lazy_routes_deserialize lookup_cache_dedicated_keys logger level loggers controller 
|
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. |
ファクトリはリクエストが存続するあいだにフレームワークが必要とするコアオブジェクトです。
これらは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
factories.yml設定ファイルはPHPファイルとしてキャッシュされます; プロセスはsfFactoryConfigHandlerクラスによって自動的に管理されます。
requestsfContextアクセサー: $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_arraypath_info_arrayオプションは情報を読み取るために使われるグローバルなPHP配列を定義します。
設定によってはデフォルトのSERVERの値をENVに変更するとよいでしょう。
path_info_keypath_info_keyオプションはPATH_INFOの情報が見つかるキーを定義します。
IIFRもしくはISAPIのようなrewriteモジュールつきのIISを使う場合、この値をHTTP_X_REWRITE_URLに変更するとよいでしょう。
formatsformatsオプションはファイル拡張子とContent-Typeの配列です。
リクエストURIの拡張子に基づいて、レスポンスのContent-Typeを自動管理するためにsymfonyによって使われます。
relative_url_rootrelative_url_rootオプションはフロントコントローラー前のURLの部分を定義します。
たいていの場合、これはフレームワークによって自動的に検出されるので変更する必要はありません。
responsesfContextアクセサー: $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_headerssend_http_headersオプションはレスポンス内に含まれるコンテンツと一緒にHTTPレスポンスヘッダーを送信するかを指定します。
この設定は出力の後でヘッダーを送信しようとすると警告を発するPHPのheader()関数でヘッダーが送信されるので、テストの際に便利です。
charsetcharsetオプションはレスポンスに使う文字集合を定義します。
デフォルトでは、settings.ymlのcharset設定が使われます。
http_protocolhttp_protocolオプションはレスポンスに使うHTTPプロトコルのバージョンを定義します。
デフォルトでは、利用可能であれば$_SERVER['SERVER_PROTOCOL']の値をチェックします。
デフォルトはHTTP/1.0です。
usersfContextのアクセサー: $context->getUser()
デフォルトコンフィギュレーション:
user:
class: myUser
param:
timeout: 1800
logging: %SF_LOGGING_ENABLED%
use_flash: true
default_culture: %SF_DEFAULT_CULTURE%
デフォルトでは、
myUserクラスはsfBasicSecurityUserを継承します。 これはsecurity.yml設定ファイルで設定できます。
timeouttimeoutオプションはユーザー認証のタイムアウトを定義します。
これはセッションのタイムアウトとは関係ありません。
デフォルトの設定は30分間何もしていないユーザーの認証を自動的に解除します。
sfBasicSecurityUser基底クラスを継承するユーザークラスのみがこの設定を使います。
これはmyUserクラスが生成される例が当てはまります。
予期していないふるまいを避けるために、ユーザークラスはセッションガーベッジコレクターの最長有効期間(
session.gc_maxlifetime)をタイムアウトよりも長くなるように強制します。
use_flashuse_flashオプションはflashコンポーネントを有効もしくは無効にします。
default_culturedefault_cultureオプションはサイトに始めて訪問したユーザーのためにデフォルトの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_startauto_startオプションは(session_start()関数を通して)PHPのセッション自動開始機能を有効もしくは無効にします。
session_namesession_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フラグを送信しようとします。それぞれのオプションの説明は
session_set_cookie_params()関数の説明はPHPの公式サイトに説明に由来しています。
session_cache_limitersession_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_managersfContextアクセサー: $context->getViewCacheManager()
デフォルトコンフィギュレーション:
view_cache_manager: class: sfViewCacheManager
cache設定がonにセットされている場合にのみこのファクトリは作成されます。
ビューキャッシュマネージャーの設定はparamキーを含みません。
この設定はview_cacheファクトリを通して行われます。
これはビューキャッシュマネージャーによって使われる内部のキャッシュオブジェクトを定義します。
view_cachesfContextアクセサー: なし(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設定がonにセットされている場合のみこのファクトリが定義されます。
view_cacheファクトリはsfCacheを継承するキャッシュクラスを定義します(詳細な情報はキャッシュのセクションを参照)。
i18nsfContextアクセサー: $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
i18n設定がonにセットされている場合のみこのファクトリが定義されます。
sourcesourceオプションは翻訳用コンテナーの種類を定義します。
組み込みのコンテナー: XLIFF、SQLite、MySQL、とgettext
debugdebugオプションはデバッグモードをセットします。
onにセットされる場合、未翻訳のメッセージはプレフィックスとサフィックスによってデコレートされます(下記を参照)。
untranslated_prefixuntranslated_prefixは未翻訳のメッセージに使われるプレフィックスを定義します。
untranslated_suffixuntranslated_suffixは未翻訳のメッセージに使われるサフィックスを定義します。
cachecacheオプションは国際化データのキャッシュに使われる匿名キャッシュファクトリを定義します(詳細な情報はキャッシュのセクションを参照)。
routingsfContextアクセサー: $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にセットします。
このバージョンでは、ルート生成に利用していないパラメーターはルーティングシステムによって無視されるだけでした。
cachecacheオプションはルーティング設定とデータのキャッシュに使われる匿名キャッシュファクトリを定義します(詳細な情報はキャッシュセクションを参照)。
suffixデフォルト: なし
すべてのルートに使われるデフォルトのサフィックスです。 このオプションは非推奨でもはや役に立ちません。
load_configurationデフォルト: true
load_configurationオプションはrouting.ymlファイルが自動的にロードされ解析される必要があるかどうかを定義します。
symfonyプロジェクトではない外部のルーティングシステムを使いたい場合falseにセットします。
lazy_routes_deserializeデフォルト: false
trueにセットする場合、lazy_routes_deserialize設定はルーティングキャッシュの遅延デシリアライズを有効にします。
たくさんのルートを抱えており、マッチするルートが最初のものである場合この設定はアプリケーションのパフォーマンスを改善できます。
特定の状況ではパフォーマンスに悪い影響を与える可能性があるので運用サーバーにデプロイする前に設定をテストすることを強くおすすめします。
symfony 1.2.7とそれ以降でのみこの設定は利用できます。
lookup_cache_dedicated_keysデフォルト: false
lookup_cache_dedicated_keys設定はルーティングキャッシュが構成される方法を決定します。
falseにセットされている場合、キャッシュは1つの大きな値として保存されます;
trueにセットされている場合それぞれのルートは独自のキャッシュストアを持ちます。
この設定はパフォーマンス最適化設定です。
経験則として、ファイルベースのキャッシュクラス(たとえばsfFileCache)を使う際にはこの設定をfalseに、メモリベースのキャッシュクラス(たとえばsfAPCCache)を使う際にはtrueにするとよいです。
symfony 1.2.7とそれ以降でのみこの設定は利用可能です。
loggersfContextアクセサー: $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: ~
このファクトリは常に定義されますが、
logging_enabled設定がonにセットされている場合のみロギングが行われます。
levellevelオプションはロガーのレベルを定義します。
可能な値: EMERG、ALERT、CRIT、ERR、WARNING、NOTICE、INFOもしくはDEBUG
loggersloggersオプションは使用するロガーのリストを定義します。
リストは匿名ロガーファクトリの配列です。
組み込みのロガークラス: sfConsoleLogger、sfFileLogger、sfNoLogger、
sfStreamLoggerとsfVarLogger
controllersfContextアクセサー: $context->getController()
デフォルトコンフィギュレーション:
controller: class: sfFrontWebController
いくつかのファクトリ(view_cache、i18nとrouting)はそれぞれ設定で定義されている場合、効果のあるキャッシュオブジェクトを利用できます。
キャッシュオブジェクトの設定はすべてのファクトリと似ています。
cacheキーは匿名キャッシュファクトリを定義します。
ほかのファクトリと同じように、これはclassとparamエントリーをとります。
paramエントリーは与えられたキャッシュクラスで利用可能な任意のオプションをとります。
もっとも重要なのはprefixオプションで異なる環境/アプリケーション/プロジェクトのあいだでキャッシュを共有するもしくは分離できるようにします。
組み込みのキャッシュクラス: sfAPCCache、sfEAcceleratorCache、sfFileCache、sfMemcacheCache、sfNoCache、sfSQLiteCacheとsfXCachCache
If you find a typo or an error, please register and open a ticket.
If you need support or have a technical question, please post to the official user mailing-list.