yii2.0学习及变化比较(一)
ok,因为工作需要因此直接开始使用yii2,因此将开始yii2的代码分析及比较,yii1的分析依旧会继续。
yii init 文档
这是一个命令行下的工具
首先他通过读取url argv来获取两种不同的配置,即开发和生产两个环境
然后通过php读取stdn获取用户选择,复制环境配置到网站根目录
比起1版本,更加的人性化.我们可以根据自己的需要自定义化环境.
依旧是他的入口文件yii.php,没有变化
和之前不同的是,他这里对环境进行了配置,同时定义了输入输出流
而后加载了一个自动加载类,和boostrap。
框架的运行部分,将原本由核心文件控制的application的配置独立出来手动加载.
但是因为原来的架构原因,基本上使得外表没有多大的变化
看看他的自动加载文件,原来这里是实现了psr的规范化加载。
然后通过一个composer自动加载文件,其中又加载了另外一个类的自动加载函数作为临时加载函数
同时初始化了psr4 namespace class 调用那个类加载
最后对于一个文件进行便利,然后返回文件名,不过没明白这里是什么意思
这里是yii对于Psr0的实现部分,其他详细的部分以后再看
进入yii文件,这是一个继承类,目的是让我们生成自己的外观配置,
接着重置了自动类加载函数,
同时包含了一个di容器和一个类信息hash表
整个文件除了移除了application的控制之外,就是更改了创建组件的名称,改为了object,更加的形象和贴切,同时提高了yii的兼容性和拓展性.
application部分的构造函数进行了简化,同时更加的形象贴切,首先设置句柄,使用了Instance这个通用术语,更加明确的将yii作为桌面开发在web上的一种延伸。
而后又新使用了状态模式,又将原来的注册组件的部分放在了preinit中,
Preinit部分除了原来的basepath验证之外,更增加了其他的验证,同时将组件信息的加载简化
接着设置了错误处理函数,这里没有对异常进行处理.
接着直接调用了他的祖类components,这里这里Module没有直接继承components,而是添加了serverlocal继承,目的是给components添加一个依赖注入,降低耦合,这里可以看做一个装饰器的模式的使用。