您当前的位置是:首页 > 新闻详情
PHP 5代码转换为PHP 7代码的方法

大多数情况中,PHP 5.x代码可以不经修改地在PHP 7引擎上运行。然而,PHP 7中的几个功能不能向下兼容。换言之,如果你使用特殊的方式编写PHP 5程序或者在其中使用了被废弃掉的函数,那么在PHP 7引擎上运行该程序时就会出现严重错误并无法继续运行。

准备工作

将PHP 5代码转换成PHP 7代码的代码转换器会做两件事:

➢ 扫描你编写的代码文件并将已被废弃的PHP 5功能转换为PHP 7中的等价功能。

➢ 在已被更改语法但无须修改旧代码的位置,添加以//WARNING开头的注释。

请注意,运行过转换器后,也无法保证你编写的旧代码一定能在PHP 7引擎上运行。你仍然需要仔细检查转换器添加的以//WARNING开头的注释。不过本节介绍的内容至少能为你将PHP 5代码转换为PHP 7代码的工作指明正确的方向。

具体处理过程

1.在新建的Application\Parse\Convert类中,先创建一个scan()方法,它会接收文件名,并将它用作参数。该方法用于检查文件是否存在。如果该文件确实存在,那么scan()方法就会调用PHP中的file()函数,该函数会将这个文件加载到一个数组中,每个数组元素用于存储一行内容:

百度建站

2.下面传递一系列键/值对。这些键是由正则表达式代表的,是对照字符串处理的。所有与标准语法字符串匹配的正则表达式都会被传递给回调函数,这些回调函数代表键/值对中的值。我们要检查的是已经在PHP 7中被废弃的开始标签和结束标签:百度建站

3.下面是当检测到特殊的操作时,PHP 7会显示的一些警告,以及PHP 7与PHP 5之间可能会导致程序运行中断的差异。在所有这些情况中,代码不会被更改,但会被插入以//WARNING开头的警告注释:

4.将负号运算符与<<或>>一起使用时,或者使用超过64位的数据时,这些代码都会被封装在try{xxx}catch(){xxx}代码块中,以便找到被抛出的ArithmeticError异常:

PHP 7已经改变了处理错误的方式。在某些情况中,一些类似的错误会被划分到同一个异常类别中,而且这些异常能够被捕捉到!Error和Exception类都实现了Throwable接口。如果你想要捕捉Error或Exception异常,可捕捉Throwable接口。

5.该转换器重写所有call_user_method*()函数(这类函数已经被PHP 7废弃了)。该类函数会被call_user_func*()函数替代:

6.使用preg_replace_callback()函数替换带有/e修饰符的preg_replace()函数:

具体运行情况

要使用这个转换器,可通过命令行界面运行下面的代码。你需要通过命令行界面将要转换的PHP 5代码的文件名称设置为参数。

这段代码存储在chap_01_php5_to_php7_code_converter.php文件中,通过命令行界面运行这段代码可以调用前面介绍的转换器:


上一篇:异常处理机制   下一篇:安装PHP 7的注意事项
My title page contents

在线咨询

咨询热线:

注册后系统将分配专员联系您

在线咨询QQ:

在线客服QQ:1215917463  客服