为什么要从php 加入到 go 的潮流

Alex65
• 阅读 1557

为何我要说加入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管理系统。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
PHP+jQuery寥寥几行代码轻松实现百度搜索那样的无刷新PJAX的分页列表和导航链接
!(https://static.oschina.net/uploads/space/2016/1208/171419_U00R_561214.png)PHP寥寥几行代码轻松实现百度搜索那样的分页列表和导航链接,某些语言的拥趸哭晕在厕所.<?php$apparray('db_prefix''
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Alex65
Alex65
Lv1
日落君山云起,春到沅湘草木,远思渺难收。
文章
2
粉丝
0
获赞
0