当前位置: 首页 > 科技观察

PHPtoGo,选择什么框架?

时间:2023-03-12 13:07:10 科技观察

这是一个会引起广泛讨论的问题,不亚于“PHP是世界上最好的语言”。不管我们是不是基于框架开发,也不管用什么框架开发。必须牢记6字内功法:高内聚,低耦合。不管是单体项目还是微服务,无论是小组件还是大功能,无论是业务还是领域DDD,同样遵循这样一个原则:(模块、功能、业务、领域)内聚高,(module,function,business),fields)低耦合。PHPtoGo,首选哪个框架?答:为什么选择GoFrame?和PHP的Laravel太像了,香喷喷的,好用。为什么不火?对新手不友好,有门槛。GoFrame特点优点:模块化、高性能、企业级缺点:有学习门槛。版本兼容性不好。不支持微服务框架选择。谁适合GoFramePHPtoGo(Laravel同学会用的很好)JavatoGo(SpringBoot同学用起来很爽)复杂的企业级单体项目(很规范,维护成本低,坑少)谁不适合GoFrame编程初学者(容易被劝退)特别简单的项目使用gin等轻量级框架(可以用大锤杀鸡)非常复杂的分布式微服务项目使用go-zero等微服务框架(没有一个框架万能)GoFrame框架设计思路不是本期的重点,大家可以直接看官方文档。我也打算录制一个视频,结合我们的商业项目,从用户的角度分享一下使用GoFrame的心得,以及如何理解框架的设计思路。模块化设计[1]统一框架设计[2]工程开发设计[3]全链路跟踪设计[4]全错误栈设计[5]接口和泛型设计[6]隐式和显式初始化[7]上下文相关设计[8]微服务相关设计[9]开发过程我整理的最新版GoFrameV2的开发过程从0到1设计表结构使用gfgendao生成对应的dao/do/model编写api层:定义的业务端的数据结构提供对外接口的输入/输出数据结构编写模型层:定义数据端的数据结构,提供内部数据处理的输入/输出数据结构,编写逻辑层,并自动生成服务层代码。(通过配置golandFileWatcher自动生成,或者通过gfgen服务手动执行脚本生成,推荐前者)服务层代码中生成RegisterXX()方法后,在对应的逻辑模块中注册服务(每个模块只需要写一次)写controller层,接收/解析用户输入的参数,调用service层的服务。注册路由,对外暴露接口。比如这个项目就是写cmd.go文件。添加一行_"project-name/internal/logic"到main.go(只写一次)添加一行_"github.com/gogf/gf/contrib/drivers/mysql/v2"到main.go(如果你用的是mysql,只需要写一次)核心步骤编写API层:定义业务端数据结构,提供对外接口的输入/输出数据结构编写模型层:定义数据端数据结构,为内部提供输入数据处理/输出数据结构编写逻辑层,自动生成服务层代码。(通过配置golandFileWatcher自动生成,或者通过gfgen服务手动执行脚本生成,推荐前者)编写controller层,接收/解析用户输入的参数,调用service层的服务。注册路由,对外暴露接口。比如这个项目就是写cmd.go文件。总结没有框架是万能的,也没有语言是万能的。根据自己的需求选择合适的框架和开发语言。不要被眼前一时的胜利或失望蒙蔽了双眼。只有结合实际,实事求是,拥抱变化,不断学习,才能“见泰山”。对于“养家糊口”的编程来说,能赚到稳定钱的职业才是好职业。参考文献[1]模块化设计:https://goframe.org/pages/viewpage.action?pageId=3672891[2]统一框架设计:https://goframe.org/pages/viewpage.action?pageId=7290658[3]]工程开发设计:https://goframe.org/pages/viewpage.action?pageId=30740161[4]全链路跟踪设计:https://goframe.org/pages/viewpage.action?pageId=35356689[5]全错误堆栈设计:https://goframe.org/pages/viewpage.action?pageId=35356691[6]界面和通用设计:https://goframe.org/pages/viewpage.action?pageId=35356693[7]隐式和显式初始化:https://goframe.org/pages/viewpage.action?pageId=6357066[8]上下文相关设计:https://goframe.org/pages/viewpage.action?pageId=7301813[9]微服务相关设计:https://goframe.org/pages/viewpage.action?pageId=54100607本文转载自微信公众号《程序员升级打怪之旅》,作者“王中阳加油》,您可以通过以下二维码关注。转载本文请联系《程序员升级打怪之旅》公众号。