Laravel 5:未找到子目录中的有组织模型

时间:2016-07-23 21:27:40

标签: php laravel laravel-5 namespaces

我试图通过将模型和控制器放在子目录中来更好地组织我的应用程序。只要命名空间是正确的,我认为如果它们在子目录中并不重要,但是现在我已经移动了它们我得到了类未找到错误

我已尝试多次运行composer dumpautoload,但它仍无效。

这是我的目录结构:

  • 应用
  • 模型
    • 管理者
      • EntryStructure.php
      • FieldManager.php
  • 控制器
    • EntryControllers.php

由于我已经创建了新目录 Managers 并在那里移动了这两个模型,当我从EntryStructure引用FieldManager类时,我得到了未找到的错误。

EntryStructure.php中的代码:

namespace Pascall\ICMS\Models;

use Pascall\ICMS\Models\FieldManager;

class EntryStructure
    {
     function index(){
       new FieldManager(); // class not found
     }
    }

FieldManager.php中的代码:

namespace Pascall\ICMS\Models;

class FieldManager {
  //      
}

为什么在FieldManager语句中明确引用它并且它们共享相同的命名空间时,它找不到use类?

2 个答案:

答案 0 :(得分:1)

你的使用应该是
 use Pascall\ICMS\Models\Managers\FieldManager;
代替
use Pascall\ICMS\Models\FieldManager;

答案 1 :(得分:0)

如果您的Models目录遵循PSR-4规范,那么两个类中的命名空间应该遵循类文件路径,因此它应该是:

namespace Pascall\ICMS\Models\Managers;

然后,在EntryStructure课程中你应该使用:

use Pascall\ICMS\Models\Managers\FieldManager;