首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP-PSR-4: Autoloader (composer)和具有相同根的多个名称空间

PHP-PSR-4: Autoloader (composer)和具有相同根的多个名称空间
EN

Stack Overflow用户
提问于 2017-01-19 21:48:41
回答 1查看 7.3K关注 0票数 7

当前,我的所有类都在一个文件夹中,并且位于一个命名空间下:

代码语言:javascript
复制
"psr-4": {
   "RootNamespace\\": "lib/"
},

效果很好。随着我添加越来越多的类,我希望将一些逻辑相关的类放入更深的命名空间级别,但使用相同的根命名空间。应该是这样的:

代码语言:javascript
复制
RootNamespace/Services (in 'lib/services' dir)
RootNamespace/Listeners (in 'lib/listeners' dir)

我想这样我就不需要改变我的composer.json ps-4自动定义中的任何东西了,但是它不再起作用了。

自动定义应该是什么样子才能达到我想要的?

正如我所测试的,下面的解决方案并不好,因为声明似乎被覆盖了。

代码语言:javascript
复制
"psr-4": {
   "RootNamespace\\": "lib/",
   "RootNamespace\\Services\\": "lib/services/",
   "RootNamespace\\Listeners\\": "lib/listeners/"
},
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-15 13:57:22

根据PSR-4规格

所有类名必须以区分大小写的方式引用。

您的配置是准确的,不同的PSR-4名称空间嵌套在同一个目录中。这应该是可行的,但可能会在今后变得混乱。

代码语言:javascript
复制
"psr-4": {
    "RootNamespace\\": "lib/",
    "RootNamespace\\Services\\": "lib/services/",
    "RootNamespace\\Listeners\\": "lib/listeners/"
},

我建议您要么简单地大写目录以匹配PSR规范,要么将RootNamespace移出顶级lib/目录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41752330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档