name = $name; foreach ($children as $key => $child) { if (is_string($child)) { $child = new SimpleFile($key, $child); } elseif (is_array($child)) { $child = new self($key, $child); } elseif (!$child instanceof INode) { throw new InvalidArgumentException('Children must be specified as strings, arrays or instances of Sabre\DAV\INode'); } $this->addChild($child); } } /** * Adds a new childnode to this collection. */ public function addChild(INode $child) { $this->children[$child->getName()] = $child; } /** * Returns the name of the collection. * * @return string */ public function getName() { return $this->name; } /** * Returns a child object, by its name. * * This method makes use of the getChildren method to grab all the child nodes, and compares the name. * Generally its wise to override this, as this can usually be optimized * * This method must throw Sabre\DAV\Exception\NotFound if the node does not * exist. * * @param string $name * * @throws Exception\NotFound * * @return INode */ public function getChild($name) { if (isset($this->children[$name])) { return $this->children[$name]; } throw new Exception\NotFound('File not found: '.$name.' in \''.$this->getName().'\''); } /** * Returns a list of children for this collection. * * @return INode[] */ public function getChildren() { return array_values($this->children); } }