目的

用PHP生成HTML文档, 支持标签嵌套缩进, 支持标签自定义属性

起因

这个东西确实也是心血来潮写的, 本来打算是输出HTML片段用的, 但后来就干脆写成了一个可以输出完整HTML的功能;
我很满意里边的实现缩进的机制, 大家有用到的可以看看
p.s. 现在都是真正的前后端分离了(vue, nodejs, webpack...), 这个东西喜欢就用, 不喜欢就算了~

支持的标签

html, head, meta, title, body, input, select/option, form, table, div, 注释, 以及 自定义标签(成对出现的标签), 还有一大堆属性(在下边有介绍)

实现

整体

  1. 每个标签都对应一个类, 比如 标签<html>, 对应了一个叫html的类
  2. 标签中有用到的属性, 我都放到了一个类中了, 并提供了方法去获取赋了值的属性

嵌套缩进

每个标签我都设计了一个类, 比如 table 标签, 就有一个叫table的类与之对应

每个类里边一般都有以下3个重要成员:

  1. 本标签的缩进值
  2. 输出本标签最终字符串的方法, out()
  3. 给本标签添加子标签的方发, append()

其中append()接收的是子标签的对象, 在最终调用$html->out()的时候, 每个子标签对象里的out()方法会被依次调用, 缩进值也会从上层类传递到最下层类并累加;

另外, 每个类都包含了属性类(calss attribute ), 每个类的缩进值是从属性类里继承而来的, 所以如果修改了属性类里的缩进量, 所有类的缩进量就跟着改变了

你也可以给标签类添加一个自己的缩进值来覆盖统一的缩进值

属性

我这里的方案是定义一个类(calss attribute ), 里边有

  1. 标签可能拥有的属性
  2. 对应的setXxx方法
  3. 组装非空的属性拼成字符串的方法
  4. 为了不影响下次显示, 会有专门的清空方法, 把之前赋值的属性都清空

这样的话, 在定义标签属性的时候, 需要的就赋上值, 不需要的不赋值就不会在最终的HTML代码中显示出来

源码

地址: 码云 看其中的test.php文件,是介绍他的用法

原文地址:https://segmentfault.com/a/1190000015958106

转载于:https://www.cnblogs.com/lalalagq/p/9975246.html

用php生成HTML文件的类相关推荐

  1. java代码查询索引文件实例_关于使用pdfbox的对PDF文件通过lucene生成索引文件IndexPDFFiles类代码示例...

    一.前言 下面通过pdfbox的pdfbox-2.0.9源码中org.apache.pdfbox.examples.lucene.IndexPDFFiles索引PDF文件生成类,基于apache的lu ...

  2. java 导出mdb文件_Java中Java生成mdb文件工具类

    package com.util; /**  * Java生成mdb文件[MS Access文件]  * 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的 ...

  3. nodejs发送数据到html显示_用php生成HTML文件的类

    目的 用PHP生成HTML文档, 支持标签嵌套缩进, 支持标签自定义属性 起因 这个东西确实也是心血来潮写的, 本来打算是输出HTML片段用的, 但后来就干脆写成了一个可以输出完整HTML的功能; 我 ...

  4. IDEA下JNI开发快速生成头文件方法

    JNI生成头文件的命令是: javah -jni -classpath (搜寻类目录) -d (输出目录) (类名) 步骤: 打开File->Setting->Tools->Ente ...

  5. java+JNI 生成包头文件与调用实例

    最近项目需要使用JNI调用c++动态库,在网上找了些相资料大部分都是dll 的调用生成,so方面的比较少,不是很全所以刚刚测试通过就把自己的心得写下来了. 1.在项目包中定义自己和C++调用接口类: ...

  6. 自动生成PDF文件(Java通过PDF模板自动生成PDF)

    思路: 1.创建PDF模板(先创建对应的excel文件,创建好后另存为PDF文件)即可. 2.使用Adobe Acrobat DC工具打开PDF文件,设置自己想要替换的内容. 3.maven项目引入依 ...

  7. java生成db文件

    https://www.cnblogs.com/kanyun/p/9298163.html 工作中遇到一个需求,就是需要把mysql里的一些表数据生成db文件,给客户端使用,客户端使用sqlite数据 ...

  8. 使用PHP生成Excel文件并发送附件到邮箱

    一.生成Excel 找了个插件:PHP_XLSXWriter github地址:https://github.com/mk-j/PHP_XLSXWriter 二.参考代码 我是按照我自己项目的写的代码 ...

  9. Android 使用PdfDocument生成PDF文件及遇到的问题

    一.PdfDocument使用 PdfDocument是Android原生的生成pdf文件的类,这个类的使用可参考: https://developer.android.google.cn/refer ...

最新文章

  1. nvGRAPH API参考分析(二)
  2. map遍历react中img图片路径出错
  3. pandas将df赋值到另一个df_Python pandas将多级列标题df映射到另一个df
  4. SQL 语句 - Select(1): 指定表
  5. OpenGL程序运行提示“glut32.dll丢失问题”
  6. C/C++编程笔记:浅析 C 语言中宏定义的使用,知识点全解
  7. protobuf 安装_Beego 安装时 一直无响应(443)怎么办
  8. Html中文字过多,单行超出和多行超出显示省略号
  9. python大漠插件多开_[求助,]用python调用大漠插件,注册好后调用出错.完全不会了...
  10. 【语音合成】基于matlab两端音频合成【含Matlab源码 1490期】
  11. 使用nginx代理实现前后端分离开发调试,零基础教程
  12. 周爱民:真正的架构师是没有title的
  13. 电脑公司 GHOST_XP SP3 装机版V2013
  14. uni-app实现文件管理器(Android)
  15. 【小米商城-1 注册功能】
  16. K8s NetworkPolicy与网络插件flannel、calico详细版
  17. 搜狗输入法怎么打印间隔号
  18. 3DMAX 渲染AO贴图流程
  19. 何为全屋智能?华为用实力告诉你们:全屋智能是如此好用
  20. 中文乱码字幕视频观看的免费网站

热门文章

  1. 职业生涯中12个最致命的想法
  2. Java是先难后易吗_在解决问题的时候,是先难后易还是先易后难?
  3. android 上下滚动文字_计算机毕设项目004之Android系统在线小说阅读器
  4. Win32ASM学习[5]: 数据对齐相关的伪指令(ALIGN、EVEN、ORG)
  5. python3 hash算法使用
  6. windows下Java 用idea连接MySQL数据库
  7. AEAP的完整形式是什么?
  8. 汇编add和mov指令
  9. hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle
  10. dapperpoco mysql_.NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...