目的

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

起因

这个东西确实也是心血来潮写的, 本来打算是输出HTML片段用的, 但后来就干脆写成了一个可以输出完整HTML的功能;

我很满意里边的实现缩进的机制, 大家有用到的可以看看

p.s. 现在都是真正的前后端分离了(vue, nodejs, webpack...), 这个东西喜欢就用, 不喜欢就算了~

支持的标签

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

实现

整体

1.每个标签都对应一个类, 比如 标签, 对应了一个叫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文件,是介绍他的用法。

nodejs发送数据到html显示_用php生成HTML文件的类相关推荐

  1. 如何在客户端发送ajax请求,ajax - 从服务器(nodejs)发送数据到客户端(ajax请求)

    如何使用nodejs将数据从服务器发送到客户端? 所以基本上我通过点击一个按钮来调用这个函数 javascriptfunction createStuff(tid) { $.ajax({ type: ...

  2. linux c语言 udp 接收和发送数据用同一个端口_网络编程基础入门及TCP,UDP

    1.网络编程入门 1.1 网络编程概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享 ...

  3. linux c语言 udp 接收和发送数据用同一个端口_【Python学习笔记】80、UDP编程

    TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包.但是,能不 ...

  4. python怎么写excel数据透视自动报表_使用Python生成自动报表(E

    使用Python生成自动报表(Excel)以邮件发送 数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的.产品的等等.而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用P ...

  5. java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽

    //autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

  6. python生成exe运行慢_利用pyinstaller生成exe文件碰到的一些问题及解决方法

    在"开源图像标注工具labelme的安装使用及汉化"这篇博客中,使用pyinstaller将labelme项目的入口python文件main.py打包,生成了main.exe文件, ...

  7. python实时数据存储与显示_利用python进行数据加载和存储

    1.文本文件 (1)pd.read_csv加载分隔符为逗号的数据:pd.read_table从文件.URL.文件型对象中加载带分隔符的数据.默认为制表符.(加载为DataFrame结构) 参数name ...

  8. sql 查询一个月的数据按天显示_数据分析-sql复杂查询

    视图 在数据库里面有很多表,表里面存放着实际数据.而视图里存放的是sql查询语句 -如何创建视图 create view 按性别汇总(性别,人数) as select 性别,count(*) from ...

  9. easyexcel 检查表头是否匹配_利用easyexcel生成excel文件-自定义表头与数据栏对应的处理方式...

    前面几篇文章测试过用easyexcel生成动态表头,动态样式.特别是动态表头以及下面数据列表与表头字段的对应是采用注解方式实现的.但在实际工作中,有些到处是灵活生成的,也就是说对于同一个类,在不同的场 ...

最新文章

  1. stackoverflow_StackOverflow帐户如何确保您在公认的开发人员表格中占有一席之地
  2. redis nio 多路复用
  3. 程序员,什么是高手?什么是低手?
  4. python继承编程教程_Python实现通过继承覆盖方法示例
  5. Kubernetes与docker集群管理常见问题解析
  6. 形态学图像处理(二)
  7. [译] 第十一天: AeroGear Push Server - 轻松推送提示信息
  8. 华米OV 万亿 IoT 争夺战
  9. 【转】使用Mysql-connector-c++插入数据时乱码解决
  10. 计算机创业计划书800字大全,2017创业计划书范文800字
  11. 3dmax人物模型制作全的步骤
  12. 硬件系列(一)----------WIFI打印机之使用socket进行打印机搜索
  13. SparkStreaming概述
  14. 22种免费网络推广方式有哪些?
  15. 谷粒学苑 —— 3、后台系统前端项目创建
  16. 蓝蓝算法第二期,T51
  17. 用Python制作生日蛋糕、生日快乐,生日祝福代码
  18. Android9.0版本Vold服务源码分析
  19. 人工智能(mysql)—— mysql事务、存储引擎及调优
  20. Legendre多项式

热门文章

  1. Error in bl_make_text_box(token, drawing_context$gp, drawing_context$yoff_pt) : function ‘Rcpp_preci
  2. 什么是回归分析(regression analysis)?有哪些类型的回归分析(regression analysis)?
  3. R语言Kolmogorov-Smirnov假设检验(正态性检验):检验数据的正态性
  4. python-九九乘法表
  5. mysql外键无法删除_mysql外键无法删除数据的情况
  6. python 查看 nvida 驱动、 cuda、pytorch、tensorflow的版本
  7. Failed to load module canberra-gtk-module错误的解决方案
  8. k8s免安装-使用kubectl部署Pod, Deployment, LoadBalancer
  9. linux自动备份db2数据库备份,db2 自动备份(linux 、windows)总结
  10. 用MATLAB画桌子,怎样用matlab编写桌子的动态变化图