无关框架{closure}()缺少参数1

时间:2012-12-25 23:34:28

标签: fat-free-framework

跟随这段代码

    $f3=require('lib/base.php');

    $f3->route('GET /brew/@count',
        function($f3) {
            echo $f3->get('PARAMS.count').' bottles of beer on the wall.';
        }
    );
    $f3->run();
来自https://github.com/bcosca/fatfree#routing-engine的Fat-Free Framework示例的

我在浏览器中收到此错误:

    Internal Server Error

    Missing argument 1 for {closure}()

    * /var/www/f3/index.php:36 Base->{closure}
    * /var/www/f3/lib/base.php:972         
    * Base->call(Closure::__set_state(),NULL,'beforeroute,afterroute')
    * /var/www/f3/index.php:40 Base->run()

我知道问题是$ f3没有传递给函数作为参数,但我不明白为什么。有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

我的情况一样!我使用的是SourceForge的3.0.1版。我尝试了下面的工作,但是却产生了其他问题:

$f3=require('lib/base.php');

$f3->route('GET /brew/@count',
    function() use ($f3) {
        echo $f3->get('PARAMS.count').' bottles of beer on the wall.';
    }
);
$f3->run();

use子句(在php中没有很好地记录)允许您使用来自匿名函数的父作用域中的变量。在此处阅读更多内容:Closure vs Anonymous function (difference?)

尝试将F3核心升级到最新版本。其中一位开发人员建议从此处升级到3.0.2版本:https://github.com/bcosca/fatfree。这是一个非常快速的解决方案!