Laravel DependencyInjection这个“好吗”吗?

时间:2017-12-01 11:20:06

标签: php laravel dependency-injection

为了处理我的应用程序的某些逻辑,我在App/Services/CarsService.php中创建了一个服务。

我通过DependencyInjection在我的控制器中注入了这个服务,如下所示:

CarsController.php

<?php

namespace App\Http\Controllers;

use App\Services\CarsService;

class CarsController extends Controller
{
    /** @var  CarsService $carsService */
    private $carsService;

    /**
     * Create a new controller instance.
     *
     * @param CarsService $carsService
     */
    public function __construct(CarsService $carsService)
    {
        $this->carsService = $carsService;
    }

因此,例如当我想用用户提供的一些参数查询所有汽车时,我在我的一个控制器方法中做了类似的事情:

$cars = $this->carsService->getCars($brand, $type);

这样可以保持我的控制器清洁,我的逻辑分离在一个服务中,对我来说似乎很不错。

但我的问题是,如果这是在Laravel做的不好的做法?我想可能有更多的“Laravel-y”方式来处理这个问题。

1 个答案:

答案 0 :(得分:1)

您不想为此使用服务。如果您正在使用Eloquent,请注入并使用模型。如果您正在使用查询生成器,原始查询或API,请使用存储库。例如:

public function __construct(Car $car)
{
    $this->car = $car;
}

$this->car->getByBrandAndType($brand, $type);

如果您询问is using IoC container a good or a bad practice,那么它绝对是在任何应用中使用的好工具。