在创建自己的模板时,似乎有两种方法可以使用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标记/代码。
就我个人而言,我认为第一个例子简单明了。我想,那些会雇用你的人也会有同样的想法。此外,将所有正文内容保存在一个变量中,在整个网站上使用会很麻烦。