除了PHP中的变量之外的Classname

时间:2016-12-16 15:33:05

标签: php function laravel class

我在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中调用的方法是什么?

1 个答案:

答案 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对象
  • 我将此对象发送给用户修改。 (Laravel在这里用蓝图作为参数调用你的回调函数)
  • 执行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);
}

看看创建方法我告诉你的步骤。