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 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
PHP 中常量的知识整理
Apr 14 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
PHP让网站移动访问更加友好方法
Feb 14 PHP
PHP7修改的函数
Mar 09 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 中的批处理的实现
2007/06/14 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
异步加载script的代码
2011/01/12 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
javascript回到顶部特效
2016/07/30 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python之pymysql的使用小结
2019/07/01 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
土木工程专业自荐信
2013/10/04 职场文书
高一历史教学反思
2014/01/13 职场文书
学生打架检讨书大全
2014/01/23 职场文书
实习老师离校感言
2014/02/03 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
宝塔更新Python及Flask项目的部署
2022/04/11 Python