Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14538881
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:12:35

下载本文示例代码
  目前,大多数PHP安装还是使用PHP 4.x版本。实际上,PHP 5.0已经出台一段时间了,而如今PHP 5.1.1也刚刚发行。如果你还没有升级到这些新版本,那么让我们一同看一下在新版的PHP中的变化,并在最后讨论对于PHP 6所期望的特性。  一、PHP 5.0中的变化  作为一个全新的版本号,在PHP 4和PHP 5之间存在许多实质性的区别。大多数的炒作主要围绕被重新改写过的新的对象模型。PHP 5版本更为完整并且运行性能更为良好。在PHP 4中,对象其实仅是一个粗糙的数据类型,并且是值引用的。在试图保持尽可能多的向后兼容性的同时,在PHP 5中,设置zend.ze1_compatibility_mode可以允许与版本4中方法的兼容。当然,PHP 5也存在一些向后不兼容的改变,具体包括:  ·新的保留下来的关键字大多数与对象模型相关(exception,final, php_user_filter,interface,implements,extends,public,private,protected,abstract,clone,try,catch,throw)。在PHP 4中保留的两个单词不再存在(cfunction,old_function)。  ·如果一个对象没有任何属性,那么它不再为空(empty)。  ·现在array_merge()函数只接收数组。  ·类可以在使用前声明(依赖于具体情况)。  ·get_class(),get_parent_class()和get_class_methods()现在能够返回一个大小写敏感的结果,而以前的返回结果都是小写的。  ·strrpos()和strripos()现在使用整个字符串。例如,var_dump(strrpos('ABCDEF','DAF'))将在PHP 4中返回int(3),而在PHP 5中返回bool(false)  ·如果$_SERVER存在,它将用argc和argv进行填充-这就允许CLI版本总是可以存取这些数据。  ·当传递一个无效的IP地址时,ip2long()返回FALSE而不是-1。  ·定义在一个包括文件中的函数现在能够在任何时刻为主文件所调用。如果文件两次被包括(这时函数已经被定义了),PHP 5也将发出一个致命的错误。  ·require_once()和include_once函数现在考虑到了Windows大小的不敏感性,并且将每次仅包括一个文件-即使该函数以不同大小写的文件名被调用多次。  ·摆脱了原来PHP 4中的警告。新的PHP 5在遇到一个无效的字符串偏移量时将抛出一个错误。     ·Tokenizer扩展不再定义闲置的T_ML_COMMENT常量。  注意,这些看似较多的不兼容的变化其实并不大,而且如果你想把原有代码移植到PHP 5中的话,有可能只对你的脚本作极少量的修改即可。PHP 5为做许多事情提供了更好的方法,但是如果你的目的仅是为了能使程序运行,那么你不会遇到太多的麻烦。在PHP 5中的另外一些变化有:  ·在命令行CLI和CGI脚本作了少许变化,有效地提高了新的CLI地位的重要性。  ·引入大量的新函数,其中许多是用于处理数组、字符转换和流操作的。  ·缺省情况下,MySQL客户端库没有与PHP 5绑定到一起。而是,包括了SQLite扩展-它基本上是一微型数据库引擎,其目的是消除任何设置和管理的需要。  ·新加了mysqli(MySQL增强扩展)(缺省地没有包括在内),为的是充分地利用MySQL 4.1及以上版本的优势。  想更全面地了解从PHP 4到PHP 5的变化,你可以参考PHP网站上的官方档案。  二、PHP 5.1.x中的变化  在本文成文时,刚刚发行PHP 5.1.1(在广为争论的5.1.0出台后不久)。该版本在PHP邮件列表中引起一阵小的骚乱。在5.1.0版本中,某些关键的变化被匆忙地包括进一个随后发行的候选版本中。一切似乎都静悄悄的,直到最后的发行版才引起酣然大波。然而,这些变化在5.1.1中被还原以防止出现pear::date冲突。  ·如今,闪电般登场的PDO成为PHP核心的一部分。要更多地了解与PHP相关的抽象层知识,可以参考《Database Abstraction in PHP》或者PHP网站上的官方档案。  ·PDO MySQL驱动程序现在成为存取MySQL的推荐方法-在缺省情况下,并不启用老式的mysqli和mysql扩展。  ·PHP 5.1比5.0版本在性能上也大大改进。  ·如前所提及的,日期/时间支持在5.1.0版本中被重写,而在5.1.1版中又被还原。也许以后不久还会有所变化-尽管都是经过仔细计划的。  ·在PHP 5.0到PHP 5.0.4版本阶段,是支持抽象的私有方法的。然而,现在它们都被取消了。  ·现在,不允许重复声明一个类常量。下面代码在5.1中不会工作并将抛出一个E_ERROR错误。 <?php class anything {  const const_name = 'value';  const const_name = 'value2'; }?>  ·14个更旧的扩展被从PHP核心删除。这些包括 ext/cpdf,ext/dbx,ext/dio,ext/fam,ext/ingres_ii,ext/ircg,ext/mcve,ext/mnogosearch,ext/oracle,ext/ovrimos,ext/pfpro,ext/w32api,ext/yp,sapi/activescript。所有这些还可用于PECL中,尽管并不是所有这些扩展都能得到积极维护。  ·在参考引用的管理上也有所变化。以前我们可以以参考引用方式发送、赋值或返回变量-其实它们应该以值的形式返回。这些包括常数、自身以值形式返回的函数或一个表达式的结果。这里有一个例子: <?php$var1 = "value";function return_val() { global $var_name; return $var_name;}$var2 = &return_val();?>  这段代码过去是可以工作的(直到5.0.4版本),但是现在在5.1版本中会抛出一个E_STRICT异常。  也许5.1.x不久也会退场,但是其中引入了许多有价值的改进-PDO的引入可能是最值得称道的。要详细了解PHP文档中的更改日志,可以看一下这里有关PHP 5.1(和早些版本)变化的详尽列表。共2页。 1 2 :   目前,大多数PHP安装还是使用PHP 4.x版本。实际上,PHP 5.0已经出台一段时间了,而如今PHP 5.1.1也刚刚发行。如果你还没有升级到这些新版本,那么让我们一同看一下在新版的PHP中的变化,并在最后讨论对于PHP 6所期望的特性。  一、PHP 5.0中的变化  作为一个全新的版本号,在PHP 4和PHP 5之间存在许多实质性的区别。大多数的炒作主要围绕被重新改写过的新的对象模型。PHP 5版本更为完整并且运行性能更为良好。在PHP 4中,对象其实仅是一个粗糙的数据类型,并且是值引用的。在试图保持尽可能多的向后兼容性的同时,在PHP 5中,设置zend.ze1_compatibility_mode可以允许与版本4中方法的兼容。当然,PHP 5也存在一些向后不兼容的改变,具体包括:  ·新的保留下来的关键字大多数与对象模型相关(exception,final, php_user_filter,interface,implements,extends,public,private,protected,abstract,clone,try,catch,throw)。在PHP 4中保留的两个单词不再存在(cfunction,old_function)。  ·如果一个对象没有任何属性,那么它不再为空(empty)。  ·现在array_merge()函数只接收数组。  ·类可以在使用前声明(依赖于具体情况)。  ·get_class(),get_parent_class()和get_class_methods()现在能够返回一个大小写敏感的结果,而以前的返回结果都是小写的。  ·strrpos()和strripos()现在使用整个字符串。例如,var_dump(strrpos('ABCDEF','DAF'))将在PHP 4中返回int(3),而在PHP 5中返回bool(false)  ·如果$_SERVER存在,它将用argc和argv进行填充-这就允许CLI版本总是可以存取这些数据。  ·当传递一个无效的IP地址时,ip2long()返回FALSE而不是-1。  ·定义在一个包括文件中的函数现在能够在任何时刻为主文件所调用。如果文件两次被包括(这时函数已经被定义了),PHP 5也将发出一个致命的错误。  ·require_once()和include_once函数现在考虑到了Windows大小的不敏感性,并且将每次仅包括一个文件-即使该函数以不同大小写的文件名被调用多次。  ·摆脱了原来PHP 4中的警告。新的PHP 5在遇到一个无效的字符串偏移量时将抛出一个错误。     ·Tokenizer扩展不再定义闲置的T_ML_COMMENT常量。  注意,这些看似较多的不兼容的变化其实并不大,而且如果你想把原有代码移植到PHP 5中的话,有可能只对你的脚本作极少量的修改即可。PHP 5为做许多事情提供了更好的方法,但是如果你的目的仅是为了能使程序运行,那么你不会遇到太多的麻烦。在PHP 5中的另外一些变化有:  ·在命令行CLI和CGI脚本作了少许变化,有效地提高了新的CLI地位的重要性。  ·引入大量的新函数,其中许多是用于处理数组、字符转换和流操作的。  ·缺省情况下,MySQL客户端库没有与PHP 5绑定到一起。而是,包括了SQLite扩展-它基本上是一微型数据库引擎,其目的是消除任何设置和管理的需要。  ·新加了mysqli(MySQL增强扩展)(缺省地没有包括在内),为的是充分地利用MySQL 4.1及以上版本的优势。  想更全面地了解从PHP 4到PHP 5的变化,你可以参考PHP网站上的官方档案。  二、PHP 5.1.x中的变化  在本文成文时,刚刚发行PHP 5.1.1(在广为争论的5.1.0出台后不久)。该版本在PHP邮件列表中引起一阵小的骚乱。在5.1.0版本中,某些关键的变化被匆忙地包括进一个随后发行的候选版本中。一切似乎都静悄悄的,直到最后的发行版才引起酣然大波。然而,这些变化在5.1.1中被还原以防止出现pear::date冲突。  ·如今,闪电般登场的PDO成为PHP核心的一部分。要更多地了解与PHP相关的抽象层知识,可以参考《Database Abstraction in PHP》或者PHP网站上的官方档案。  ·PDO MySQL驱动程序现在成为存取MySQL的推荐方法-在缺省情况下,并不启用老式的mysqli和mysql扩展。  ·PHP 5.1比5.0版本在性能上也大大改进。  ·如前所提及的,日期/时间支持在5.1.0版本中被重写,而在5.1.1版中又被还原。也许以后不久还会有所变化-尽管都是经过仔细计划的。  ·在PHP 5.0到PHP 5.0.4版本阶段,是支持抽象的私有方法的。然而,现在它们都被取消了。  ·现在,不允许重复声明一个类常量。下面代码在5.1中不会工作并将抛出一个E_ERROR错误。 <?php class anything {  const const_name = 'value';  const const_name = 'value2'; }?>  ·14个更旧的扩展被从PHP核心删除。这些包括 ext/cpdf,ext/dbx,ext/dio,ext/fam,ext/ingres_ii,ext/ircg,ext/mcve,ext/mnogosearch,ext/oracle,ext/ovrimos,ext/pfpro,ext/w32api,ext/yp,sapi/activescript。所有这些还可用于PECL中,尽管并不是所有这些扩展都能得到积极维护。  ·在参考引用的管理上也有所变化。以前我们可以以参考引用方式发送、赋值或返回变量-其实它们应该以值的形式返回。这些包括常数、自身以值形式返回的函数或一个表达式的结果。这里有一个例子: <?php$var1 = "value";function return_val() { global $var_name; return $var_name;}$var2 = &return_val();?>  这段代码过去是可以工作的(直到5.0.4版本),但是现在在5.1版本中会抛出一个E_STRICT异常。  也许5.1.x不久也会退场,但是其中引入了许多有价值的改进-PDO的引入可能是最值得称道的。要详细了解PHP文档中的更改日志,可以看一下这里有关PHP 5.1(和早些版本)变化的详尽列表。共2页。 1 2 : 下载本文示例代码


PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望PHP 5.0 的变化与PHP 6.0 展望
阅读(256) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~