FLAT FILE SITE: PHP5 мастер-шаблон без базы данных - PullRequest
1 голос
/ 22 марта 2011

Дорогие люди, Представьте себе плоский php-сайт без базы данных с сотнями файлов с одинаковыми переменными, определенными во всех них, например, $read $look и $buys.

page1.php

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

page2.php

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

etcettera.php

Теперь, как только я придумаю новую переменную, скажем, $bike или $beaf, мне нужно будет пройти через все эти файлы шаблонов, чтобы добавить к ним $beaf = "", иначе там не определено. Я скучаю по мастер-шаблону, так сказать ... Любые идеи / подсказки / код / ​​предложения приветствуются. Заранее спасибо.

Существует ли какой-либо более умный способ управления шаблонами без использования базы данных, облегчающий поддержку этих шаблонов?

Ответы [ 3 ]

3 голосов
/ 22 марта 2011

Шаблонный движок типа 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()));
2 голосов
/ 22 марта 2011

Я бы предложил создать файл с функцией __ autoload , include в верхней части page1.php (и т. Д.), А затем создать такой класс, как этот:

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

и вы можете использовать их как MyVars::book и MyVars::apple в ваших PHP-файлах.

1 голос
/ 22 марта 2011

Ваша система с плоскими переменными, плавающими по кругу, является одной из вещей, которых следует избегать.

Используйте каркас, который поможет вам не делать таких плохих ошибок, или просто используйте Smarty

Zend

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...