2011-03-22 57 views
1

親愛的鄉親, 想象一個扁平的PHP網站,而不用數據庫數百個個如$read$look$buys的定義具有相同的變量文件。平面文件SITE:PHP5主模板而不數據庫

page1.php中

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

使page2.php

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

etcettera.php

現在,只要我發明了一個新的變量,說$bike$beaf那麼我必須克o通過所有這些模板文件添加到他們$beaf = ""或者那裏沒有定義。我想念一個主模板可以這麼說...歡迎任何想法/提示/代碼/建議。提前致謝。

有沒有更智能的模板管理方式,而不使用數據庫,使它更容易維護這些模板?

+0

爲什麼你不想使用數據庫? – 2011-03-22 18:27:50

+0

因爲我害怕它太困難了,同時在編程數據庫中起牀和走,會忘記關心內容......這個答案是否使任何意義?也許即時看到它錯誤......我認爲*有充分的理由爲什麼有時應避免使用數據庫,但似乎我錯了? – Sam 2011-03-22 18:30:24

+0

而不是你使用數據庫真的取決於你正在「存儲」什麼樣的信息,以及你如何使用它。 – 2011-03-22 19:52:29

回答

3

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

你的系統與浮動平變量是避免的事情之一。

使用了一個框架,可以幫助你沒有做這樣惡劣的錯誤,或者只是使用Smarty的

Zend

2

我建議創建中有一個__autoload功能的文件,include它在頂部的page1.php(等等),然後創建一些類是這樣的:

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

,你可以使用它們就像在你的PHP MyVars::bookMyVars::apple文件。