嵌套函数,PHP中的第一类函数

时间:2016-06-18 15:58:31

标签: javascript php python-3.x

使用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相同的方式返回一个函数吗?或者必须首先将其作为闭包赋值给变量。

1 个答案:

答案 0 :(得分:2)

您的示例将在PHP 7+中运行。在此之前,您需要使用临时变量或call_user_func()(但这会非常难看)。

https://wiki.php.net/rfc/uniform_variable_syntax