前言
最近在网上查了一下php的最常用的三种框架tp,laravel,yii2的资料并结合自己的理解总结一下三种框架的优缺点,话不多说请看正文。
正文
-
yii2:
-
优点:gii蛮不错的,简化了开发流程,可以生成绝大数的代码,开发后台等效率还是蛮高的
-
缺点:前后端完全的分离的趋势下,yii2前后端的耦合的还是有些重了
-
-
laravel:
-
优点:优雅,框架结构组织清晰(抽象了中间件,任务,服务等模块),提供的artisan开发工具开发效率高,社区活跃完善,并且提供了简化的轻量级框架lumen
-
缺点:貌似代码有些过于优雅丧失了一些性能
-
-
lumen
-
优点:基本结构同Laravel,但是已经为API开发做了一些优化,非常适合RESTful的API服务器
缺点 -
缺点:如果要用Lumen做传统web,需要自行加载一些Service,比如session;此外,有些为Laravel写的包会不太兼容Lumen,需要自行修改和调整
-
-
thinkphp3.2
-
优点:简单明了方便快捷,上手快
-
缺点:缺少面向对象的设计,框架社区相关的辅助工具少
-
-
thinkphp5
-
优点:基本面向对象,可能借鉴了laravel或者ruby on rails, 对于开发者更加友善了
-
缺点:框架社区相关的辅助工具仍然少
-
为什么不选TP5.x
-
TP5.x明显借鉴了很多Laravel的设计,但是感觉学得不伦不类的,就行中国特色的xxx一样。而且TP5.x的查询构建器很弱,用起来很不爽。还是Eloquent用起来舒服。(Doctrine的那种类似JavaBean的ORM也用过,但是还是没有Eloquent这种ActiveModel式的好用。)
关于优化
关于其他语言
高并发场景下go语言显然是一个很好的选择,但是一定要结合实际看看项目组人员能力。
PHPer一般对js会比较熟悉,建议可以用node.js做一些高并发的服务。
当然workerman和swoole也是备选方案,但是workerman和swoole中,我觉得,最大的问题在于缺少node.js一样完善的错误处理机制。
-
路由:
-
Laravel默认的路由机制比较适合SEO,但是对于只用作API的服务器来说开销就有点高了。
-
相对而言TP/Yii默认的
module/controller/action
的匹配方式效率比较高。 -
建议API的路由使用传统的
module/controller/action
的方式来匹配。可以参考: laravel-default-routes 或 lumen-default-routes.
-
-
环境配置(.env文件):
-
Laravel的这种机制很不错,可以很方便的区分开发/测试/生产环境。
-
但是.env文件毕竟还是一个纯文本文件,无法享受到 opcache 的加速,所以在实际项目中,我们使用了 .env.php 来代替。
-
-
渲染HTML(视图模版):
-
Laravel 默认用的 blade 很赞。
-
TP 用的基于 taglib 的视图模版实在不敢恭维,而且奇葩的是模版的花括号之间居然不能放空格,所有东西都挤在一起...
-
当然有兴趣的话用smarty模版就大善了
-
如果要效率最高,铁定使用原生PHP做模版最佳,但是转义输出都带自己写,一不留神容易有xss漏洞
-
最后
谢谢大家的阅读,原创不易,喜欢就点个赞,这将是我最强的写作动力。如果你觉得文章对你有所帮助,也蛮有趣的,就关注一下我的博客,谢谢。
来源:CSDN
作者:大仙带你飞
链接:https://blog.csdn.net/qq_43162613/article/details/104389016