我编程的API方法接受可变数量的参数.API方法(见下文)使用func_get_args.我正在包装API,并希望能够传递关联数组,而不是将数组的键/值作为参数传递; 即filter(key1,value1,key2,value2 ...)
我有源代码访问API,但遗憾的是我无法更改源代码.
我查看了call_user_func_array,我相信它应该/将一个数组作为一组参数传递(虽然不是一个关联数组). filter是一个对象的方法 - 我不知道如何将方法作为回调传递.我也不知道是否有一种干净的方式来包装这个API.任何和所有的帮助表示赞赏.
<?php
public function &filter() {
$filter = new QueryFilter($this->queryhandler, $this);
$args = func_get_args();
$filter->applyFilter($this->getFilters($args));
return $filter;
}
Run Code Online (Sandbox Code Playgroud)
您可以有一个包装器,它接受一个数组并“展平”键和值:
function wrapper(array $params) {
$flat = array();
foreach ($params as $k => $v) {
$flat[] = $k;
$flat[] = $v;
}
return call_user_func_array('filter', $flat);
}
Run Code Online (Sandbox Code Playgroud)
上面假设这filter是一个自由函数,但在您的情况下并非如此。要将方法指定为回调,请使用语法array($object, 'filter')with在 上call_user_func_array调用该方法。filter$object
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |