gpt4 book ai didi

php - 我应该访问模型中的 POST 参数还是作为方法参数从 Controller 传递?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:09 27 4
gpt4 key购买 nike

我必须处理大约 20 个 POST 参数,但我不确定在哪里处理。

我可以将每个定义为模型上方法的参数,并在调用方法时从 Controller 传递它们。由于参数的数量,这将导致大量工作并使函数调用的可读性降低。

或者我可以调用模型上的方法,然后直接访问参数。

将参数作为实参传递可以让我更好地控制函数访问哪些参数,并且文档将更加不言自明。但是,如果稍后添加新参数,则必须将它们添加到方法调用的末尾,以免破坏每个现有调用。我想如果这种情况发生几次就会变得非常困惑,因为无法对参数进行逻辑分组。

如果我访问模型中的参数,则无需将任何参数从 Controller 传递到模型,从而使方法调用更简洁。但我无法控制访问的参数,因为它们可以轻松且不受限制地添加或删除。这将需要其他开发人员加强纪律,我不喜欢依赖于此,因为迟早会有人“快速地(添加|更改|修复)这个”。

我不确定该走哪条路。我倾向于在模型中完成这一切,因为这样写起来更快,看起来更容易维护(没有争论困惑)并且在概念上更适合我对模型的看法。另一方面,我不确定我对模型的看法是否正确,如果我依赖其他开发人员在每次更改后始终更新文档,它是否会以困惑告终。

那么,我该怎么办呢?

最佳答案

那么,为什么您不能只接受一个(关联)数组作为模型方法中的参数,然后将整个 $_POST 数组传递给它呢?至少在我看来,它不会破坏封装。

编辑: 如果您不喜欢为此使用关联数组,您还可以使用所谓的“普通旧对象”(仅用于携带数据的对象,如C)。例如,如果这涉及保存已提交的注册表:

class UserData
{
protected $name;
protected $username;
protected $password;

public function getName() { /* <...> */ }
public function setName() { /* <...> */ }
/* other accessors go here */
}

class UserController extends Controller
{
public function register()
{
$userData = UserData::create()
->setName($_POST['name'])
->setUsername($_POST['username'])
->setPassword($_POST['password']);
Users::add($userData);
}
}

这将允许您在 Users::add 中使用严格类型化,还可以简化文档编制过程。

关于php - 我应该访问模型中的 POST 参数还是作为方法参数从 Controller 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293474/

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