【问题标题】:Convention on breaking up large chunks of PHP code分解大块 PHP 代码的约定
【发布时间】:2014-06-09 18:52:40
【问题描述】:

我正在编写一个数据库驱动的管理工具(实际上,它基本上只是一个用于管理数据库的 GUI)。我有相当多的 PHP,其中大部分都与纯 HTML 混合在一起,正在使用中,并且已经开始将所有内容分解成更小的部分以提高可读性。然而,虽然这可行,但我不知道这是否是一个好主意,无论是基于惯例还是性能。

这是一个例子。对于每个表单字段,此代码重复一堆:

 <?php
        print '<div class="form-group">';
        print '<label>Host Description</label>';
        print '<textarea name="Description" class="form-control" rows="3">'.$_GET["Description"].'</textarea>';
        print '</div>';
    ...code is repeated for other fields...
    ?>

我已经开始把它改成这样了:

<div class="form-group">
    <label>Host Description</label>
    <?php print '<textarea name="Description" class="form-control" rows="3">'.$_GET["Description"].'</textarea>';?>
</div>
...code is repeated for other fields...

当我说代码重复时,我的意思是不同的表单域和表单域类型一个接一个地显示。

这有意义吗?它使代码更具可读性,只有 需要 成为脚本的 PHP 部分的行。我不知道我正在打破什么样的约定或我正在接受什么样的性能打击。这是一个好主意吗?坏主意?

【问题讨论】:

  • 只选择最易读的。
  • 第二个更好/更具可读性,但您也可以检查用于分隔代码/层的MVC
  • 这很容易受到 XSS 攻击。在显示从用户那里获得的信息之前,您应该使用htmlentities()
  • 该站点仅在内部网络上可用(在令人讨厌的高安全性背后),但我将包括 htmlentities 调用,因为它似乎是常态。
  • @MatthewJohnson s/htmlentities/htmlspecialchars

标签: php html styles convention


【解决方案1】:

一般都是这样做的,推荐一下:

<div class="form-group">
    <label>Host Description</label>
    <textarea name="Description" class="form-control" rows="3"><?php echo htmlentities($_GET["Description"]) ?></textarea>
</div>

【讨论】:

  • 这比我的更具可读性,仅仅是因为行首缺少打印/回声。我会试试这个。 htmlentities 调用是绝对必要的吗?
  • 是的,这是必要的。它可以防止 XSS 攻击。
【解决方案2】:

只是制作一个打印它的函数?喜欢

function PrintHostDesc()
{
print '<div class="form-group">';
        print '<label>Host Description</label>';
        print '<textarea name="Description" class="form-control" rows="3">'.$_GET["Description"].'</textarea>';
        print '</div>';
}

这可能会使代码在您的编辑器中更具可读性和更短

【讨论】:

  • 我已经为更大的任务做了这个,比如从数据库中收集一堆信息,但实际上这里只有一个 php 语句 ($_GET["Description"])。我也澄清了“代码重复”的意思。我最终会得到 12 个不同的函数来打印一行。我想我可以让它根据一个参数打印不同的东西,但是这个函数失去了它的可读性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
相关资源
最近更新 更多