PHP 的未来 了解 PHP6 的变化及其对脚本的影响(17)

来源:developerWorks 中国 作者:Nathan A. Good
  

这里提到的一些特性还将迁移到 PHP V5.3,5.3 版本是在 2008 年的第一季度发布的。您可能希望升级到 V5.3 并开始使用这些特性,但是直接迁移到 PHP V6 能够节省该步骤。下面列出向后支持 v5.3 的特性:

  • 名称空间
  • 默认情况下在核心函数中包含 XMLReader 和 XMLWriter




结束语

PHP V6 将提供许多改进,并且删除老版本 PHP 中的一些特性。为了利用最新的特性和了解删除的特性,请仔细阅读 NEWS 列表(见 参考资料),它包含 PHP V6 添加或删除的特性的最新信息。现在,您可以下载开发人员版本的 PHP V6,并确保您的应用程序不受这些变更的影响。您还可以利用这次机会清理自己的脚本,删除本文不推荐使用的函数,或更新您的语法以确保应用程序受支持。 (责任编辑:A6)

GET['username']"; ?>

在针对新版本 PHP 进行处理之后,您的 PHP 代码应该类似于清单 3。


清单 3. 使用参数化查询(推荐)
___FCKpd___2

既然即将完全删除对 magic_quotes 的支持,get_magic_quotes_gpc() 函数就不再可用。这可能会影响一些老版本的 PHP 脚本,因此在更新之前,确保对所有存在这些函数的地方进行修复。

register_globals

register_globals 配置键在 PHP V4.2 中已经默认关闭,当时也引起了争议。当 register_globals 打开之后,就能轻松地使用可能注入了来自 HTML 表单的值的变量。因为在脚本中并不真正需要初始化这些变量,所以很容易编写出带有安全漏洞的脚本。register_globals 文档(见 参考资料)提供关于 register_globals 的更多信息。清单 4 是一个使用 register_globals 的例子。


清单 4. 使用 register_globals(不推荐)
___FCKpd___3

如果您的 PHP 代码使用了全局变量,那么应该更新它。即便不是为了使用新版本的 PHP 而更新它,从安全角度考虑,您也应该进行更新。更新完成之后,您的代码应该类似于清单 5。


清单 5. 更加明确的代码(推荐)
___FCKpd___4

register_long_arrays

当打开 register_long_arrays 设置时,它将注册 $HTTP_*_VARS 预定义变量。如果您目前使用更长的变量,那么需要进行更新,以适应更短的变量。这个设置是在 PHP V5 中引入的(考虑到向后兼容性),但出于性能考虑,PHP 团队建议关闭它。清单 6 是一个使用 register_long-arrays 的例子。


清单 6. 使用注册数组(不推荐)
___FCKpd___5

如果您的 PHP 代码类似于清单 6,那么更新它,如清单 7 所示。如果 register_long_arrays 设置是打开的,那么关闭它,然后再次测试脚本。


清单 7. 使用 $_GET(推荐)
___FCKpd___6

safe_mode

当打开了 safe_mode 配置键时,它确保所操作的文件的所有者与所执行的脚本的所有者匹配。这最初作为在共享服务器环境中进行操作时(许多 ISP 都这样做)处理安全性的一种方法。(要获得受 safe_mode 更改影响的函数列表的链接,请参见 参考资料)。您的 PHP 代码不会受这一更改的影响,但是有必要了解它,免得在未来设置 PHP 时使用它或在脚本中依赖它。

PHP 标记

Microsoft Active Server Pages (ASP) 样式的标记(PHP 标记的缩短版)不再受支持。要确保您的脚步不存在这种问题,请检查是否在 PHP 文件中使用了 <% 或 %> 标记。如果使用了,那么分别将其替换为 <?php 和 ?>。

FreeType 1 和 GD 1

PHP 团队删除了对 FreeType 1 和 GD 1 的支持,其理由是这两个库缺乏持续开发,并且已经不适应时代要求。不过,这两个库的更新版本将提供更好的功能。要更多地了解 FreeType 和 GD,参见 参考资料。

ereg

