我在下面的应用程序中使用了create_function.
$callbacks[$delimiter] = create_function('$matches', "return '$delimiter' . strtolower(\$matches[1]);");
Run Code Online (Sandbox Code Playgroud)
但是对于PHP 7.2.0,不推荐使用create_function().
任何想法,如何在PHP 7.2.0上修复我的代码.
谢谢你的帮助,
e_i*_*_pi 58
您应该能够使用匿名函数(也称为Closure)来调用父作用域$delimiter变量,如下所示:
$callbacks[$delimiter] = function($matches) use ($delimiter) {
return $delimiter . strtolower($matches[1]);
};
Run Code Online (Sandbox Code Playgroud)
Joa*_*cat 35
我想用一个我在Wordpress主题中找到的一个非常简单的案例做出贡献并且似乎正常工作:
拥有以下add_filter语句:
add_filter( 'option_page_capability_' . ot_options_id(), create_function( '$caps', "return '$caps';" ), 999 );
Run Code Online (Sandbox Code Playgroud)
替换为:
add_filter( 'option_page_capability_' . ot_options_id(), function($caps) {return $caps;},999);
Run Code Online (Sandbox Code Playgroud)
我们可以看到function()的用法,非常典型的函数创建,而不是弃用的create_function()来创建函数.希望能帮助到你.
如果有人需要将create_function()代码中的数十个案例升级为匿名函数,我会使用一个名为Rector的工具。
它遍历代码并create_function用匿名函数 1:1替换。它在30 种不同的情况下进行了测试。
安装
composer require rector/rector --dev
Run Code Online (Sandbox Code Playgroud)
设置
假设您要升级/src目录中的代码。
# rector.php
<?php
use Rector\Core\Configuration\Option;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Rector\Php72\Rector\FuncCall\CreateFunctionToAnonymousFunctionRector;
return static function (ContainerConfigurator $containerConfigurator) {
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::PATHS, [
__DIR__ . '/src',
]);
$services = $containerConfigurator->services();
$services->set(CreateFunctionToAnonymousFunctionRector::class);
};
Run Code Online (Sandbox Code Playgroud)
运行你的代码
# this is set run, it only report what it would change
vendor/bin/rector process --config rector.php --dry-run
# this actually changes the code
vendor/bin/rector process --config rector.php
# the "rector.php" config is loaded by default, so we can drop it
vendor/bin/rector process
Run Code Online (Sandbox Code Playgroud)
编辑:更新 2020 年 10 月 31 日,使用 PHP Rector 0.8.x 语法
| 归档时间: |
|
| 查看次数: |
54979 次 |
| 最近记录: |