在 Laravel 8 中放置逻辑而不是控制器的位置

Where to put logic instead of controller in Laravel 8

我想知道将应用程序的逻辑放在哪里而不是放在控制器中。按照MVC的模式,不应该写在controller里,但是放在controller里似乎也没什么好说的从给定的大范围计数、计算和得出正确的数据。我阅读了有关事件、侦听器和服务提供者的信息,但所有说明都说要将其他内容放在那里。我尝试手动创建一些服务目录 类,但控制器似乎没有看到它,并且出现以下错误。

Error Class 'App\Services\MyService' not found

app\Services\MyServices.php

use App\Models\Lotto;
use App\Models\Duzylotek;

class MyService
{
    public function suggested() {
       //
    }
}

app\Http\Controllers\MyController.php

namespace App\Http\Controllers;

use App\Services\MyService;

class MyController extends Controller
{
    public function countnext()
    {
        (new MyService)->suggested();
    }
}

首先:

在应用程序中创建一个名为 Services 的文件夹。

把你的服务放在那里。

给它一个命名空间:App\Services

配合使用 App\Services\YourService

在某些时候,运行 composer dump-autoload,用于注册(如果它在默认情况下不起作用)。

然后:MVC(这是一种通用模式)-具有Fat Models / Slim Controllers的原理。 在过去(Codeigniter)——我们大多数人习惯于将逻辑放在模型中。该模型现在比 Eloquent 模型轻一点。

当事情变得复杂时,我们将逻辑移至库(在库文件夹中)。

现在,服务就是 class。你只需实例化它,注入你需要的任何东西并完成工作。