在JavaScript中,您可以:
var blabla = function(arg){
...
};
PHP中有这样的东西吗?
我知道create_function()
,但是在字符串参数中填充代码真的很复杂。
答案 0 :(得分:7)
从PHP 5.3开始,您可以创建如下的匿名函数:
$var = 1;
$func = function( $arg ) use ($var) {
return $arg + $var;
};
访问匿名函数外部定义的变量需要use
子句。
如果要在匿名函数中更改外部变量,则必须在&
部分中将其声明为$
前面的use
引用:
$var = 1;
$func = function() use ( &$var ) {
$var = 42;
}
$func();
// $var == 42 now
否则匿名函数中所做的更改将不会传播到外部。
答案 1 :(得分:5)
它们被称为匿名函数。在PHP >= 5.3中你可以这样做:
$func = function($a, $b) {
return $a + $b;
};
$result = $func(3, 4); // returns 7
你甚至可以拥有闭包:
$c = 5;
$func = function($a, $b) use ($c) {
return ($a + $b) * $c;
};
$result = $func(3, 4); // returns 35
但请注意:以下JavaScript代码段只能使用引用在PHP中重现:
var c = 5;
var f = function(a, b) {
return (a + b) * c;
};
var r = f(3, 4); // returns 35
c = 6;
r = f(3, 4); // returns 42
在PHP中,这必须如下:
$c = 5;
$func = function($a, $b) use (&$c) {
return ($a + $b) * $c;
};
$result = $func(3, 4); // returns 35
$c = 6;
$result = $func(3, 4); // returns 42
在5.3之前,您必须使用create_function()
来创建匿名函数。
答案 2 :(得分:2)
是的,它可以在php 5.3.X中找到
http://php.net/manual/en/functions.anonymous.php
<?php
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
答案 3 :(得分:1)
自PHP 5.3.0起,匿名函数可用。 link
答案 4 :(得分:1)
语法与JavaScript非常相似;对于您的特定示例,它将类似于以下内容:
$blabla = function($arg){
...
};
唯一的区别是将“var”替换为“$”,并在“arg”之前添加“$”。