PHP3 之 FastTemplate
当你在建立一个站点的时候,可能不得不面对以下现实:
站点需要一名程序员来设计程序和一名网站设计者来组织页面。那么,是否有使两者很好的结合起来的方法呢?
有的,就是使用模板(FastTemplate:这个程序在本站的“程序和代码”中可以找到),这将会使你的工作更加轻松。
下面解释一下使用模板的好处:
1、在很短的时间内可以替换整个站点的外观
2、使程序员可以抽象编程,而无须接触HTML代码
3、速度非常之快
4、可以重复利用以前的模板
模板的来历:FastTemplate来自于同名的Perl软件包(在CPAN上可以找到)。 它被移植到了PHP3平台上。你只需要一个基础类文件class.FastTemplate.php3
先解释一下使用模板和使用echo或print命令建立html页面的区别,echo和 print在编写短小的脚本时显得非常实用,但是做出来的脚本的组织性和可定制性不好,修改起来颇废工夫,模板在编写支持多国语种的站点时的效率则要高的多,如用echo和print可以想象工作量之大。
不用担心,熟练使用FastTemplate会占去你一部分时间,但是这些时间会在你 以后的工作中弥补回来,尤其是大工程时。
那么,怎么使用FastTemplate呢?
第一步,只需使用函数,其中path指向template目录所在的路径。这句函数建立了一个$tpl对象,以后可以对它指定参数,进行处理或用来建立各种页面等等。
FastTemplate是建立在这么一种理论基础之上的,即假定一个web页是由许多小的部分组成的。举例来说,如WEB页细分为TITLE、PAGE、FOOT等等。整个页被赋予一个变量名,每一个小部分又被赋予一个变量名,最小的不可分割的部分通常就是字符串了,它也被赋予一个变量名。具体处理的时候,是一层层的包含关系。被包含部分在上一层中以宏{NAME}的形式出现。最后经过一层层的向上输出,得到完整的页面。
那么最底层的向字符串赋值的函数是什么呢,就是:
assign(NAME, "text"); ?>
通过这个功能,FastTemplate将字符串text赋予了变量NAME,以后上一层就可替换宏{NAME}的内容为text。
例如:
$tpl->assign(NAME, "me");
这就将变量NAME赋值了字符串"me"。
第二步,$tpl需要知道其所调用的所有模板文件,即各个小部分。这个功能由define一个数组实现:
define(); ?>
例如:
define(array(foo => "foo.tpl", bar => "bar.tpl")); ?>
这说明总共包括了两个模板文件:foo.tpl和bar.tpl,并给它们指定了名字foo和bar。
有了第一节的知识以后,你现在是否想试一试将模板文件中所包含的宏
{MACROS}部分按照自己定义的变量替换呢?使用以下的命令即可实现:
$tpl->parse(PAGECONTENT, "foo");
?>
这条命令的具体意义是:
我们首先已经用assign定义了FOO模板中包含的若干宏变量,然后根据这些变量对模板文件FOO进行替换处理,并将替换后的模板文件赋予另一个变量名PAGECONTENT。
完整如下:
$tpl->assign(NAME, "me");
$tpl->parse(PAGECONTENT, "foo");
?>
当然,我们还没有作完,因为bar模板文件才是WEB的主输出部分,BAR模板包含着FOO模板,BAR中还包含着宏变量{PAGETITLE}和{PAGECONTENT}等待处理,PAGECONTENT经过对FOO的处理已经得到,PAGETITLE还未指定,所以还要还要指定PAGETITLE,并调用函数
parse(MAIN, "bar"); ?>
进行处理,并将处理后的结果赋予变量MAIN。
如下:
$tpl->assign(PAGETITLE, "FooBar test");
$tpl->parse(MAIN, "bar");
?>
很简单吧,最后我们只需输出页面即可:
$tpl->FastPrint(MAIN);
?>
下面就是foo.tpl,bar.tpl与最终的demo.php3文件。
请大家仔细琢磨琢磨:
-------------------------------------------------------------
foo.tpl
This does not do anything obvious. Please look at {NAME}.
-------------------------------------------------------------
bar.tpl
{PAGETITLE}
{PAGECONTENT}
------------------------------------------------------------
demo.php3
include "class.FastTemplate.php3";
$tpl = new FastTemplate( ".");
$tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));
$tpl->assign(NAME, "me");
$tpl->parse(PAGECONTENT, "foo");
$tpl->assign(PAGETITLE, "Welcome!");
$tpl->parse(MAIN, "bar");
$tpl->FastPrint(MAIN);
?>
------------------------------------------------------------
编制一个表格的例子:
经过以上的阐述,大家是否已经明白一点了。
下面是一个处理表格的例子,首先我们再学一些新知识。
当我们当处理完foo模板后,并赋予了变量TPL1,我们可以将bar模板的内容处理后追加进TPL1中,这样就不必定义过多变量,也易于理解,例处理完页面的title后将content部分追加进去,最后将foot追加,生成完整一个页面再输出。这条命令就是:
parse(TPL1, ".bar"); ?>
其中的.表示追加。
如下:
# 处理模板foo,并赋予变量TPL1
$tpl->parse(TPL1, "foo");
# 处理模板bar,并追加进变量TPL1
$tpl->parse(TPL1, ".bar");
?>
下面是一个完整的表格例子,大家好好揣摸揣摸
page.tpl
{PAGE_TITLE}
{PAGE_CONTENT}
table.tpl
name | size |
---|
table_row.tpl
yad.php3
include "class.FastTemplate.php3";
function InitializeTemplates() {
global $tpl;
$tpl = new FastTemplate( ".");
$tpl->define(
array(
page => "page.tpl",
table => "table.tpl",
table_row => "table_row.tpl"
)
);
}
function ReadCurrentDirectory() {
global $tpl;
$handle = opendir( ".");
while($filename = readdir($handle)) {
$tpl->assign(FILENAME, $filename);
$tpl->assign(FILESIZE, filesize($filename));
$tpl->parse(TABLE_ROWS, ".table_row");
}
closedir($handle);
$tpl->parse(PAGE_CONTENT, "table");
}
function PrintPage($title) {
global $tpl;
$tpl->assign(PAGE_TITLE, $title);
$tpl->parse(FINAL, "page");
$tpl->FastPrint(FINAL);
}
InitializeTemplates();
ReadCurrentDirectory();
Printpage( "Yet Another Demo");
?>
关于速度的最后一点讨论:
看完以上的例子,你会说“太棒了!漂亮,但是,速度怎么样呢?”
没问题,你的站点会变得很快。简单的说:因为你是一个程序员,你应该关注于程序代码的设计,代码应该更加有效率,应容易修改和容易理解。使用FastTemplate可以可以帮助你做到这一点,所以它使你的工作更加轻松一些。
如果你想替代一个已经建好的Web站点,我们建议使用regex(替换表达式)来替换,实际上FastTemplate使用的就是regex 来替换模板中的宏。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

