位置: 编程技术 - 正文

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

  • 现代服务印花税属于哪项
  • 个体户做了定额还需要申报个税吗
  • 个体户城市维护建设税减免性质
  • 万元版和十万元版可以一起用吗
  • 个人劳务附加税税率表
  • 申报更正日期改变会导致逾期申报吗
  • 春节商家促销文案
  • 公司做帐成本发票怎么开
  • 增值税采用零税率政策的内容
  • 售后回租产生的费用
  • 经营租赁是主营业务收入吗
  • 公司交的拍卖费计入哪个会计科目?
  • 发生成本支出发票未到
  • 出口货物不用退税吗现在
  • 购买工程款计入什么科目
  • 企业食堂买东西怎么入账
  • 计算完工产品成本和月末在产品成本
  • 员工借备用金怎么写摘要
  • 提前报废资产损失税前扣除
  • 上报汇总是什么时候
  • 未办理土地使用证违反了什么法律
  • 收到保险公司退款
  • 期望和方差的计算例题
  • 维修费属于印花税
  • 外籍人士可以回国吗
  • 本企业领用外购原材料进项税要转出吗
  • bois如何设置启动项
  • 回收站已损坏 是否清空该驱动,点鼠标无法操作
  • 小规模纳税人采购商品时有可能涉及的会计科目有
  • 如何升级win10系统版本
  • vite首次打开界面加载慢问题/解决
  • php数组统计函数
  • 研究院经营范围怎么写
  • 其他业务支出的二级科目有哪些
  • 经济补偿金个人所得税计算公式
  • 原生php和框架php的区别
  • 短期投资的入账成本
  • 个人出租房可开发票吗
  • 企业注销时应收账款需要交税吗
  • 回购股票 会计处理
  • 劳务公司社保手续办理
  • 海关进口增值税专用缴款书稽核比对可能出现哪些结果
  • 资本成本在财务报表中怎么体现
  • 客户多付款不要了,多出这部分是哪种收入
  • sqlserver2008密码要求
  • 企业应付账款的借方登记
  • 金税四期上线企业还活吗
  • 取得费用报销单怎么填写
  • 出口货物退运已补税(未退税)证明
  • 政府补助收入的现金流属于什么
  • 农产品加计扣除10%进项税账务处理
  • 旅行社差额征税全额开票和差额开票
  • 承兑汇票贴现怎么做会计分录
  • 运费可以抵扣进项税额
  • 保险公司赔付进项税
  • 盈利赢利营利手机文章
  • 研发样品是什么费用
  • 手工账的做账流程图
  • 个体工商户建行贷款条件
  • 数据库高并发怎么解决
  • 装双win7系统怎么设置
  • raid主要使用三种技术
  • windows无法完成配置若要尝试恢复配置
  • windowsxp的主要特点
  • mac装win8.1
  • win8 设置
  • 升级win10后c盘满了
  • OpenGL_砖块着色案例
  • js基于什么语言
  • opengl常用函数库
  • 批处理 输出换行
  • pm2启动nodejs
  • 用python做斐波那契数列
  • js设置图片大小
  • MVC+jQuery.Ajax异步实现增删改查和分页
  • 如何查询发票代码和发票号码
  • 准予扣除外购的应税消费品已纳消费税税款的是
  • 深两优3117审定号
  • 一般纳税人服务费是几个点
  • 增值税发票清单怎么打印出来
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设