PHP获取方法范围之外的变量

PHP获取方法范围之外的变量,php,scope,anonymous-function,Php,Scope,Anonymous Function,我有这样一门课(举个简单的例子): 您缺少use语句。请参考PHP关于闭包的第三个示例 这将有助于: <?php class Test { public function test1($a) { $gen = function() use ($a) { $gen = function() use($a) { echo 'a='. $a; // how could i access $a from test1 parameter without pa

我有这样一门课(举个简单的例子):


您缺少
use
语句。请参考PHP关于闭包的第三个示例

这将有助于:

<?php

class Test {
  public function test1($a) {
    $gen = function() use ($a) {
      $gen = function() use($a) {
        echo 'a='. $a; // how could i access $a from test1 parameter without passing?
      };
      $gen();
    };
    $gen();
  } 
};

$x = new Test();
$x->test1(123);

您缺少
use
语句。请参考PHP关于闭包的第三个示例

这将有助于:

<?php

class Test {
  public function test1($a) {
    $gen = function() use ($a) {
      $gen = function() use($a) {
        echo 'a='. $a; // how could i access $a from test1 parameter without passing?
      };
      $gen();
    };
    $gen();
  } 
};

$x = new Test();
$x->test1(123);

PHP中的匿名函数不像JavaScript那样具有隐式变量作用域,因此需要指定需要父作用域中的哪些变量。您可以使用
使用
语法执行此操作:

$var = 123;
$fn = function() use ($var) {
    // you can use $var here
}
$fn();

另请参见:

PHP中的匿名函数不像JavaScript那样具有隐式变量作用域,因此需要指定需要父作用域中的哪些变量。您可以使用
使用
语法执行此操作:

$var = 123;
$fn = function() use ($var) {
    // you can use $var here
}
$fn();

另请参见:

我不明白为什么您只想通过syntaxtic而不通过它来访问它sugar@KiswonoPrayogo此代码不会为函数设置值
123
。参见示例是的,它不是。。下面的答案是我想要的:3谢谢不管怎样,如果我通过$a,我将不得不使用use关键字键入4次,我只需要写两次:3这是我一直在寻找的一个。我很困惑,为什么你会想访问它,而不只是为了语法sugar@KiswonoPrayogo此代码不会为函数设置值
123
。参见示例是的,它不是。。下面的答案是我想要的:3谢谢不管怎样,如果我通过$a,我将不得不键入4次,使用use关键字,我只需要写2次:3这是我一直在寻找的一个