/** * @param string $name * @param self $parent */ public function __construct($name = null, self $parent = null) { $this->name = $name; if ($parent) { $parent->appendChild($this); } }
/** * @param Node $container * @param array $name * @param array $section * @param array $classmap * @return Node */ protected function buildNode(Node $container, $name, array $section, array $classmap) { if (!$name && isset($section['name'])) { $name = $section['name']; } if ($this->sectionIsField($section)) { if (isset($classmap['Field'])) { $class = $classmap['Field']; $node = new $class($name); } else { $node = new Field($name); } $this->buildField($node, $section); } else { $node = new Form\Node($name); foreach ($section as $key => $data) { if (substr($key, 0, 1) == '@') { continue; } if (is_array($data)) { $this->buildNode($node, $key, $data, $classmap); } else { $node->setAttribute($key, $data); } } } $container->appendChild($node); return $container; }