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

时间:2015-01-17 03:13:57

标签: php laravel namespaces

我使用Laravel框架并拥有以下结构的目录:

models 
  Statistic.php

presenters
  StatisticPresenter.php

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

protected $presenter = 'presenters\StatisticPresenter';

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

然而,这会返回错误:Class 'presenters\StatisticPresenter' not found。我意识到这是某种类型的命名空间错误,我已经尝试过观看一些关于它如何工作的视频,但我根本无法绕过它。我已将mysenter文件夹添加到composer.json文件中。例如,将其添加到我的Statistic模型的顶部不起作用:

use presenters\StatisticPresenter;

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

执行以下操作;

  • 在StatisticPresenter.php中标记您的命名空间? (在文件顶部"命名空间演示者;")
  • 将PSR-4类地图添加到您的作曲家

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

  • run&#34; composer dump-autoload&#34;如果您将新类添加到&#34; app / presenters /文件夹&#34; <一次,您将无需再次为&#34;演示者&#34; 命名空间运行此命令/强>
  • 使用&#34测试您的课程;使用演示者/ StatisticPresenter;&#34;
  • 如果您可以访问您的课程,则无需更改代码,您的present()函数将有效