0

我有一些课程可以为网站做一些事情,比如获取新闻、创建录音唱片、演出列表等。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>
4

2 回答 2

0

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

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);
于 2013-05-27T20:19:20.513 回答
0

我会质疑甚至从函数返回 HTML 是否明智。

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

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

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

通常,好的软件与彼此分离的各种关注点松散耦合。数据的计算和数据的呈现是不同的关注点。

于 2013-05-27T20:20:56.823 回答