在哪里可以使用Laravel Facade别名?

在哪里可以使用Laravel Facade别名?,laravel,facade,laravel-facade,Laravel,Facade,Laravel Facade,我已经构建了一个带有定制外观的Laravel5.4应用程序,App\Facades\Repo。Repo facade代理一个RepositoryFactory类。在我的应用程序配置中,我有一个别名Repo,它指向Repo facade。我使用它通过调用获取存储库,比如Repo::get('User') 如果我在控制器或路由文件中,这可以正常工作。但是,在应用程序的其他部分中,我不能使用Repo别名。解释器在当前命名空间中查找Repo类,并出错。这提出了两个问题: 哪些类知道facade别名?它

我已经构建了一个带有定制外观的Laravel5.4应用程序,
App\Facades\Repo
。Repo facade代理一个
RepositoryFactory
类。在我的应用程序配置中,我有一个别名
Repo
,它指向Repo facade。我使用它通过调用获取存储库,比如
Repo::get('User')

如果我在控制器或路由文件中,这可以正常工作。但是,在应用程序的其他部分中,我不能使用
Repo
别名。解释器在当前命名空间中查找Repo类,并出错。这提出了两个问题:

  • 哪些类知道facade别名?它们的定义是什么
  • 在不知道facade别名的类中,我是否应该继续导入facade类本身?或者这是一种代码气味
例如,不支持别名的类包括我的存储库本身。我已经为它们创建了一个超级类型,但是它们没有从任何Laravel类继承。有时,我的存储库需要调用其他存储库来完成它们的工作。

到目前为止,我注意到(使用Laravel 5.2)的是,当您处于名称空间上下文中时,您需要使用Repo或在外观前面加斜杠,如
\Repo::get(“用户”)

在命名空间的上下文中,比如在
routes.php
、配置文件或视图中,facade可以直接工作

但这与PHP的工作方式有关,而与Laravel本身无关