位置: 编程技术 - 正文

简单的自定义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新特性)

  • 增值税专用发票的税率是多少啊
  • 向个人提供居住证明
  • 进出口税则是什么意思
  • 提供维修业务的税率
  • 高铁票进项抵扣怎么在增值税系统申报
  • 印花税可以申报以前年度吗
  • 没有发票的福利有哪些
  • 知道含税价,税率,怎么算税金
  • 发票代码有误什么意思
  • 可变现净值与公允价值孰低
  • 政府扶贫支出
  • 公司注销固定资产交什么税
  • 公司付款给个人一定要取得发票吗
  • 增值税申报收入和企业所得税申报收入
  • 支付给职工和为职工支付的现金
  • 以公司名义买货车可以抵税吗
  • 同一套房
  • 股权变更印花税双方都要交吗
  • 自持是啥意思
  • 房地产企业不可能没有合同台账
  • 行政费用包括哪些企业行政后勤管理费用
  • 凭证上附单据多少张怎么看
  • 设计部工资计入哪个科目
  • 所得税费用属于损失吗
  • 自然人股息红利免征个人所得税?
  • 新版edge浏览器文字不显示
  • 会计结算要求
  • 商品房买卖合同面积差3%法律规定
  • 怎么做才能让电脑里自动翻译成中文
  • php自动下载文件到本地
  • 软件测评费用标准
  • 为员工租房租金怎么入账
  • PHP:curl_multi_setopt()的用法_cURL函数
  • 单位管理费用核算
  • 供应商自身的品质问题
  • 财政预算单位可以既是省级又是中央
  • 富文本编辑器和markdown编辑器的区别
  • 海关进口增值税计入什么科目
  • 微信支付开发包
  • vue快速入门与实战开发
  • springcloud分布式微服务组件
  • python多进程间通信
  • 房地产开发企业土地出让金扣除政策
  • 银行每月贷款额度有多少
  • 数据库varchar和nvarchar
  • 购买固定资产会计凭证
  • 会计专业技术资格初级是什么职称
  • 借贷记账法的记账依据是什么
  • 普通发票领多了怎么处理
  • 进项税和销项税怎么理解
  • 专项资金账务体现不出怎么办
  • 季节性停工折旧计入什么科目
  • 专项应付款在借方
  • 股东投资款超过注册资金的案例
  • 增值税减免附加税用计提吗
  • 资金紧张怎么说
  • 工会经费结余可以结转下年吗
  • 企业增值税额
  • 查账征收的优点
  • 金税盘清卡怎么弄
  • 离职员工未休完的年假如何支付
  • 信息技术服务费可以全额抵扣吗
  • 工业企业产值如何确定
  • 案例分析应收账款管理存在的问题
  • 有销项税额转出吗
  • 营改增后工程项目计价规则也随之发生了改变对还是错
  • 物流行业货币资金占比
  • sql中isnull是什么意思
  • sqlserver的sql文件导入mysql
  • windows7磁盘清理命令
  • win10如何将我的电脑添加到桌面
  • 斗西游破解版
  • [置顶]公主大人接下来是拷问时间31
  • html标签自动换行
  • javascript基于
  • jquery图片效果
  • javascript总结
  • 土地增值税有哪些税收抵扣
  • 河南地方税务局税收征管档案管理办法(试行)
  • 天津税务局网上办税厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设