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() 函数将有效
我正在使用 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() 函数将有效