亲爱的朋友们,
想象一个没有数据库的平面php网站,其中有数百个文件在所有文件中定义了相同的变量,例如$read
$look
和$buys
。
page1.php中
<?
$blue= ".....";
$bell= ".....";
$beam= ".....";
?>
使page2.php
<?
$blue= ".....";
$bell= ".....";
$beam= ".....";
?>
etcettera.php
现在,只要我发明一个新变量,说$bike
或$beaf
,我就必须浏览所有这些模板文件才能添加$beaf = ""
或者其他在那里未定义。我想念一个主模板,所以说...欢迎任何想法/提示/代码/建议。提前谢谢。
是否有更智能的模板管理方式而不使用数据库,这样可以更轻松地维护这些模板?
答案 0 :(得分:3)
像Twig这样的模板引擎可能对您有所帮助。 Twig支持template inheritance,它允许您定义所有子模板继承自的主模板:
<强> 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()));
答案 1 :(得分:2)
我建议创建一个包含__autoload函数的文件,include
它位于page1.php
的顶部(依此类推),然后创建一个类似这样的类:
class MyVars {
const book = "Book";
const apple = "Apple";
}
您可以在PHP文件中使用MyVars::book
和MyVars::apple
。
答案 2 :(得分:1)