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

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


结束语

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)

SESSION['user'])) { return true; } else { return false; } } $user_authorized = is_authorized(); ?>

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()


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

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


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