用PHP制作静态网站的模板框架

STM32实战:滑模观测器与PLL锁相环融合的FOC无感控制精解 本文深入解析了STM32平台下结合滑模观测器(SMO)与PLL锁相环的无感FOC控制技术。通过实战案例详细介绍了PLL锁相环在消除SMO高频抖振、提升角度跟踪精度方面的关键作用,并分享了工程调参技巧、C语言实现细节及系统联调方法,为电机控制开发者提供了一套完整的解决方案。 阅读详情
用PHP制作静态网站的模板框架

 模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。



提纲:


===================================


分离功能和布局



避免页面元素重复



静态网站的模板框架


===================================





分离功能和布局



   首先我们来看看应用模板的两个主要目的:







  • 分离功能(PHP)和布局(HTML)



  • 避免页面元素重复




   第一个目的是谈论得最多的目的,它设想的情形是:一组程序员编写用于生成页面内容的PHP脚本,同时另一组设计人员设计HTML和图形以控制页面的最终外观。分离功能和布局的基本思想就是使得这两组人能够各自编写和使用独立的一组文件:程序员只需关心那些只包含PHP代码的文件,无需关心页面的外观;而页面设计人员可以用自己最熟悉的可视化编辑器设计页面布局,无需担心破坏任何嵌入到页面的PHP代码。



   如果你曾经看过几个关于PHP模板的教程,那么你应该已经明白模板的工作机制。考虑一个简单的页面局部:页面的上方是页头,左边是导航条,其余部分是内容区域。这种网站可以拥有如下模板文件:




<!-- main.htm -->
<html>
<head><title>模板示例</title></head>
<body>
<table><tr><td>{HEADER}</td></tr>
<tr><td>{LEFTNAV}</td><td>{CONTENT}</td></tr>
</table>
</body></html>

<!-- header.htm -->
<img src="sitelogo.jpg">

<!-- leftnav.htm -->
<br><a href="foo">Foo</a>
<br><a href="bar">Bar</a>




   可以看出页面如何由这些模板构造而成:main模板控制着整个页面的布局;header模板和leftnav模板控制着页面的公共元素。花括号“{}”里面的标识符是内容占位符。使用模板最主要的好处在于界面设计者能够按照自己的意愿编辑这些文件,比如设置字体、修改颜色和图形,或者完全地改变页面的布局。界面设计者可以用任何普通HTML编辑器或者可视化工具编辑这些页面,因为这些文件都只包含HTML代码,没有任何PHP代码。


  PHP代码全部保存到单独的文件中,这个文件也就是由页面URL实际调用的文件。Web服务器通过PHP引擎解析该文件,然后把结果返回给浏览器。一般地,PHP代码总是动态地生成页面内容,比如查询数据库或者执行某种计算等。下面是一个例子:



<?php

// example.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );

// 此处的PHP代码设置$content使其包含合适的页面内容

$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');

?>


   这里我们使用的是流行的FastTemplate模板类,但其基本思路对于其他许多模板类来说都一样。首先你实例化一个类,告诉它到哪里去寻找模板文件以及哪一个模板文件与页面的哪部分对应;接下来是生成页面内容,把结果赋予内容的标识符;然后,依次解析各个模板文件,模板类将执行必要的替换操作;最后把解析结果输出到浏览器。



   这个文件完全由PHP代码构成,不包含任何HTML代码,这是它最大的优点。现在,PHP程序员可以集中精力编写生成页面内容的代码,而不必为了如何生成HTML去正确地格式化最终页面而担心。



   你可以使用这种方法和上面的文件构造出一个完整的网站。如果PHP代码是以URL中的查询字符串为基础生成页面内容,例如http://www.foo.com/example.php?article=099,你可以据此构造出一个完整的杂志网站。



   很容易看出采用模板还有第二个好处。如上例所示,页面左边的导航条单独保存为一个文件,我们只需编辑这一个模板文件就可以改变网站所有页面左边的导航条。


