gpt4 book ai didi

php - MVC : what code belongs to the model

转载 作者:行者123 更新时间:2023-12-04 05:56:28 28 4
gpt4 key购买 nike

几周以来,我开始开发 CakePHP 项目。从一开始我就在为 Controller 内部的代码量而苦苦挣扎。在大多数情况下, Controller 的代码行数比模型多。通过了解“瘦 Controller ,胖模型”这个表达,我现在正在寻找一种在模型中放置更多代码的方法。

此时出现的问题是,“在哪里划线”。 Controller 应该做什么,模型应该做什么。对此已经有一些问题/答案,只是我正在寻找更实用的解释。例如,我在下面放置了一个函数,该函数现在位于 Controller 内部。我认为此代码的一部分必须并且可以移动到模型中。所以我的问题是:我可以将哪些部分移动到模型中,哪些部分可以保留在 Controller 中。

/**
* Save the newly added contacts and family members.
*/
public function complete_contacts()
{
if ($this->request->is('post')) {
if (isset($this->data['FamilyMembers'])) {

$selected_user = $this->Session->read('selected_user');

$family_members = $this->data['FamilyMembers'];

$this->ContactsConnection->create();
foreach ($family_members as $family_member) {
// connection from current user to new user
$family_member['ContactsConnection']['contact_family_member_id'] = $selected_user['id'];
$family_member['ContactsConnection']['nickname'] = $selected_user['first_name'];
$this->ContactsConnection->saveAll($family_member);

// inverted connection from new user to current user
$inverted_connection['ContactsConnection']['family_member_id'] = $selected_user['id'];
$inverted_connection['ContactsConnection']['contact_family_member_id'] = $this->FamilyMember->inserted_id;
$inverted_connection['ContactsConnection']['nickname'] = $family_member['FamilyMember']['nickname'];
$this->ContactsConnection->saveAll($inverted_connection);
}
}
}
}

我应该在 FamilyMember 模型中创建一个名为“save_new_family_member($family_member, $selected_user)”的函数吗?

最佳答案

就 M 和 C 的目的而言

The model manages the behavior and data of the application domain,responds to requests for information about its state (usually from theview), and responds to instructions to change state (usually from thecontroller).

The controller receives user input and initiates a response by makingcalls on model objects. A controller accepts input from the user andinstructs the model and a view port to perform actions based on thatinput.


我建议你可以通过
    $selected_user = $this->Session->read('selected_user');
到您的模型并为模型的每个内部执行您的操作。您可能想要更改有关如何存储数据的规则或对其执行一些转换,而 Controller 应该对此视而不见。基本上使用 Controller 将您的信息 [经常从 View ] 获取到模型。不要直接从 Controller 操作模型。简而言之是创建您建议的功能:)
话虽如此,有时我发现自己的 Controller 必须做的比我想要的更多,在这种情况下,至少将任务分解为辅助方法,这样您的 Controller 就更易于管理,并且您可以在需要的地方重用代码。

关于php - MVC : what code belongs to the model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9456365/

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