在执行这段代码时
$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我在浏览器中收到此错误:
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 没有作为参数传递给函数,但我不明白为什么。有人可以帮助我吗?
最佳答案
我也有同样的情况!我使用的是 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 。这是一个非常快速的修复!
关于fat-free-framework - 无脂肪框架缺少 {closure}() 的参数 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034728/