gpt4 book ai didi

php - Controller 方法和模型方法之间的胖模型和瘦 Controller 设计混淆

转载 作者:搜寻专家 更新时间:2023-10-31 21:37:32 26 4
gpt4 key购买 nike

我是 MVC 的新手(以 codeIgniter 为例),我已经阅读了 3 遍 MVC 胖模型和瘦 Controller ,我得到了什么:

  • 模型负责繁重的工作,而 Controller 调用模型并传递数据以供 View 呈现

但我有一个困惑,例如我有一个管理页面会删除数据库中的产品数据,我会有以下代码(使用 codeIgniter):

public function deleteProduct($id = '')
{
if( is_digit($id))
{
$this->load->model('productModel');
$this->productModel->deleteById($id);

//oops product has images in another DB table and in server, so i need to delete it
$success = $this->_deleteProductImages($id);
}
else
{
//redirect because of invalid param
}

//if success TRUE then load the view and display success
//else load the view and display error
}


protected function _deleteProductImages($productId)
{
$this->load->model('productModel');

//return array of images path
$imgs = $this->productModel->getImagesPath($productId);

// after i got the imgs data, then delete the image in DB that references to the $productId
$this->productModel->deleteImage($productId);
foreach($imgs as $imgPath)
{
if(file_exists $imgPath) unlink($imgPath);
}
}

我的问题是:

在瘦 Controller 和胖模型的概念中,我应该将方法 _deleteProductImages($id) 移动到我的 productModel 还是应该这样保留它?如果您有其他更好的方法,请在此处指导我

最佳答案

我的模型中会有一个删除产品的方法。此方法将执行删除产品所需的所有工作(包括删除关联的数据库记录、文件等)。

如果操作成功,该方法将返回 TRUE。

如果无法删除关联的记录或文件,我会在其操作中记录该错误,可能会在 UI 中引发错误消息并继续。

该方法可能会调用其他模型中的其他方法...例如,我可能有一个存储所有产品属性的 product_attributes 模型。该模型可能有一个方法:delete_by_product_id()。在这种情况下,我的产品模型将调用 product_attributes->delete_by_product_id(),它将处理关联记录的删除。

关于php - Controller 方法和模型方法之间的胖模型和瘦 Controller 设计混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572263/

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