【问题标题】:php call anonymous functions inside anonymous function [duplicate]php在匿名函数中调用匿名函数[重复]
【发布时间】:2014-09-11 16:26:04
【问题描述】:

PHP 版本:5.4

function foo(callable $succCallback) {

        $isCallable = is_callable($succCallback);
        echo "is callable outer ".is_callable($succCallback);
        $success = function($fileInfo) {
            echo "<br>is callable inner".is_callable($succCallback);
        };
        $this->calllll($success);
}
function calllll(callable $foo) {
  $foo("hello");
}

我定义了一个这样的函数

输出是

is callable outer 1
is callable inner

如何引用$success 体内的$succCallback

【问题讨论】:

    标签: php closures


    【解决方案1】:

    您必须使用use 构造。它允许从父作用域继承变量:

    function foo(callable $succCallback) {
    
            $isCallable = is_callable($succCallback);
            echo "is callable outer ".is_callable($succCallback);
            $success = function($fileInfo) use($succCallback) {
                echo "<br>is callable inner".is_callable($succCallback);
            };
            $this->calllll($success);
    }
    

    【讨论】:

      【解决方案2】:
      $success = function ($fileInfo) use ($succCallback) {
          echo "<br>is callable inner" . is_callable($succCallback);
      };
      

      要在匿名函数中包含来自周围作用域的变量,您需要使用use () 显式扩展它们的作用域。

      【讨论】:

        【解决方案3】:

        要使用父作用域中的变量,请使用use

         $success = function($fileInfo) use ($succCallback) {
                echo "<br>is callable inner".is_callable($succCallback);
            };
        

        【讨论】:

          猜你喜欢
          • 2012-02-23
          • 2013-08-29
          • 2015-01-27
          • 1970-01-01
          • 1970-01-01
          • 2013-11-22
          • 1970-01-01
          • 1970-01-01
          • 2020-03-11
          相关资源
          最近更新 更多