1

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

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

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

例如,不知道别名的类包括我的存储库本身。我为它们创建了一个超类型,但它们不继承自任何 Laravel 类。有时我的存储库需要调用其他存储库来完成它们的工作。

4

1 回答 1

1

到目前为止,我注意到(使用 Laravel 5.2)是,当您在命名空间上下文中时,您需要use Repo;在外观上添加或在外观之前添加一个斜杠,例如\Repo::get("User").

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

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

于 2017-08-15T20:50:36.237 回答