PHP 7.2 函数 create_function() 已弃用

2022-08-30 08:07:14

我已经在下面的应用程序中使用了。create_function()

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

但是对于 PHP 7.2.0,已被弃用。create_function()

如何为 PHP 7.2.0 重写上面的代码?


答案 1

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

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

答案 2

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


推荐