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基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php遍历文件夹所有文件子文件夹函数代码
Nov 27 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
PHP实现的浏览器检查类
Apr 11 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
php共享内存段示例分享
2014/01/20 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
JS实现li标签的删除
2019/04/12 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
Element MessageBox弹框的具体使用
2020/07/27 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
深入解析Python中的WSGI接口
2015/05/11 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python全局变量用法实例分析
2016/07/19 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
pandas的qcut()方法详解
2019/07/06 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
客户接待方案
2014/02/26 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
保研推荐信范文
2015/03/25 职场文书
实习单位鉴定意见
2015/06/04 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js