来自 PHP 关闭的错误响应

Wrong response from PHP Closure

我试图更多地了解闭包,但我无法从以下代码中获得正确的响应。由于某种原因,我收到 31 而不是 60 的响应。我的目标是最终开始单元测试闭包。

谢谢


<?php


class Closuretest
{

    /**
     * Closuretest constructor.
     */
    public function __construct()
    {
    }

    /**
     * @return mixed
     */
    public function getToken()
    {


            $response = $this->getEntry('abcde', function() {
                return 30;
            }, 30);

        // Return access token
        return $response;
    }


    /**
     * @param $a
     * @param $b
     * @param $c
     * @return mixed
     */
    private function getEntry($a, $b, $c)
    {
        return $b+$c;
    }

}

$testinstance = new Closuretest();

echo $testinstance->getToken();

在函数getEntry()中,$b不是一个整数,而是一个函数。您需要通过调用 $b() 来执行此函数以获得结果:

private function getEntry($a, $b, $c)
{
    return $b() + $c; // instead of `$b + $c`
}

这里,$b()将return30,而$c等于30。所以,getEntry()将return60。