将从核心 PHP 支持中删除支持 Portable Operating System Interface (POSIX) 正则表达式的 ereg 扩展。如果您正在使用 POSIX 正则表达式函数之一,这一更改将带来影响,除非您包含 ereg 功能。如果您正在使用 POSIX 正则表达式,可以考虑更新正则表达式函数,以使用 Perl-Compatible Regular Expression (PCRE) 函数,因为它们提供更多的特性和更好的平台。表 1 列出了删除 ereg 之后将不可用的 POSIX 正则表达式函数。同时展示了它们的 PCRE 代替函数。


表 1. ereg() 函数及其 PCRE 等效函数
ereg() 函数 类似的 preg() 函数
ereg(), eregi() preg_match()
ereg_replace(), ereg_replacei() preg_replace()




PHP V5.3

这里提到的一些特性还将迁移到 PHP V5.3,5.3 版本是在 2008 年的第一季度发布的。您可能希望升级到 V5.3 并开始使用这些特性,但是直接迁移到 PHP V6 能够节省该步骤。下面列出向后支持 v5.3 的特性:

  • 名称空间
  • 默认情况下在核心函数中包含 XMLReader 和 XMLWriter




结束语

PHP V6 将提供许多改进,并且删除老版本 PHP 中的一些特性。为了利用最新的特性和了解删除的特性,请仔细阅读 NEWS 列表(见 参考资料),它包含 PHP V6 添加或删除的特性的最新信息。现在,您可以下载开发人员版本的 PHP V6,并确保您的应用程序不受这些变更的影响。您还可以利用这次机会清理自己的脚本,删除本文不推荐使用的函数,或更新您的语法以确保应用程序受支持。 (责任编辑:A6)

GET array instead. echo "Welcome,
PHP 的版本 V6 包含一些新特性和语法改进,从面向对象的角度看,PHP6 更加易于使用。其他重要特性(比如在许多核心函数中支持 Unicode)反映了 PHP V6 力争获得更好的国际通用性支持和健壮性。

PHP 已经很流行,它不仅用于各个领域(根据 Netcraft),而且还得到大部分 ISP 的支持和知名 Web 公司(比如 Yahoo!)的使用。此外,未来的 PHP 版本将引入新的特性以提高其易用性和安全性。您已经为使用 PHP V6 做好准备了吗?假设您要升级到 PHP V6,您的脚本能正常执行吗?或者需要进行一些更改?本文主要介绍 PHP V6 的变化(一些特性向后支持 PHP V5.x 版本),您可能需要根据这些变化对当前的脚本作出一些调整。

如果您尚未使用 PHP,并且一直考虑使用它,那么可以看看它的最新特性。这些特性 —— 从 Unicode 支持到 XML 支持 —— 将让您能够更加轻松地编写出特性丰富的 PHP 应用程序。

PHP V6 的新特性

PHP V6 的初步副本已经发布,所以您可以下载它并试用本文列出的许多特性和更改。对于当前副本已经实现的特性,见 参考资料。

改进的 Unicode 支持

PHP V6 的最大改进是在许多核心函数中支持 Unicode 字符串。这个新特性有巨大的影响,因为它允许 PHP 支持更广泛的字符集,从而获得更多的国际支持。所以,如果您是一位使用不同语言(比如 Java™ 编程语言,这些语言的国际化(il8n)支持比 PHP 好)的开发人员或架构师,那么您应该看看国际化支持改进后的 PHP。

现在,已经可以下载和使用针对开发人员的 PHP V6,所以您可以看到其中的一些特性已经支持 Unicode 字符串。要获取已经经过测试和验证的可以处理 Unicode 的函数,参见 参考资料。

什么是 Unicode?
Unicode 是一组字符、字符编码和编码方法行业标准,其主要目标是支持 i18n 和本地化 (i10n)。Unicode Transformation Format (UTF) 为 Unicode 指定一种编码字符的方式。关于 Unicode 和 UTF 的更多信息,见 参考资料 部分。


时间:2009-06-30 14:17 来源:developerWorks 中国 作者:Nathan A. Good 原文链接

好文,顶一下
(0)
0%
文章真差,踩一下
(1)
100%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量