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';
    }
}

戻り値「auth」は正確に呼び出し元に何を返しますか? それはテキスト「auth」ですか、それともオブジェクトですか?そして、そのクラスにメソッドが 1 つしかない理由は何ですか? 申し訳ありませんが、私はおっとを学んでいます。

前もって感謝します。

4

1 に答える 1

2

この場合、メソッドを見ると文字列getFacadeAccessorが返されauthます。

ファサードは他のクラスを使用するための単なる「ショートカット」ですが、実際には、必要がなければどこでも使用すべきではありません。

Laravel では、オブジェクト/クラスをアプリケーションにバインドできます。したがって、たとえば次のように書くことができます。

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

クラスにメソッドがあるとしましょうdoSomethingSomeObject

これで、次を使用してこのメ​​ソッドを使用できます。

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

ただし、ファサードを作成することもできます。

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

そして今、アプリケーションのどこでも使用できます:

GreatClass::doSomething();

あなたの質問に答えると、これgetFacadeAccessorはアプリケーションにバインドされたときに使用されるオブジェクトの名前のみを返します。それがどのように使用されているかを知るには、次のソースを調べることができます。

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

最初に確認する必要があるメソッドはgetFacadeRoot- です。このメソッドは要求されたオブジェクトを返しているからです。

于 2016-04-09T17:09:00.240 に答える