我在PHP中没有理解这一点,除了它在函数括号内有一个类名和一个变量,有时候可以用逗号分隔多个,然后所有的类公共方法都可以通过使用变量来使用与班级相关联。
Schema::create('news_feeds', /*Here*/ function (Blueprint $table)/*To Here*/ {
$table->increments('id');
$table->string('title');
$table->text('content');
$table->string('date');
$table->timestamps();
});
这段代码来自laravel脚本,
我试图搜索它是如何工作的,但我不知道它叫什么,那么这种在PHP中调用的方法是什么?
答案 0 :(得分:2)
Schema::create('news_feeds', function(Blueprint $table) {
//^ ^ ^ ^ ^ ^
//| | | | | |
//| | | | | -- 1st function param.
//| | | | -- Typehint for 1st function param.
//| | | -- Second method argument
//| | -- First method argument
//| --Method Name
//--Class Name
});
您需要了解,因为您使用的是像Laravel这样的框架,所以某些行为不属于PHP本身。
您不理解的一段代码称为anonymous function
,它通常用作callback
。
在后台,Laravel正在这样做:
Schema::create
创建一个名为news_feeds
Blueprint
对象callback
后,蓝图将被执行",此处的表格实际上是在数据库上创建的。如果您真的想知道这是怎么做的,请转到课程Illuminate\Database\Schema\Builder
并查找方法create
。
为了让您的生活更轻松,使用像PHPStorm这样的IDE,您可以使用ctrl+b
快捷方式轻松地关注方法,类和变量......
public function create($table, Closure $callback)
{
$blueprint = $this->createBlueprint($table);
$blueprint->create();
$callback($blueprint);
$this->build($blueprint);
}
看看创建方法我告诉你的步骤。