Laravel类Auth

时间:2016-04-09 15:31:02

标签: php laravel laravel-5 laravel-5.2 laravel-facade

您好我可以在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'还是一个物体?他们在那个班里只有一个方法的原因是什么?我道歉,我只是在学习oop。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

在这种情况下,当您看到方法getFacadeAccessor时,它会返回auth字符串。

Facades只是使用其他类的“快捷方式”,但实际上如果你不需要,你不应该在任何地方使用它们。

在Laravel中,您可以将对象/类绑定到Application中。所以你可以写例如:

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

我们假设doSomething类中有方法SomeObject

现在您可以使用以下方法使用此方法:

$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只返回绑定到Application时使用的对象名称。要了解它的使用方法,您可以查看以下内容:

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

首先应该查看的方法是getFacadeRoot - 因为此方法正在返回请求的对象。