PHP匿名函数的提出、定义和使用
发布时间:2023-12-25 17:32:06 所属栏目:PHP教程 来源:DaWei
导读: 今天就跟大家聊聊有关“PHP匿名函数的提出、定义和使用”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容。
提出
在匿名函数出现
提出
在匿名函数出现
今天就跟大家聊聊有关“PHP匿名函数的提出、定义和使用”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容。 提出 在匿名函数出现之前,所有的函数都需要先命名才能使用 function increment($value) { return $value + 1; } array_map('increment', [1, 2, 3]); 有的时候函数可能只需要使用一次,这时候使用匿名函数会使得代码更加简洁直观,同时也避免了函数在其他地方被使用 array_map(function($value){ return $value + 1; }, [1, 2, 3]); 定义和使用 PHP 将闭包和匿名函数视为同等概念(本文统称为匿名函数),本质上都是伪装成函数的对象。 匿名函数的本质是对象,因此跟对象一样可将匿名函数赋值给某一变量 $greet = function(string $name){ echo "hello {$name}"; } $greet("jack") // hello jack 所有的匿名函数都是 Closure 对象的实例 $greet instanceof Closure // true 对象并没有什么父作用域可言,所以需要使用 use 来手动声明使用的变量, $num = 1; $func = function() use($num){ $num = $num + 1; echo $num; } $func(); // 2 echo $num; // 还是 1 如果要让匿名函数中的变量生效,需要使用引用传值 $num = 1; $func = function() use(&$num){ $num = $num + 1; echo $num; } $func(); // 2 echo $num; // 2 从 PHP 5.4 开始,在类里面使用匿名函数时,匿名函数的 $this 将自动绑定到当前类 class Foo { public function bar() { return function() { return $this; }; } } $foo = new Foo(); $obj = $foo->bar(); // Closure() $obj(); // Foo 如果不想让自动绑定生效,可使用静态匿名函数 class Foo { public function bar() { return static function() { return $this; }; } } $foo = new Foo(); $obj = $foo->bar(); // Closure() $obj(); // Using $this when not in object context (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