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

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

参考的链接

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值