为何我要说加入go开发是一种潮流,尤其是对于php开发人员,我加入了很多go的开发群或者爱好群,发现大部分人都是从php过来的,原本google开发golang是想让更多的c/c++人员来使用。
PHP 语言作为当今最热门的网站程序开发语言,它也是我多年来一直使用的语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。
首先php是弱类型语言,弱类型的好处就是能提升开发人员的开发效率,加之php有非常强大的array以及对应的数组处理方法,大部分你用得到的数组处理函数php本身已经提供,所以开发人员使用起来非常方便,可以用较少的代码实现我们想要的功能。
php也是面向对象的,基本上所有的设计模式在PHP中也可以被作为规范和使用,但是当我们去看很多项目源码时会发现很少有人会这么做,原因就是用php就是为了快速开发,降低成本,加上php入门要求低,开发人员水平参差不齐很难像java一样用来开发工业及项目。
传统的php开发模式一般都是依托fastcgi(php-fpm)apache 、nginx 的同步编程模式开发,这样降低了实现成本和维护成本,但是在实际项目中异步多线程的场景还是挺多的,比如一些异步通知或日志、定时任务、消息队列、网络通信,有的时候我们不得不加入其他语言或插件(swoole、workerman)或者redis等消息队列的形式来协助来满足这样的需求,当然也可以整个项目都使用swoole来开发解决这样的痛点。
在笔者看来php在开发上还是非常方便与高效的,性能上从php7后已经大幅度提升,尤其是php8的到来,性能已经不是问题。真正的问题还是项目维护问题,正因为弱类型与松散的面向对象,强大的数组能力,很多人都是数组一把梭,导致业务逻辑从代码中无法直接知晓数据结构包含一些什么数据,导致项目维护非常困难,还有一个感觉就是php在后续的升级上似乎偏离了phper们心中希望的样子,比如官方支持类似swoole这样的功能,比如cli功能的增强以及代码调试方面的友好处理。
我第一次接触go是因为好几年前的一个项目要使用身份证读卡器,当时的读卡器产商提供的机器没有对应的API接口,只有驱动程序,需要自己写API发送给后端php接收,当时想用java写,但是要给好多客户机装,客户机又是客户自己的笔记本电脑,系统不同, 用java还得给他们装虚拟机,网上查资料的时候刚好看到了go可以直接编译为可执行文件,而且可以跨平台编译,随即就用go写了个工具调用c的驱动最终将数据发送给php接收,发现go好方便,写一个可执行文件丢给客户就行,省时省力。
后来发现go在网络方面也是如此强大,Go语言内置了丰富的net库,不依赖Nginx、Tomcat等WEB服务器便运行WEB程序,很多代理工具内网穿透工具都是go写的,而且非常高效和稳定。当然优秀的http框架也很多,比如:gin 、Echo、Iris 、Beego、 goframe等等。其中不得不说下goframe这个框架对于phper入坑go非常友好,前面我们说到php有着强大的数组处理函数,goframe提供了类似php这套解决方案(gmap、garray、glist、gset等),还包含其他非常高效的工具库,包括字符串处理、类型转换、缓存处理、队列、任务处理等极大的提升开发效率。
最后也给大家分享一个我们自己开源的项目,系统基于goframe这个框架开发,开源的项目名称:gfast 管理系统,系统包含了用户管理、部门管理、岗位管理、菜单管理、角色管理、字典管理、参数管理、操作日志、登录日志、在线用户、定时任务、代码生成、服务监控、在线构建器、文件上传、cms管理、模型管理、工作流引擎等模块。目前正在V2.0版本的升级开发中…欢迎各位一同来完善gfast管理系统。