2017-08-14 53 views
1

我已经用自定义门面建立了Laravel 5.4应用程序,App\Facades\Repo。回购门面代理RepositoryFactory类。在我的应用程序配置中,我有一个别名Repo,它指向Repo外观。我使用它来获取诸如Repo::get('User')之类的调用的存储库。我在哪里可以使用Laravel Facade别名?

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

  • 哪些类知道外观别名?什么定义了他们?
  • 在不知道外观别名的类中,我应该继续并导入外观类本身吗?或者这是一种代码味道?

举例来说,不属于别名的类包含我的存储库本身。我为他们创造了一种超级类型,但他们不会从任何Laravel类继承。有时我的存储库需要调用其他存储库来完成他们的工作。

回答

1

我到目前为止注意到的(与Laravel 5.2一起工作的)是,当您处于命名空间的上下文中时,您需要使用use Repo;或在门面之前使用斜杠,例如\Repo::get("User")

在命名空间上下文中,如routes.php,配置文件或视图中,外观直接工作。

但是这与PHP的工作方式有关,比Laravel本身更多。

相关问题