簡體   English   中英

PHP - PSR-4:自動加載器(編寫器)和具有相同根的多個名稱空間

[英]PHP - PSR-4: Autoloader (composer) and multiple namespaces with the same root

目前我的所有類都在一個文件夾中並且位於一個名稱空間下:

"psr-4": {
   "RootNamespace\\": "lib/"
},

這很好用。 當我添加越來越多的類時,我想將一些邏輯上相關的類放入更深的命名空間級別,但具有相同的根命名空間。 它應該是這樣的:

RootNamespace/Services (in 'lib/services' dir)
RootNamespace/Listeners (in 'lib/listeners' dir)

我想我不需要在composer.json ps-4自動加載定義中更改任何內容,但它不再起作用了。

自動加載定義應如何實現我想要的目標?

正如我測試的那樣,下面的解決方案並不好,因為聲明似乎被覆蓋了

"psr-4": {
   "RootNamespace\\": "lib/",
   "RootNamespace\\Services\\": "lib/services/",
   "RootNamespace\\Listeners\\": "lib/listeners/"
},

根據PSR-4規格

必須以區分大小寫的方式引用所有類名。

您的配置是准確的,具有嵌套在同一目錄中的不同PSR-4命名空間。 它應該工作,但可能會變得混亂。

"psr-4": {
    "RootNamespace\\": "lib/",
    "RootNamespace\\Services\\": "lib/services/",
    "RootNamespace\\Listeners\\": "lib/listeners/"
},

我建議您只需將目錄大寫以匹配PSR規范,或將RootNamespace移出頂級lib/目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM