目的

用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

最新文章

  1. Android Weekly Notes Issue #224
  2. VS2015 RTM与ASP.NET 5 RC1之坑
  3. sql server实现自定义分割月功能
  4. velocity模板使用建议
  5. [oracle] 设置PL/SQL Developer 字符集
  6. iOS开发——网络Swift篇&amp;NSURLSession加载数据、下载、上传文件
  7. A Tour of Go Struct Literals
  8. nrf51822蓝牙芯片ble_app_proximity程序总结
  9. [置顶] SPL讲解(6)--Condition篇
  10. UVA 10954 Add All
  11. C语言:min和max头文件
  12. Oracle 11G Client 安装就可以用上Oracle11G啦,不用傻傻的安装2G多的Oracle啦,安装特别简单,使用起来更简单
  13. yml 文件操作方法
  14. 升级node版本
  15. 用bat批处理程序通过DOS命令行删除所有的空文件夹
  16. python3 重写、重用、重载
  17. 关于封装了gevent的request grequest库的使用与讨论
  18. redis 学习资料
  19. android的消息处理机制(图文+源码分析)—Looper/Handler/Message[转]
  20. 《Ubuntu标准教程》学习总结

热门文章

  1. 数据读进set,进行后处理
  2. 7章 Admin
  3. /bin/bash: jar: command not found(转载)
  4. bzoj3252攻略(线段树+dfs序)
  5. nginx+thinkPhp配置虚拟主机和伪静态规则重写
  6. android序列化(2)Parcelable与Parcel
  7. IFormattable,ICustomFormatter, IFormatProvider接口
  8. Python学习日记之文件读取操作
  9. 使用QTP录制自带Flight小实例
  10. 面试中的一些小问题之html5和html4的区别?