1. 程式人生 > >學習Laravel中建立資料表命令引發的對閉包的學習

學習Laravel中建立資料表命令引發的對閉包的學習

Laravel中建立資料表命令中第一個引數為資料表的名稱,第二個引數為一個閉包,此閉包會接受一個用於定義新資料表的 Blueprint 物件:

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
});

什麼是閉包呢?

百度、google、知乎後,自己理解閉包就是一個程式碼+資料的塊(匿名函式),閉包執行後是一堆資料,但是這堆資料自帶了執行的方法。

上文的 function(Blueprint $table) {$table->increments('id');}

是一個閉包,PHP中叫匿名函式(Anonymous functions),也叫閉包函式(closures),Blueprint是一個類,類中有很多方法如increments,可以用來把定義不同的資料型別,使之成為能夠注入的語句。

首先Blueprint 宣告 $tableBlueprint 這個類的,然後利用 Blueprint 類中的方法將想要注入的資料按照型別轉變成Mysql可以識別的語句,然後用 create 方法就可以將表插入資料庫了。

所以說閉包看上去是程式碼,其實是資料,或者說是資料和程式碼的結合,但其實程式碼就是一種資料

參考的連結