为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 7.2函数create_function()已弃用

PHP 7.2函数create_function()已弃用

PHP
料青山看我应如是 2019-08-05 15:22:16
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上修复我的代码。谢谢你的帮助,
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

您应该能够使用匿名函数(也称为Closure)来调用父作用域$delimiter变量,如下所示:

$callbacks[$delimiter] = function($matches) use ($delimiter) {
    return $delimiter . strtolower($matches[1]);};


查看完整回答
反对 回复 2019-08-05
?
aluckdog

TA贡献1847条经验 获得超7个赞

我想用一个我在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()来创建函数。希望能帮助到你。


查看完整回答
反对 回复 2019-08-05
?
DIEA

TA贡献1820条经验 获得超2个赞

如果有人需要将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


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 2641 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信