位置: 编程技术 - 正文

简单的自定义php模板引擎(php自定义表单)

编辑:rootadmin

推荐整理分享简单的自定义php模板引擎(php自定义表单),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php自定义变量的方法是,php自定义协议,php自定义表单,php如何自定义函数,php自定义字段,php自定义字段,php如何自定义函数,简单的自定义封面图片,内容如对您有帮助,希望把文章链接给更多的朋友!

模板引擎的思想是来源于MVC(Model View Controller)模型,即模型层、视图层、控制器层。

在Web端,模型层为数据库的操作;视图层就是模板,也就是Web前端;Controller就是PHP对数据和请求的各种操作。模板引擎就是为了将视图层和其他层分离开来,使php代码和html代码不会混杂在一起。因为当php代码和html代码混杂在一起时,将使代码的可读性变差,并且代码后期的维护会变得很困难。

大部分的模板引擎原理都差不多,核心就是利用正则表达式解析模板,将约定好的特定的标识语句编译成php语句,然后调用时只需要include编译后的文件,这样就讲php语句和html语句分离开来了。甚至可以更进一步将php的输出输出到缓冲区,然后将模板编译成静态的html文件,这样请求时,就是直接打开静态的html文件,请求速度大大加快。

简单的自定义模板引擎就是两个类,第一个是模板类、第二个是编译类。

首先是编译类:

编译类的大致结构就是上面那样,编译类的工作就是根据配置的文件,将写好的模板文件按照规则解析,替换然后输出到文件中。这个文件的内容是php和html混杂的,但在使用模板引擎进行开发时并不需要在意这个文件,因为我们要编写的是模板文件,也就是html和我们自己定义的标签混合的一个文件。这样View和其他两层就分离开来了。

简单的自定义php模板引擎(php自定义表单)

在这个自定义模板引擎中,我的左右定界符就是大括号,具体的解析规则就是放在__construct()中

上面的解析规则包含了基本的输出和一些常用的语法,if、foreach等。利用preg_replace函数就能对模板文件进行替换。具体情况如下

编译类的工作大致就是这样,剩下的include和对JavaScript的解析都和这个大同小异。

然后就是模板类

整个模板类的工作流程就是先实例化模板类对象,然后利用assign和assignArray方法给模板中的变量赋值,然后调用show方法,将模板和配置文件传入编译类的实例化对象中然后直接include编译后的php、html混编文件,显示输出。简单的流程就是这样,详细的代码如下

在show方法中,我首先判断模板文件存在,然后利用MD5编码生成编译文件和缓存文件的文件名。然后就是判断是否需要进行编译,判断的依据是看编译文件是否存在和编译文件的写入时间是否小于模板文件。如果需要编译,就利用编译类进行编译,生成一个php文件。然后只需要include这个编译文件就好了。

为了加快模板的载入,可以将编译后的文件输出到缓冲区中,也就是ob_start()这个函数,所有的输出将不会输出到浏览器,而是输出到默认的缓冲区,在利用ob_get_contents()将输出读取出来,保存成静态的html文件。

具体的使用如下

缓存后的文件如下

一个简单的自定义模板引擎就完成了,虽然简陋但是能用,而且重点在于造轮子的乐趣和收获。 完整代码可见我的 github

标签: php自定义表单

本文链接地址:https://www.jiuchutong.com/biancheng/301661.html 转载请保留说明!

上一篇:PHP获取不了React Native Fecth参数的解决办法(php获取ua)

下一篇:PHP7新特性foreach 修改示例介绍(php7.2新特性)

  • 在外地预缴的印花税如何扣除
  • 耕地占用税减半政策
  • 金税四期对建筑的影响
  • 应收利息增加会计分录
  • 应征增值税不含税销售额(3%征收率)怎么填2020年
  • 赠送客户的产品计入销售费用的二级科目
  • 500元以内的商品都有哪些
  • 企业收到政府补助资金怎么做账
  • 个税反推税前工资速算
  • 在建工程转固定资产账务处理
  • 服务业暂估成本分录
  • 当年应收账款无明细科目
  • 发给职工的福利要交个税吗
  • 人力资源外包服务规范
  • 不同项目的进项税可以抵销项税吗
  • 审核费用发票需要发票吗
  • 德邦物流增值税发票怎么开
  • 酒店工作车工作间标准
  • 企业税收风险有哪些方面
  • 稳岗补贴能享受多久
  • 生育津贴有什么作用
  • 收取手续费的委托代销 发票谁来开
  • 现金流量表的余额和资产负债表货币资金是不是一定相等
  • 离婚后房产过户需要多少钱
  • 施工津贴属于
  • 流动资金借款是一般借款还是专门借款
  • 华为手机定位另外一个华为手机怎么办
  • xp系统为什么电脑不能用
  • 怎么修改boot启动项
  • 权益法核算的长期股权投资入账价值
  • 客户尾款不付会计分录
  • 高新技术企业职工总数
  • AUTOMATIC1111/stable-diffusion-webui安装教程
  • 一只正在树上吃的苹果
  • 年金单位缴费计入个人账户(税前)
  • 委托外发加工会计分录
  • 两只小北极熊
  • yolov3训练自己的数据超详细
  • 司法拍卖所购的房产
  • 房地产预缴所得税怎么算
  • 以公允价值计量的金融资产不计提损失准备
  • php ajax请求
  • 自动驾驶汽车决策与控制pdf
  • 营改增销售服务范围
  • 怎么把其他应收款的转到其他应付款
  • wp留言板插件
  • mongodb replica set 配置高性能多服务器详解
  • 运输公司税务筹划
  • sql server复制表数据
  • sql语句中单引号是什么
  • MySQL Replace INTO的使用
  • 一般纳税人开出去的普票可以用进项抵扣吗
  • 住宿发票丢失
  • 现在购入不动产怎么办
  • 费用报销单干嘛用
  • 进项税额转出有余额怎么调整
  • 公对私转账有没有手续费
  • 投标保证金的计算
  • MSsql每天自动备份数据库并每天自动清除log的脚本
  • mysql密码忘记了怎么找回
  • xp系统提升cpu最高性能
  • mac设置启动系统
  • redhat网卡配置文件
  • win8搜索程序和文件在哪里
  • windows8安装程序
  • win7开机黑屏只有鼠标安全模式也不行
  • win10输入框在哪里
  • mac在哪看
  • windows8开发者预览版中文版ISO下载
  • windows向microsoft报告
  • win7打开软件速度没有win10快
  • 不使用jsp
  • Div CSS absolute与relative的区别小结
  • dedecms建站操作
  • ubuntu touch教程
  • Android属性动画缩放
  • python 嵌套
  • 陕西税务平台
  • 江西税务局
  • 江苏国税电子国税局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设