gpt4 book ai didi

php - 当您没有该功能的指定模型时,将业务逻辑放在哪里?拉维尔

转载 作者:行者123 更新时间:2023-12-03 02:36:13 25 4
gpt4 key购买 nike

我正在尝试以 OOP 方式改进我的代码。我倾向于将一些业务逻辑放入 Controller 中。

有些人告诉我这是不可取的。

我知道,例如,当您使用帖子时。您可以简单地将您的业务逻辑放入 Post.php 中型号。

我现在有一个功能,可以上传 .xlsx 文件,并且必须检查和验证 .xlsx 的格式是否正确。

目前位于ScheduleController@storeDeliveryXlsx内。

但是我没有指定的模型来存储验证?

这是需要存储库设计模式的地方吗?或者创建一个不与数据库通信的模型是否可以,例如:DeliveryFile.php我将稍后可以在整个应用程序中使用的逻辑放在其中,如下所示:DeliveryFile::validate($file);DeliveryFile::upload(file); .

我认为我可能会在 .xlsx 上对多个实例重复使用相同的验证。所以我想做类似 Model::validate($file); 的事情。但我不知道该把代码放在哪里。

最佳答案

在这种情况下,我个人建议使用服务。服务类本质上是用于您可以在多个 Controller 上重复的通用功能。 服务层是一种设计模式,可帮助您将共享逻辑抽象为公共(public)服务,即我们的新服务类。

因此,在您的实例中,您可以拥有一个 Service 类,例如 ExcelValidator,然后使用如下所示的内容来构建您的方法。

<?php

namespace App/Services;

class ExcelValidatorService
{

public function validate($file)
{
// our validate logic
}

}

然后在您的 Controller 或模型中,您可以调用 ExcelValidator 服务来实现您的重复验证逻辑。

关于php - 当您没有该功能的指定模型时,将业务逻辑放在哪里?拉维尔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49233562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com