请帮助我根据MVC模式修复此代码。我是MVC的新手。 在我的项目中,我必须建立一个视图树和模型作为父子层次结构。 但是我停留在一个点(在代码示例中给出),模型需要它的视图来调用带有模型数据的视图函数。作为初学者的理论,我可能难以实现。如果可能的话,还请提出其他更好的方法。
请提供一些代码解决方案。
这是示例PHP代码:
class model{
$data = array();
$model childModelArray[]; // keeps root model's child list
}
class view{
$controller;
function ShowChild()
{
if (count($this->controller->model->childModelArray) > 0)
{
echo '<div class="SubChildBox">';
foreach ($this->controller->model->childModelArray as $nextChildModel){
//PROBLEM: model object nextChildModel need to call view object!!! ShowAsChild() !!!
// Help on this please
$this->ShowAsChild();
}
echo '</div>';
}
}
}
答案 0 :(得分:1)
首先,视图不必是类。它们大多数是html。您可以通过使用具有默认值的形式参数来解决问题。如果形式参数不存在,则它是控制器的参数
class model{
$data = array();
$model childModelArray[]; // keeps root model's child list
}
class view{
$controller;
function ShowChild($childModelArray = false)
{
$childModelArray = $childModelArray === false ? $this->controller->model->childModelArray : $childModelArray;
if ($childModelArray && count($childModelArray) > 0)
{
echo '<div class="SubChildBox">';
foreach ($childModelArray as $nextChildModel){
//PROBLEM: model object nextChildModel need to call view object!!! ShowAsChild() !!!
// Help on this please
$this->ShowAsChild($nextChildModel);
}
echo '</div>';
}
}
}