【问题标题】:Porting php 5.4 to 5.3将 php 5.4 移植到 5.3
【发布时间】: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.4 token_get_all 编写一个快速脚本来寻找 T_ARRAY ,但这可能会大量重新格式化您的代码。
  • 也许你可以把这个脚本转过来:github.com/thomasbachem/php-short-array-syntax-converter
  • @bishop token_get_all 不将 '[' 和 ']' 视为标记:|
  • @DanLee 我会尝试,如果成功我会在这里发布。

标签: php backwards-compatibility


【解决方案1】:

您可以使用工具将您的代码库从 PHP 5.4+ 转换为 PHP 5.3,例如:http://github.com/endel/php-code-downgrade/

此工具将读取您的所有文件并使用 PHP 5.3 标准重写代码,甚至是您的作曲家依赖项。

理想的场景是编写与您的生产服务器兼容的代码,但有时无法通过先验知道它,所以这个工具可能会为您完成这项工作。

使用它的好处是您可以编写现代代码而不必担心旧的 PHP 版本支持。

【讨论】:

  • 只是想注意安装步骤,似乎 github 中还没有: 1. 克隆存储库 git clone https://github.com/endel/php-code-downgrade.git &amp;&amp; cd php-code-downgrade 2. 安装 composer 依赖项composer install
  • 还应该明确 php-code-downgrader 会就地转换文件,因此请确保针对您的 repo 副本运行它。 php php-code-downgrade &lt;path to copy of repo&gt;(或者只是 ./php-code-downgrade &lt;path to copy&gt;,如果你使用的是 nix-ish 操作系统并且路径中有 php)。
猜你喜欢
  • 2013-06-08
  • 2012-06-28
  • 2013-02-28
  • 2018-04-23
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
相关资源
最近更新 更多