在配置上一般有以下问题:

  1. 每个团队成员都会有自己的配置项,提交这样的配置项将会影响其他团队成员;
  2. 生产库密码和API密钥不应该出现在代码库中;
  3. 有多个服务器环境的情况:开发、测试、生产;每一种环境应该有自己的配置项;
  4. 每种情况都去定义所有的配置选项,是非常重复且要花大量时间去维护。

为了解决这些问题,yii引入了一种简单的环境概念。每一种环境被一套在environments目录中的文件所表示。init命令用于切换这些环境。它所做的就是从环境目录复制一切交给根目录下的所有应用程序

默认有2套环境:devprod。前者是开发环境,它包含所有的开发工具和调试启用;后者用于服务器部署,它的debug和开发工具都是关闭的。

典型的环境包含应用启动文件(比如index.php)和诸如以-local.php后缀的配置文件。这些或者是团队成员个人的配置(通常用于dev环境),或者是特定服务器的配置。比如,生产库链接就可能在prod环境的-local.php配置中。这些本地的配置文件被添加到.gitignore文件中,以至于不会被提交到源代码库中。

为了避免重复的配置覆盖对方,比如,frontend应用按以下的顺序读取配置:

  1. common/config/main.php
  2. common/config/main-local.php
  3. frontend/config/main.php
  4. frontend/config/main-local.php

Parameters按以下的顺序读取配置:

  1. common/config/params.php
  2. common/config/params-local.php
  3. frontend/config/params.php
  4. frontend/config/params-local.php

后面的配置文件会覆盖掉前面的配置文件

 

调用时,用以下命令,即可调用配置

yii\base\Application::params

该属性为一个数组,指定可以全局访问的参数,代替程序中硬编码的数字和字符,应用中的参数定义到一个单独的文件并随时可以访问是一个好习惯。 例如用参数定义缩略图的长宽如下:

[
    'params' => [
        'thumbnail.size' => [128, 128],
    ],
]

 

然后简单的使用如下代码即可获取到你需要的长宽参数:

$size = \Yii::$app->params['thumbnail.size'];
$width = \Yii::$app->params['thumbnail.size'][0];

 

这样就可以自定义一些参数,  或通过file_put_contents  来随时写入配置。

posted on 2016-01-30 14:02  日记本的回忆  阅读(6458)  评论(0编辑  收藏  举报