配置文件原理
欧宝娱乐app下载地址Symfony配置文件基于一组公共原则,并共享一些公共属性。本节将详细描述它们,并作为描述YAML配置文件的其他部分的参考。
缓存
symfony中的所有配置文件都通过配置处理程序类缓存欧宝娱乐app下载地址到PHP文件中。当is_debug
设置设置为假
(例如刺激
environment), YAML文件只在第一个请求时被访问;PHP缓存用于后续请求。这意味着“繁重的”工作只在YAML文件第一次被解析和解释时完成一次。
提示
在dev
环境中,is_debug
设置为真正的
默认情况下,每当配置文件更改时就执行编译(symfony检查文件修改时间)。欧宝娱乐app下载地址
每个配置文件的解析和缓存由专门的配置处理程序类完成,在config_handler.yml
.
在下面几节中,当我们谈到“编译”时,它指的是YAML文件第一次转换为PHP文件并存储在缓存中。
提示
要强制重新加载配置缓存,可以使用缓存:清晰
任务:
$ PHP 欧宝娱乐app下载地址symfony缓存:clear——type=config
常量
配置文件:core_compile.yml
,factories.yml
,generator.yml
,databases.yml
,filters.yml
,view.yml
,autoload.yml
一些配置文件允许使用预定义的常量。常量使用占位符声明% XXX %
符号(其中XXX是大写键),并在“编译”时被它们的实际值替换。
配置设置
类中定义的任何设置都可以是常量settings.yml
配置文件。占位符键是一个大写的设置键名前缀SF_
:
日志:% SF_LOGGING_ENABLED %
在symf欧宝娱乐app下载地址ony编译配置文件时,它将替换所有出现的% SF_XXX %
占位符的值settings.yml
.在上面的例子中,它将取代SF_LOGGING_ENABLED
属性的值的占位符logging_enabled
定义在settings.yml
.
应用程序设置
属性中定义的设置app.yml
通过在密钥名称前加上APP_
.
特殊的常量
默认情况下,symfon欧宝娱乐app下载地址y根据当前前端控制器定义了四个常量:
常数 | 描述 | 配置方法 |
---|---|---|
SF_APP |
当前应用程序名称 | getApplication () |
SF_ENVIRONMENT |
当前环境名称 | getEnvironment () |
SF_DEBUG |
是否启用调试 | isDebug () |
SF_欧宝娱乐app下载地址SYMFONY_LIB_DIR |
symf欧宝娱乐app下载地址ony库目录 | get欧宝娱乐app下载地址SymfonyLibDir () |
目录
当您需要引用目录或文件路径而不进行硬编码时,常量也非常有用。欧宝娱乐app下载地址Symfony为公共项目和应用程序目录定义了许多常量。
层次结构的根是项目根目录,SF_ROOT_DIR
.所有其他常量都派生自这个根目录。
项目目录结构定义如下:
常量 | 默认值 |
---|---|
SF_APPS_DIR |
SF_ROOT_DIR /应用程序 |
SF_CONFIG_DIR |
SF_ROOT_DIR /配置 |
SF_CACHE_DIR |
SF_ROOT_DIR /缓存 |
SF_DATA_DIR |
SF_ROOT_DIR /数据 |
SF_LIB_DIR |
SF_ROOT_DIR / lib |
SF_LOG_DIR |
SF_ROOT_DIR /日志 |
SF_PLUGINS_DIR |
SF_ROOT_DIR /插件 |
SF_TEST_DIR |
SF_ROOT_DIR /测试 |
SF_WEB_DIR |
SF_ROOT_DIR /网络 |
SF_UPLOAD_DIR |
SF_WEB_DIR /上传 |
应用程序目录结构定义在SF_APPS_DIR / APP_NAME
目录:
常量 | 默认值 |
---|---|
SF_APP_CONFIG_DIR |
SF_APP_DIR /配置 |
SF_APP_LIB_DIR |
SF_APP_DIR / lib |
SF_APP_MODULE_DIR |
SF_APP_DIR /模块 |
SF_APP_TEMPLATE_DIR |
SF_APP_DIR /模板 |
SF_APP_I18N_DIR |
SF_APP_DIR / i18n |
最终,应用程序缓存目录结构定义如下:
常量 | 默认值 |
---|---|
SF_APP_BASE_CACHE_DIR |
SF_CACHE_DIR / APP_NAME |
SF_APP_CACHE_DIR |
SF_CACHE_DIR / APP_NAME / ENV_NAME |
SF_TEMPLATE_CACHE_DIR |
SF_APP_CACHE_DIR /模板 |
SF_I18N_CACHE_DIR |
SF_APP_CACHE_DIR / i18n |
SF_CONFIG_CACHE_DIR |
SF_APP_CACHE_DIR /配置 |
SF_TEST_CACHE_DIR |
SF_APP_CACHE_DIR /测试 |
SF_MODULE_CACHE_DIR |
SF_APP_CACHE_DIR /模块 |
环境意识
配置文件:settings.yml
,factories.yml
,databases.yml
,app.yml
一些sym欧宝娱乐app下载地址fony配置文件是环境感知的——它们的解释取决于当前的symfony环境。这些文件有不同的部分,这些部分定义了每个环境的配置应该有所不同。当创建一个新的应用程序时,symfony会为三个默认的symfon欧宝娱乐app下载地址y环境创建合理的配置:刺激
,测验
,dev
:
prod: #“prod”环境配置test: #“test”环境配置dev: #“dev”环境配置all: #所有环境的默认配置
当symf欧宝娱乐app下载地址ony需要来自配置文件的值时,它将在当前环境部分中找到的配置与所有
配置。特殊的所有
部分描述所有环境的默认配置。如果没有定义环境部分,symfony将返回到欧宝娱乐app下载地址所有
配置。
配置级联
配置文件:core_compile.yml
,autoload.yml
,settings.yml
,factories.yml
,databases.yml
,security.yml
,cache.yml
,app.yml
,filters.yml
,view.yml
一些配置文件可以定义为多个配置/
项目目录结构中包含的子目录。
当编译配置时,来自所有不同文件的值根据优先顺序合并:
- 模块配置(
PROJECT_ROOT_DIR /应用程序/ APP_NAME /模块/ MODULE_NAME / config / XXX.yml
) - 应用程序配置(
PROJECT_ROOT_DIR /应用程序/ APP_NAME / config / XXX.yml
) - 项目配置(
PROJECT_ROOT_DIR / config / XXX.yml
) - 插件中定义的配置(
PROJECT_ROOT_DIR /插件/ * / config / XXX.yml
) - symfony库中定义的默认配置(欧宝娱乐app下载地址
SF_LIB_DIR / config / XXX.yml
)
例如,settings.yml
在应用程序目录中定义的,继承自主目录中的配置集配置/
项目目录,并最终从框架本身包含的默认配置(lib / config / config / settings.yml
).
提示
当一个配置文件是环境敏感的,并且可以在多个目录下定义时,应用以下优先级列表:
- 模块
- 应用程序
- 项目
- 特定的环境
- 所有环境
- 默认的
本作品在创作共用署名相似共享3.0未移植许可许可下获得许可。