如何组织配置文件

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何组织配置文件

默认的Symfony标准ob娱乐下载版定义了三个执行环境被称为dev,刺激测试。一个环境只是代表了一个具有不同配置方式执行相同的代码库。

为了为每个环境选择配置文件加载,Symfony执行ob娱乐下载registerContainerConfiguration ()的方法AppKernel类:

1 2 3 4 5 6 7 8 9 10 11 12 13
/ / app / AppKernel.php使用ob娱乐下载\组件\HttpKernel\内核;使用ob娱乐下载\组件\配置\加载程序\LoaderInterface;AppKernel扩展内核{/ /……公共函数registerContainerConfiguration(LoaderInterface美元加载程序){美元加载程序- >负载(美元- >getRootDir ()。“/ config / config_”美元- >getEnvironment ()。“.yml”);}}

这种方法加载应用程序/配置/ config_dev.yml文件dev环境等等。反过来,这个文件加载位于常见的配置文件应用程序/配置/ config.yml。因此,默认Symfony的配置文件标准版遵循这个结构:ob娱乐下载

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

                
                 配置/ /├─app /│└─│├─配置。yml│├─config_dev。yml│├─config_prod。yml│├─config_test。yml│├─参数。yml│├─参数。yml.dist │ ├─ routing.yml │ ├─ routing_dev.yml │ └─ security.yml ├─ src/ ├─ vendor/ └─ web/< /your-project>

这个默认结构为简单起见,选择了——一个文件/环境。但随着其他Symfony特性,您可ob娱乐下载以定制它,以更好地满足您的需求。下面的部分解释不同的方式来组织您的配置文件。为了简化示例,只有dev刺激环境考虑。

不同的目录/环境

而不是作为后缀的文件_dev_prod,这种技术组下的所有相关的配置文件目录名称相同的环境:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

                 
                  配置/ /├─app /│└─│├─常见/││├─配置。yml││├─参数。yml││├─路由。yml││└─安全。yml│├─dev /││├─配置。yml││├─参数。yml││├─路由。yml││└─安全。yml│└─刺激/│├─配置。yml│├─参数。yml│├─路由。yml│└─安全。yml├─src /├─供应商/└─web /

这项工作,改变的代码registerContainerConfiguration ()方法:

1 2 3 4 5 6 7 8 9 10 11 12 13
/ / app / AppKernel.php使用ob娱乐下载\组件\HttpKernel\内核;使用ob娱乐下载\组件\配置\加载程序\LoaderInterface;AppKernel扩展内核{/ /……公共函数registerContainerConfiguration(LoaderInterface美元加载程序){美元加载程序- >负载(美元- >getRootDir ()。“/ config /”美元- >getEnvironment ()。' / config.yml ');}}

然后,确保每一个config.yml文件加载配置文件的其余部分,包括常见的文件。例如,这将是所需的进口app / config / dev / config.yml文件:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
# app / config / dev / config.yml进口:- - - - - -{资源:“. . /共同/ config.yml”}- - - - - -{资源:“parameters.yml”}- - - - - -{资源:“security.yml”}#……

请注意

由于参数的方式解决,你不能使用它们来构建路径动态进口。这意味着像以下不工作:

  • YAML
  • XML
  • PHP
1 2 3
# app / config / config.yml进口:- - - - - -{资源:' % kernel.root_dir % / parameters.yml '}

语义配置文件

不同的组织策略可能需要有大型的复杂应用程序的配置文件。例如,您可以创建一个文件每包和几个文件来定义应用程序服务:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24

                 
                  配置/ /├─app /│└─│├─包/││├─bundle1。yml││├─bundle2。yml││├─……││└─bundleN。yml│├─环境/││├─常见。yml││├─dev.yml││└─prod.yml│├─路由/││├─常见。yml││├─dev.yml││└─prod.yml│└─服务/│├─前端。yml│├─后端。yml│├─……│└─安全。yml├─src /├─供应商/└─web /

再一次,改变的代码registerContainerConfiguration ()方法让Symfony意识到新文ob娱乐下载件的组织:

1 2 3 4 5 6 7 8 9 10 11 12 13
/ / app / AppKernel.php使用ob娱乐下载\组件\HttpKernel\内核;使用ob娱乐下载\组件\配置\加载程序\LoaderInterface;AppKernel扩展内核{/ /……公共函数registerContainerConfiguration(LoaderInterface美元加载程序){美元加载程序- >负载(美元- >getRootDir ()。的/ config /环境/美元- >getEnvironment ()。“.yml”);}}

同样的技术在前一节中解释后,一定要从每个主文件(进口相应的配置文件common.yml,dev.ymlprod.yml)。

先进的技术

ob娱乐下载Symfony加载配置文件使用配置组件,它提供了一些高级的特性。

混合和匹配的配置格式

配置文件可以导入文件定义与其他任何内置的配置格式(.yml,. xml,. php,. ini):

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
# app / config / config.yml进口:- - - - - -{资源:“parameters.yml”}- - - - - -{资源:“xml”}- - - - - -{资源:“security.yml”}- - - - - -{资源:“legacy.php”}#……

谨慎

IniFileLoader解析文件内容使用parse_ini_file函数。因此,您可以只设置参数字符串值。使用另一个加载器如果您想要使用其他数据类型(如布尔、整数、等等)。

如果您使用任何其他配置格式,你必须定义自己的类加载器扩展它FileLoader。当配置值是动态的,您可以使用PHP配置文件来执行自己的逻辑。此外,您可以定义您自己的服务负载配置从数据库或web服务。

全局配置文件

一些系统管理员可能倾向于敏感参数存储在文件以外的项目目录。想象一下,你的网站的数据库证书存储在/etc/sites/mysite.com/parameters.yml文件。加载这个文件很简单,显示完整的文件路径在导入从任何其他配置文件:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
# app / config / config.yml进口:- - - - - -{资源:“parameters.yml”}- - - - - -{资源:“/mysite.com/parameters.yml' / etc /网站}#……

大多数时候,本地开发人员不会有相同的文件在生产服务器上存在。出于这个原因,配置组件提供了ignore_errors选择默默地丢弃错误加载文件时不存在:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
# app / config / config.yml进口:- - - - - -{资源:“parameters.yml”}- - - - - -{资源:“/mysite.com/parameters.yml' / etc /网站,ignore_errors:真正的}#……

如您所见,有很多方法来组织你的配置文件。你可以选择其中一个,甚至创建您自己的自定义的方式组织文件。感觉不受限于带有Symfony的标准版。ob娱乐下载更多的定制,请参阅“如何覆盖Symfony的默认目录ob娱乐下载结构”。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。