FluentDOM\Query::apply PHP Method

apply() private method

Use a handler callback to apply a content argument to each node $targetNodes. The content argument can be an easy setter function
private apply ( array | DOMNodeList $targetNodes, string | array | DOMNode | DOMNodeList | Traversable | callable $content, callable $handler ) : array
$targetNodes array | DOMNodeList
$content string | array | DOMNode | DOMNodeList | Traversable | callable
$handler callable
return array
    private function apply($targetNodes, $content, callable $handler)
    {
        $result = array();
        $isSetterFunction = FALSE;
        if ($callback = Constraints::isCallable($content)) {
            $isSetterFunction = TRUE;
        } else {
            $contentNodes = $this->build()->getContentNodes($content);
        }
        foreach ($targetNodes as $index => $node) {
            if ($isSetterFunction) {
                $contentData = $callback($node, $index, $this->build()->getInnerXml($node));
                if (!empty($contentData)) {
                    $contentNodes = $this->build()->getContentNodes($contentData);
                }
            }
            if (!empty($contentNodes)) {
                $resultNodes = call_user_func($handler, $node, $contentNodes);
                if (is_array($resultNodes)) {
                    $result = array_merge($result, $resultNodes);
                }
            }
        }
        return $result;
    }