使用Python,Js和PHP中的函数,他们都说它们是一流的对象。我想确保我的PHP示例正确。有没有其他方法将此代码移植到PHP?
Python 3 :
def a():
print("init")
def b():
print("inside")
def c():
print("inception")
return c
return b
a()()()
结果
init
inside
inception
[Finished in 0.1s]
Javascript(节点):
function a() {
console.log("init")
function b()
{
console.log("inside")
function c()
{
console.log("inception")
}
return c
}
return b
}
s = a()()()
结果
init
inside
inception
[Finished in 0.2s]
PHP 5.5 :
function a()
{
echo "init".PHP_EOL;
$x = function()
{
echo "inside".PHP_EOL;
$y = function()
{
echo "inception".PHP_EOL;
};
echo "b".PHP_EOL;
return $y;
};
return $x;
}
a()()();
结果
Parse error: syntax error, unexpected '('
让我们再试一次PHP
$b = a();
$c = $b();
$c();
结果
init
inside
inception
[Finished in 0.1s]
这是在PHP中调用嵌套函数的唯一方法吗?
UPDATE 跟进问题,在PHP中你能以与Python或JS相同的方式返回一个函数吗?或者必须首先将其作为闭包赋值给变量。
答案 0 :(得分:2)
您的示例将在PHP 7+中运行。在此之前,您需要使用临时变量或call_user_func()
(但这会非常难看)。