php – 我觉得我将我的表现逻辑与我的模型逻辑混合得太多了.一些帮助?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 我觉得我将我的表现逻辑与我的模型逻辑混合得太多了.一些帮助?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我对 PHP,MysqLJavascript仍然有点新,但我一直在研究一个项目,所以我一直在快速学习.但是,我觉得在我的PHP页面中我混合了太多的HTMLPHP.起初我认为这是标准做法,但有人告诉我你应该如何混合两者,我开始查看我的代码.

例如,当加载一个提交页面时,我有一个看起来像这样的循环(浓缩版本):

<?PHP
while ($row = MysqL_fetch_assoc($submissionQuery))
{
  $submissionID = $row['id'];
?>
  <div class="submission" id="submission<?PHP echo $submissionID; ?>">
    <h3><?PHP echo $row['tITle']; ?></h3>
  </div>
<?PHP } ?>

我之所以不在PHP中包含整个块,是因为那里不仅有h3而且我不想使用Mass-echo语句.

在我看来,这看起来很可怕,我想知道更好的方法.我想我可以将所有提交内容存储到一个数组中,然后稍后循环遍历它们,但我看到了几个缺点:

1)不必要地将值存储到数组中.之后才会立即召回.

2)如果提交的内容很多,则可能没有足够的内存来存储它们.

3)需要更多代码.

4)以后仍然需要循环遍历数组,在这种情况下我仍在混合使用PHP和HTML(仅在较小程度上)

我不知道.我只是需要一些建议,以便最好地处理这个问题,因为我不想以错误的方式做事情,然后在事情破裂或变得过于复杂时必须重构一切.

解决方法

使用PHP时,几乎不可能不混用PHP和HTML.但这并不意味着您将表示逻辑与业务逻辑混合在一起.这是两个截然不同的事情.

在您的示例中,您正在混合代码.更好的方法是.

你有一个文件,称之为submission_PRoccess.PHP,在那个文件中你有这个代码.

$submission = array();
while ($row = MysqL_fetch_assoc($submissionQuery)) {
   $submission[] = $row;
}

//more LOGic
//include your view submission_view.PHP

现在submission_view.PHP是您的观点,可以这么说.你会有这样的东西

<?PHP foreach ($submissions as $submission) : ?>
  <div class="submission" id="submission<?PHP echo $submission['id']; ?>">
    <h3><?PHP echo $submission['title']; ?></h3>
  </div>
  <?PHP enDForeach; ?>

这里重要的是要看到您不必触摸视图文件,如果您要修改查询或过滤它.您的业​​务逻辑与您展示它的方式是分开的.您甚至可以删除HTML include,只需要一个带有$submission变量的文件并将其输出为JSON.

你应该关注的一些事情是

> PHP框架 – Zend,CakePHP,Codeignitor,Symphony,Kohona等等.它们可以帮助您分离这些部件
>另一件事是PHP alternate syntax for control structures>此外,像Smarty这样的PHP模板系统.有些人可能会争辩说使用Smarty只会增加一个不必要的层,但是当你不想要一个完整的框架堆栈时它会非常有用.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 我觉得我将我的表现逻辑与我的模型逻辑混合得太多了.一些帮助?全部内容,希望文章能够帮你解决php – 我觉得我将我的表现逻辑与我的模型逻辑混合得太多了.一些帮助?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。