您好我可以在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。
提前谢谢。
答案 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
- 因为此方法正在返回请求的对象。