[英]FLAT FILE SITE: PHP5 Master Template Without Database
亲爱的人们,想象一下一个没有数据库的扁平php网站,其中包含数百个在所有文件中定义相同变量的文件,例如$read
$look
和$buys
。
page1.php
<?
$blue= ".....";
$bell= ".....";
$beam= ".....";
?>
page2.php
<?
$blue= ".....";
$bell= ".....";
$beam= ".....";
?>
etcettera.php
现在,一旦我发明了一个新变量,比如说$bike
或$beaf
那么我就必须遍历所有这些模板文件,以便向它们添加$beaf = ""
,否则就在那里没有定义。 我想念一个主模板,所以...欢迎任何想法/提示/代码/建议。 提前致谢。
在不使用数据库的情况下,有没有更聪明的模板管理方法,可以更轻松地维护这些模板?
像Twig这样的模板引擎可能会为您提供帮助。 Twig支持模板继承 ,它允许您定义所有子模板都继承自的主模板:
master.html.twig:
<html>
<head><title>{% block title %}Default Title{% endblock %}</title></head>
<body>
<h1>{% block pageHeading}{% endblock %}</h1>
{% block body}{% endblock %}
</body>
</html>
child.html.twig:
{% extends master.html.twig %}
{% block title}Child Page{% endblock %}
{% block pageHeading}Weclome!{% endblock %}
{% block body}
<p>My name is {{ name }}. Today's date is {{ today|date('n/j/Y') }}.</p>
{% endblock %}
PHP代码:
$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
'cache' => '/path/to/compilation_cache',
));
$template = $twig->loadTemplate('child.html.twig');
echo $templater->render(array("name"=>"Mike", "today"=>new DateTime()));
我建议创建一个其中具有__autoload函数的文件,将其include
在page1.php
的顶部(依此类推),然后创建这样的类:
class MyVars {
const book = "Book";
const apple = "Apple";
}
您可以在PHP文件中使用它们,例如MyVars::book
和MyVars::apple
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.