danog / 7to70
1.5.1
2020-02-26 12:41 UTC
Requires
- php: ^5.6|^7.0|^7.1
- illuminate/support: ~5.2.0|~5.3.0
- nikic/php-parser: ^4
- symfony/console: ^3.0|^4.0
- symfony/finder: ^3.0|^4.0
Requires (Dev)
- illuminate/filesystem: ~5.2.0|~5.3.0
- phpunit/phpunit: ^5.7
- symfony/process: ^3.0|^4.0
README
此包可以将 PHP 7 代码转换为 PHP 7.0 代码。这在您在开发中使用 PHP 7 而在生产中使用 PHP 5 时非常有用。
您可以使用控制台命令将整个目录中的 PHP 7 代码进行转换
php7to70 convert {$directoryWithPHP7Code} {$destinationWithphp70Code}
以下是一个示例,展示了它能够做什么。它将具有 PHP 7 特性的代码转换为等效的 PHP 7.0 代码
class Test { public function test(?string $input): ?string { try { } catch (Exception1|Exception2 $e) { echo $e; } } public function a(): string { } }
到这个等效的 PHP 7.0 代码
class Test { public function test(string $input = null) { try { } catch (Exception1 $e) { echo $e; } catch (Exception2 $e) { echo $e; } } public function a(): string { } }
安装
如果您打算使用 控制台命令,我们建议全局安装此包
$ composer global require danog/7to70
如果您想 将包集成到自己的代码中,请像通常一样要求该包
$ composer require danog/7to70
转换过程
此包通过以下方式将 PHP 7 代码转换为等效的 PHP 5 代码:
- 删除可空参数类型提示
- 删除可空返回类型提示
- 替换多个捕获
由于有很多东西无法检测和/或正确转换,我们不保证转换后的代码会工作。我们强烈建议在转换后的代码上运行您的自动化测试以确定它是否工作。
使用控制台命令
此包提供了一个控制台命令 php7to70
来转换文件和目录。
以下是整个目录如何进行转换
$ php7to70 convert {$directoryWithPHP7Code} {$destinationWithphp70Code}
想要转换单个文件?那也很好!您可以使用相同的命令。
$ php7to70 convert {$sourceFileWithPHP7Code} {$destinationFileWithPHP70Code}
默认情况下,命令只会复制 php
文件。想要复制所有文件?请使用 copy-all
选项
$ php7to70 convert {$directoryWithPHP7Code} {$destinationWithphp70Code} --copy-all
默认情况下,命令只会转换具有 php 扩展名的文件,但您可以使用 --extension
选项进行自定义。
$ php7to70 convert {$directoryWithPHP7Code} {$destinationWithphp70Code} --extension=php --extension=phtml
如果需要,您可以排除目录/文件。
$ php7to70 convert {$directoryWithPHP7Code} {$destinationWithphp70Code} --exсlude=cache
编程转换文件
您可以通过运行以下代码来转换单个文件
$converter = new Converter($pathToPhp7Code); $converter->saveAsphp70($pathToWherephp70CodeShouldBeSaved);
整个目录也可以转换
$converter = new DirectoryConverter($sourceDirectory); $converter->savephp70FilesTo($destinationDirectory);
默认情况下,这将递归地将所有文件复制到目标目录,即使是非 php 文件。
如果您只想复制 php 文件,请这样做
$converter = new DirectoryConverter($sourceDirectory); $converter ->doNotCopyNonPhpFiles() ->savephp70FilesTo($destinationDirectory);
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING。
许可证
MIT许可证(MIT)。更多信息请参阅许可证文件。