FluentDOM\DocumentFragment::namespaces PHP Method

namespaces() public method

You can use an array(prefix => $namespace, ...) or an element node to set the namespaces. If the list is empty the document, the namespaces from the document object will be used.
public namespaces ( null | array | Traversable | DOMElement $namespaces = NULL ) : array
$namespaces null | array | Traversable | DOMElement
return array
    public function namespaces($namespaces = NULL)
    {
        if (isset($namespaces)) {
            $this->_namespaces = [];
            if ($namespaces instanceof \DOMElement) {
                $xpath = new Xpath($namespaces->ownerDocument);
                $namespaces = $xpath('namespace::*', $namespaces);
            }
            if (is_array($namespaces) || $namespaces instanceof \Traversable) {
                foreach ($namespaces as $key => $namespace) {
                    if ($namespace instanceof \DOMNameSpaceNode) {
                        if ($namespace->nodeName === 'xmlns') {
                            $this->registerNamespace('#default', $namespace->nodeValue);
                        } elseif ($namespace->localName != 'xml') {
                            $this->registerNamespace($namespace->localName, $namespace->nodeValue);
                        }
                    } else {
                        $this->registerNamespace($key, $namespace);
                    }
                }
            } elseif (isset($namespaces)) {
                throw new \InvalidArgumentException('$namespaces needs to be a list of namespaces or an element node to fetch the namespaces from.');
            }
        }
        return empty($this->_namespaces) ? $this->ownerDocument->namespaces() : $this->_namespaces;
    }