【问题标题】:Laravel 5: organised models in subdirectory not foundLaravel 5:未找到子目录中的组织模型
【发布时间】:2016-07-23 21:27:40
【问题描述】:

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

我曾多次尝试运行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 {
  //      
}

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

【问题讨论】:

    标签: php laravel laravel-5 namespaces


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      namespace Pascall\ICMS\Models\Managers;
      

      那么,在EntryStructure 类中你应该使用:

      use Pascall\ICMS\Models\Managers\FieldManager;
      

      【讨论】:

        猜你喜欢
        • 2015-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-15
        • 2016-10-11
        • 2015-04-13
        • 2021-10-05
        • 1970-01-01
        相关资源
        最近更新 更多