平面文件站点:没有数据库的PHP5主模板

时间:2011-03-22 18:09:31

标签: php performance apache templates

亲爱的朋友们, 想象一个没有数据库的平面php网站,其中有数百个文件在所有文件中定义了相同的变量,例如$read $look$buys

page1.php中

<?
$blue= ".....";
$bell= ".....";
$beam= ".....";
?>

使page2.php

<?
$blue= ".....";
$bell= ".....";
$beam= ".....";
?>

etcettera.php

现在,只要我发明一个新变量,说$bike$beaf,我就必须浏览所有这些模板文件才能添加$beaf = ""或者其他在那里未定义。我想念一个主模板,所以说...欢迎任何想法/提示/代码/建议。提前谢谢。

是否有更智能的模板管理方式而不使用数据库,这样可以更轻松地维护这些模板?

3 个答案:

答案 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::bookMyVars::apple

答案 2 :(得分:1)

你的系统中浮动的扁平变量是要避免的事情之一。

使用一个框架,帮助您不会出现这样的错误或仅使用Smarty

Zend