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 重写上面的代码?

原文由 Saly 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 560
2 个回答

您应该能够使用 匿名函数(又名闭包)调用父范围的 $delimiter 变量,如下所示:

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

原文由 e_i_pi 发布,翻译遵循 CC BY-SA 4.0 许可协议

匿名函数解决方案有效,但如果要返回的表达式在字符串中,我认为应该使用 eval

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

原文由 markoj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