PHP:在数组上使用参数存储回调函数

时间:2018-03-09 13:21:41

标签: php

我正在编写一个简单的路由器类,它允许您在找到路由匹配时执行函数。所以,当你定义路线时,你会做这样的事情:

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));

如何使用存储在数组中的值传递一个函数(包括参数,如果存在的话)在路由器类中执行?

1 个答案:

答案 0 :(得分:2)

如果您不想在呼叫时将$message作为参数传递,则它不应位于功能参数列表中。您可能只是期待use来自周围范围的变量:

$message = 'Good morning!';

$router->addRoute('GET', 'welcome', function () use ($message) {
    echo $message;
});