为了处理我的应用程序的某些逻辑,我在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”方式来处理这个问题。
答案 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,那么它绝对是在任何应用中使用的好工具。