将配置部分移到单独的文件中
在基础应用模板中,我们分离了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文件,并将规则数组移到这里边:
<?phpreturn ['' => '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:
