我正在编写一个简单的路由器类,它允许您在找到路由匹配时执行函数。所以,当你定义路线时,你会做这样的事情:
var studentIDs: [Int] = []
然后,在路由器类中,这将添加到如下数组:
$message = 'Good morning!';
$router->addRoute('GET', 'welcome', function($message) {
echo $message;
});
通过比较模式和请求的网址找到匹配项后,我有:
public function addRoute($method, $pattern, $handler) {
$this->routes[$pattern] = ['method' => $method, 'handler' => $handler];
}
这给了我一个错误:return call_user_func($setting['handler']);
...所以我尝试使用:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function
...但这给了我:return call_user_func_array($setting['handler'], array($message));
如何使用存储在数组中的值传递一个函数(包括参数,如果存在的话)在路由器类中执行?
答案 0 :(得分:2)
如果您不想在呼叫时将$message
作为参数传递,则它不应位于功能参数列表中。您可能只是期待use
来自周围范围的变量:
$message = 'Good morning!';
$router->addRoute('GET', 'welcome', function () use ($message) {
echo $message;
});