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 相关文章推荐
PHP4 与 MySQL 交互使用
Oct 09 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
php获取json数据所有的节点路径
May 17 PHP
php需登录的文件上传管理系统
Mar 21 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
PHP 传输会话curl函数的实例详解
Sep 12 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 PHP
laravel5.6实现数值转换
Oct 23 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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
python学生管理系统开发
2019/01/30 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
勤俭节约倡议书
2014/04/14 职场文书
向女朋友道歉的话
2015/01/20 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL