spatie/7to5

该包已被废弃,不再维护。没有建议的替代包。

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

1.3.0 2018-04-12 08:44 UTC

This package is auto-updated.

Last update: 2022-02-01 12:55:48 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);

变更日志

请参阅变更日志以获取最近更改的更多信息。

测试

$ composer test

贡献

请参阅贡献指南以获取详细信息。

安全

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

明信片软件

您可以使用这个包,但如果它进入了您的生产环境,我们非常欢迎您从家乡寄给我们一张明信片,说明您正在使用我们的哪个包。

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

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

致谢

原始想法:Jens Segers

支持我们

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

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

许可证

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