PHP用于创建表单元素的函数。好的做法?

时间:2013-04-22 18:50:43

标签: php html

我不是一个使用插件或任何东西,所以我现在试图避免像Zend这样的东西,但我想看看用PHP函数创建“模板”是否是一个好习惯? 我现在忘记了很多PHP,一旦得到他的回答就会重新回到它,但我在想这样的事情:

PHP

function input($type, $label, $id, $class) {
    echo "<div>";
    echo "<input type=" .$type. " class=" .$class. " id=" .$id. />";
    echo "<label for=" .$id. ">".$label."</label>";
    echo "</div>";
}

HTML

<div class="wrapper">
    <?PHP input("text", "Username", "username", "input"); ?>
</div>

当然这个代码需要根据我的需要进行调整,但我想知道它是否会被认为是好的做法?或者我应该偏离做这样的事情?

3 个答案:

答案 0 :(得分:7)

我看到了评论,我希望你不要把我钉在十字架上,说大多数人会同意可重用性:返回价值而不是回应它

function input($type, $label, $id, $class) {
  // create the div here ...
  return $divString;
}

然后按照您的意愿处理结果...

<div class="wrapper">
    <?PHP echo input("text", "Username", "username", "input"); ?>
</div>

或以其他方式使用

$formElements = input("text", "Username", "username", "input") . input("password", "Password", "password", "input");

答案 1 :(得分:2)

我认为这是一种很好的做法,但也有一些改进。更好的方法是使用一个类。这样,您可以轻松配置,克隆,传递和扩展输入,并实现复杂的输入类型。

另一种方法是接受包含元素的每个HTML属性的键值数组,并以给定的元素类型输出它们。

myElement = element(elementType, attributes); //Attributes: type=input, value=myvalue...

第二个重要的改进是正确地逃避每个参数内部的内容以避免XSS注入。

所有这些通常都被大多数框架所涵盖,并且可以轻松复制而不必在项目中包含整个框架。

答案 2 :(得分:1)

这是我们称之为“助手”的东西。所以是的,这绝对是一个很好的做法。但所有PHP框架都实现了这一点。你可以试试CakePHP!