缘起
上面的几章都讲概念了,没有怎么讲到实践的东西,可能会有些枯燥,这很正常的,概念还是需要慢慢啃的,尤其是官网其他的部分,需要狠狠的啃。
什么,你啃不动了?看看官网旁边的那个在线用户吧。
你不啃的时候可是有这么多人在啃知识,如果不想以后被这打击,赶紧学!!!一如当年大学的我,每天夜里都抱着一本《算法导论》在啃一样,自律相当重要。
这一章我就带大伙了解一下前两章的概念有啥用,应用到实际,这是临门一脚,但是,我总是觉得概念的重要性至少要占70%,临门的一脚实践只占30%,望君能体会~
环境
操作系统:OS X EI Capitan
PHP版本:PHP 5.6.30
Yii版本:Yii 2.0
编辑器:PHPStorm
整体框架
首先,我们做这个框架的目的不是给我们自己看的,而是给广大以后会在这套框架中学习工作的人看的,所以,千万不能融入自己的思想,要尽可能的通俗易懂,符合一般的逻辑设计。
这张图是Yii提供给我们的源代码,首先,为了能够更能适合我们的业务框架,我决定来简单的修改一下这个文件结构。
首先,增加业务模块文件夹modules。用以区分每个不同的业务线。
增加全局基础类文件夹commons。用以定义application需要使用到的基础类。
在刚刚创建的Commons文件夹下面创建环境配置文件Config.php和全局方法文件Common.php
Config.php文件用以配置环境和获取相应环境的配置常量。
Common方法用以定义全局使用到的一些function。【注意,这边的Common只是用于保存全局的方法,不用做namespace】
Common里面比较重要的一个方法就是获取配置常量方法,后面在很多配置文件中会用到这个方法。
/** * 获取配置文件 * @param $key string min; * @param string $env $string dev:开发环境 * @return mixed */ function Config($key, $val = null) { return \app\commons\Config::get($key, $val); }
这边的Config就是我们刚才创建的Config.php文件,具体代码如下:
<?php namespace app\commons; /** * 主要实现不同文件配置查找扩展 file.param.param1 * * 文件.数组变量.变量 */ class Config { const ENV_SIT = 'sit'; const ENV_PRE = 'pre'; const ENV_PRD = 'prd'; private static $_config = null; /** * 初始化配置,永远加载prd, 默认加载sit * @param type $configPath * @param type $env * @throws \Exception */ public static function init($configPath = null, $env = self::ENV_SIT) { if (!is_dir($configPath)) { die('配置目录不存在'); } $paths[] = $configPath . DIRECTORY_SEPARATOR . self::ENV_PRD; switch ($env) { case self::ENV_PRE: $paths[] = $devconfig = $configPath . DIRECTORY_SEPARATOR . self::ENV_PRE; break; case self::ENV_SIT: if (is_dir($configPath . DIRECTORY_SEPARATOR . self::ENV_SIT)) { $paths[] = $configPath . DIRECTORY_SEPARATOR . self::ENV_SIT; } break; default: break; } static::$_config