используйте всегда один и тот же foreach для вызова разных методов с разным количеством параметров

У меня есть два метода, которые перебирают одну и ту же структуру,
сначала поиск по тегам «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

Решение

Я не уверен, что то, что вы делаете, является хорошей идеей, но если мы игнорируем это, то вы можете использовать процедуру call_user_func для вызова функции и передачи массива параметров:

call_user_func_array ( callable $callback , array $param_arr )

увидеть:

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

К сожалению, я не могу понять, что вы пытаетесь сделать из вашего поста, поэтому я не могу написать вам пример в контексте

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector