【发布时间】:2018-03-03 13:18:34
【问题描述】:
在开发包或应用程序时,是否存在最佳实践、FIG 标准或社区对在何处放置类接口以考虑命名空间的共识?
例如我们应该:
App\CarInterfaceApp\Cars\FordApp\Cars\ToyotaApp\Cars\Tesla
或者我们应该:
App\Cars\CarInterfaceApp\Cars\FordApp\Cars\ToyotaApp\Cars\Tesla
我问的是接口是否应该放在与其实现相同的命名空间中。
【问题讨论】:
-
类名应该来自项目中使用的概念。接口和命名空间也是如此。您的应用程序的所有类都位于
App命名空间中吗? -
在这种情况下我喜欢做的是第二个选项,但不是
CarInterface,我只是将其命名为Car。然后你使用接口声明依赖,并根据需要传递实现 -
@axiac 我不明白你的意思?我在问接口是否应该放在与其实现相同的命名空间中......
-
我无法在愚蠢的 5 分钟时间限制内正确编辑我之前的答案。我不知道这些实际上是PSR naming conventions,如下面的另一个答案中所述,所以请忽略我在 Symfony 上的注释。使用 *Interface 为接口名称添加后缀似乎是 Symfony 遵循的 PHP-FIG 标准。并不意味着您必须遵循,但有助于保持一致。
标签: php laravel design-patterns interface fig