php生成HTML文件的类方法


Posted in PHP onOctober 11, 2019

目的

用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代码中显示出来

源码

地址: https://gitee.com/myDcool/SummerHtml 看其中的test.php文件,是介绍他的用法。

以上就是用php生成HTML文件的类的详细内容,更多请关注三水点靠木其它相关文章

PHP 相关文章推荐
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
php动态生成函数示例
Mar 21 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
php报错502badgateway解决方法
Oct 11 #PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 #PHP
laravel 时间格式转时间戳的例子
Oct 11 #PHP
PHP调用接口API封装的例子
Oct 11 #PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 #PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 #PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 #PHP
You might like
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
python基于http下载视频或音频
2018/06/20 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python opencv读mp4视频的实例
2018/12/07 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
python三引号如何输入
2020/07/06 Python
python如何爬取动态网站
2020/09/09 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
Python的collections模块真的很好用
2021/03/01 Python
幼儿园教师个人反思
2014/01/30 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
python数字转对应中文的方法总结
2021/08/02 Python