博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP To Go 转型手记 (终)
阅读量:6372 次
发布时间:2019-06-23

本文共 1974 字,大约阅读时间需要 6 分钟。

clipboard.png

前言

作为一名PHP程序员,我感到荣幸。但在时代不断的变迁中,要具备足够的知识才可生存。

那就从Go语言学起把。

希望看到本篇文章的你可以对Go有一个基本的认识。本系列文章与我自己学习Go语言的方式去描述。以PHP代码与Go代码的对比加以区分理解。

这是转型手记的最后一章,在往下没办法再去写了,需要详细的看书去了解。本章以实战方式来对比以下PHP与Golang的写法。

这里使用Laravel与Beego(基于Go开发的MVC框架)来演示

安装

Laravel

// 通过composer直接安装,简单易用composer global require "laravel/installer"// 创建一个项目laravel new blog

Beego

// go自身就有包管理go get github.com/astaxie/beego// 创建项目也非常简单bee api blog

目录结构

Laravel

// laravel 的结构这里就不再阐述| - app| - bootstrap| - config| - database| - public| - resources| - routes| - storage| - tests| - vendor

Beego

// 显而易见,beego并没有laravel那样过度设计(虽然过度设计并非指目录,// 但以看目录就知道beego真的没有太多东西)blog├── conf│   └── app.conf├── controllers│   └── object.go│   └── user.go├── docs│   └── doc.go├── main.go├── models│   └── object.go│   └── user.go├── routers│   └── router.go└── tests    └── default_test.go

路由

Laravel

Route::get('/user', 'UserController@index');

Beego

// 与laravel的使用方式差不多// 这里为了统一,路由直接绑定控制器方法只有下列这种// beego 还提供了注解方式 , 详情见 https://beego.me/docs/mvc/controller/router.mdbeego.Router("/user",&UserController{},"get:index")

模型 (Model)

Laravel

Beego

// Beego通过结构体名称作为表名,并且orm操作的所有字段都必须提前声明package modelsimport (    "github.com/astaxie/beego/orm")type User struct {    Id       int    `json:"id"`    Tel      string `json:"tel"`    Password string `json:"password"`    Status   string `json:"status"`}func init() {    orm.RegisterModel(new(User))}

控制器

Laravel

User::findOrFail($id)]); }}

Beego

package controllersimport (    "github.com/astaxie/beego"    "github.com/astaxie/beego/orm")// 这里相当于继承了父类 beegoControllertype MemberController struct {    beego.Controller}func (c *CityController) Index() {    var results []orm.Params    orm.NewOrm().QueryTable("member").        Values(&results)    c.Data["json"] = results    c.ServeJSON()}

总结

学Go有1个多月的时间了。写这类的文章也遭到了很多质疑,作为一个手记去发布仅仅为了让想去学习其他语言的朋友了对新语言的一个认识,不是去对比其不同。而找其语法相似点。

语言只是工具,希望各位PHP工程师不要仅限于去使用PHP,这一年看到很多写PHP程序员未来之路一类的文章,但从未提出要去学习其他语言。

不要将自己圈在一个领域,不要做井底之蛙。

致谢

感谢你看到这里,希望本篇文章可以帮到你。谢谢

转载地址:http://fiyqa.baihongyu.com/

你可能感兴趣的文章
[Python] MySQLdb(即 MySQL-python 包)在 OS X 中安装指南
查看>>
col命令
查看>>
hdu2553N皇后问题
查看>>
为虾米下载《分布式网站负载压力测试工具》变成了《黄色小说》?
查看>>
从一般管理原则看微软的重组
查看>>
Java 注解 (Annotation)
查看>>
从A页面带参数跳转到B页面;进行解析,并显示数据,进行编辑
查看>>
Senparc.Weixin SDK v5.0 升级公告
查看>>
Laravel 5.* 执行seeder命令出现错误的解决方法
查看>>
下载pubmed数据
查看>>
SpringBoot 使用jwt进行身份验证
查看>>
c++ const 用法总结
查看>>
Linux 下用管道执行 ps aux | grep 进程ID 来获取CPU与内存占用率
查看>>
ASP.NET Web配置使用HTTPS实用案例
查看>>
Nginx 配置文件
查看>>
生活杂谈-简单电器维修知识
查看>>
微信小程序只之全局存储
查看>>
JVM源码分析之一个Java进程究竟能创建多少线程
查看>>
live555源码学习笔记之TaskScheduler
查看>>
SQL总结(一)基本查询
查看>>