如何访问"父"函数的参数?

Com*_*eek 6 php functional-programming global-variables callback

例如,我有以下代码:

function a($param)
{
  function b()
  {
    echo $param;
  }
  b();
}
a("Hello World!");
Run Code Online (Sandbox Code Playgroud)

抛出E_NOTICE错误,因为$ param当然是未定义的(在b()中).

我无法将$ param传递给b(),因为b()应该是preg_replace_callback()的回调函数.所以我有想法在$ GLOBALS中保存$ param.

有没有更好的解决方案?

Ond*_*ták 10

如果您使用的是PHP 5.3,则可以使用带有关键字的匿名函数use:

<?php
function a($param)
{
  $b = function() use ($param)
  {
    echo $param;
  };

  $b();
}
a("Hello World!");
Run Code Online (Sandbox Code Playgroud)

  • 我以前从未见过这个功能.+1教我一些新的东西. (2认同)