做爲一名PHP程序員,我感到榮幸。但在時代不斷的變遷中,要具有足夠的知識才可生存。php
那就從Go語言學起把。laravel
但願看到本篇文章的你能夠對Go有一個基本的認識。本系列文章與我本身學習Go語言的方式去描述。以PHP代碼與Go代碼的對比加以區分理解。git
這是轉型手記的最後一章,在往下沒辦法再去寫了,須要詳細的看書去了解。本章以實戰方式來對比如下PHP與Golang的寫法。程序員
這裏使用Laravel與Beego(基於Go開發的MVC框架)來演示github
Laraveljson
// 經過composer直接安裝,簡單易用 composer global require "laravel/installer" // 建立一個項目 laravel new blog
Beegobootstrap
// go自身就有包管理 go get github.com/astaxie/beego // 建立項目也很是簡單 bee api blog
Laravelapi
// laravel 的結構這裏就再也不闡述 | - app | - bootstrap | - config | - database | - public | - resources | - routes | - storage | - tests | - vendor
Beegomvc
// 顯而易見,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
Laravelapp
Route::get('/user', 'UserController@index');
Beego
// 與laravel的使用方式差很少 // 這裏爲了統一,路由直接綁定控制器方法只有下列這種 // beego 還提供了註解方式 , 詳情見 https://beego.me/docs/mvc/controller/router.md beego.Router("/user",&UserController{},"get:index")
Laravel
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /** * 與模型關聯的數據表。 * * @var string */ protected $table = 'user'; }
Beego
// Beego經過結構體名稱做爲表名,而且orm操做的全部字段都必須提早聲明 package models import ( "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
<?php namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class UserController extends Controller { /** * 顯示給定用戶的概要文件 * * @param int $id * @return Response */ public function index($id) { return view('user.profile', ['user' => User::findOrFail($id)]); } }
Beego
package controllers import ( "github.com/astaxie/beego" "github.com/astaxie/beego/orm" ) // 這裏至關於繼承了父類 beegoController type 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程序員將來之路一類的文章,但從未提出要去學習其餘語言。
不要將本身圈在一個領域,不要作井底之蛙。
感謝你看到這裏,但願本篇文章能夠幫到你。謝謝