将配置部分移到单独的文件中
在基础应用模板中,我们分离了web和console配置文件。通常情况下,我们可以在两个配置文件中设置一些应用组件。
而且,当我们开发一个大型应用时,我们可能面临一些不方便的问题。例如,如果我们需要调整一些设置,我们很可能需要在web应用配置和console应用配置中做多次重复修改。
准备
按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的yii2-app-basic
应用。
如何做…
- 打开
config/web.php
文件,添加urlManager
部分到组件配置中:
'components' => [
// ...
'db' => require(__DIR__ . '/db.php'),
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'<_c:[\w\-]+>/<id:\d+>' => '<_c>/view',
'<_c:[\w\-]+/<_a:[\w\-]+>>/<id:\d+>' => '<_c>/<_a>',
'<_c:[\w\-]+>' => '<_c>/index',
],
],
],
- 创建
config/urlRules.php
文件,并将规则数组移到这里边:
<?php
return [
'' => 'site/index',
'<_c:[\w\-]+>/<id:\d+>' => '<_c>/view',
'<_c:[\w\-]+/<_a:[\w\-]+>>/<id:\d+>' => '<_c>/<_a>',
'<_c:[\w\-]+>' => '<_c>/index',
];
- 使用这个文件替换这个规则数组:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => require(__DIR__ . '/urlRules.php'),
],
工作原理…
先前的技术依赖于这样的事实,Yii配置文件是原生的PHP文件,里边有一个数组:
<?php return [...];
我们看require
结构:
'rules' => require(__DIR__ . '/urlRules.php'),
当我们使用这个的时候,它会读取指定的文件,并且,如果文件中有一个return
语句,它会返回一个值。
因此,将主配置文件中的一部分移到一个单独的文件中,需要创建一个新的文件,将配置的一部分移到return
语句的后边,并在主配置文件中使用require
。
它分离了应用需要的一些常用配置部分(在我们的例子中,有web应用和console应用),我们可以使用require
将他们移到一个单独的文件中。
参考
欲了解更多关于require
和include
语句,参考如下URL: