为什么我的Laravel安装程序需要为外墙别名加上前缀\反斜杠

时间:2018-09-30 02:46:25

标签: laravel-5 alias laravel-facade

我不知道以下示例出现故障的原因:

Auth::user()->id 

但是,只需在其前面加上反斜杠即可使其正常工作:

\Auth::user()->id

这是config/app.php的摘录

'aliases' => [

        'App' => Illuminate\Support\Facades\App::class,
        'Artisan' => Illuminate\Support\Facades\Artisan::class,
        'Auth' => Illuminate\Support\Facades\Auth::class,
        'Blade' => Illuminate\Support\Facades\Blade::class,
        'Broadcast' => Illuminate\Support\Facades\Broadcast::class,

服务器是Ubuntu 16.04上的Apache

1 个答案:

答案 0 :(得分:1)

那是how namespaces work

当您使用典型的Laravel模型,控制器等时,您就位于其名称空间中-类似于AppApp\Http\Controllers之类的东西。因此,Auth::foo()分别表示App\Auth::foo()App\Http\Controllers\Auth::foo()

这就是为什么the examples that teach you how to use Auth都在使用use Illuminate\Support\Facades\Auth;类并说出类似这样的内容之前先做Auth的原因:

  

我们将通过Auth门面访问Laravel的身份验证服务,因此我们需要确保在类顶部导入Auth门面。