使用始终相同的foreach来调用具有不同参数数量的不同方法

时间:2017-01-23 23:37:06

标签: php design-patterns

我有两种迭代相同结构的方法, 首先搜索“div”标签并在搜索“tr”标签之后。他们使用相同的foreach。

public function findClass($nome){
    foreach ($this->conteudo->getElementsByTagName($this->class) as $node) {
        if (preg_match("/" . $nome . "/", $node->getAttribute("class"))) {
            return $node;
        }
    }
}

public function separar($name, $tag){
    foreach ($this->conteudo->getElementsByTagName($this->class) as $node) {
        $aux = array_map($name, explode($tag, $node->textContent));
    }
    return $aux;
}

如何使方法使用不同数量的参数调用foreach和下一个函数。

我尝试这样的事情,但参数数量有问题

public function findClass($nome)
{
    return $this->buscar('classe', $nome);
}

public function applyFuncToExplode($function, $tag){
    return $this->buscar('map', $function, $tag);
}

public function buscar($metodo, [$parameters]){
    foreach ($this->conteudo->getElementsByTagName($this->class) as $node) {
        $this->$metodo($node, [$parameters]);
    }
    $this->class = null;
}

public function classe($node, $nome){
    if (preg_match("/" . $nome . "/", $node->getAttribute("class"))) {
        return $node;
    }
}

public function map($node, $function, $tag){
    return array_map($function, explode($tag, $node->textContent));
}

1 个答案:

答案 0 :(得分:0)

我不相信你所做的是一个好主意但是如果我们忽略了那么你可以使用call_user_func例程来调用一个函数并传入参数数组:

call_user_func_array ( callable $callback , array $param_arr )

请参阅:

http://php.net/manual/en/function.call-user-func-array.php

不幸的是,我无法从你的帖子中弄清楚你想要做什么,所以我不能给你写一个上下文的例子