的
用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代码中显示出来
源码地址: 传到码云了,看其中的test.php文件,是介绍他的用法。
以上就是用php生成HTML文件的类的详细内容,更多请关注其它相关文章!
更多技巧请《转发 + 关注》哦!
天我来谈谈我对传统HTML与VUE的区别理解(不谈太深的区别,查了一下网上那些说的都一样,我只谈很多人最关心的不一样的,说不对请理解,对不太了解或想了解VUE的人)。
1、 什么是vue
官网介绍:vue是一套构建用户界面的渐进式框架。它与其他重量级框架不同的是,vue采用自下而上增量开发的设计。Vue的核心库只关注视图层,非常容易学习,非常容易与其他库或已有项目整合。
Vue的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图层组件。
2、什么是HTML(HTML5)
HTML5是Web中核心语言HTML的规范,用户使用任何手段进行网页浏览时看到的内容原本都是HTML格式的,在浏览器中通过一些技术处理将其转换成为了可识别的信息。
总结:它们相同的地方就一句话:用途和结果都是一样的,不管是VUE还是HTML,最终都是将数据使用各种UI及方式展现给用户,也就是都是视图层页面的。
有人会说使用HTML和VUE开发有什么区别呢?许多人觉得结果都是视图层表达,而且VUE打包发布后不还是HTML+一堆JS文件,而且还要引入导入编译感觉特麻烦,感觉VUE好难,为什么要学VUE?
1、开发和部署
VUE 开发过程确实挺麻烦的,要安装依赖,要npm一堆包(还经常失败)。而HTML就简单多了,直接就拿来主意,下载下来,改改就用。
部署的话都差不多,都是在任何服务上都可以直接使用,而且都没有什么依赖。
但是我觉得VUE的开发类似于开发一个APP,所以他的打包结果是比纯HTML+JS更安全的,相当于做过混淆,因而他发布后的体积更小。
2、数据通讯
HTML+JS 数据POST,GET 等基本访问方式,但是如果直接在HTML中使用数据判断,或数据循环输出必须借助js,jquery等通过前端处理然后对id进行赋值操作,所以一般只能借助动态语言如php,java,.net等语言环境进行转化,但这样使得web对动态语言环境依赖性过强,造成后端迁移时太过于复杂,而且这样的Web一般要求前端和后端部署在一起。
VUE则不依赖于动态语言输出环境,只要是双方约定了数据传输接口,服务器放在哪里,不管使用什么后台语言都没关系,因而他的灵活性更强。
3、安全性
有些产品有些公司对语言是有选择的,主要是不想让代码暴露太多,而HTML+JS的方式往往是达不到要求的,因而现在许多企业还是在使用桌面软件的形式,又或者是要你使用对方的云服务,而私有云部署则要贵的很多,而且比较贵的软件还要安装秘钥软件,加密狗等方式,无非就是防止你将软件转移或无限使用或获取他的核心算法(虽然js也是有混淆方法的,但很少有人会这么做,我也没试过但是很影响效率)。
以前我在一个公司就是加班写了一个WEB程序里边有一个算法是分析公司产品结构的(那时VUE还不盛行),正好呢又遇到一个懂点的老板(居然会用F12),结果看到核心代码了,当时就否定了,改用了WinForm 重写,那个辛苦你懂的。
VUE的打包的话,其实就是根据在页面中所使用到的组件然后根据你的逻辑关系等进行混淆打包,然后在用户加载时按需进行加载解析,从某种意义上来说做WEB是一种保护。我觉得这与桌面程序及APP打包效果是一样的(软件和APP也是可以反编译嘛,反编译后的结果就是混淆),当然不说加密混淆了。
现在国内出现了像DCloud、APICloud(虽然这二家经常打架,毕竟相似度很高,我不做评论,但不可否认对一个只会写HTML+JS的人转写APP是一个不错的选择)这些由HTML5开始的跨平台软件也开始支持VUE了。
最后附上VUE打包后的调试预览图,纯HTML的就不多说了,自己F12吧。
51CTO.com快译】在本文中,我们将逐一介绍目前人气较高的三种编程语言:PHP、Ruby和Python。
我们将分析它们是如何工作的,它们彼此有何不同,谁在使用它们,以及每种语言受欢迎的程度。
一、 PHP:互联网上最受欢迎的脚本语言
PHP(超文本预处理器语言)是由Rasmus Lerdorf设计的一种基于服务器端脚本解释语言,因为开发效率高、灵活、学习成本低,所以常被用于创建动态的交互式网站,当然除了网站以为,还可以用它来实现APP的API接口开发,一些简单的服务程序开发,尤其是当SWOOLE诞生之后,很多PHP开发者就用这个来开发服务程序。
WordPress是用PHP开发的一个非常流行的博客平台,我们可以使用它来快速实现我们的网站,同时还可以使用它来实现一些基于CMS的网站系统,当然如果你对PHP和WordPress感兴趣,可以参考课程(http://rockingcode.com/);你只需要认真的学习9个小时后,就能学会如何从零开始将一个网站,设计成一个响应式扁平式的WordPress网站。
据维基百科声称,截至2013年1月,PHP已安装在超过2.4亿个网站(其中39%抽样)和210万台网站服务器上。
(1)PHP的优点
采用PHP许可证发布的免费软件
容易上手(学习曲线短而平)
由广大用户和开发人员组成的庞大社区
提供了广泛的数据库支持
提供大量的可用扩展和源代码
允许在受限制环境下执行代码
提供原生会话管理和扩展API
对微软的ASP(动态服务器页面)等与之竞争的语言而言,是个不错的替代选择
可以部署到大多数网站服务器上
适用于几乎每一种操作系统和平台
(2)PHP的缺点
不适合开发桌面应用程序
错误处理机制历来很差劲
全局配置参数会改变语言语义,给部署和可移植性带来了复杂性
对象在默认情况下值调用(CallByValue),这与大多数语言恰好相反,这让许多程序员猝不及防
通常被认为不如其他编程语言来得安全可靠
(3)谁在使用PHP?
Zend
雅虎
谷歌
美国宇航局
万维网联盟(W3C)
(4)受欢迎程度
据维基百科声称,截至2013年1月,PHP已安装在超过2.4亿个网站(其中39%抽样)和210万台网站服务器上。
(5)语法
PHP脚本由< ?php开始,以?>结束。PHP文件的默认文件扩展名是“.php”。PHP文件通常含有HTML标记和一些PHP脚本代码。
<?php// PHP code goes here?>
二、Python:通用编程语言
Python是一种广泛使用的高级语言(但它也用于一系列广泛的非脚本语言),以便程序员用行数较少的代码就能表达概念。它是在上世纪80年代末提出来的,由Guido van Rossum开发。
就跟所有脚本语言一样,Python代码酷似伪代码。这种编程语言具有优雅的设计和语法规则,这让它即便在拥有多个程序员的开发团队中也具有相当强的可读性。它支持构建计算机程序的结构和元素的多种方法,包括面向对象编程和函数式编程。
(1)Python的优点
简单易学
可在多个系统和平台上运行
易读、条理化的语法
提供了快速原型和动态语义功能
出色的社区支持
通过测试和导入关键函数,易于构建应用程序
通过认真实施程序包和模块,获得可重用性
面向对象编程驱动型
(2)Python的缺点
它在处理多处理器/多核心工作方面其实不是很好
相比Java等其他语言,Python开发人员群体比较小
缺少商业支持机构,即便对开源项目而言也是如此(不过这种情况在变化)
数据库访问层方面有限制
众所周知,运行速度不如Java等语言
(3)谁在使用Python?
雅虎地图
Zope公司
Linux Weekly News
Shopzilla
Ultraseek
(4)受欢迎程度
据维基百科声称,自2008年以来,Python屡屡跻身于TIOBE编程社区指数评选的八大最受欢迎的编程语言。它是语法并非主要基于C的受欢迎程度排在第三位的语言。
(5)语法
调用解释器而不将脚本文件作为参数来传递可调出下列提示符:
$ pythonPython2.4.3(#1,Nov112010,13:34:43)[GCC4.1.220080704(RedHat4.1.2-48)]on linux2Type<"help<",<"copyright<",<"credits<"or<"license<"formore information.<><><>
将同一文本输入到Python提示符的右边,按回车键,会输出文本:
<><><>print <"Put some text here!<";
(6)岗位需求
据Jobs Tractor网站在过去12个月分析在推特上广告的45000多个开发岗位的情况来看,结果如下:
PHP – 8238
Ruby – 2937
Python – 1587
虽然PHP在这个网站上仍拥有最大的统计数字,切忌别将这种统计数字作为学习或使用一种编程语言的参考依据。
三、Ruby:解释型的、纯粹的面向对象编程语言
Ruby(编程语言)经常与Ruby on Rails(或简称rails)在一起,后者是一种开源全栈Web应用程序框架。它是一种动态、命令式的面向对象编程语言,由日本的松本行弘(Yukihiro Matsumoto)开发。这种语言受到了Perl、Eiffel和Smalltalk的影响。它有动态类型系统和自动内存管理功能。
(1)Ruby的优点
和PHP一样是开源的
适用于多个平台
可以嵌入到超文本标记语言(HTML)中
一种甚高级语言(VHLL)
提供了将数据方法封装在对象里面的功能
纯粹的OOP(面向对象编程)
超丰富的字符串和文本处理技术/方法
很容易连接DB2、MySQL、Oracle和Sybase等数据库
用Ruby编写的可扩展程序很容易维护
拥有一套整洁、简易的语法,让新开发人员很容易上手
能够用一套简单的API编写多线程的应用程序
提供了高级的数组类
能够用Ruby或C编写外部扩展库
允许“保留字”用作标识符,只要解析器并不觉得有歧义,但是不太建议这样做。
更好的安全功能
它有调试器
它有灵活的语法
功能强大的字符串处理机制
(2)Ruby的缺点
很难学会
缺少信息资源
相比其他编程语言,处理时间(CPU时间)比较长
开发和更新比较慢
(3)谁在使用Ruby?
Google Sketchup
37signals
GitHub
Shopify
Indiegogo
Basecamp
(4)受欢迎程度
据Ruby官方网站声称,Ruby跻身于全球十大最受欢迎的编程语言排行榜(比如TIOBE指数)。其迅猛发展主要归功于用Ruby编写的软件大行其道,尤其是Ruby on Rails Web框架。
(5)语法
所有Ruby文件都会有扩展名“.rb”。使用/usr/bin目录下的Ruby解释器,你就可以运行Ruby代码。
#!/usr/bin/ruby -wputs"Put something here";
学习一种新的编程语言很费时间,也很乏味。.Net开发人员会跳出来说“我为啥要学?我是专业的.Net开发人员,平日的工作让我没时间来学习一种新的编程语言。”
但实则不然。你可以从新的编程语言当中学到许多知识,如果它们对其他经过优化的语言加以完善,更是如此。Ruby就是这样一种语言。我同样认为,由某种编程语言方面的开发新手变成专业人员确实不易,但你会感谢这番经历。现在我只想告诉大家:如果你坚持使用Ruby,那么不会吃亏。乐观些!
(6)Ruby是什么?
如上所述,Ruby是一种完善的语言,它结合了众多编程语言的思想和方法。Ruby出色地融合了Python易于理解的流程、Smalltalk的优雅性和Perl简单易学的语法风格,同时也是一种高级的面向对象编程语言(如今的大多数编程语言都是如此),它是在上世纪90年代中期出现在日本的,现在Ruby已逐渐开始在欧美也更流行起来。
Ruby以动态类型系统和自动内存管理著称。我说的动态类型是指,Ruby程序中的大多数类型检查是在运行时执行的,这意味着你没必要为整数和字符串类型而操心。Ruby会为你做这项工作。我们会在后面的一个简短例子中深入探讨这个话题。
推出Ruby的基本目的是让人们很容易了解代码与机器交互。Ruby之父松本行弘坚持认为,设计Ruby的初衷是提高程序员的工作效率,而不是优化机器。
(7)Rails是什么?
Rails是用Ruby编写的一种极其高效的应用程序框架,由David Heinemeier Hansson开发。据说,相比用基于Java的应用程序框架来开发,用Rails开发的Web应用程序其速度要快十倍。Rails是基于Ruby的开源框架,它可用于快速的数据库集成。
Rails以打破常规的概念著称,因此避免了约定,采用了一种动态编程结构。应用程序的基本代码和更新后的数据库始终含有Rails从头到尾执行程序所需要的一切。
一个基本的Ruby程序
看看输入这段代码会有怎样的结果:
代码:
personal=“I don’t love my girlfriend” puts personal
输出:
I don’t love my girlfriend
这实际上会将结果打印输出到控制台。没有初始化、分号和主要方法。
现在,不妨看一下我们要翻转字符串时PHP与Ruby在编程方面的简单区别:
PHP:
strrev(“string”); Ruby: “string”.reverse
哇!你的字符串马上就会翻转。看一下用这两种编程语言来实现的难易程度。基于Ruby的编程语言让你很容易编写程序。它更像用英语来编写,而不是用编码语言来编写。它是编程语言的未来。
(8)Ruby(和Rails)的优点
我知道Ruby这个世界很大,我连皮毛都未触及,一篇小小博文根本不足以探究Ruby的世界。因此,我们不妨直接介绍Ruby的优点:
优雅――正如我在前面指出,这个优点正是Ruby的强项。作为一种编程语言,Ruby超优雅,几乎就像英语。正是由于类似英语的这个优点,新手也很容易上手Ruby,不必害怕。
简洁而强大――上面的例子本身就解释了Ruby代码有多简洁。代码尽可能简短。另外,Ruby与其他任何语言一样强大,因为它是面向对象的高级编程语言,就像其他新潮的编程语言那样。
从不重新发明轮子――Rails(Ruby)是一种编程接口,它根本不会让你重新发明轮子。它生成的代码可反复地重复使用。
内置测试――Rails以用具(harness)和示例数据(fixture)著称,它们充当支持代码,因而让程序员更容易编写测试用例。另外,Rails创建简单的测试桩模块(test stub),这些桩模块可以由程序员来扩展。
开发、测试和生产环境――Rails巧妙地在三个不同的环境(即开发环境、测试环境和生产环境)下启动你的项目。这三个环境用起来彼此略有不同,各自补充原始的软件开发生命周期。
(9)展示时间
现在,不妨看一下几个使用Ruby来实现的总体比较优秀的网站(其实是知名网站)。你会看到设计人员如何借助Ruby在众多网站中脱颖而出。
A List Apart
Basecamp
CrunchBase
Github
四、那么,哪种是我该使用和学习的最佳编程语言?
你从大多数程序员会听到的答案是“你用它们都可以处理各项任务。”它们都是不错的选择。没有好坏之分。这总是取决于你想完成什么样的任务。
如果你迈出一步学习一种编程语言,那么很可能会使用内置框架来用于你的项目。基本上来说,Web框架让你更容易开发应用程序。大多数网站都有一系列共同的功能(比如处理会话和数据验证),框架可以防止你每当创建网站时重写这部分内容。
如果你已经有了深入了解,PHP有几种CMS框架可供使用。最流行的PHP内容管理系统(CMS)是WordPress、Joomla和Drupal,大多数有丰富的插件。你可以轻松编写新的CMS,只需要耐心地看完几天的教程。
还有其他相当好的框架,但是使用流行框架提高了迅速找到支持或找到所需插件的可能性。就Python而言,有Django和CherryPy这两种Web框架,它们为你提供了相当不错的工具包。
如果你选择了Ruby,你认为你受到的限制性会大一点(因为这种语言比较新),但其基本框架是Rails。你还需要考虑哪种语言提供最出色的支持,那样万一你在代码方面遇到了问题,可以迅速找到答案。
PHP是用于编写HTML页面的最佳语言。
Python是一种通用编程语言。它可以用于构建从Web应用程序、爬虫程序、守护进程到桌面GUI应用程序的几乎一切程序。
Ruby最擅长快速构建数据实体的Web应用程序,那样你可以专注于特别功能,而不是插入、更新和删除这些查询操作。
就是这样。但愿你已大致了解了要学哪种编程语言。
原文标题:The Three Programming Languages in a Nutshell
文章审核人:回忆的翅膀
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
*请认真填写需求信息,我们会在24小时内与您取得联系。