PHP laravel class 未找到。我如何使用命名空间来解决这个问题?

PHP laravel class not found. How can I use namespaces to fix this?

我正在使用 Laravel 框架并且有一个结构如下的目录:

models 
  Statistic.php

presenters
  StatisticPresenter.php

在我的 models/Statistic class 中,我正在尝试访问一个 present 方法,该方法调用一个受保护的 属性 然后引用我的演示者:

protected $presenter = 'presenters\StatisticPresenter';

public function present() {
    return new $this->presenter($this); 
}

然而,这个 returns 错误:Class 'presenters\StatisticPresenter' not found。我意识到这是某种命名空间错误,我已经尝试观看一些有关其工作原理的视频,但我根本无法理解它。我已经将我的演示者文件夹添加到我的 composer.json 文件中。例如,将此添加到我的 Statistic 模型的顶部不起作用:

use presenters\StatisticPresenter;

我该如何解决这个问题?

执行以下操作;

  • 在 StatisticPresenter.php 中标记您的命名空间? (在文件顶部 "namespace presenters;")
  • 将 PSR-4 class 映射添加到您的作曲家

{ "autoload": { "psr-4": { "presenters\": "app/presenters/" } } }

  • 运行 "composer dump-autoload" 一次,如果您添加 "presenters" 命名空间,则不需要再次 运行 此命令新 class 进入 "app/presenters/ folder"
  • 用"use presenters/StatisticPresenter;"
  • 测试你的class
  • 如果您可以访问 class,则无需更改代码,您的 present() 函数将有效