什么是PHP匿名函数?

3
在PHP中,匿名函数是指没有名称的函数,通常用于在运行时创建临时函数。以下是一个简单的示例:
``` $greeting = function($name) { echo "Hello, $name!"; }; $greeting('John'); ```
这将输出:`Hello, John!`
2个回答

15

在PHP.net上有一个关于匿名函数的手册页面,而在维基百科上则可以了解到匿名函数的一般信息。

匿名函数可用于包含不需要命名且可能只是短期使用的功能。一些著名的例子包括闭包。

PHP.net上的示例:

<?php
$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

$greet('World');
$greet('PHP');
?>

PHP 4.0.1到5.3

$foo = create_function('$x', 'return $x*$x;');
$bar = create_function("\$x", "return \$x*\$x;");
echo $foo(10);

PHP 5.3

$x = 3;
$func = function($z) { return $z *= 2; };
echo $func($x); // prints 6

PHP 5.3 支持闭包,但变量必须明确指出。

$x = 3;
$func = function() use(&$x) { $x *= 2; };
$func();
echo $x; // prints 6

本例子参考于维基百科和php.net


虽然我已经写了多年的PHP,但我不知道这是可能的!太好了。 - nocksock
PHP不支持柯里化(至少不是原生支持) - NullUserException
1
@Nils 它自5.3.0版本以来就存在了,所以它算是比较新的。 - NullUserException
@NullUserException,引用我找到的最好的解释,去掉了咖喱部分。此外,“在4.0.1之前,PHP没有匿名函数支持。”,所以这并不是很新的东西。不过在5.3中有不同(更好)的语法。 - Filip Ekberg
如果我们能做到这样,那就更棒了:$x = function($y) { return $y * 2; } ( $z ); - Daniel Sloof

1

谷歌的第一个搜索结果会给你答案:

http://php.net/manual/de/functions.anonymous.php

echo preg_replace_callback('~-([a-z])~', function ($match) {
    return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld

在这个例子中,您将一个函数用作参数,这被称为“匿名函数”。之所以称为匿名函数,是因为您没有像通常那样显式声明该函数。

function foo($match) {
 return strtoupper($match[1]);
} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接