Php 什么';将背景代码与HTML显示代码分开的好方法是什么?

Php 什么';将背景代码与HTML显示代码分开的好方法是什么?,php,html,templates,logic,file-structure,Php,Html,Templates,Logic,File Structure,下面是我如何使用我的文件以及它们的大致情况 index.php在开始处显示开始的HTML标记并包括header.php(链接的一部分),在最后包括footer.php,它显示结束的HTML标记。 在此期间,index.php从GET参数、POST表单等获取所有用户输入,并从数据库(functions.php和mysql_functions.php)获取数据。为了显示正文内容,它包括一个基于用户请求的任何页面的PHP模板文件,例如:index.PHP?p=page1 includes templa

下面是我如何使用我的文件以及它们的大致情况

index.php在开始处显示开始的HTML标记并包括header.php(链接的一部分),在最后包括footer.php,它显示结束的HTML标记。 在此期间,index.php从GET参数、POST表单等获取所有用户输入,并从数据库(functions.php和mysql_functions.php)获取数据。为了显示正文内容,它包括一个基于用户请求的任何页面的PHP模板文件,例如:index.PHP?p=page1 includes template_page1.PHP

模板文件中显示的信息存储在一个数组中,而不仅仅是普通变量,因此在模板中我有如下内容:

<title><?php echo $content['page_title']; ?></title>
ABBAB:f:/Home/Business_Stuff/Inventory.html:3:Inventory.html:Inventory
ABCAB:f:/Home/Business_Stuff/Ordering.html:3:Ordering.html:Ordering
ABDAB:f:/Home/Business_Stuff/Prices.html:3:Prices.html:Prices
ABJAB:f:/Home/Business_Stuff/Business_Stuff.html:3:Business_Stuff.html:Business Stuff
ADAAA:d:/Home/Services:2:Services:Services
ADJAB:f:/Home/Services/Christmas_Trees.html:3:Christmas_Trees.html:Christmas Trees
ADKAB:f:/Home/Services/Custom_Growing.html:3:Custom_Growing.html:Custom Growing
ADLAB:f:/Home/Services/Nature_Walks.html:3:Nature_Walks.html:Nature Walks


模板文件中没有真正繁重的代码,只有循环和基本if语句。沉重的工作是在index.php和函数文件中完成的

有时候,我觉得这可能是一种杂乱无章的行为,不是一种好的做事方式。前几天我查看了一个模板系统(CodeIgniter),它似乎很复杂,有太多不同的文件要更改,只是为了显示一些内容


我可以对我的做法提出一些批评和赞成/反对意见,并对如何更好地做到这一点提出一些想法吗?

你是对的。将大量代码堆叠到一个文件中是不好的做法。然而,如果你是一个PHP初学者,你不应该太担心它。我无法在脑海中完全描绘出你的文件结构,但我想我有一个想法


尝试将每个PHP函数和诸如此类的东西放在其他文件中,并在index.PHP中使用尽可能少的PHP。不过,请确保没有太多不必要的文件(每个事件/函数对应一个文件)。

至少有一个测试版的模板工具包是用php编写的。但perl中的原始版本本质上是一种不同的语言。它相当强大

原件在CPAN上。我想目前的版本是2.25

我的web构建系统的内容和标记几乎完全分离

这是添加内容之前的基本页面:

[% PROCESS header.inc 
    Title = "Sherwood's Forests -- Seedling Sales" 
    Desc = "Sherwood's Forests Pre-season orders for little Trees."
%]

<DIV id="content">
[% FILTER multimarkdown %]


# Seedling Sales 2014

<div markdown="1" class=picr>

![Picture alternate text][/base-absolute/path/to/image.jpg]

</div>

Please be patient

#### This file is still germinating 


[% PROCESS Copyright.inc %][% END %]



</div>
[% INCLUDE footer.inc %]
开头的字母表决定索引的排序顺序。d或f是目录或文件。数字是它所在的菜单层次结构中向下的级别数。然后是完整路径的文件组件。最后是用于链接名称的文本。其中一些是从以前的重写中删除的,但不值得修复。“先不要优化它”。最后一个字段允许使用与文件名不同的链接名。这个用得不多

fileindex.txt本身由perl程序MakeFileIndex生成。它使用两个信息源:find的结果。在源代码树上运行,并创建一个文件tt2seq,该文件对菜单项的顺序具有可选覆盖

我想向我的网站添加一个新页面

将第一个文件复制到适当的目录。用我的新内容更改该文件的内容。如果它需要以非字母顺序出现,那么我必须向tt2seq添加行来控制它。运行MakeFileIndex。运行ttree-a(模板工具箱中的一个实用程序)更新每个文件中的所有菜单项

验证页面是否符合我的要求。如果没有,则重新编辑。为我刚刚编辑的文件重新运行ttree。当我高兴时,同步到我的服务器

最终的结果是,与写作时间相比,我花在机械方面的时间很少

如果我决定重新安排站点,我只需在目录树中移动文件,然后重新构建。这不会修复内容块中的任何内部链接


以这种方式生成的站点是。这是一个老式的网站。重点在于内容,而不是热情洋溢。但是它是一个很好的生成静态页面的系统。

我不知道CodeIgniter,但它看起来确实不同于其他模板系统。你应该看看Smarty。
ABBAB:f:/Home/Business_Stuff/Inventory.html:3:Inventory.html:Inventory
ABCAB:f:/Home/Business_Stuff/Ordering.html:3:Ordering.html:Ordering
ABDAB:f:/Home/Business_Stuff/Prices.html:3:Prices.html:Prices
ABJAB:f:/Home/Business_Stuff/Business_Stuff.html:3:Business_Stuff.html:Business Stuff
ADAAA:d:/Home/Services:2:Services:Services
ADJAB:f:/Home/Services/Christmas_Trees.html:3:Christmas_Trees.html:Christmas Trees
ADKAB:f:/Home/Services/Custom_Growing.html:3:Custom_Growing.html:Custom Growing
ADLAB:f:/Home/Services/Nature_Walks.html:3:Nature_Walks.html:Nature Walks