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

时间:2017-08-14 23:15:37

标签: laravel facade laravel-facade

我已经使用自定义外观App\Facades\Repo构建了一个Laravel 5.4应用程序。 Repo门面代理RepositoryFactory类。在我的应用程序配置中,我有一个别名Repo,它指向Repo facade。我使用它来获取Repo::get('User')

等调用的存储库

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

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

举例来说,不支持别名的类包括我自己的存储库。我已经为它们创建了一个超类型,但它们不会从任何Laravel类继承。有时我的存储库需要调用其他存储库来完成他们的工作。

1 个答案:

答案 0 :(得分:1)

到目前为止我注意到的(使用Laravel 5.2)是当你在命名空间的上下文中时,你需要拥有use Repo;或在前面加一个斜杠,比如\Repo::get("User")

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

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