【问题标题】:Laravel ReflectionException - Service class does not existLaravel ReflectionException - 服务类不存在
【发布时间】:2019-11-14 17:15:45
【问题描述】:

构建简单的 Laravel 后端应用。试图保持控制器清洁并将所有业务逻辑放入服务中,该服务将使用模型来查询数据。

我已经尝试了几个不同的选项(示例)在此处和文档中找到。 同时运行 composer dump-autoload 和 composer update。 仍然收到服务类不存在的错误。

CarController.php

<?php

namespace App\Http\Controllers;

use App\Services\CarService;

class CarController extends Controller
{

    protected $carService;

    public function __construct(CarService $carService)
    {
        $this->carService = $carService;
    }

    public function getCar()
    {
        return $carService::getCar();
    }
}
?>

汽车服务.php

<?

namespace App\Services;

class CarService
{
    public function getCar()
    {
        return 'Hello';
    }

}
?>

在控制器中调用getCar函数,报错:

<?

namespace App\Services;

class CarService
{
    public function getCar()
    {
        return 'Hello';
    }

}
?>

我在邮递员中收到以下错误

{ "message": "类 App\Services\CarService 不存在", “异常”:“反射异常”, "文件": "/home/MyDev/BackEnd/vendor/laravel/framework/src/Illuminate/Container/Container.php", “线”:826, “痕迹”: [ { "文件": "/home/MyDev/BackEnd/vendor/laravel/framework/src/Illuminate/Container/Container.php", “线”:826, “函数”:“getClass”, “类”:“反射参数”, “类型”:“->”

(我正在使用 Postman 调用调用控制器的 API。 不知道为什么原始响应打印出 CarService 的内容并同时说它不存在...)

谢谢

【问题讨论】:

  • 更新:我正在使用 Visual Studio Code,似乎当我将模型名称添加到 __construct 中时,它显示帮助悬停文本,这是 Car extends Model 的一个类。当我将它改回我的服务类时,它不能解决名称...不确定这是 VS Code 问题还是我缺少一些配置

标签: laravel service controller


【解决方案1】:

除了对$carService 的调用之外,您所做的一切都是正确的,您应该引用类实例才能访问它,因此请在您的控制器中尝试此操作:

public function getCar()
{
    return $this->carService->getCar();
}

如果您想以静态方法CarService::getCar() 的形式访问它,则无需在控制器中注入服务,您需要在服务类中将函数的签名更改为public static function getCar() .

【讨论】:

  • 嗯,这仍然对我不起作用。与 ($this->carService->getCar(); ) 在未注入控制器并使用静态函数时出现相同的错误,出现以下错误:“消息”:“找不到类 'App\\Services\\CarService'”, “异常”:“Symfony\\Component\\Debug\\Exception\\FatalThrowableError”,“文件”:“/home/MyDev/BackEnd/app/Http/Controllers/CarController.php”,
【解决方案2】:

哦,伙计,找到问题了。我的服务 php 标签只是 &lt;?,但它必须是 &lt;?php

添加了 php 并找到了类,一切正常。天呐……

【讨论】:

    猜你喜欢
    • 2015-12-05
    • 2014-01-24
    • 2022-10-25
    • 1970-01-01
    • 2017-04-03
    • 2021-05-31
    • 2020-03-17
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多