我有一个函数collectRows
,它接受一个sqli_result对象,并以行数组的形式返回查询结果:
function collectRows($result) {
...
}
并具有另一个函数,该函数接受一个函数来决定在返回查询结果之前如何处理查询结果:
function execQuery($query, $resultsF=null) {
...
}
我想像这样使用execQuery
:
execQuery("SELECT * FROM...", collectRows);
但是我收到抱怨说它找不到常数的"collectRows"。
显然,我可以做这样的事情:
execQuery("SELECT * FROM...", function($result) {
return collectRows($result);
});
但是,如果能够更简洁地编写它,那就太好了。
有没有办法在不将其包装在匿名函数中的情况下传递命名函数?
函数名称而不是函数本身应该传递给函数:
function execQuery($query, $functionName=null) {
if (is_callable($functionName)) {
$functionName();
}
}
并称之为:
execQuery("SELECT * FROM...", 'collectRows');
有关可调用类型的详细信息。
很简单,您只需将名称作为字符串传递即可。PHP 不在乎,无论如何它都会处理它。