Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel DependencyInjection是这样的吗;好",;怎么办?_Php_Laravel_Dependency Injection - Fatal编程技术网

Php Laravel DependencyInjection是这样的吗;好",;怎么办?

Php Laravel DependencyInjection是这样的吗;好",;怎么办?,php,laravel,dependency-injection,Php,Laravel,Dependency Injection,为了处理我的应用程序的一些逻辑,我在App/Services/CarsService.php中创建了一个服务 我通过DependencyInjection将此服务注入控制器,如下所示: carscocontroller.php <?php namespace App\Http\Controllers; use App\Services\CarsService; class CarsController extends Controller { /** @var CarsSe

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

我通过DependencyInjection将此服务注入控制器,如下所示:

carscocontroller.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;
    }
这使我的控制器保持干净,我的逻辑在一个服务中是分离的,对我来说似乎非常好和干净


但我的问题是,在拉雷维尔这样做是否不好?我想可能会有一种更“Laravel-y”的方法来处理这个问题。

你不想为此使用服务。如果您使用的是雄辩的语言,请注入并使用模型。如果您使用的是查询生成器、原始查询或API,请使用存储库。例如:

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

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

如果你想了解,它绝对是一个在任何应用程序中都可以使用的好工具。

如果依赖项注入被认为是框架内的一种糟糕做法,那么你不应该使用该框架。正如您提到的,这有助于保持代码的整洁,并允许您创建可组合的类和服务。这是一个最佳实践,无论框架是什么,无论语言是什么。@unef我对Laravel是相当陌生的,所以我不确定这是否被视为不好的实践,我想知道我所做的是否是“最好/最干净”的方式。Laravel有一个很大的社区,是最大的框架之一,所以我认为有一个更好的方法可以用Laravel框架的理念来处理这个问题。我不使用Laravel,所以我不能说框架中是否有专门用于依赖注入的东西。虽然,从面向对象的角度来看,这是应该如何处理依赖项注入的。它干净,易于阅读和组合。你还想要什么在Laravel中有一种叫做
ServiceProviders
的东西,我可能认为这是处理DI的更好方法,但我不确定。嗯,存储库是一种特定的服务模式,所以我看不出问题出在哪里。我认为问题更多的是如何处理Laravel中的依赖注入,而不是他是否需要服务或模型。嘿,谢谢你的回答,我在我的服务中做了更复杂的逻辑getCars()只是一个简单的例子。正如@unre所说,问题更多的是关于如何在Laravel中处理依赖项注入。@user3652775如果有一些业务逻辑,那么当然,使用服务。
public function __construct(Car $car)
{
    $this->car = $car;
}

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