多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
环境的目录结构 首先了解Yii各环境文件。前面我们讲到,每个Yii环境就是一组配置文件, 包含了入口脚本 index.php 和各类配置文件。 其实他们都放在 /path/to/digpage.com/environments 目录下面,我们看看这个目录都有哪些东西 ** dev** │ ├── backend │ │ ├── config │ │ │ ├── main-local.php │ │ │ └── params-local.php │ │ └── web │ │ ├── index-test.php │ │ └── index.php │ ├── common │ │ └── config │ │ ├── main-local.php │ │ └── params-local.php │ ├── console │ │ └── config │ │ ├── main-local.php │ │ └── params-local.php │ ├── frontend │ │ ├── config │ │ │ ├── main-local.php │ │ │ └── params-local.php │ │ └── web │ │ ├── index-test.php │ │ └── index.php │ └── yii ├── **prod** │ ├── backend │ │ ├── config │ │ │ ├── main-local.php │ │ │ └── params-local.php │ │ └── web │ │ └── index.php │ ├── common │ │ └── config │ │ ├── main-local.php │ │ └── params-local.php │ ├── console │ │ └── config │ │ ├── main-local.php │ │ └── params-local.php │ ├── frontend │ │ ├── config │ │ │ ├── main-local.php │ │ │ └── params-local.php │ │ └── web │ │ └── index.php │ └── yii └── index.php 环境目录下的 index.php 并不是通常所说的web入口脚本,它其实是个定义文件。 定义了可以使用的环境,打开这个文件看一眼: return [ 'Development' => [ 'path' => 'dev', 'setWritable' => [ 'backend/runtime', 'backend/web/assets', 'frontend/runtime', 'frontend/web/assets', ], 'setExecutable' => [ 'yii', ], 'setCookieValidationKey' => [ 'backend/config/main-local.php', 'frontend/config/main-local.php', ], ], 'Production' => [ 'path' => 'prod', 'setWritable' => [ 'backend/runtime', 'backend/web/assets', 'frontend/runtime', 'frontend/web/assets', ], 'setExecutable' => [ 'yii', ], 'setCookieValidationKey' => [ 'backend/config/main-local.php', 'frontend/config/main-local.php', ], ], ]; · path 指明了当前环境所对应的配置文件存放目录。如 Productions 环境对应的目录为 prod 。 · setWritable 指明了需要 init 脚本设定为可写模式的目录,这些目录Yii应用在运行时会写入。 · setExecutable 指明了要将哪个文件设为可执行。这个文件就是命令行应用的入口文件了。 · setCookieValidationsKey 指明了向哪个文件写入 cookieValidationKey 配置项。 对于分散于各处的 web 和 config 目录而言,它们也是有共性的。 · 凡是 web 目录,存放的都是web应用的入口脚本,一个 index.php 和一个测试版本的 index-test.php · 凡是 config 目录,存放的,都是本地配置信息 main-local.php 和 params-local.php **环境配置的生效规则** 上面讲到的配置文件有很多,有前台、后台、命令行和common的,有带local的、不带local的, 有params、main等,看起来好复杂的样子。那么一个环境发生作用时,这些文件是怎么个顺序呢? 这要看看 入口文件index.php 部分的内容,但总的原则是: · **前台、后台和命令行的配置文件间,互不干扰,各管各的。没有先后顺序一说。** 因为Yii在任意时间,要么是在跑前台,要么是在跑后台。还记得么?他们是不同的应用,他们是独立的。 但是,这里有个common,通用于前台、后台等。common的内容被前台或后台的覆盖。 · local和不带local的。明显的,local的是本地配置文件,不带local的是团队间通用的配置。 因此,local的覆盖不带local的。 · params, main。这2类文件表示的配置内容并不重叠,他们逻辑上不存在谁覆盖谁的问题。 如果看看源代码,可以发现,params只是main配置的一部分。 而main的内容,是作为参数传递给应用的构造函数。 因此,这两者不存在谁覆盖谁的问题。