学习Laravel中创建数据表命令引发的对闭包的学习

来源:互联网 发布:感触最深的一句话知乎 编辑:程序博客网 时间:2024/06/08 10:25

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 方法就可以将表插入数据库了。

所以说闭包看上去是代码,其实是数据,或者说是数据和代码的结合,但其实代码就是一种数据

参考的链接

闭包(计算机科学)是什么?
Javascript闭包——懂不懂由你,反正我是懂了
设计闭包(Closure)的初衷是为了解决什么问题?

0 0
原创粉丝点击