2017-08-15 14 views
-1

は、私は以下のようにLaravelに一つのコードブロックを見つけました:PHPで「これは大括弧で囲まれていますか?

/** 
* Register a "before" application filter. 
* 
* @param \Closure|string $callback 
* @return void 
*/ 
public function before($callback) 
{ 
    return $this['router']->before($callback); 
} 

$this['router']はここで何を意味するのでしょうか?誰も$this['xx']フォームについて説明できますか?それは配列ですか?

+0

はいこれは配列であってもよいし、この場合はおそらくオブジェクトであってもよい。 – Andreas

+1

通常は配列内のキーを示す –

+5

クラスはおそらく 'ArrayAccess'(http://php.net/manual/en/class.arrayaccess。 php) – naththedeveloper

答えて

4

あなたの変数が$thisと呼ばれているという事実は、それが普通の配列にすることができないことを意味する - 変数名は、クラスの現在のインスタンスのために確保されていること。

角括弧を使用してオブジェクトにアクセスすることは、そのクラスがそのArrayAccessインターフェイスを実装していることを示す記号です。つまり、通常は基本配列用に予約されている演算子を使用してアクセスできます。角括弧表記を使用ArrayAccessを実装するクラスから値を取得

$offset引数として提供された鍵を用いて、クラスのoffsetGetメソッドを呼び出します。最も一般的な使い方は、クラスのメンバ変数へのアクセスを許可することですが、クラス自体はこのメソッドで任意のアクションを実行することを選択できます。

あなたのケースでは、私はあなたがルータアイテムが依存性注入コンテナから返される結果になるLaravelアプリケーションクラスを見ていると思います。

1

単に配列であることを意味します。角かっこは、キー(名前(文字列、引用符で囲む)、または数字)を使用して、配列から適切な値を識別します。

コードでは、$this['router']は、あなたが見ているクラスに含まれている配列を指し、それは必要なものを選択するための識別子で、routerがキーです。

3

$this['router'] laravelサービスコンテナのルータサービスへの参照。 サービスコンテナ(または依存性注入コンテナ)は、サービス(つまりオブジェクト)のインスタンス化を管理する単なるPHPオブジェクトです。

は、以下を参照してください What is the concept of Service Container in Laravel?