猿问

PHP 7.2函数create_function()已弃用

PHP 7.2函数create_function()已弃用

我在下面的应用程序中使用了create_function。

$callbacks[$delimiter] = create_function('$matches', "return '$delimiter' . strtolower(\$matches[1]);");

但是对于PHP 7.2.0,不推荐使用create_function()。

任何想法,如何在PHP 7.2.0上修复我的代码。

谢谢你的帮助,


料青山看我应如是
浏览 2642回答 3
3回答

侃侃尔雅

您应该能够使用匿名函数(也称为Closure)来调用父作用域$delimiter变量,如下所示:$callbacks[$delimiter] = function($matches) use ($delimiter) {     return $delimiter . strtolower($matches[1]);};

aluckdog

我想用一个我在Wordpress主题中找到的一个非常简单的案例做出贡献并且似乎正常工作:拥有以下add_filter语句:add_filter( 'option_page_capability_' . ot_options_id(), create_function( '$caps', "return '$caps';" ), 999 );替换为:add_filter( 'option_page_capability_' . ot_options_id(), function($caps) {return $caps;},999);我们可以看到function()的用法,非常典型的函数创建,而不是弃用的create_function()来创建函数。希望能帮助到你。

DIEA

如果有人需要将create_function()代码中的几十个案例升级到匿名函数,我就会使用一个名为Rector的工具。它遍历代码并create_function用匿名函数1:1 替换。它在30种不同的情况下进行了测试。安装composer require rector/rector --dev建立# rector.ymlservices:     Rector\Php\Rector\FuncCall\CreateFunctionToAnonymousFunctionRector: ~运行您的代码vendor/bin/rector process src --config rector.yml --dry-runvendor/bin/rector process src --config rector.yml
随时随地看视频慕课网APP
我要回答