第1部分:初始故障排除步驟檢查蘋果的系統狀態:在深入研究複雜的解決方案之前,讓我們先從基礎知識開始。問題可能不在於您的設備;蘋果的伺服器可能會關閉。造訪Apple的系統狀態頁面,查看AppStore是否正常運作。如果有問題,您所能做的就是等待Apple修復它。檢查您的網路連接:確保您擁有穩定的網路連接,因為「無法連接到AppStore」問題有時可歸因於連接不良。嘗試在Wi-Fi和行動數據之間切換或重置網路設定(「常規」>「重置」>「重置網路設定」>設定)。更新您的iOS版本:

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

watch4pro和gt各自具有不使用的特點和適用場景,如果注重功能的全面性、高性能和時尚外觀,同時願意承擔較高的價格,那麼Watch 4 Pro可能更適合。如果對功能要求不高,更注重電池續航力和價格的合理性,那麼GT系列可能更適合。最終的選擇應根據個人需求、預算和喜好來決定,建議在購買前仔細考慮自己的需求,並參考各種產品的評測和比較,以做出更明智的選擇。

如何使用iPadOS17.4优化iPad电池寿命延长电池续航时间是移动设备体验的关键,iPad是一个很好的例子。如果您觉得iPad电池消耗速度过快,不用担心,在iPadOS17.4中有许多技巧和调整可以显著延长设备的运行时间。本深入指南的目标不仅仅是提供信息,而是改变您使用iPad的方式,增强您的整体电池管理,并确保您可以在无需充电的情况下更长时间地依赖您的设备。通过采用此处概述的做法,您朝着更高效、更谨慎地使用技术迈出了一步,这些技术是根据您的个人需求和使用模式量身定制的。识别主要的能量消耗者

请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?那么请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?http://127.0.0.1/myo/newuser.php?mod=search&type=fastone比如现在我要修改mod=new要怎么做呢?------解决方案--------------------发送了请求

每個人都在期待今天的Windows1123H2發布。事實上,Microsoft剛剛啟動了發布預覽版的更新,這是正式發布階段之前最接近的頻道。被稱為Build22631的Microsoft表示,他們正在推出新的更名聊天應用程序,電話鏈接和一起玩小部件,這些小部件在過去幾個月中已在其他內部渠道中進行了測試。 「這個新的更新將具有與Windows11版本22H2相同的服務分支和程式碼庫,並將與所有新宣布的功能累積,包括Windows中的Copilot(預覽版),」Microsoft承諾。雷德蒙官員進一
