Laravel 和 yii 那个更优秀?

公司要做新项目,在yii和laravel之间做选择,熟悉的同学们可以介绍下两者各自的优势和劣势吗?

最佳答案

这两个框架我都用过,都是很博大精深的,我算是了解了点皮毛,一知半解,有点印象。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上)
……

4年前 评论
sunshinev 4年前
讨论数量: 17

这两个框架我都用过,都是很博大精深的,我算是了解了点皮毛,一知半解,有点印象。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上)
……

4年前 评论
sunshinev 4年前

YII 继承高于组合, Laravel 组合高于继承,社区活跃度 Laravel 较高,Packge 相对多一些

4年前 评论
Summer

都很优秀,主要看你团队成员都熟悉哪个

4年前 评论

@Summer 各自的优势和不足可以简单说一下吗?

4年前 评论
lmaster

mark,看看有什么不同

4年前 评论

这两个框架我都用过,都是很博大精深的,我算是了解了点皮毛,一知半解,有点印象。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上)
……

4年前 评论
sunshinev 4年前
Shuyi

我喜欢用Laravel因为我懒,需要的Package一般都有,Composer装进去就是的了……

4年前 评论

@tsin 老哥分析的不错。我也是用过两个框架的人,多少能看懂你在说啥。

4年前 评论

两个我都在使用,自身感觉下来,主要有以下区别:

  • Yii2 配置文件项较为繁琐,某些配置可能与代码耦合,比如 Queue 不同 driver(如redisampq)配置项不同,配置文件会根据环境引入先后顺序以及 yii 脚本进行覆盖。Laravel 约定大于配置,同时可以使用 dotenv 配置,更换某些 driver 很方便 (如 Queue.env 文件一个配置项切换即可,QUEUE_DRIVER=sync/file/redis)。
  • Yii2 高级模版骨架适合多网站多模版开发;Laravel 可以依据 PSR-4 和 多路由 router 文件自行实现。
  • 适配 Laravel 的扩展包比 Yii2 多一些,不过一些常用包,自己改改就能在 Yii2 中很方便的使用(比如改成能使用 Yii::$app->{lib} 这种调用方式的)。
  • 两者在某些代码风格习惯上面有所不同,比如 Yii2 的命名空间域名小写,类似于 Java 包风格;配置中键名驼峰等
  • 两者都有一些脚手架工具(如 giiartisan),dbqueryconsolemigration 支持度都可以。但两者设计思想上有所不同,Laravel 使用更多更现代高级的设计模式,比如使用 ServiceProviderFacadeMiddleware 等支持丰富扩展与框架交互解耦;而 Yii2 更多地是在应用入口引入 components 中,而这些 components 可在文件中灵活配置(如改变实现它的基类、某些属性以及行为)等。
  • 其它......
4年前 评论

YII 继承高于组合, Laravel 组合高于继承,社区活跃度 Laravel 较高,Packge 相对多一些

4年前 评论

Yii的耦合有点厉害,吐槽较多。而且框架设计不具扩展性,1 到 2 重写,2 到 3 又重写反映了一定的问题。原作者薛强已弃坑。相比,Laravel,出生就站在巨人的肩膀人。这就是命。

4年前 评论
未进化的类人猿 4年前

人生苦短,我用 Laravel

4年前 评论

laravel用起来如丝般顺滑

4年前 评论

我觉得这种属于伪命题,类似于哪种语言更好更强,抛开实际应用场景谈就是耍流氓。假如你的团队之前常用熟悉的框架为 yii ,为了高效开发项目,当然是沿用之前的框架更好。而如果是项目不赶进度,希望在技术广度上有所收获,使用 Laravel 也是可理解的,具体问题具体分析。

4年前 评论
Summer 4年前

Laravel 社区非常活跃,文档资料也很多。如果考虑敏捷开发选择 Laravel 是非常好的选择!

4年前 评论

我喜欢用TP

4年前 评论
loveinalife 4年前
yzh52521 (作者) 4年前
qinplain 4年前
loveinalife 4年前

强迫更新版本症状患者选择了了 YII

Laravel 追起来太麻烦

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!