创建TPL自定义模板

本文详细介绍了如何从零开始构建一个PHP模板引擎,包括创建必要的文件和目录,设置模板信息,创建Template类、Parser类以及相关方法,如display()、assign()、parVar()等。还涉及到数据库操作、分页实现、缓存管理和后台管理系统搭建,以及优化用户体验。整个过程涵盖了模板解析、变量赋值、系统变量、数据库交互、权限验证、分页逻辑等多个方面,构建了一个功能完善的PHP模板引擎。
摘要由CSDN通过智能技术生成

创建初始模板所需要的文件和文件夹

设置初始化模板信息(template.inc.php),入口文件(index.php)载入模板信息文件。  

 

在Template.class.php类文件中的构造方法来验证各个必须的文件夹(模板文件夹,编译文件夹,缓存文件夹)是否存在,不存在则新建文件夹,在入口文件中创建Template类对象。

注:载入类文件语句:require 'includes/Template.class.php';也可以定义__autoload函数,实例化对象的时候会自动载入: 

在templates文件下的index.tpl文件中添加模板内容(先添加一个普通的变量,以后在慢慢在增加需要解析的标签)

在Template.class.php类文件中创建display()方法,用来载入.tpl文件,在入口文件index.php中调用该方法,载入模板index.tpl内容。

 

在浏览器中输入:http://localhost/tpl/index.php

注:我们尽量设置php文件和tpl文件名字是一样的,这样载入的时候我们就不需要通过参数传递指定文件的名字,直接就用当前执行的文件名字的模板文件就可以了,php文件的名字是index,我们的tpl文件也设置为index。

在载入模板前要先判断模板文件是否存在!

相关函数解释:

basename(path,suffix):返回路径中的文件名部分。suffix参数可选,规定文件扩展名,如果文件有suffix,则不输出该扩展。

$_SERVER['SCRIPT_FILENAME']:当前执行脚本的绝对路径及文件名

__FILE__:原始文件的绝对路径及文件名

在这个项目中,我们是在index.php中执行display函数,所以用$_SERCRE[SCRIPT_FILENAME]的值为:ROOT_PATH.'index.php';用__FILE__的值为ROOT_PATH.'/includes/Template.class.php',我们所执行的php文件不同,模板文件相对应不同,所以我们用$_SERVER['SCRIPT_FILENAME']

上图中的$_fileName为:index.tpl

在Template.class.php类文件中创建assign()方法,用来接收index.php传过来的变量,用于以后变量的解析使用。在display函数中将传过来的变量打印出来,测试是否传递成功

在index.php中加入三个变量分别调用该方法。

 

在浏览器中输入:http://localhost/tpl/index.php  

在profile.xml中设置几个系统变量。

 

因为系统变量是整个网站都适用的,所以我们要放在构造函数中对其进行获取并赋值保存在私有变量中便于以后解析使用。在display函数中将传过来的变量打印出来,测试是否传递成功

在浏览器中输入:http://localhost/tpl/index.php
注:$this->_config["$_tag->name"] = "$_tag->value"中$_tag->name必须加引号(必须是双引号,因为单引号不可以解析变量),因为$_tag->name不是字符串,而是一个对象,如果不加引号会报错:Illegal offset type。$_tag->value的引号可加可不加。

在Parser.class.php类文件中创建解析变量和其他动态标签的函数,然后将解析完的内容保存到解析文件中

在Templates类中实例化解析类对象,调用compile()函数完成模板解析


在主文件中定义是否开启缓存

如果缓存开启则生成缓存文件,如果缓存文件和解析文件存在,并且是这几个文件(php文件,模板文件,解析文件,缓存文件,系统配置文件)最后修改的,则直接载入缓存文件,因为缓存文件是存的HTML代码,所以提高了加载效率。以下是完整的display()函数代码:

完善解析普通变量函数parVar()

在浏览器中输入:http://localhost/tpl/index.php

完善解析if标签函数parIf()

完善解析foreach标签函数parForeach()

完善解析include语句函数parInclude()

完善解析注释语句函数parCommon()

完善解析系统变量函数parConvar()

建立后台管理系统1)新建admin文件夹2)新建admin.php文件3)新建index.php4)在template目录下建立后台模板admin.tpl

注:(1)后台首页定义为admin.php 但是如果我们想要进入后台页面,需要在浏览器中输入http://localhost/tpl/admin/admin.php,系统默认的页面是index.php,所以我们新建index.php文件,添加语句:header('location:admin.php');将默认的页面导向admin.php,这样,当我们想要进入后台主页的时候,直接在浏览器中输入http://localhost/tpl/admin就可以了。(2)dirname()函数返回路径中的目录部分,dirname(__FILE__)表示当前文件的目录,即当前文件路径的上一层,也就是当前文件所在文件夹,如果再加一层dirname即dirname(dirname(__FILE__))则表示文件所在文件夹所在的目录,即文件所在文件夹的上层文件夹路径

配置信息转移。1)将定义模板文件目录部分放在profile文件夹中的profile.inc.php,在template.inc.php文件中引入此文件,注意要在定义根目录之后。2)将引入Template.class.php类文件和创建Template类实例的语句放在template.inc.php文件中,这样以后之后的文件就不需要重复引入重复创建,直接用global关键字就可以了。3)将template.inc.php文件改名为init.inc.php,意思是系统初始化文件


分离缓存设置。因为后台我们不需要生成缓存文件,前台后台我们需要分别对缓存进行设置,所以我们要在前台和后台都要新建缓存设置文件cache.inc.php,然后在系统初始化文件init.inc.php中引入缓存设置文件。


建立前台后台页面框架(这里直接盗用别人的代码敲打

前台首页

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值