避免页面元素重复



   “这确实不错”,你也许会想,“我的网站主要就是由大量的静态页面构成。现在我可以从所有页面中删除它们的公共部分,要更新这些公共部分实在太麻烦了。以后我就可以用模板制作出很容易维护的统一页面布局。”但事情并非这么简单,“大量的静态页面”道出了问题的所在。



   请考虑上面的例子。这个例子实际上只有一个example.php页面,它之所以能够生成整个网站的所有页面,是因为它利用了URL中的查询字符串从数据库之类的信息源动态地构造出页面。



   我们之中的大多数人所运行的网站并不一定都有数据库支持。我们的网站大多数由静态页面构成,然后用PHP在这里、那里加上一些动态功能,比如搜索引擎、反馈表单等。那么,如何在这种网站上应用模板呢?



   最简单的方法是为每一个页面复制一份PHP文件,然后在每一个页面中把PHP代码里代表内容的变量设置成合适的页面内容。例如,假设有三个页面,它们分别是主页(home)、关于(about)和产品(product),我们可以用三个文件分别生成它们。这三个文件的内容都类如:



<?php

// home.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );

$content = "<p>欢迎访问</p>
<img src=/"demo.jpg/">
<p>希望你能够喜欢本网站</p>";
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');

?>



   显然,这种方法有三个问题:我们必须为每一个页面复制这些复杂的、牵涉到模板的PHP代码,这与重复公共页面元素一样使得页面难以维护;现在文件又混合了HTML和PHP代码;为内容变量赋值将变得非常困难,因为我们必须处理好大量的特殊字符。



   解决这个问题的关键就在于分离PHP代码和HTML内容,虽然我们不能从文件中删除所有的HTML内容,但可以移出绝大多数PHP代码。


静态网站的模板框架


   首先,我们象前面一样为所有的页面公用元素以及页面整体布局编写模板文件;然后从所有的页面删除公共部分,只留下页面内容;接下来再在每个页面中加上三行PHP代码,如下所示:


<?php

<!-- home.php -->
<?php require('prepend.php'); ?>
<?php pageStart('Home'); ?>

<h1>你好</h1>
<p>欢迎访问</p>
<img src="demo.jpg">
<p>希望你能够喜欢本网站</p>

<?php pageFinish(); ?>

?>

   这种方法基本上解决了前面提到的各种问题。现在文件里只有三行PHP代码,而且没有任何一行代码直接涉及到模板,因此要改动这些代码的可能性极小。此外,由于HTML内容位于PHP标记之外,所以也不存在特殊字符的处理问题。我们可以很容易地将这三行PHP代码加入到所有静态HTML页面中。

   require函数引入了一个PHP文件,这个文件包含了所有必需的与模板相关的PHP代码。其中pageStart函数设置模板对象以及页面标题,pageFinish函数解析模板然后生成结果发送给浏览器。

   这是如何实现的呢?为什么在调用pageFinish函数之前文件中的HTML不会发送给浏览器?答案就在于PHP 4的一个新功能,这个功能允许把输出到浏览器的内容截获到缓冲区之中。让我们来看看prepend.php的具体代码:

<?php

require('class.FastTemplate.php');

function pageStart($title = '') {
GLOBAL $tpl;
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav'=> 'leftnav.htm' ) );
$tpl->assign('TITLE', $title);
ob_start();
}

function pageFinish() {
GLOBAL $tpl;
$content = ob_get_contents();
ob_end_clean();
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
}

?>


  pageStart函数首先创建并设置了一个模板实例,然后启用输出缓存。此后,所有来自页面本身的HTML内容都将进入缓存。pageFinish函数取出缓存中的内容,然后在模板对象中指定这些内容,最后解析模板并输出完成后的页面。





   这就是整个模板框架全部的工作过程了。首先编写包含了网站各个页面公共元素的模板,然后从所有页面中删除全部公共的页面布局代码,代之以三行永远无需改动的PHP代码;再把FastTemplate类文件和prepend.php加入到包含路径,这样你就得到了一个页面布局可以集中控制的网站,它有着更好的可靠性和可维护性,而且网站级的大范围修改也变得相当容易。



   本文下载包包含了一个可运行的示例网站,它的代码注释要比前面的代码注释更详细一些。FastTemplate类可以在http://www.thewebmasters.net/找到,最新的版本号是1.1.0,那里还有一个用于保证该类在PHP 4中正确运行的小补丁。本文下载代码中的类已经经过该补丁的修正。

