【问题标题】:Laravel: Target class does not exist. But it doesLaravel:目标类不存在。但它确实
【发布时间】:2020-07-10 07:12:09
【问题描述】:

我已经搜索过答案,但问题主要是类或控制器中的拼写错误。

在我的情况下,一切都拼写正确。 app\Http\Controllers\GenerateTextController.php中的

<?php 
      namespace App\Http\Controllers;

      class generateText extends Controller
      {
           public function generate()
           {
              dd('success');
           }
      }

然后我尝试将其注入刀片。 home.blade.php

  @inject ('generate', 'App\Http\Controllers\GenerateTextController')
  @dd($generate)

结果:

Target class [App\Http\Controllers\GenerateTextController] does not exist. 

我已经自动加载了几次作曲家,清除了工匠缓存,没有任何帮助。我什至在网络上都找不到最接近的解决方案。

有趣的事情:当我在另一个类上尝试dd 时,也就是说,Laravel 的“预定义”怎么说 - 它显示了该类。我的第二个自定义类可以通过这种注入在浏览器中查看。

任何帮助表示赞赏。

【问题讨论】:

标签: php laravel class


【解决方案1】:

类文件名应与 PHP 类名相同。

class GenerateTextController extends Controller

【讨论】:

    【解决方案2】:

    你的类文件名是app\Http\Controllers\GenerateTextController.php,但类名是generateText,这就是问题所在。类名和文件名应该匹配。这就是 PSR-4 自动加载器的工作原理。

    来自规范:

    终止类名对应于以 .php 结尾的文件名。 文件名必须与终止类名的大小写匹配。

    所以类名应该是这样的:

    class GenerateTextController extends Controller
    {
        // ...
    }
    

    阅读PSR-4 autoloader 以了解它。

    【讨论】:

    • 谢谢!忘记了这一刻。
    猜你喜欢
    • 2014-01-08
    • 2021-07-15
    • 2021-03-06
    • 2018-08-02
    • 2017-05-26
    • 2021-11-23
    • 2015-11-24
    相关资源
    最近更新 更多