使用PHP和HTML编写模板的首选方法


Preferred method for using/writing template with PHP and HTML

在创建自己的模板时,似乎有两种方法可以使用PHP和HTML显示我的正文内容。哪种方法往往是首选的,或者最正确的方法?

是否有行业标准?例如,如果我向Facebook展示了我的代码,那么雇佣我的人会寻找某种方法吗

他们两个一开始都写得很笨拙。

方法#1

<?php
//Begins with <body>
templateGetAboveContent();
//Begin unique content
?>
<h1>Example Header</h1>
<div id="article_container">
<?php
if ($row = mysql_fetch_assoc(mysql_query($get_article_sql))
{
    ?>
    <div id="article"><?php echo $row['article_content'];?></div>
    <?php
}
templateGetBelowContent();
?>

方法#2

<?php
$body = "";
$body .= "<h1>Example Header</h1>";
$body .= "<div id='"article_container'">";
if ($row = mysql_fetch_assoc(mysql_query($get_article_sql))
{
    $body .= "<div id='"article'">" . $row['article_content'] . "</div>";       
}
templateGetDisplayContent($body);
?>

方法#2中,templateGetDisplayContent()会简单地将echo $body;放在displayAbove和displayBelow代码之间的位置。

这两个方法显然与模板完全无关
第一个更接近,但在模板中看到一个单词"mysql",可以肯定地说这是失败的尝试。

您必须在数据处理部分和数据显示部分之间进行严格的分离
在所有数据准备就绪之前,不应向浏览器发送任何符号。

所以,让你的网站由页面、页面模板和主模板组成
一旦您的脚本被调用,它就必须处理数据,然后加载网站模板,而网站模板又将加载页面模板。

布局示例如下:a页面:

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
$pagetitle = "Links to friend sites";
//etc
//and then call a template:
$tpl = "links.tpl.php";
include "template.php";
?>

它不输出任何东西,但只收集所需的数据并调用一个模板:

template.php,它是您的主站点模板,

包括你的错误。。templateGetAboveContent()和templateGetBelowContent():

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>

并调用实际页面模板:

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>

这将是对模板的真正使用。

请注意,主站点模板是否能够显示可变文本取决于当前页面的内容。

有行业标准吗?

没有。有几个标准
逃离HTML更接近其中之一,但您仍然使用错误的方式。

任何编程语言都是为开发人员提供灵活性而构建的。它们只是提供给程序员的"工具包",由程序员来实现(和发明)他们想要完成的事情。据我所知,有很多模板引擎(都内置于框架和单机版)简化了页面的呈现,但为了易于使用而牺牲了灵活性。

你提到了Facebook(肯定发现他们使用PHP)。然而,你不知道的是,他们有开发人员构建自己的API,其中可能包括为他们的页面模板化——换句话说,他们自己的实现。

总而言之,这取决于你现在要做什么以及使用什么工具。您应该尝试使用框架和其他工具进行探索。您将了解到它们中的每一个是如何实现模板方法的(您迟早会倾向于其中的一个或两个方法)。

个人建议:试试小胡子

这并不是一个100%正确的答案,因为两者最终都会为您带来所需的目标。

不过,使用方法1可能会让您在需要更新模板的情况下更好地与模板交互。

特别是如果涉及到另一方,比如设计师,谁在提供静态HTML。

您可以很容易地进入其中,只需在需要的地方添加PHP标记/代码。

就我个人而言,我认为第一个例子简单明了。我想,那些会雇用你的人也会有同样的想法。此外,将所有正文内容保存在一个变量中,在整个网站上使用会很麻烦。