【原创】关于西门子S120 的电气图纸设计 我们首先要了解一下模块的基本信息:SINAMICS 功率模块 PM240-2 三相交流380-480V+10/-10% 47-63Hz;至此,我们选择的驱动系统配置的资料都已经查找完毕,接下来就是根据每个部件的功能接口和我们需要实现的功能画出接线连接图,这样关于伺服电机控制,硬件部分设计就完成了。2)FSA - FSC 型功率模块 PM240-2 的屏蔽连接板外形尺寸图,所有数据以毫米(英寸)为单位。1)FSA 型功率模块 PM240-2 的外形尺寸图,所有数据以毫米(英寸)为单位。 阅读详情

相关推荐

Rust Reqwest+Rustls 自签名证书校验

所以这里必须保证reqwest引用的rustls库和本地工程一致。以上就是实现不校验签名的逻辑,后续自己可以在对应回调进行逻辑判断。

bawomingtian123的专栏 1349

HTML静态网页--框架

框架: 1、frameset frameset最外层的去掉body,直接用frameset 在超级链接指定目标页面显示在哪个框架窗口中 第一步:给要显示内容的目标frame设置name属性 第二步:给超级链接的target属性赋值成第一步设置的name 让整个frameset页面跳转至某个页面: 把超链接的target属性设置为“_top” ...

weixin_30315905的博客 217

Kali Linux实战:用Impacket的secretsdump.py快速提取Windows域控哈希(附避坑指南)

本文详细介绍了如何在Kali Linux中使用Impacket的secretsdump.py脚本快速提取Windows域控哈希,包括环境准备、原理剖析、实战操作及常见问题解决方案。特别适合CTF竞赛和网络信息安全爱好者学习,提升渗透测试效率。

weixin_33670786的博客 409

php模板制作方法 GPT改写

如果有某些功能是在多个地方重复使用的,那么最好把它们封装成函数放在一个独立的文件里,然后按需引入该文件。php深色版本1 //4 }

2401_88000016的博客 1025

Qt+OpenGL+Cesium三件套:打造高性能3D GIS桌面应用的5个关键点

本文深入探讨了如何利用Qt、OpenGL和Cesium数据规范构建高性能桌面级3D GIS应用。文章聚焦于五个关键点:架构选型、OpenGL渲染优化、3D Tiles数据解析与调度、内存与多线程管理,以及高级特性实现,旨在帮助开发者在C++生态中打造不依赖网络、运算能力更强的重型3D地理信息客户端。

weixin_28197941的博客 380

最优化问题——一维搜索(一)

最优化问题——一维搜索 1. 一维搜索的引入 1.1 从非线性规划问题到一维搜索 在前面的文章中,我们提到了基于迭代的非线性规划问题的求解思路。在求解过程中,我们提到了在每一步的迭代中都需要对计算步长因子,其计算公式为: λk=minλf(xk+λp)λ_k=min_{λ}f(x_k+λp)λk​=minλ​f(xk​+λp) 我们将f(xk+λp)f(x_k+λp)f(xk​+λp)视为λ的一元函数,我们的目标就是求这个一元函数的极小值。对于这个问题,我通常的求解方式为一维搜索。 1.2 一维搜索的基本形

hei653779919的博客 7358

PHP个人主页模板开发指南:从头部到尾部构建完整架构

在当今的网络世界中,拥有自己的个人主页是一件非常酷的事情。而PHP作为一种强大的服务器端脚本语言,特别适合用来开发个人主页模板。今天我就来跟大家分享一下我在开发基于PHP的个人主页模板过程中的经验和知识。我们来谈谈整体架构。一个基本的个人主页模板在PHP里通常会分为几个部分。

nFOGug的博客 259

MFC+Modbus-Tcp协议实现温湿度传感器采集

