The factories.yml Configuration File
Factories are core objects needed by the framework during the life of any request. They are configured in the factories.yml configuration file and always accessible via the sfContext object:
// get the user factory sfContext::getInstance()->getUser();
The main factories.yml configuration file for an application can be found in the apps/APP_NAME/config/ directory.
As discussed in the introduction, the factories.yml file is environment-aware, benefits from the configuration cascade mechanism, and can include constants.
The factories.yml configuration file contains a list of named factories:
---
FACTORY_1:
# definition of factory 1
FACTORY_2:
# definition of factory 2
# ...
The supported factory names are: controller, logger, i18n, request, response, routing, storage, user, view_cache, and view_cache_manager.
When the sfContext initializes the factories, it reads the factories.yml file for the class name of the factory (class) and the parameters (param) used to configure the factory object:
---
FACTORY_NAME:
class: CLASS_NAME
param: { ARRAY OF PARAMETERS }
Being able to customize the factories means that you can use a custom class for symfony core objects instead of the default one. You can also change the default behavior of these classes by customizing the parameters sent to them.
If the factory class cannot be autoloaded, a file path can be defined and will be automatically included before the factory is created:
---
FACTORY_NAME:
class: CLASS_NAME
file: ABSOLUTE_PATH_TO_FILE
The
factories.ymlconfiguration file is cached as a PHP file; the process is automatically managed by the ~sfFactoryConfigHandler~ class.
Factories
mailer
sfContext Accessor: $context->getMailer()
Default configuration:
---
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:
Default configuration for the test environment:
---
mailer:
param:
delivery_strategy: none
Default configuration for the dev environment:
---
mailer:
param:
delivery_strategy: none
~charset~
The charset option defines the charset to use for the mail messages. By default, it uses the charset setting from settings.yml.
~delivery_strategy~
The delivery_strategy option defines how email messages are delivered by the mailer. Four strategies are available by default, which should suit all the common needs:
-
realtime: Messages are sent in realtime. -
single_address: Messages are sent to a single address. -
spool: Messages are stored in a queue. -
none: Messages are simply ignored.
~delivery_address~
The delivery_address option defines the recipient of all message when the delivery_strategy is set to single_address.
~spool_class~
The spool_class option defines the spool class to use when the delivery_strategy is set to spool:
-
~
Swift_FileSpool~: Messages are stored on the filesystem. -
~
Swift_DoctrineSpool~: Messages are stored in a Doctrine model. -
~
Swift_PropelSpool~: Messages are stored in a Propel model.
When the spool is instantiated, the ~
spool_arguments~ option is used as the constructor arguments.
~spool_arguments~
The spool_arguments option defines the constructor arguments of the spool. Here are the options available for the built-in queues classes:
-
Swift_FileSpool:- The absolute path of the queue directory (messages are stored in this directory)
-
Swift_DoctrineSpool:-
The Doctrine model to use to store the messages (
MailMessageby default) -
The column name to use for message storage (
messageby default) -
The method to call to retrieve the messages to send (optional).
-
-
Swift_PropelSpool:-
The Propel model to use to store the messages (
MailMessageby default) -
The column name to use for message storage (
messageby default) -
The method to call to retrieve the messages to send (optional). It receives the current Criteria as an argument.
-
The configuration below shows a typical configuration for a Doctrine spool:
---
# configuration in factories.yml
mailer:
class: sfMailer
param:
delivery_strategy: spool
spool_class: Swift_DoctrineSpool
spool_arguments: [ MailMessage, message, getSpooledMessages ]
~transport~
The transport option defines the transport to use to actually send email messages.
The class setting can be any class that implements from Swift_Transport, and three are provided by default:
-
~
Swift_SmtpTransport~: Uses a SMTP server to send messages. -
~
Swift_SendmailTransport~: Usessendmailto send messages. -
~
Swift_MailTransport~: Uses the native PHPmail()function to send messages. -
~
Swift_NullTransport~: Disables the transport altogether (useful with thenonestrategy to bypass the connection to the mail server).
You can further configure the transport by setting the param setting. The "Transport Types" section of the Swift Mailer official documentation describes all you need to know about the built-in transport classes and their different parameters.
request
sfContext Accessor: $context->getRequest()
Default configuration:
---
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~
The path_info_array option defines the global PHP array that will be used to retrieve information. On some configurations you may want to change the default SERVER value to ENV.
~path_info_key~
The path_info_key option defines the key under which the PATH_INFO information can be found.
If you use ~IIS~ with a rewriting module like IIFR or ISAPI, you may need to change this value to HTTP_X_REWRITE_URL.
~formats~
The formats option defines an array of file extensions and their corresponding Content-Types. It is used by the framework to automatically manage the Content-Type of the response, based on the request URI extension.
~relative_url_root~
The relative_url_root option defines the part of the URL before the front controller. Most of the time, this is automatically detected by the framework and does not need to be changed.
response
sfContext Accessor: $context->getResponse()
Default configuration:
---
response:
class: sfWebResponse
param:
logging: %SF_LOGGING_ENABLED%
charset: %SF_CHARSET%
send_http_headers: true
Default configuration for the test environment:
---
response:
class: sfWebResponse
param:
send_http_headers: false
~send_http_headers~
The send_http_headers option specifies whether the response should send HTTP response headers along with the response content. This setting is mostly useful for testing, as headers are sent with the header() PHP function which sends warnings if you try to send headers after some output.
~charset~
The charset option defines the charset to use for the response. By default, it uses the charset setting from settings.yml, which is what you want most of the time.
~http_protocol~
The http_protocol option defines the HTTP protocol version to use for the response. By default, it checks the $_SERVER['SERVER_PROTOCOL'] value if available or defaults to HTTP/1.0.
user
sfContext Accessor: $context->getUser()
Default configuration:
---
user:
class: myUser
param:
timeout: 1800
logging: %SF_LOGGING_ENABLED%
use_flash: true
default_culture: %SF_DEFAULT_CULTURE%
By default, the
myUserclass inherits fromsfBasicSecurityUser, which can be configured in thesecurity.ymlconfiguration file.
~timeout~
The timeout option defines the timeout for user authentication. It is not related to the session timeout. The default setting automatically unauthenticates a user after 30 minutes of inactivity.
This setting is only used by user classes that inherit from the sfBasicSecurityUser base class, which is the case of the generated myUser class.
To avoid unexpected behavior, the user class automatically forces the maximum lifetime for the session garbage collector (
session.gc_maxlifetime) to be greater than the timeout.
~use_flash~
The use_flash option enables or disables the flash component.
~default_culture~
The default_culture option defines the default culture to use for a user who comes to the site for the first time. By default, it uses the default_culture setting from settings.yml, which is what you want most of the time.
If you change the ~
default_culture~ setting infactories.ymlorsettings.yml, you need to clear your cookies in your browser to check the result.
storage
The storage factory is used by the user factory to persist user data between HTTP requests.
sfContext Accessor: $context->getStorage()
Default configuration:
---
storage:
class: sfSessionStorage
param:
session_name: symfony
Default configuration for the test environment:
---
storage:
class: sfSessionTestStorage
param:
session_path: %SF_TEST_CACHE_DIR%/sessions
~auto_start~
The auto_start option enables or disables the session auto-starting feature of PHP (via the session_start() function).
~session_name~
The session_name option defines the name of the cookie used by symfony to store the user session. By default, the name is symfony, which means that all your applications share the same cookie (and as such the corresponding authentication and authorizations).
session_set_cookie_params() parameters
The storage factory calls the session_set_cookie_params() function with the value of the following options:
- ~
session_cookie_lifetime~: Lifetime of the session cookie, defined in seconds. - ~
session_cookie_path~: Path on the domain where the cookie will work. Use a single slash (/) for all paths on the domain. - ~
session_cookie_domain~: Cookie domain, for examplewww.php.net. To make cookies visible on all subdomains then the domain must be prefixed with a dot like.php.net. - ~
session_cookie_secure~: Iftruecookie will only be sent over secure connections. - ~
session_cookie_httponly~: If set totruethen PHP will attempt to send thehttponlyflag when setting the session cookie.
The description of each option comes from the
session_set_cookie_params()function description on the PHP website
~session_cache_limiter~
If the session_cache_limiter option is set to null (which is the default), the session cache limiter value will be set by PHP automatically according to the php.ini configuration file. For all other values, PHP's session_cache_limiter() function is called and the option value is passed as an argument.
Database Storage-specific Options
When using a storage that inherits from the sfDatabaseSessionStorage class, several additional options are available:
- ~
database~: The database name (required) - ~
db_table~: The table name (required) - ~
db_id_col~: The primary key column name (sess_idby default) - ~
db_data_col~: The data column name (sess_databy default) - ~
db_time_col~: The time column name (sess_timeby default)
view_cache_manager
sfContext Accessor: $context->getViewCacheManager()
Default configuration:
---
view_cache_manager:
class: sfViewCacheManager
param:
cache_key_use_vary_headers: true
cache_key_use_host_name: true
This factory is only created if the
cachesetting is set totrue.
Most configuration of this factory is done via the view_cache factory, which defines the underlying cache object used by the view cache manager.
~cache_key_use_vary_headers~
The cache_key_use_vary_headers option specifies if the cache keys should include the vary headers part. In practice, it says if the page cache should be HTTP header dependent, as specified in vary cache parameter (default value: true).
~cache_key_use_host_name~
The cache_key_use_host_name option specifies if the cache keys should include the host name part. In practice, it says if page cache should be hostname dependent (default value: true).
view_cache
sfContext Accessor: none (used directly by the view_cache_manager factory)
Default configuration:
---
view_cache:
class: sfFileCache
param:
automatic_cleaning_factor: 0
cache_dir: %SF_TEMPLATE_CACHE_DIR%
lifetime: 86400
prefix: %SF_APP_DIR%/template
This factory is only defined if the
cachesetting is set totrue.
The view_cache factory defines a cache class that must inherit from sfCache (see the Cache section for more information).
i18n
sfContext Accessor: $context->getI18N()
Default configuration:
---
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
This factory is only defined if the
i18nsetting is set totrue.
~source~
The source option defines the container type for translations.
Built-in containers: XLIFF, SQLite, MySQL, and gettext.
~debug~
The debug option sets the debugging mode. If set to true, un-translated messages are decorated with a prefix and a suffix (see below).
~untranslated_prefix~
The untranslated_prefix defines a prefix to used for un-translated messages.
~untranslated_suffix~
The untranslated_suffix defines a suffix to used for un-translated messages.
~cache~
The cache option defines a anonymous cache factory to be used for caching i18n data (see the Cache section for more information).
routing
sfContext Accessor: $context->getRouting()
Default configuration:
---
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~
Default: :
The variable_prefixes option defines the list of characters that starts a variable name in a route pattern.
~segment_separators~
Default: / and .
The segment_separators option defines the list of route segment separators. Most of the time, you don't want to override this option for the whole routing, but for specific routes.
~generate_shortest_url~
Default: true for new projects, false for upgraded projects
If set to true, the generate_shortest_url option will tell the routing system to generate the shortest route possible. Set it to false if you want your routes to be backward compatible with symfony 1.0 and 1.1.
~extra_parameters_as_query_string~
Default: true for new projects, false for upgraded projects
When some parameters are not used in the generation of a route, the extra_parameters_as_query_string allows those extra parameters to be converted to a query string. Set it to false to fallback to the behavior of symfony 1.0 or 1.1. In those versions, the extra parameters were just ignored by the routing system.
~cache~
Default: none
The cache option defines an anonymous cache factory to be used for caching routing configuration and data (see the Cache section for more information).
~suffix~
Default: none
The default suffix to use for all routes. This option is deprecated and is not useful anymore.
~load_configuration~
Default: true
The load_configuration option defines whether the routing.yml files must be automatically loaded and parsed. Set it to false if you want to use the routing system of symfony outside of a symfony project.
~lazy_routes_deserialize~
Default: false
If set to true, the lazy_routes_deserialize setting enables lazy unserialization of the routing cache. It can improve the performance of your applications if you have a large number of routes and if most matching routes are among the first ones. It is strongly advised to test the setting before deploying to production, as it can harm your performance in certain circumstances.
~lookup_cache_dedicated_keys~
Default: false
The lookup_cache_dedicated_keys setting determines how the routing cache is constructed. When set to false, the cache is stored as one big value; when set to true, each route has its own cache store. This setting is a performance optimization setting.
As a rule of thumb, setting this to false is better when using a file-based cache class (sfFileCache for instance), and setting it to true is better when using a memory-based cache class (sfAPCCache for instance).
logger
sfContext Accessor: $context->getLogger()
Default configuration:
---
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
Default configuration for the prod environment:
---
logger:
class: sfNoLogger
param:
level: err
loggers:
If you don't use the sfAggregateLogger, don't forget to specify a null value for the loggers parameter.
This factory is always defined, but the logging only occurs if the
logging_enabledsetting is set totrue.
~level~
The level option defines the level of the logger.
Possible values: EMERG, ALERT, CRIT, ERR, WARNING, NOTICE, INFO, or DEBUG.
~loggers~
The loggers option defines a list of loggers to use. The list is an array of anonymous logger factories.
Built-in logger classes: sfConsoleLogger, sfFileLogger, sfNoLogger, sfStreamLogger, and sfVarLogger.
controller
sfContext Accessor: $context->getController()
Default configuration:
---
controller:
class: sfFrontWebController
Anonymous Cache Factories
Several factories (view_cache, i18n, and routing) can take advantage of a cache object if defined in their configuration. The configuration of the cache object is similar for all factories. The cache key defines an anonymous cache factory. Like any other factory, it takes a class and a param entries. The param entry can take any option available for the given cache class.
The prefix option is the most important one as it allows to share or separate a cache between different environments/applications/projects.
Built-in cache classes: sfAPCCache, sfEAcceleratorCache, sfFileCache, sfMemcacheCache, sfNoCache, sfSQLiteCache, and sfXCacheCache.
インデックス
Document Index
関連ページリスト
Related Pages
Introduction
The YAML Format
Configuration File Principles
The settings.yml Configuration File
The factories.yml Configuration File
The generator.yml Configuration File
The databases.yml Configuration File
The security.yml Configuration File
The cache.yml Configuration File
The routing.yml Configuration File
The app.yml Configuration File
The filters.yml Configuration File
The view.yml Configuration File
Other Configuration Files
Events
Tasks
Appendix A - License
日本語ドキュメント
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) ビューの作成
