这两个框架我都用过,都是很博大精深的,我算是了解了点皮毛,一知半解,有点印象。Laravel:轮子多,社区氛围很好,很多问题基本都有轮子,代码优雅规范。Yii2:框架可塑性非常高,很多核心模块可以继承重写,或者直接跳过不用的模块,Gii工具可以快速生成CURD、模型代码,写管理后台真的很省心。Yii2的代码注释非常详细,可以当做文档看,我贴一段来看看:
/**
* This method is invoked right after an action is executed.
*
* The method will trigger the [[EVENT_AFTER_ACTION]] event. The return value of the method
* will be used as the action return value.
*
* If you override this method, your code should look like the following:
*
* ```php
* public function afterAction($action, $result)
* {
* $result = parent::afterAction($action, $result);
* // your custom code here
* return $result;
* }
* ```
*
* @param Action $action the action just executed.
* @param mixed $result the action return result.
* @return mixed the processed action result.
*/
public function afterAction($action, $result){...}
连方法怎么用都写明白了。
另外的一些对比:
Laravel服务容器、契约 vs Yii2 属性、事件、行为、组件、服务定位器(都可以实现在配置文件配置类的“外挂”)
Laravel观察者 vs Yii2 Event(观察者模式,Yii可将事件绑定到行为,将行为注入到类)
Laravel ORM vs Yii2 AR(Active Record)
Laravel,app容器对象 vs Yii2 yii::$app(可在配置中绑定外部的类到$app上)
……
这两个框架我都用过,都是很博大精深的,我算是了解了点皮毛,一知半解,有点印象。Laravel:轮子多,社区氛围很好,很多问题基本都有轮子,代码优雅规范。Yii2:框架可塑性非常高,很多核心模块可以继承重写,或者直接跳过不用的模块,Gii工具可以快速生成CURD、模型代码,写管理后台真的很省心。Yii2的代码注释非常详细,可以当做文档看,我贴一段来看看:
/**
* This method is invoked right after an action is executed.
*
* The method will trigger the [[EVENT_AFTER_ACTION]] event. The return value of the method
* will be used as the action return value.
*
* If you override this method, your code should look like the following:
*
* ```php
* public function afterAction($action, $result)
* {
* $result = parent::afterAction($action, $result);
* // your custom code here
* return $result;
* }
* ```
*
* @param Action $action the action just executed.
* @param mixed $result the action return result.
* @return mixed the processed action result.
*/
public function afterAction($action, $result){...}
连方法怎么用都写明白了。
另外的一些对比:
Laravel服务容器、契约 vs Yii2 属性、事件、行为、组件、服务定位器(都可以实现在配置文件配置类的“外挂”)
Laravel观察者 vs Yii2 Event(观察者模式,Yii可将事件绑定到行为,将行为注入到类)
Laravel ORM vs Yii2 AR(Active Record)
Laravel,app容器对象 vs Yii2 yii::$app(可在配置中绑定外部的类到$app上)
……
两个我都在使用,自身感觉下来,主要有以下区别:
Yii2
配置文件项较为繁琐,某些配置可能与代码耦合,比如Queue
不同driver
(如redis
与ampq
)配置项不同,配置文件会根据环境引入先后顺序以及yii
脚本进行覆盖。Laravel
约定大于配置,同时可以使用dotenv
配置,更换某些driver
很方便 (如Queue
,.env
文件一个配置项切换即可,QUEUE_DRIVER=sync/file/redis
)。Yii2
高级模版骨架适合多网站多模版开发;Laravel
可以依据PSR-4
和 多路由router
文件自行实现。- 适配
Laravel
的扩展包比Yii2
多一些,不过一些常用包,自己改改就能在Yii2
中很方便的使用(比如改成能使用Yii::$app->{lib}
这种调用方式的)。 - 两者在某些代码风格习惯上面有所不同,比如
Yii2
的命名空间域名小写,类似于Java
包风格;配置中键名驼峰等 - 两者都有一些脚手架工具(如
gii
与artisan
),db
、query
、console
与migration
支持度都可以。但两者设计思想上有所不同,Laravel
使用更多更现代高级的设计模式,比如使用ServiceProvider
、Facade
、Middleware
等支持丰富扩展与框架交互解耦;而Yii2
更多地是在应用入口引入components
中,而这些components
可在文件中灵活配置(如改变实现它的基类、某些属性以及行为)等。 - 其它......
Yii的耦合有点厉害,吐槽较多。而且框架设计不具扩展性,1 到 2 重写,2 到 3 又重写反映了一定的问题。原作者薛强已弃坑。相比,Laravel,出生就站在巨人的肩膀人。这就是命。
我觉得这种属于伪命题,类似于哪种语言更好更强,抛开实际应用场景谈就是耍流氓。假如你的团队之前常用熟悉的框架为 yii ,为了高效开发项目,当然是沿用之前的框架更好。而如果是项目不赶进度,希望在技术广度上有所收获,使用 Laravel 也是可理解的,具体问题具体分析。
这两个框架我都用过,都是很博大精深的,我算是了解了点皮毛,一知半解,有点印象。Laravel:轮子多,社区氛围很好,很多问题基本都有轮子,代码优雅规范。Yii2:框架可塑性非常高,很多核心模块可以继承重写,或者直接跳过不用的模块,Gii工具可以快速生成CURD、模型代码,写管理后台真的很省心。Yii2的代码注释非常详细,可以当做文档看,我贴一段来看看:
连方法怎么用都写明白了。
另外的一些对比:
Laravel服务容器、契约 vs Yii2 属性、事件、行为、组件、服务定位器(都可以实现在配置文件配置类的“外挂”)
Laravel观察者 vs Yii2 Event(观察者模式,Yii可将事件绑定到行为,将行为注入到类)
Laravel ORM vs Yii2 AR(Active Record)
Laravel,app容器对象 vs Yii2 yii::$app(可在配置中绑定外部的类到$app上)
……