用php生成HTML文件的类
目的
用PHP生成HTML文档, 支持标签嵌套缩进, 支持标签自定义属性
起因
这个东西确实也是心血来潮写的, 本来打算是输出HTML片段用的, 但后来就干脆写成了一个可以输出完整HTML的功能;
我很满意里边的实现缩进的机制, 大家有用到的可以看看
p.s. 现在都是真正的前后端分离了(vue, nodejs, webpack...), 这个东西喜欢就用, 不喜欢就算了~
支持的标签
html, head, meta, title, body, input, select/option, form, table, div, 注释, 以及 自定义标签(成对出现的标签), 还有一大堆属性(在下边有介绍)
实现
整体
- 每个标签都对应一个类, 比如 标签<html>, 对应了一个叫html的类
- 标签中有用到的属性, 我都放到了一个类中了, 并提供了方法去获取赋了值的属性
嵌套缩进
每个标签我都设计了一个类, 比如 table 标签, 就有一个叫table的类与之对应
每个类里边一般都有以下3个重要成员:
- 本标签的缩进值
- 输出本标签最终字符串的方法, out()
- 给本标签添加子标签的方发, append()
其中append()接收的是子标签的对象, 在最终调用$html->out()的时候, 每个子标签对象里的out()方法会被依次调用, 缩进值也会从上层类传递到最下层类并累加;
另外, 每个类都包含了属性类(calss attribute ), 每个类的缩进值是从属性类里继承而来的, 所以如果修改了属性类里的缩进量, 所有类的缩进量就跟着改变了
你也可以给标签类添加一个自己的缩进值来覆盖统一的缩进值
属性
我这里的方案是定义一个类(calss attribute ), 里边有
- 标签可能拥有的属性
- 对应的setXxx方法
- 组装非空的属性拼成字符串的方法
- 为了不影响下次显示, 会有专门的清空方法, 把之前赋值的属性都清空
这样的话, 在定义标签属性的时候, 需要的就赋上值, 不需要的不赋值就不会在最终的HTML代码中显示出来
源码
地址: 码云 看其中的test.php文件,是介绍他的用法
原文地址:https://segmentfault.com/a/1190000015958106
转载于:https://www.cnblogs.com/lalalagq/p/9975246.html
用php生成HTML文件的类相关推荐
- java代码查询索引文件实例_关于使用pdfbox的对PDF文件通过lucene生成索引文件IndexPDFFiles类代码示例...
一.前言 下面通过pdfbox的pdfbox-2.0.9源码中org.apache.pdfbox.examples.lucene.IndexPDFFiles索引PDF文件生成类,基于apache的lu ...
- java 导出mdb文件_Java中Java生成mdb文件工具类
package com.util; /** * Java生成mdb文件[MS Access文件] * 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的 ...
- nodejs发送数据到html显示_用php生成HTML文件的类
目的 用PHP生成HTML文档, 支持标签嵌套缩进, 支持标签自定义属性 起因 这个东西确实也是心血来潮写的, 本来打算是输出HTML片段用的, 但后来就干脆写成了一个可以输出完整HTML的功能; 我 ...
- IDEA下JNI开发快速生成头文件方法
JNI生成头文件的命令是: javah -jni -classpath (搜寻类目录) -d (输出目录) (类名) 步骤: 打开File->Setting->Tools->Ente ...
- java+JNI 生成包头文件与调用实例
最近项目需要使用JNI调用c++动态库,在网上找了些相资料大部分都是dll 的调用生成,so方面的比较少,不是很全所以刚刚测试通过就把自己的心得写下来了. 1.在项目包中定义自己和C++调用接口类: ...
- 自动生成PDF文件(Java通过PDF模板自动生成PDF)
思路: 1.创建PDF模板(先创建对应的excel文件,创建好后另存为PDF文件)即可. 2.使用Adobe Acrobat DC工具打开PDF文件,设置自己想要替换的内容. 3.maven项目引入依 ...
- java生成db文件
https://www.cnblogs.com/kanyun/p/9298163.html 工作中遇到一个需求,就是需要把mysql里的一些表数据生成db文件,给客户端使用,客户端使用sqlite数据 ...
- 使用PHP生成Excel文件并发送附件到邮箱
一.生成Excel 找了个插件:PHP_XLSXWriter github地址:https://github.com/mk-j/PHP_XLSXWriter 二.参考代码 我是按照我自己项目的写的代码 ...
- Android 使用PdfDocument生成PDF文件及遇到的问题
一.PdfDocument使用 PdfDocument是Android原生的生成pdf文件的类,这个类的使用可参考: https://developer.android.google.cn/refer ...
最新文章
- nvGRAPH API参考分析(二)
- map遍历react中img图片路径出错
- pandas将df赋值到另一个df_Python pandas将多级列标题df映射到另一个df
- SQL 语句 - Select(1): 指定表
- OpenGL程序运行提示“glut32.dll丢失问题”
- C/C++编程笔记:浅析 C 语言中宏定义的使用,知识点全解
- protobuf 安装_Beego 安装时 一直无响应(443)怎么办
- Html中文字过多,单行超出和多行超出显示省略号
- python大漠插件多开_[求助,]用python调用大漠插件,注册好后调用出错.完全不会了...
- 【语音合成】基于matlab两端音频合成【含Matlab源码 1490期】
- 使用nginx代理实现前后端分离开发调试,零基础教程
- 周爱民:真正的架构师是没有title的
- 电脑公司 GHOST_XP SP3 装机版V2013
- uni-app实现文件管理器(Android)
- 【小米商城-1 注册功能】
- K8s NetworkPolicy与网络插件flannel、calico详细版
- 搜狗输入法怎么打印间隔号
- 3DMAX 渲染AO贴图流程
- 何为全屋智能?华为用实力告诉你们:全屋智能是如此好用
- 中文乱码字幕视频观看的免费网站
热门文章
- 职业生涯中12个最致命的想法
- Java是先难后易吗_在解决问题的时候,是先难后易还是先易后难?
- android 上下滚动文字_计算机毕设项目004之Android系统在线小说阅读器
- Win32ASM学习[5]: 数据对齐相关的伪指令(ALIGN、EVEN、ORG)
- python3 hash算法使用
- windows下Java 用idea连接MySQL数据库
- AEAP的完整形式是什么?
- 汇编add和mov指令
- hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle
- dapperpoco mysql_.NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...