加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 在一个匿名函数中使用变量,这个变量在别的地方定义

发布时间:2020-08-16 06:04:29 所属栏目:PHP 来源:互联网
导读:在 PHP中使用匿名函数时,可以使用use()关键字轻松地从其范围之外使用变量. 在我的情况下,匿名函数已经被定义在某个地方,但稍后再在某个类别中被其他地方调用. 以下代码是为了说明这个想法: ?php$bla = function ( $var1 ) use ($arg) { echo $var1; };class

在 PHP中使用匿名函数时,可以使用use()关键字轻松地从其范围之外使用变量.

在我的情况下,匿名函数已经被定义在某个地方,但稍后再在某个类别中被其他地方调用.

以下代码是为了说明这个想法:

<?php

$bla = function ( $var1 ) use ($arg)
        {
            echo $var1;
        };

class MyClass
{
    private $func;

    public function __construct ( $func )
    {
        $this->func = $func;
    }

    public function test ( $arg )
    {
        $closure =  $this->func;
        $closure ( 'anon func' );
    }
}

$c = new MyClass($bla);
$c->test ( 'anon func' );

我正在做的是创建一个匿名函数并将其存储在变量中.我将该变量传递给类的方法,这就是我要运行匿名函数的位置.

但是我不能使用use()关键字从方法中获取$arg参数.因为匿名函数在方法之外被声明.

但是我真的需要一种从匿名函数运行的方法中获取变量的方法.有没有办法做到这一点,当匿名功能被宣布在别的地方..?

使用关键字的要点是将其定义为 inherit/close over a particular environment state from the parent scope到Closure.
$foo = 1;

$fn = function() use ($foo) {
    return $foo;
};

$foo = 2;

echo $fn(); // gives 1

如果您希望$foo稍后关闭,则可以稍后定义关闭,或者如果要使$foo始终为当前值(2),则将$foo作为常规参数传递.

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读