1

我试图弄清楚在我的网络应用程序中经常重复的克隆/模板 HTML 的最佳方法是什么。例如,我有一个投票<form>(见下文)需要位于多个页面上。

我想到了两种方法:

  1. 函数调用,例如,voteForm($action, $user_id, $formType, $success);
  2. 声明,include例如, include '/myApp/views/voteForm.php'

我更喜欢include声明 b/c:

  1. 然后我不必决定函数的参数,这些参数可能会随着时间的推移而改变,迫使我在我的应用程序中存在的任何地方重写函数调用。使用该include语句,我可以在放置included php 文件的任何位置使用变量(避免重新声明它们,这很痛苦 b/c 通常有很多变量)。
  2. 我可以在 HTML 中编写 HTML,而不是作为我必须处理转义字符/json_encode 问题的 PHP 字符串。

我是否应该出于任何原因(例如,性能)重新考虑使用includefunction()?还有其他我没有想到的模板解决方案吗?

    <form action="<?=$action?>" method='post' data-form-data='{'formType': '<?=$formType?>', 'success': '<?=$success?>'} >`
    <input type='hidden' value='<?=$user_id?>' name='user_id'>
    <input type='radio' value='1' name='vote'>
    <input type='radio' value='-1' name='vote'>
    </form>
4

3 回答 3

1

这完全取决于您——您可以拥有一个需要您的 a 的混合体functioninclude设置包含文件可能需要用于显示目的的任何必要变量)。例如

function createForm($action,$foo,$bar){
  $form_action = $action;
  $form_foo = $foo;
  include('templates/form.inc');
}

就性能而言,我不知道有什么巨大的好处。尽管如果您正在寻找一种更好的模板方法,您可能希望查看smarty或其他可以为您处理大部分“艰巨工作”的系统。

请记住,当您的代码输出 HTML 时,您不再需要关注点分离。也就是说,如果您决定在以后更改站点的外观和感觉,您不会只查看.inc(或您使用过的任何扩展名)文件,而是现在要应用更改的文件.inc 和文件。 .php

于 2012-11-05T14:06:15.477 回答
0

我会尽量避免将 HTML 放入函数调用中。我认为您在这里尝试实现的目标最适合包含声明 - 基于个人喜好。

至于性能 - 很难说,但您可以使用像 XDebug 这样的 PHP Profiler 来查看函数或包含是否是最有效的。

http://xdebug.org/docs/profiler

于 2012-11-05T14:03:56.567 回答
0

对于生成的大块 HTML,我建议使用包含。我更喜欢使用函数调用来获取特定的数据位。

再次,这是个人喜好,不能用真正“正确”的答案来回答。

就性能而言,我猜想根本没有太大区别,除非您一次调用数千次。

希望有帮助。

于 2012-11-05T14:05:21.563 回答