【问题标题】:PHP: Using a function to print content vs returning the content as a variable and then printing that insteadPHP:使用函数打印内容与将内容作为变量返回然后打印
【发布时间】:2013-05-27 20:10:10
【问题描述】:

我有一些课程可以为网站做一些事情,比如获取新闻、创建录音唱片、演出列表等。listGigs()、listHeadlines() 等函数可以将相关信息打印到屏幕上。

让函数将所有 html 作为变量返回,然后再打印这个变量,而不是直接通过函数调用打印出来,这有什么缺点吗?

如果我可以在通用变量中设置每个页面的所有内容,例如$maincontent 然后我可以在 html 模板中调用它们。这似乎很简单,我只是想知道这是否是好的做法。无论如何,这是我正在谈论的总体计划:

在php文件中

$maincontent = $news->getHeadlines;
include_once 'template.php';

在模板文件中

<body>
    <div>Some stuff</div>
    <div clas="main"><?php echo $maincontent; ?></div>
</body>

【问题讨论】:

    标签: php function templates printing


    【解决方案1】:

    我认为创建直接输出小部件没有任何问题。如果你想获得更多的灵活性,尽管你可以实现这样的东西

    function displayTemplate($template, $data, $__captureOutput = false){
        if ($__captureOutput) ob_start();
        extract ($data);
        include($template);
        if ($__captureOutput) return ob_get_clean();
    }
    

    对于您的上述用例,您只需这样做

    $maincontent = $news->getHeadlines;
    displayTemplate('template.php',array("maincontent"=>$maincontent));
    

    $maincontent = $news->getHeadlines;
    $data = displayTemplate('template.php',array("maincontent"=>$maincontent), true);
    

    【讨论】:

      【解决方案2】:

      我会怀疑从函数中返回 HTML 是否明智。

      让函数输出 HTML 的缺点是您现在已经将应用程序(域)逻辑与表示逻辑耦合在一起。假设您想以不同的方式呈现相同的数据,例如 JSON 对象或要写入文件的原始数据。您要么必须为每种情况编写额外的函数,要么编写一个解析 HTML、从中提取数据并将其转换为所需格式的函数。

      如果函数完成工作但只返回一个 PHP 数据结构,那么您可以将该输出用作另一个实现表示逻辑的函数的输入。

      直接从函数中打印 HTML 非常不灵活,您甚至无法选择将其重新解析为另一种格式。

      一般来说,好的软件是松散地与彼此分离的各种关注点耦合在一起的。数据的计算和数据的呈现是不同的关注点。

      【讨论】:

      • 感谢大家的回复。
      • 哎呀,还没有说完... php 数据结构是指数组吗?在这种情况下,类文件从数据库创建一个数组,以便对象中已经存在(如果我正确理解这些概念......),然后这个函数是将其转换为 html。如果没有其他功能,我不知道如何创建 json 或其他任何东西。
      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 2012-07-17
      • 2018-08-15
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      相关资源
      最近更新 更多