本文简单介绍MFC使用-Tcp通信实现系列MODBUSTCP型温湿度传感器采集数据。

zhigang_zhao的博客 2830

php模板页面用法 智能写作

无论是选择哪种方式来实现PHP模板页面,遵循一定的最佳实践总能让你的代码更加健壮高效。保持简洁清晰:尽量让每个模板专注于解决单一的问题,避免过度复杂化。同时注意保持良好的命名习惯,使得其他团队成员也能够轻松理解你的意图。合理划分职责:明确区分业务逻辑与表现形式之间的界限,不要在模板内部编写过多的处理代码。理想状态下,模板只应该关心如何优雅地展现信息。利用缓存提高性能:许多现代模板引擎都支持某种形式的缓存机制。适当地启用缓存可以帮助减少服务器负担,加快页面响应速度。重视安全性考量。

小发猫 423

在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测

本文将详细介绍如何在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测,并提供实现源码

DT程序员的博客 704

SAP 系统间 SSO 的真正价值,从 SM59 到可信 RFC 的安全设计

SAP S/4HANA系统间Single Sign-On(SSO)的核心价值在于集中管理通信身份与信任关系,而非仅减少密码输入。传统固定账号密码方式在系统规模扩大后会面临密码管理、审计追踪等挑战。通过SM59配置可信RFC目标系统,结合SSL证书或SAP Trusted System等强认证机制,能有效降低安全凭据暴露风险。SSO配置需配合授权对象、角色管理等建立清晰的信任边界,实现系统间安全通信的同时保持可审计性。这种方案特别适用于Fiori前端与S/4HANA后端等场景,通过可信RFC传递用户身份,避免

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1061

用php写出一个网站的模板,25 个 PHP 的 Web 开发程序网站模板

25 个 PHP 的 Web 开发程序网站模板PHP 是最强的一个网页设计语言, 寻找的这 25 个 PHP 网站模板能够给你带来很多便利这个列表包括大量的主题领域和网页布局, 有很多很棒的功能值得收藏, enjoy!html & PHP Shopping Cart2 Color Template inc PHP Shopping CartPHP Full Functional Appli...

weixin_39736547的博客 623

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

php网页的制作,用PHP制作静态网站的模板框架

用PHP制作静态网站的模板框架发布时间:2016-06-17 来源: 点击:次模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。提纲:===================================分离功能和布局避免页面元素重复静态网站的模板框架===========================...

weixin_28909303的博客 653

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php 框架 模板_用PHP制作静态网站的模板框架

用PHP制作静态网站的模板框架更新时间:2006年10月09日 00:00:00 作者:模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。提纲:===================================分离功能和布局避免页面元素重复静态网站的模板框架========================...

weixin_39884270的博客 253

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

php网页框架模板,用PHP制作静态网站的模板框架(四)

用PHP制作静态网站的模板框架(四)更新时间:2006年10月09日 00:00:00 作者:静态网站的模板框架首先,我们象前面一样为所有的页面公用元素以及页面整体布局编写模板文件;然后从所有的页面删除公共部分,只留下页面内容;接下来再在每个页面中加上三行PHP代码,如下所示:你好欢迎访问 希望你能够喜欢本网站?>这种方法基本上解决了前面提到的各种问题。现在文件里只有三行PHP代码,而且...

weixin_31036839的博客 516

用PHP製作靜態網站的模板框架

模板能夠改善網站的結構。本文闡述如何通過PHP 4的一個新功能和模板類,在由大量靜態HTML頁面構成的網站中巧妙地運用模板控制頁面佈局。 提綱: =================================== 分離功能和佈局 避免頁面元素重復 靜態網站的模板框架 =================================== 分離功能和佈局    首先我們來看看應用模板的兩個主要目

生活其实很美好 1015

php静态网站模板,用PHP制作静态网站的模板框架

模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。提纲:===================================分离功能和布局避免页面元素重复静态网站的模板框架===================================分离功能和布局首先我们来看看应用模板的两个主要目的:分离功能(PHP)...

weixin_42638178的博客 278

