跟随这段代码
$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没有传递给函数作为参数,但我不明白为什么。有人能帮助我吗?
答案 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。这是一个非常快速的解决方案!