php - Laravel 中的非模型逻辑在哪里

标签 php laravel

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

1年前关闭。




Improve this question




我有一个 Laravel 7.x 项目。我的 Controller 方法之一是开始使用不属于模型的逻辑变得强大。它是可以被其他 Controller 重用的代码。我想将它抽象化并作为辅助函数提供给 Controller 。在 Laravel 世界里,这样的逻辑会去哪里?是Provider ?我应该在文档中的哪个位置查找此 Controller 逻辑,以便将来任何其他 Controller 甚至可能的模型都可以调用所述功能?

最佳答案

我用 Services对于这样的事情。我的服务包含业务逻辑,一个服务总是处理单个模型。例如我的简单服务:

<?php

namespace App\Services;

use App\Models\Company;


class CompanyService
{
    public function create(array $data) {

        // some another business logic here

        return Company::create($data)
    }

}
然后我可以通过 Controller 内部的依赖注入(inject)非常轻松地使用此服务:
<?php

namespace App\Http\Controllers;

use App\Models\Company\Company;
use App\Services\CompanyService;

final class CompanyController extends Controller
{
    /** @var CompanyService */
    private $companyService;

    public function __construct(CompanyService $companyService)
    {
        $this->companyService = $companyService;
        parent::__construct();
    }

    public Function store($request) {
        $company = $this->companyService->create( $request->validated() );
    
        return $company->toArray();
    }
}

关于php - Laravel 中的非模型逻辑在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63785426/

相关文章:

javascript - 此表单正在提交,但不应提交

laravel - 如何在 Docker 中使用 Laravel 队列监听

Laravel Route - 检查 ID 是否不存在并显示 404

javascript - Laravel:在 ajax 请求 session 过期后重定向到登录

php - jEditable 有问题

php发送具有崩溃文本文件的电子邮件

php - Javascript变量初始化

Laravel session 中的数据库连接

database - 如何在 Laravel 5.6 中使用 get Route 而不是 id 创建动态 url

Laravel Redis 事件广播