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 相关文章推荐
使用数据库保存session的方法
Oct 09 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
从wamp到xampp的升级之路
Apr 08 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
PHP判断JSON对象是否存在的方法(推荐)
Jul 06 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
php通过各种函数判断0和空
Jul 04 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
php 的多进程操作实践案例分析
Feb 28 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
php实现的MySQL通用查询程序
2007/03/11 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
php连接数据库代码应用分析
2011/05/29 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
PHP递归的三种常用方式
2019/02/28 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
vue 过滤器filter实例详解
2018/03/14 Javascript
python简单实现旋转图片的方法
2015/05/30 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Python rstrip()方法实例详解
2018/11/11 Python
Python线程指南分享
2019/11/19 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
学校安全检查制度
2014/01/27 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
大学老师推荐信
2014/02/25 职场文书
个人买房协议书范本
2014/10/06 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
大学辅导员述职报告
2015/01/10 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
创业计划书之寿司
2019/07/19 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python