2016-04-09 12 views
1

こんにちは、私はリターン「認証」は、正確に、呼び出し元に戻るん何Laravelクラス認証

namespace Illuminate\Support\Facades; 

/** 
* @see \Illuminate\Auth\AuthManager 
* @see \Illuminate\Contracts\Auth\Factory 
* @see \Illuminate\Contracts\Auth\Guard 
* @see \Illuminate\Contracts\Auth\StatefulGuard 
*/ 
class Auth extends Facade 
{ 
    /** 
    * Get the registered name of the component. 
    * 
    * @return string 
    */ 
    protected static function getFacadeAccessor() 
    { 
     return 'auth'; 
    } 
} 

laravelの枠組みの中でこのことについて尋ねることができますか?テキスト「auth」またはオブジェクトですか?そのクラスに1つのメソッドしかない理由は何ですか?私はちょうどoopを学んでいることをお詫びします。

ありがとうございます。

+0

引用符で囲まれているため、文字列として返されます。 –

+0

と質問を待っています返信 'auth'は正確に呼び出し元に戻りますか? –

答えて

2

この場合、方法​​が表示されますので、auth文字列を返します。

ファサードは、他のクラスを使用するための単なる「ショートカット」ですが、実際には必要ない場合はどこにでも使用しないでください。

Laravelでは、オブジェクト/クラスをアプリケーションにバインドできます。だから、たとえば書くことができます。

$app->bind('something', function() { 
    return new SomeObject(); 
}); 

はのはSomeObjectクラスのメソッドdoSomethingがあると仮定しましょう。

今、あなたが使用してこのメ​​ソッドを使用することができます。

$app['something']->doSomething(); 

をしかし、あなたはまた、ファサードを作成することができます。

class GreatClass extends Facade 
{ 
    /** 
    * Get the registered name of the component. 
    * 
    * @return string 
    */ 
    protected static function getFacadeAccessor() 
    { 
     return 'something'; 
    } 
} 

、今どこでも、あなたのアプリケーションで使用することができます:

GreatClass::doSomething(); 

あなたの質問に答えるこの​​は、使用されているオブジェクトの名前アプリケーションにバインドされている場合あなたが源に見ることができます使われています方法を知っている:あなたが最初になります

/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php

方法がgetFacadeRootある - このメソッドは、要求されたオブジェクトを返しているので。