php - 如何将数组传递给使用 func_get_args 检索参数的函数

标签 php

我正在为接受可变数量参数的 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;
    }

最佳答案

你可以有一个包装器,它接受一个数组并“扁平化”键和值:

function wrapper(array $params) {
    $flat = array();
    foreach ($params as $k => $v) {
        $flat[] = $k;
        $flat[] = $v;
    }

    return call_user_func_array('filter', $flat);
}

以上假设filter是一个免费功能,在您的情况下不是这样。要将方法指定为回调,请使用语法 array($object, 'filter')call_user_func_array调用方法 filter$object .

关于php - 如何将数组传递给使用 func_get_args 检索参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15146460/

相关文章:

php - 以 3 行显示 SQL 数据

php - PHP : log errors in file but don't display them to POST/GET requests

php - PDO 准备好的语句和 bool 值

php - crypt() 函数中的最大字符串输入是多少?

php - 如何将 3 个表与 2 个表的数据总和连接起来

php - 有两个循环的 Twig (非 symfony)

javascript - 调用javascript函数错误

PHP - 仅当数组1中存在键时才使用数组2覆盖数组1中的值

javascript - 通过 Ajax 将数据从 Javascript 发送到 JSON、PHP

javascript - 值没有从一个动态下拉框传递到 php 中的另一个动态下拉框