- 0
- 0
- 约1.4万字
- 约 21页
- 2018-02-05 发布于浙江
- 举报
下载
第11章 中场三:生成HTML模块
不仅是P H P ,其他的任何We b脚本语言在H T M L代码和脚本语言本身的转换方面都不太灵
活,程序必须把脚本模式转换成 H T M L模式,然后再转换回来,这样一次次的转换破坏了代码
的完整性,降低了脚本的可读性。这一章研究如何不脱离出 P H P脚本模式而生成H T M L代码。
我一直都是一个程序员,并使用 i f语句和 f o r循环的方式来思考。因此,如果我被迫放弃
正在使用的编写 H T M L 的编程语言,就会很不开心。对我来说,只要大概瞥一眼,就可以很
容易地理解下面这段代码的意思:
但是这样一段就难懂得多:
能很快从中提取出成对的?php .. ? 吗?这样书写的代码多难调试和维护呀!
不幸的是,要正确使用H T M L代码,必须使用双引号。但是在 e c h o语句中使用双引号就会
发生错误,而当需要进行变量替换的时候就不能使用单引号字符串。我尝试通过为 H T M L代
码创建一个P H P类来减少这种不便。
11.1 HTML类的设计目的
在编写这段 P H P 代码之前,一个重要的步骤就是明确代码需要实现什么功能,就是说,
这个H T M L类用来做什么:
• 生成H T M L代码时,尽量减少使用 e c h o语句,这个目的使 P H P代码更易读,因为不需要
避免双引号的使用。
• 遵循J AVA 的用户接口模型,只要简单地写上,元素就会被定义,然后被添加为更大的
元素。
• 为H T M L标记提供缺省的属性,很多H T M L语句包含多余的信息,比如背景颜色和字体大小。
• 可以把We b 页面元素存储在数据库中,提供对 H T M L 元素的缓存,这样会在将来生成
We b页面时节省宝贵的运行时间。
注意 需要强调的一点是,这个正在开发的模块并不是为大量访问者的产品环境而设计
的,它并没有经过最大负载的检验。更确切的说,这个模块是作为一个“思路试验”被
开发出来的,就是说,我把这个模块用在自己的网站上,其他网站的情况也许会不同。
第11章 中场三:生成HTML模块计计169
下载
11.2 生成一个基类
注意 这一节中的代码可以在 c h 11 / 0 1 目录中找到。
既然已经明确了目的,就需要找到一个切入点来开始写代码, H T M L 的基础是标签名和
属性列表,每个标签都有一个相对的结束标记,大部分标签都是容器 ── 可以包含其他标签。
有了这些知识,让我们来生成一个表述通用标签的类。清单 11 - 1中的代码描述上页中的对象
结构,其中定义了两个类,h t m l b a s e类提供对属性的支持和一个生成方法,这个生成方法把标
签名和它的属性组合起来,在一个缓存变量中生成 H T M L代码,然后,缓存中的H T M L代码数
据被返回给调用者。既然这个 H T M L字符串是被返回给调用者的,那么,在类中对 H T M L 的使
用就没有任何限制了──它可以返回给客户端浏览器、存储在数据库中或是和其他 H T M L代
码组合起来。
清单11-1 first.php3支持H T M L标签
170计计PHP3 程序设计
下载
这段脚本显示:
f i r s t . p h p 3这段代码的一个很特别的特点是对 d o c t y p e标签的支持,只要把它加入, d o c t y p e
第11章 中场三:生成HTML模块计计171
下载
标签就告诉浏览器它所要处理的是哪种文本类型。在这个例子中,后面所跟的文本是 H T M L
V 3 . 2 。此时详细解释 d o c t y p e 并没有太大的作用─它包括X M L 和D T D (Docum
原创力文档

文档评论(0)