danog/7to5

此包已被废弃且不再维护。作者建议使用phabel/phabel包。

将PHP 7代码转换为PHP 5代码

1.4.0 2020-01-31 17:16 UTC

This package is auto-updated.

Last update: 2022-05-26 11:38:02 UTC


README

此包已被废弃

我们不再维护此包。您可以随意分支我们的代码并维护自己的副本。

将PHP 7.0代码转换为PHP 5代码

Latest Version on Packagist Software License Build Status Quality Score Total Downloads

此包可以将PHP 7.0代码转换为PHP 5代码。当您在开发时运行PHP 7但在生产中使用PHP 5时,这可能很有用。

您可以使用控制台命令将整个PHP 7.0代码目录进行转换

php7to5 convert {$directoryWithPHP7Code} {$destinationWithPHP5Code}

以下是它所能做到的示例。它将具有PHP 7特性的此代码转换为等效的PHP 5代码

class Test
{
    public function test()
    {
        $class = new class() {
            public function method(string $parameter = '') : string {
                return $parameter ?? 'no parameter set';
            }
        };
        
        $class->method();

        $anotherClass = new class() {
            public function anotherMethod(int $integer) : int {
                return $integer > 3;
            }
        };
    }
            
}

到这个等效的PHP 5代码

class AnonymousClass0
{
    public function method($parameter = '')
    {
        return isset($parameter) ? $parameter : 'no parameter set';
    }
}
class AnonymousClass1
{
    public function anotherMethod($integer)
    {
        return $integer < 3 ? -1 : ($integer == 3 ? 0 : 1);
    }
}
class Test
{
    public function test()
    {
        $class = new AnonymousClass0();
        $class->method();
        $anotherClass = new AnonymousClass1();
    }
}

Spatie是一家位于比利时的安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述在这里

安装

如果您计划使用控制台命令,我们建议全局安装此包

$ composer global require spatie/7to5

如果您想将包集成到自己的代码中,请像平常一样要求包

$ composer require spatie/7to5

转换过程

此包通过以下方式将PHP 7代码转换为等效的PHP 5代码

  • 删除标量类型提示
  • 删除返回类型提示
  • 删除严格的类型声明
  • 将三目运算符替换为等效的PHP 5代码
  • 将null合并运算符替换为等效的PHP 5代码
  • 将组使用声明替换为等效的PHP 5代码
  • 将定义数组替换为等效的PHP 5代码
  • 将匿名类转换为常规类

由于有很多东西无法检测和/或正确转换,我们不保证转换后的代码会正常工作。我们强烈建议在转换后的代码上运行您的自动化测试以确定它是否工作。

使用控制台命令

此包提供了一个控制台命令php7to5,用于转换文件和目录。

以下是如何转换整个目录的方法

$ php7to5 convert {$directoryWithPHP7Code} {$destinationWithPHP5Code}

想转换单个文件?这也很酷!您可以使用相同的命令。

$ php7to5 convert {$sourceFileWithPHP7Code} {$destinationFileWithPHP5Code}

默认情况下,命令只会复制php文件。想复制所有文件?使用copy-all选项

$ php7to5 convert {$directoryWithPHP7Code} {$destinationWithPHP5Code} --copy-all

默认情况下,命令只会转换具有.php扩展名的文件,但您可以使用--extension选项自定义此设置。

$ php7to5 convert {$directoryWithPHP7Code} {$destinationWithPHP5Code} --extension=php --extension=phtml

如果需要,您可以排除目录/文件。

$ php7to5 convert {$directoryWithPHP7Code} {$destinationWithPHP5Code} --exсlude=cache

程序化转换文件

您可以通过运行以下代码来转换单个文件

$converter = new Converter($pathToPhp7Code);

$converter->saveAsPhp5($pathToWherePhp5CodeShouldBeSaved);

整个目录也可以进行转换

$converter = new DirectoryConverter($sourceDirectory);

$converter->savePhp5FilesTo($destinationDirectory);

默认情况下,这将递归地复制所有文件到目标目录,即使是非PHP文件。

如果您只想复制PHP文件,请这样做

$converter = new DirectoryConverter($sourceDirectory);

$converter
   ->doNotCopyNonPhpFiles()
   ->savePhp5FilesTo($destinationDirectory);

变更日志

请参阅CHANGELOG以获取更多最近更改的信息。

测试

$ composer test

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件freek@spatie.be与我们联系,而不是使用问题跟踪器。

明信片软件

您可以使用此软件包,但如果它进入您的生产环境,我们非常希望您从家乡给我们寄一张明信片,并说明您正在使用我们哪个软件包。

我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。

我们将所有收到的明信片发布在我们的公司网站上

致谢

原始想法:Jens Segers

支持我们

Spatie是一家位于比利时的安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述在这里

您的业务是否依赖于我们的贡献?通过Patreon与我们联系并支持我们。所有承诺都将用于分配人力以维护和开发新功能。

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。