yii2和laravel框架简单对比

背景和目的

作为一个PHP开发,需要一篇简单的内容来表述自己能在较短的时间内上手一个框架;这儿对比的是yii2框架,基准是laravel框架;功能是简单的看yii2文档内容和自己对laravel的认识对比得到粗浅结果。

开始

1. 整体架构的不同

yii2的入口脚本代码
yii2和laravel框架简单对比_第1张图片
laravel的入口脚本文件
yii2和laravel框架简单对比_第2张图片
yii2的入口部分,引用自动加载,引用yii2的核心组件,加载配置文件,new实例化一个应用主体然后执行run();laravel的入口部分,引用自动加载,初始化一个容器并加载核心组件,从容器中解析http kernel组件,传递request得到response,然后发送给客户端,执行terminate中间件。这儿的整体架构就是不同的,我这儿感觉yii2就是一个早期版本的容器使用,或者说一个不是那么彻底的容器使用。

2. 组件的依赖化程度不同

yii2的部分,从入口文件就可以看到,它明确写着的就是核心组件的引入,然后其他的部分是通过一个kv的数组加载到应用主体中,而且文档明确的说不要加载太多组件。yii2和laravel框架简单对比_第3张图片
laravel的部分,你可以认为是全程组件化,从核心组件到功能实现,而且实现的也是非常漂亮,可以称为专业;首先,组件引入,再是绑定到容器的方式(三种绑定方式,instance,bind,singleton),再是使用的方式(facade->alias->abstract->concrete)。
PS:框架不分先后,实际看使用情况;用组件的方式使用方便,整理方便,但不可否认的是,组件应用多了在框架的初始化过程中是会耗费性能。

3. 路由的使用

yii2的部分,
yii2和laravel框架简单对比_第4张图片
这边看到的结果,在应用主体运行后,一个请求过来,解析路由,创建控制器执行,非常直接也非常顺的一条线;然后翻看下laravel的部分,它会在http kernel的初始化过程中绑定一些中间件,在router依赖注入的时候,将路由配置转换为一个routeCollection集合,存储方法和控制器的映射关系,在请求过来的时候,将请求像穿过一个洋葱的外壳到中心一样,做路由从routeCollection集合的匹配,执行控制器方法

结尾

yii2文档的简单翻看就到这儿吧,更详细的部分需要更详细的框架使用,但我在没有需求的时候对传统PHP框架的代码部分不是很有兴趣,所以先这样吧。更多部分待处理。
PS:看了这儿的一个感慨就是,你需要一个较熟的框架较为了解,作为基准,这样在你翻看其他框架文档的时候,你能心里有个对比,在框架特性的地方能非常容易注意到。

你可能感兴趣的:(随意记)