静态网站套php模板,用PHP制作静态网站的模板框架(二)

用PHP制作静态网站的模板框架(二)更新时间:2006年10月09日 00:00:00 作者:PHP代码全部保存到单独的文件中,这个文件也就是由页面URL实际调用的文件。Web服务器通过PHP引擎解析该文件,然后把结果返回给浏览器。一般地,PHP代码总是动态地生成页面内容,比如查询数据库或者执行某种计算等。下面是一个例子:// example.phprequire('class.FastTem...

weixin_29139581的博客 316

php模板框架教程,PHP制作静态网站的模板框架教程

模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。提纲:===================================分离功能和布局避免页面元素重复静态网站的模板框架===================================分离功能和布局首先我们来看看应用模板的两个主要目的:分离功能(PHP)...

weixin_31491381的博客 156

PHP设计网站的框架,用PHP制作静态网站的模板框架(三)

用PHP制作静态网站的模板框架(三)更新时间:2006年10月09日 00:00:00 作者:避免页面元素重复“这确实不错”,你也许会想,“我的网站主要就是由大量的静态页面构成。现在我可以从所有页面中删除它们的公共部分,要更新这些公共部分实在太麻烦了。以后我就可以用模板制作出很容易维护的统一页面布局。”但事情并非这么简单,“大量的静态页面”道出了问题的所在。请考虑上面的例子。这个例子实际上只有...

weixin_27009347的博客 210

php网站模板如何浏览,教你如何用PHP制作静态网站的模板框架

第一个目的是谈论得最多的目的,它设想的情形是:一组程序员编写用于生成页面内容的PHP脚本,同时另一组设计人员设计HTML和图形以控制页面的最终外观。分离功能和布局的基本思想就是使得这两组人能够各自编写和使用独立的一组文件:程序员只需关心那些只包含PHP代码的文件,无需关心页面的外观;而页面设计人员可以用自己最熟悉的可视化编辑器设计页面布局,无需担心破坏任何嵌入到页面的PHP代码。如果你曾经看过几个...

weixin_31847389的博客 230

如何用PHP制作静态网站的模板框架

第一个目的是谈论得最多的目的,它设想的情形 是:一组程序员编写用于生成页面内容的PHP脚本,同时另一组设计人员设计HTML和图形以控制页面的最终外观。分离功能和布局的基本思想就是使得这两组 人能够各自编写和使用独立的一组文件:程序员只需关心那些只包含PHP代码的文件,无需关心页面的外观;而页面设计人员可以用自己最熟悉的可视化编辑器设 计页面布局,无需担心破坏任何嵌入到页面的PHP代码。 如果你曾经

zhangxuyu1118的专栏 1021

华为Java岗面试通关指南:底层原理与手撕代码实战

Java基础、集合框架、JVM与并发编程是大厂面试的核心考区,也是很多候选人背了答案却扛不住追问的重灾区。真正高效的备考方式,不是死记硬背面试题,而是理解技术底层的设计逻辑——例如HashMap的树化阈值为什么是8、Spring三级缓存如何解决循环依赖、线程池参数如何结合业务场景计算。针对华为通用软件Java岗,面试重点覆盖考点地图、算法手撕、项目深挖与系统设计四个维度,其中ACM模式的代码练习、线上OOM排查思路以及分布式锁等场景化题目尤为关键。本文结合2025年高频趋势,拆解面试官追问链路,帮助求职者从

weixin_33938733的博客 493

php网站静态页面模板,用PHP制作静态网站的模板框架

模板能够改善网站的结构。本文阐述如何通过PHP 4的一个新功能和模板类,在由大量静态HTML页面构成的网站中巧妙地运用模板控制页面布局。提纲:===================================分离功能和布局避免页面元素重复静态网站的模板框架===================================分离功能和布局首先我们来看看应用模板的两个主要目的:分离功能(PHP)...

weixin_39785524的博客 452
上一篇: 用PHP连mysql和oracle数据库性能比较
下一篇: 模板引擎SMARTY
大白菜芯
博客等级 码龄23年 162粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值