【发布时间】:2014-02-01 16:36:26
【问题描述】:
是否有任何自动化工具可以将 php 5.4 脚本转换回 5.3?大多是新的样式数组导致问题。
这个:
<?php
$x = [1, 2, 3];
$y = [
'a' => [1,2],
'b' => 'c',
];
function ff($x = []) { ...}
应该转换成这个:
<?php
$x = array(1, 2, 3);
$y = array(
'a' => array(1,2),
'b' => 'c',
);
function ff($x = array()) { ...}
其他向后兼容性问题只是少数,可以手动修复。我的语言处理能力很差,有人做过吗?转换器不需要是 PHP。 python, Java, ...都是文件(我只是更喜欢python,仅此而已)。
【问题讨论】:
-
我检查了一下,没有看到任何东西。可能可以使用 perl/sed/awk 脚本将
(\W)\[(.*)\](\W)更改为\1array (\2)\3,尽管您需要使用该正则表达式专门处理行的开头和结尾。我想您也可以使用 PHP 5.4token_get_all编写一个快速脚本来寻找T_ARRAY,但这可能会大量重新格式化您的代码。 -
也许你可以把这个脚本转过来:github.com/thomasbachem/php-short-array-syntax-converter
-
@bishop token_get_all 不将 '[' 和 ']' 视为标记:|
-
@DanLee 我会尝试,如果成功我会在这里发布。
标签: php backwards-compatibility