我正在尝试以 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/