繁体   English   中英

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

[英]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函数的文件,将其includepage1.php的顶部(依此类推),然后创建这样的类:

class MyVars {
  const book = "Book";
  const apple = "Apple";
}

您可以在PHP文件中使用它们,例如MyVars::bookMyVars::apple

带有平面变量的系统是要避免的事情之一。

使用可以帮助您避免发生此类错误或仅使用Smarty的框架

曾德

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM