PHPV5[1].3.0新特性详解_第1页
PHPV5[1].3.0新特性详解_第2页
PHPV5[1].3.0新特性详解_第3页
PHPV5[1].3.0新特性详解_第4页
PHPV5[1].3.0新特性详解_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、考察的特性本文主要考察 php v5.3 的以下特性: 延迟静态绑定 名称空间 类方法重载 变量解析和 heredoc 但是,在继续之前,需要设置 php v5.3。设置php 广为人知的一个特点就是设置起来有点麻烦。这也许是因为 php 是安装在 web 服务器(例如 apache)上的,而且常常需要连接到外部数据库(例如 mysql)。而且,某种意义上,php 脚本是嵌入在 html 代码中的。换句话说,php 这种技术横跨多个复杂的领域。所以,在编写 php 脚本代码之前,必须越过很多的障碍。我希望可以改善这一现状,但是与软件技术有关的很多事情仍然很困难。不过,对于那些使用 apple

2、macs 的幸运读者来说,设置过程再简单不过了:1. 获得 php 二进制安装文件(http:/www.entropy.ch/software/macosx/php/)。 2. 在 system preferences 中关闭 web sharing。 3. 找到 /etc/apache2/httpd.conf 文件。 4. 在 httpd.conf 文件中注释掉下面这行:loadmodule php5_module。 5. 运行 php v5.3 安装文件(如果您愿意,也可以构建源代码)。 6. 在 system preferences 中打开 web sharing。 本文的目的不是仅仅介

3、绍如何安装,所以如果您的平台是 microsoft windows 或 linux,请参阅一些很棒的 php 参考书籍(见我在 参考资料 中推荐的书籍)。为了检查 php 是否已安装以及版本是否合适,在 /library/webserver/documents 文件夹中创建一个名为 phpinfo1.php 的文件。清单 1 展示了这个脚本文件的内容。本文中的所有脚本都在 下载 小节提供的压缩(zip)文件中,所以实际上不需要创建任何文件。清单 1. phpinfo1.php将该脚本文件放在 /library/webserver/documents 文件夹中之后,访问 http:/localh

4、ost/phpinfo1.php。应该可以看到类似图 1 的界面。这里可能需要用您主机的 ip 地址替换 url 中的 “localhost”。图 1. php v5.3.0 安装成功延迟静态绑定php v5.3 扩展了 static 关键词的使用。现在,无需实例化类便可访问静态类方法和属性。当类不存在对象,或者不需要对象时,这个特性就比较方便。清单 2 展示了延迟静态绑定的一个例子。清单 2. 延迟静态绑定清单 2 中的代码产生以下输出:calling who method from class b 在 php v5.3.0 之前,类 a 中的方法可能被定义为 self:who()。不幸的是

5、,这将导致调用类 a 中的函数,而不是子类 b 中的函数。php v5.3.0 用 static: 关键词修复了这个问题,允许在运行时才引用之前调用的类方法。显然这就是清单 2 中代码的目的。增强面向对象任何能增强 php 面向对象方面的改变都是受鼓励的,因为这将导致更可靠的设计和更易于维护的代码。对于清单 2 中的代码我有些许微词,基类(a)和派生类(b)中的 who() 方法是重复的。如果类 b 中不必复制该代码就好了,但是似乎 php v5.3.0 中的 _class_ 语法要求必须这么做。也就是说,_class_ 不支持延迟绑定。清单 2 中使用 _class_ 也许有点勉强,但确实可

6、以说明 php v5.3.0 有一个小小的问题。显然,对于清单 2 中的例子,这不是多大的问题,但是对于有数千行 php 代码的网站来说,就没那么简单了。重复代码通常意味着重复劳动。名称空间php v5.3 提供名称空间功能,以增强该语言的封装能力。名称空间在现代语言中非常常见,例如 c# 和 xml。名称空间的主要优点是,通过它可以为代码符号(类、函数和常量)定义独立的容器,这听起来有点复杂,其实不然。清单 3 显示了使用 php 名称空间定义本地和全局字符串常量的一个例子。清单 3. php 名称空间?php namespace test; define(astring, hello wo

7、rld!); define(testastring, hello world from my namespace!); echo my string is: ; echo astring; echo ; echo my string is ; echo astring; echo ; ? 清单 3 中的代码产生以下输出:my string is: hello world from my namespace! my string is: hello world!那么,代码中发生了什么?第一个 define 语句在名称空间 test 中创建一个字符串常量 astring。然后,当引用 astrin

8、g 字符串时,引擎首先查看本地 test 名称空间。这就是为什么看到本地定义的字符串首先显示。然后,要看到全局定义的字符串,只需使用语法 astring。有了这些简单的规则,便可以使用任意数量的名称空间,而不必担心名称冲突。有了名称空间功能,和之前相比,代码之间的界限更加清晰。而这一点又有助于团队环境中的代码整合。换句话说,不同的团队可以分配他们自己的名称空间,当所有团队成员都遵循这个惯例时,名称冲突的情况应该会降为零。这也是 5.3.0 版对 php 语言在面向对象方面的一个增强。类方法重载在 php 中,术语重载(overloading) 与通常的面向对象上下文稍有不同。在 java 语言

9、或 c# 中,“重载” 方法是指为不同参数列表提供相同代码的方法。例如,如果有一个名为 draw(string str) 的方法,那么重载的方法可以有以下形式:draw(string str, int i)。这种方法符号名称被称作方法签名,为了便于重载,返回类型被省略。在 php 中,“重载” 是指动态创建的方法和属性。这实际上是动态代码,任何这样的动态实体都是由所谓的魔术方法(magic methods) 来处理。可以在一个类中为各种不同的动作创建这些魔术方法。然后,当代码中遇到未声明或不可见的属性或方法时,便可以调用重载方法。这样风格的重载提供了很大程度上的灵活性。听起来有些复杂,所以来看

10、看一个具体的例子。清单 4 展示如何使用 php 重载调用对象和类方法。清单 4. php 重载runoverloadedtest(in an object context); overloadedmethodtest:runoverloadedtest(in a static context); / as of php 5.3.0 ? 清单 4 中的代码产生以下输出:calling object method runoverloadedtest in an object context calling static method runoverloadedtest in a static c

11、ontext在清单 4 中,注意重载的代码是如何根据调用代码来推断方法名和参数的:$obj-runoverloadedtest(in an object context); overloadedmethodtest:runoverloadedtest(in a static context); / as of php 5.3.0 要使用这种能力,程序员需要承担较大的责任。虽然重载为编写灵活的代码提供了便利,但同时也为错误提供了土壤。所以,使用重载时应该谨慎,并且要有严格的代码测试纪律。变量解析和 heredocphp 的优势之一在于字符串解析。php 对于字符串的长度没有限制,只要主机的可用内

12、存够大就行。清单 5 展示了使用 php 时拥有的灵活性。清单 5. php 解析清单 5 中的代码产生以下输出:coffees taste is great he drank a number of he drank some coffees he drank some coffees清单 5 中的代码并不是直到 php v5.3.0 才有的。这里给出这段代码,只是为了提醒您字符串处理支持和一些解析规则。但是,php v5.3.0 增加了增强的 heredoc 语法支持。清单 6 显示了一个简单的例子。清单 6. php v5.3.0 heredoc 的应用 foobar hello world! foobar; ?清单 6 中的代码产生以下令人惊叹的输出:hello world! 那么,清单 6 有什么特别之处呢?php v5.3.0 中的 heredoc 支持使用双引号。其优点主要在于,双引号中的内容不会被解析,这样便有了更大的灵活性。基本上,这只是在已经强大的字符串支持的基础上增加了更多的灵活性。php v5.3.0 的在线参考包括更多关于这个主题和 php v5.3.0 其他相关主题的资料。php 是一项有吸引力的技术。它为拼

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论