是否可以在PHP中访问外部局部变量?

问题描述:

是否可以在PHP子函数中访问外部局部变量?

Is it possible to access outer local varialbe in a PHP sub-function?

在下面的代码中,我想访问内部功能栏中的变量$l.在bar中将$l声明为global $l无效.

In below code, I want to access variable $l in inner function bar. Declaring $l as global $l in bar doesn't work.

function foo()
{
    $l = "xyz";

    function bar()
    {
        echo $l;
    }
    bar();
}
foo();

您可能可以使用Closure来做到这一点...

You could probably use a Closure, to do just that...


花了一些时间来记住语法,但这是这样的:


Edit : took some time to remember the syntax, but here's what it would look like :

function foo()
{
    $l = "xyz";
    $bar = function () use ($l)
    {
        var_dump($l);
    };
    $bar();
}
foo();

然后,运行脚本,您将得到:

And, running the script, you'd get :

$ php temp.php
string(3) "xyz"


一些注意事项:


A couple of note :

  • 您必须在函数的声明后加上;
  • 您可以通过引用use将该变量命名为use (& $l)
  • ,并在其前加上&.
  • You must put a ; after the function's declaration !
  • You could use the variable by reference, with a & before it's name : use (& $l)

有关更多信息,请参考手册中的以下页面:匿名函数

For more informations, as a reference, you can take a look at this page in the manual : Anonymous functions