Php Laravel/Lumen PSR-4:如果我将类放入子目录,那么我必须使用不同的名称空间吗?

Php Laravel/Lumen PSR-4:如果我将类放入子目录,那么我必须使用不同的名称空间吗?,php,namespaces,composer-php,lumen,laravel-5.5,Php,Namespaces,Composer Php,Lumen,Laravel 5.5,请看我的应用程序结构的以下部分: App -Events -Http --Controllers ---Rest -Services --Base --Primary 我想做的是对所有服务使用名称空间App\Services,对所有控制器使用名称空间App\Http\Controller 以下是使用Composer加载我的应用程序的方式: "autoload": { "psr-4": { "App\\": "app/" } } 这是我得到的例外: 1/1 Fa

请看我的应用程序结构的以下部分:

App
-Events
-Http
--Controllers
---Rest
-Services
--Base
--Primary
我想做的是对所有服务使用名称空间App\Services,对所有控制器使用名称空间App\Http\Controller

以下是使用Composer加载我的应用程序的方式:

"autoload": {
    "psr-4": {
        "App\\": "app/"
    } }
这是我得到的例外:

1/1 FatalThroTableError类“App\Services\CapabilityService”不是 发现

CapabilityService确实存在,但它位于主文件夹的子文件夹中。有没有办法将文件从子目录自动加载到一个名称空间中?如果是,如何以及有什么重要原因不这样做

这是CapabilityService:

namespace App\Services;
地点如下:

App/Services/Primary/CapabilityService

Nvm我找到了答案-只需在composer.json中创建数组,在其中指定所有子文件夹:

 "autoload": {
        "psr-4": {
            "App\\": "app/",
            "App\\Services\\": ["app/services","app/services/base","app/services/primary"],
            "App\\Models\\": ["app/models","app/models/traits"],
            "App\\Http\\Controllers\\": ["app/http/controllers","app/http/controllers/base","app/http/controllers/rest","app/http/controllers/rest/base"]
        },

更好的解决方案仍然受欢迎。

为什么不使用App\Services\Primary\CapabilityService?CapabilityService的名称空间是什么?@Hamoud我认为为所有服务提供一个公共名称空间会更容易。看看我的问题,我认为为所有服务提供一个公共名称空间会更容易。看看我的问题。