如何掌握和创造新环境
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何掌握和创造新环境
每个应用程序都是代码和一组配置的组合,这些配置规定了代码应该如何运行。配置可以定义正在使用的数据库,是否应该缓存某些内容,或者应该如何详细记录日志。在Syob娱乐下载mfony2中,“环境”的思想是指相同的代码库可以使用多种不同的配置运行。例如,dev
环境应该使用使开发容易和友好的配置,而刺激
环境应该使用一组针对速度优化的配置。
不同环境,不同配置文件
一个典型的Symfoob娱乐下载ny2应用程序开始于三个环境:dev
,刺激
,测试
.如前所述,每个“环境”只是表示一种使用不同配置执行相同代码库的方法。因此,每个环境加载自己的单独配置文件就不足为奇了。如果您使用YAML配置格式,则使用以下文件:
- 为
dev
环境:应用程序/配置/ config_dev.yml
- 为
刺激
环境:应用程序/配置/ config_prod.yml
- 为
测试
环境:应用程序/配置/ config_test.yml
类中默认使用的简单标准AppKernel
类:
12 3 4 5 6 7 8 9 10 11 12 13
/ / app / AppKernel.php/ /……类AppKernel扩展内核{/ /……公共函数registerContainerConfiguration(LoaderInterface$加载程序){$加载程序->负载(__DIR__.“/ config / config_”.$这->getEnvironment()。“.yml”);}}
如您所见,在加载Symfony2时,它使用ob娱乐下载给定的环境来确定加载哪个配置文件。这以一种优雅、强大和透明的方式实现了多个环境的目标。
当然,在现实中,每个环境只是与其他环境略有不同。通常,所有环境都将共享大量公共配置。打开“dev”配置文件,你可以看到这是如何简单而透明地完成的:
- YAML
- XML
- PHP
1 2 3
进口:-{资源:config.yml}#……
要共享公共配置,每个环境的配置文件只需首先从中央配置文件(config.yml
).然后,文件的其余部分可以通过覆盖个别参数而偏离默认配置。例如,默认情况下web_profiler
工具栏被禁用。然而,在dev
中的默认值即可激活工具栏dev
配置文件:
- YAML
- XML
- PHP
1 2 3 4 5 6 7
# app / config / config_dev.yml进口:-{资源:config.yml}web_profiler:工具栏:真正的#……
在不同环境中执行应用程序
要在每个环境中执行应用程序,请使用app.php
(对于刺激
环境)或app_dev.php
(对于dev
环境)前端控制器:
1 2
http://localhost/app.php -> *prod*环境http://localhost/app_dev.php -> *dev*环境
请注意
给出的url假设您的web服务器配置为使用web /
应用程序的目录作为其根目录。阅读更多安装Symfony2ob娱乐下载.
如果你打开其中一个文件,你很快就会看到每个文件使用的环境都被显式地设置了:
1 2 3 4 5 6 7 8 9
<?phprequire_once__DIR__.“/ . . / app / bootstrap_cache.php”;require_once__DIR__.“/ . . / app / AppCache.php”;使用ob娱乐下载\组件\HttpFoundation\请求;$内核=新AppCache (新AppKernel (“刺激”,假));$内核->处理请求(::createFromGlobals ())->send ();
如你所见,刺激
属性指定此环境将在刺激
环境。Syob娱乐下载mfony2应用程序可以通过使用这段代码并更改环境字符串在任何环境中执行。
请注意
的测试
环境是在编写功能测试时使用的,不能通过前端控制器直接在浏览器中访问。换句话说,与其他环境不同,这里没有app_test.php
前端控制器文件。
创造新环境
默认情况下,Symfony2ob娱乐下载应用程序有三个处理大多数情况的环境。当然,由于环境只不过是一个对应于一组配置的字符串,因此创建一个新环境非常容易。
例如,假设在部署之前,需要对应用程序进行基准测试。对应用程序进行基准测试的一种方法是使用接近生产环境的设置,但是使用Symfony2的设置ob娱乐下载web_profiler
启用。这允许Symfony2在ob娱乐下载基准测试时记录有关应用程序的信息。
实现这一目标的最好方法是通过一个新的环境,例如,基准
.首先创建一个新的配置文件:
- YAML
- XML
- PHP
1 2 3 4 5 6
# app / config / config_benchmark.yml进口:-{资源:config_prod.yml}框架:分析器:{only_exceptions:假}
通过这个简单的添加,应用程序现在支持名为基准
.
该新配置文件从刺激
环境并修改它。这保证了新环境与刺激
环境,除了这里显式做的任何更改。
因为您希望这个环境可以通过浏览器访问,所以还应该为它创建一个前端控制器。复制web / app.php
文件web / app_benchmark.php
并将环境编辑为基准
:
1 2 3 4 5 6 7 8 9
<?phprequire_once__DIR__.“/ . . / app / bootstrap.php”;require_once__DIR__.“/ . . / app / AppKernel.php”;使用ob娱乐下载\组件\HttpFoundation\请求;$内核=新AppKernel (“基准”,假);$内核->处理请求(::createFromGlobals ())->send ();
新环境现在可以通过以下途径访问:
1
http:/ / localhost / app_benchmark.php
请注意
有些环境,比如dev
环境,永远不会被普通公众在任何部署的服务器上访问。这是因为出于调试目的,某些环境可能会提供太多关于应用程序或底层基础设施的信息。为了确保这些环境无法访问,前端控制器通常通过控制器顶部的以下代码来保护外部IP地址:
1 2 3
如果(!in_array (@$_SERVER[“REMOTE_ADDR”),数组(“127.0.0.1”,“::1”))) {死(“您不允许访问此文件。检查”.basename (__FILE__).以获取更多信息。”);}
环境和缓存目录
ob娱乐下载Symfony2在许多方面利用了缓存:应用程序配置、路由配置、Twig模板等都被缓存到存储在文件系统文件中的PHP对象中。
默认情况下,这些缓存文件主要存储在app /缓存
目录中。但是,每个环境都会缓存自己的一组文件:
1 2
*dev*环境的App /cache/dev -缓存目录为*prod*环境的App /cache/prod -缓存目录
有时,在调试时,检查缓存文件以了解某些东西是如何工作的可能是有帮助的。这样做时,请记住查看您正在使用的环境的目录(最常见的是dev
在开发和调试时)。虽然它可以变化,但应用程序/ dev /缓存
目录包括以下内容:
appDevDebugProjectContainer.php
-缓存的“服务容器”,代表缓存的应用程序配置;appdevUrlGenerator.php
-从路由配置生成的PHP类,并在生成url时使用;appdevUrlMatcher.php
-用于路由匹配的PHP类-查看这里的编译正则表达式逻辑,用于匹配传入的url到不同的路由;树枝/
-这个目录包含所有缓存的Twig模板。
请注意
您可以轻松地更改目录位置和名称。欲了解更多信息,请阅读文章如何覆盖Symfony的默认目录ob娱乐下载结构.
要进一步
阅读关于如何设置服务容器的外部参数.