1

我不是一个使用插件或任何东西的人,所以我现在试图避免像 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>

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

4

3 回答 3

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");

于 2013-04-22T18:59:46.940 回答
2

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

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

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

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

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

于 2013-04-22T19:07:06.960 回答
1

这就是我们所说的“帮手”。所以,是的,这绝对是一个好习惯。但是所有 PHP 框架都实现了这一点。你可以试试 CakePHP !

于 2013-04-22T20:38:16.863 回答