Les factories sont des objets du noyau nécessaires pour le framework au cours de la vie de toutes les
requêtes. Ils sont configurés dans le fichier de configuration factories.yml et
toujours accessible via l'objet sfContext :
// Récupère le factory de l'utilisateur sfContext::getInstance()->getUser();
Le fichier principal de configuration factories.yml pour une application se trouve dans
le répertoire apps/APP_NAME/config/.
Comme indiqué dans l'introduction, le fichier factories.yml est
sensible à l'environnement, bénéficie du
mécanisme de configuration en cascade
et peut inclure des constantes.
Le fichier de configuration factories.yml contient une liste de factory nommés :
FACTORY_1: # definition de factory 1 FACTORY_2: # definition de factory 2 # ...
Les noms de factory supportés sont : controller, logger, i18n, request,
response, routing, storage, user, view_cache, et
view_cache_manager.
Lorsque le sfContext initialise les factories, il lit le fichier factories.yml
pour le nom de la classe du factory (class) et les paramètres (param)
utilisés pour configurer l'objet factory :
FACTORY_NAME:
class: CLASS_NAME
param: { ARRAY OF PARAMETERS }
Être en mesure de personnaliser les factories signifie que vous pouvez utiliser une classe personnalisée pour les objets du noyau de symfony à la place de celui par défaut. Vous pouvez également modifier le comportement par défaut de ces classes en personnalisant les paramètres qui lui sont envoyés.
Si la classe du factory ne peut pas être chargées automatiquement, un chemin du fichier peut être défini et sera automatiquement inclus avant la création du factory :
FACTORY_NAME: class: CLASS_NAME file: ABSOLUTE_PATH_TO_FILE
note
Le fichier de configuration factories.yml est mis en cache dans un fichier PHP. Le
processus est automatiquement géré par la classe
sfFactoryConfigHandler.
Factories
request
Accesseur de sfContext : $context->getRequest()
Configuration par défaut :
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
L'option path_info_array définit le tableau global PHP qui sera utilisée pour
récupérer des informations. Sur certaines configurations, vous voudrez changer la
valeur par défaut SERVER par ENV.
path_info_key
L'option path_info_key définit la clé sous laquelle l'information PATH_INFO
peut être trouvée.
Si vous utilisez IIS avec un module de réécriture comme IIFR ou ISAPI, vous devez
changer cette valeur par HTTP_X_REWRITE_URL.
formats
L'option formats définit un tableau des extensions de fichiers et leur
Content-Type correspondant. Il est utilisé par le framework pour gérer automatiquement
le Content-Type de la réponse, basée sur l'extension de l'URI de la requête.
relative_url_root
L'option relative_url_root d2finit la partie de l'URL avant que le contrôleur
frontal. La plupart du temps, il est automatiquement détecté par le framework
et n'a pas besoin d'être changée.
response
Accesseur de sfContext : $context->getResponse()
Configuration par défaut :
response:
class: sfWebResponse
param:
logging: %SF_LOGGING_ENABLED%
charset: %SF_CHARSET%
send_http_headers: true
Configuration par défaut pour l'environnement test :
response:
class: sfWebResponse
param:
send_http_headers: false
send_http_headers
L'option send_http_headers spécifie si la réponse devrait envoyer des entêtes de réponse HTTP
ainsi que le contenu des réponses. Ce réglage est surtout
utile pour les tests, les entêtes sont envoyées avec la fonction PHP header() qui
envoie des avertissements si vous essayez d'envoyer des entêtes, après des sorties.
charset
L'option charset définit le jeu de caractères à utiliser pour la réponse. Par défaut,
il utilise le paramètre charset de settings.yml, qui est ce que vous voulez la plupart
du temps.
http_protocol
L'option http_protocol définit la version du protocole HTTP à utiliser pour
la réponse. Par défaut, il vérifie la valeur de $_SERVER['SERVER_PROTOCOL'] si elle est
disponible ou par défaut à HTTP/1.0.
user
Accesseur de sfContext : $context->getUser()
Configuration par défaut :
user:
class: myUser
param:
timeout: 1800
logging: %SF_LOGGING_ENABLED%
use_flash: true
default_culture: %SF_DEFAULT_CULTURE%
note
Par défaut, la classe myUser hérite de sfBasicSecurityUser,
qui peut être configurée dans le fichier de configuration
security.yml.
timeout
L'option timeout définit le timeout pour l'authentification des utilisateurs. Il n'est pas
lié au timeout de la session. Le réglage par défaut dés-authentifie
automatiquement un utilisateur au bout de 30 minutes d'inactivité.
Ce paramètre n'est utilisé que par les classes d'utilisateurs qui héritent de la
classe de base sfBasicSecurityUser, ce qui est le cas de la classe générée
myUser.
note
Pour éviter un comportement inattendu, la classe utilisateur force automatiquement la
durée de vie maximale pour le ramasse-miettes de session (session.gc_maxlifetime)
à une valeur plus grande que le timeout.
use_flash
L'option use_flash active ou désactive le composant flash.
default_culture
L'option default_culture définit la culture à utiliser par défaut pour un utilisateur qui
arrive sur le site pour la première fois. Par défaut, il utilise le
paramètre default_culture de settings.yml, qui est votre choix la plupart
du temps.
caution
Si vous changer le paramètre default_culture dans factories.yml ou dans
settings.yml, vous devez effacer les cookies dans votre navigateur pour vérifier
le résultat.
storage
Le factory storage est utilisé par le factory user pour maintenir les données utilisateur entre les requêtes HTTP.
Accesseur de sfContext : $context->getStorage()
Configuration par défaut :
storage:
class: sfSessionStorage
param:
session_name: symfony
Configuration par défaut pour l'environnement test :
storage:
class: sfSessionTestStorage
param:
session_path: %SF_TEST_CACHE_DIR%/sessions
auto_start
L'option auto_start active ou désactive la fonctionnalité de PHP
d'auto-démarrage de session (via la fonction session_start()).
session_name
L'option session_name définit le nom du cookie utilisé par symfony pour
stocker la session utilisateur. Par défaut, le nom est symfony, ce qui signifie que
toutes vos applications stockeront dans le même cookie (ainsi que l'authentification
et les autorisations correspondantes).
Les paramètres de session_set_cookie_params()
Le factory storage appelle la fonction
session_set_cookie_params()
avec la valeur des options suivantes :
session_cookie_lifetime: durée de vie du cookie de session, défini en secondes.session_cookie_path: Chemin sur le domaine où le cookie va fonctionner. Utilisez un simple slash (/) pour tous les chemins sur le domaine.session_cookie_domain: domaine de cookie, par exemplewww.php.net. Pour faire des cookies visible sur tous les sous-domaines alors le domaine doit être préfixé avec un point comme.php.net.session_cookie_secure: Si c'est àtruealors le cookie ne sera envoyée que sur des connexions sécurisées.session_cookie_httponly: Si c'est àtruealors PHP tentera d'envoyer le flaghttponlylors du paramétrage du cookie de session.
note
La description de chaque option provient de la description de la fonction
session_set_cookie_params() sur le site de PHP
session_cache_limiter
Si l'option session_cache_limiter est mise, la fonction PHP
session_cache_limiter()
est appelée et la valeur de l'option est passée en argument.
Options de la base de données spécifiques de stockage
Lorsque vous utilisez un stockage qui hérite de la classe sfDatabaseSessionStorage,
plusieurs options supplémentaires sont disponibles :
database: Le nom de la base de données (obligatoire)db_table: Le nom de la table (obligatoire)db_id_col: Le nom de la colonne de la clé primaire (sess_idpar défaut)db_data_col: Le nom de la colonne donnée (sess_datapar défaut)db_time_col: Le nom de la colonne temps (sess_timepar défaut)
view_cache_manager
Accesseur de sfContext : $context->getViewCacheManager()
Configuration par défaut :
view_cache_manager: class: sfViewCacheManager
caution
Ce factory est créé si le paramètre cache
est à on.
La configuration du manager de cache de la vue n'inclut pas de clé param. Cette
configuration est faite via le factory view_cache, qui définit l'objet
du cache sous-jacent utilisé par le manager de cache de la vue.
view_cache
Accesseur de sfContext : aucun (utilisé directement par le factory view_cache_manager)
Configuration par défaut :
view_cache:
class: sfFileCache
param:
automatic_cleaning_factor: 0
cache_dir: %SF_TEMPLATE_CACHE_DIR%
lifetime: 86400
prefix: %SF_APP_DIR%/template
caution
Ce factory est uniquement défini si le paramètre cache
est à on.
Le factory view_cache définit une classe de cache qui doit hériter de
sfCache (Voir la section Cache pour plus d'information).
i18n
Accesseur de sfContext : $context->getI18N()
Configuration par défaut :
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
Ce factory est uniquement défini si le paramètre i18n
est à on.
source
L'option source définit le type de conteneur pour les traductions.
Conteneurs intégrés : XLIFF, SQLite, MySQL, et gettext.
debug
L'option debug définit le mode de débogage. S'il est défini à on, les messages
non-traduits sont décorées avec un préfixe et un suffixe (voir ci-dessous).
untranslated_prefix
Le untranslated_prefix définit un préfixe à utiliser pour les messages non-traduits.
untranslated_suffix
Le untranslated_suffix définit un suffixe à utiliser pour les messages non-traduits.
cache
L'option cache définit un factory de cache anonyme pour être utilisé pour la mise
en cache des données i18n (voir la section cache pour plus d'informations).
routing
Accesseur de sfContext : $context->getRouting()
Configuration par défaut :
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
Par défaut : :
L'option variable_prefixes définit la liste des caractêres qui débutent
le nom d'une variable dans un modèle de route.
segment_separators
Par défaut : / et .
L'option segment_separators définit la liste des séparateurs de segment de la route.
La plupart du temps, vous ne voulez pas réécrire cette option pour l'ensemble
du routage, mais pour des routes spécifiques.
generate_shortest_url
Par défaut : true pour les nouveaux projets, false pour les projets mis à niveau
Si elle est à true, l'option generate_shortest_url dira au système de
routage de générer la route la plus courte possible. Réglez-le à false si vous voulez
que vos routes soient compatibles avec symfony 1.0 et 1.1.
extra_parameters_as_query_string
Par défaut : true pour les nouveaux projets, false pour les projets mis à niveau
Lorsque certains paramètres ne sont pas utilisés dans la génération d'une route,
l'extra_parameters_as_query_string permet à ces paramètres supplémentaires d'être
convertie en une chaîne de caractêre d'une query. Réglez-le à false pour revenir sur le comportement
de symfony 1.0 ou 1.1. Dans ces versions, les paramètres supplémentaires étaient tout simplement ignorés
par le système de routage.
cache
L'option cache L'option cache définit un factory de cache anonyme qui est utilisé pour la mise en cache
de la configuration du routage et des données (voir la section cache pour plus d'informations).
suffix
Par défaut : none
La valeur par défaut du suffixe à utiliser pour toutes les routes. Cette option est obsolète et n'est plus utile.
load_configuration
Par défaut : true
L'option load_configuration définit si les fichiers routing.yml doivent
être automatiquement chargés et analysés. Réglez le à false si vous souhaitez utiliser le
système de routage de symfony à l'extérieur d'un projet symfony.
lazy_routes_deserialize
Par défaut : false
Si le paramètre lazy_routes_deserialize est à true, il permet une relecture
paresseuse du cache de routage. Il peut améliorer les performances de vos
applications si vous avez un grand nombre de route et si la plupart des routes
correspondent aux premières. Il est fortement conseillé de tester le paramètre avant
de le déployer en production, car il peut nuire sur les performances dans certaines
circonstances.
caution
Ce paramètre est seulement disponible pour symfony 1.2.7 et plus.
lookup_cache_dedicated_keys
Par défaut : false
Le paramètre lookup_cache_dedicated_keys détermine comment le cache de routage est
construit. Lorsqu'il est positionné à false, le cache est stocké comme une grande valeur. Lorsqu'il
est positionné à true chaque route a son propre stockage de cache. Ce paramètre est un
paramètre d'optimisation de performance.
En règle générale, la valeur false est mieux lorsque vous utilisez une classe de cache
basée sur un fichier (sfFileCache par exemple), et la valeur true est mieux
lorsque vous utilisez une classe de cache basée sur la mémoire (sfAPCCache par exemple).
caution
Ce paramètre est seulement disponible pour symfony 1.2.7 et plus.
logger
Accesseur de sfContext : $context->getLogger()
Configuration par défaut :
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
Configuration par défaut pour l'environnement de prod :
logger:
class: sfNoLogger
param:
level: err
loggers: ~
caution
Ce factory est toujours défini, mais la journalisation se produit que si
le paramètre logging_enabled est à on.
level
L'option level définit le niveau du journal.
Valeurs possibles : EMERG, ALERT, CRIT, ERR, WARNING, NOTICE,
INFO, ou DEBUG.
loggers
L'option loggers définit la liste des journaux à utiliser. La liste est un tableau de
factory de journaux anonymes.
Les classes de journaux intégrées : sfConsoleLogger, sfFileLogger, sfNoLogger,
sfStreamLogger, et sfVarLogger.
controller
Accesseur de sfContext : $context->getController()
Configuration par défaut :
controller: class: sfFrontWebController
Les factories de cache anonyme
Plusieurs factories (view_cache, i18n, et routing) peuvent profiter
d'un objet du cache s'il est défini dans leur configuration. La configuration
de l'objet du cache est similaire pour toutes les factories. La clé de cache définit
un factory de cache anonyme. Comme tout factory, il prend une class et une
entrée param. L'entrée param peut prendre n'importe quelle option disponible pour la
classe du cache.
L'option prefix est la plus importante car elle permet de partager ou de
séparer un cache entre différents environnements/applications/projets.
Les classes de cache intégrées : sfAPCCache, sfEAcceleratorCache, sfFileCache,
sfMemcacheCache, sfNoCache, sfSQLiteCache, et sfXCacheCache.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.