2016-12-16 7 views
0

PHPでこれを理解していないと、関数のカッコ内にクラス名と変数のほかに、複数のカンマで区切られていることがあります。クラスに関連付けられた変数を使用して使用することができます。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で呼び出さ物事のこの方法は何ですかいけませんか?

+7

http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration – Clive

+0

これらは関数の引数です。クラスは、変数名がインスタンスを表す型です。 – Kateract

+0

変数$ somevarは、種類がSomeClassである必要があります。そうでない場合例外がスローされます – jrenk

答えて

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自体には何の振る舞いもないことを理解する必要があります。

理解できないコードは、と呼ばれ、よくcallbackとして使用されます。楽屋で

は、Laravelはこれをやっている:

  • さて、彼はnews_feeds
  • Blueprintオブジェクトを作成することができますと呼ばれるテーブルを作成するために、Schema::createと呼ば
  • 私は変更のユーザーに、このオブジェクトをお送りします。
  • callbackが実行されると、Blueprintが実際にデータベース上に作成されます。ここではBlueprintが実行されます。

これがどの程度正確に行われているか知りたい場合は、クラス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); 
} 

ルック君は。

+1

これは正確です私はあなたに大変感謝し続けなければならない –

関連する問題