Example #1
0
 /**
  * @param Definition $parent
  * @param array|Definition $definition
  * @param array $path
  * @param bool $start
  * @return Definition
  * @throws RuntimeException
  */
 public static function addChild(Definition $parent, $definition, array $path, $start = false)
 {
     if ($root = $parent->child($path[0])) {
         return static::addChild($root, $definition, array_slice($path, 1));
     }
     if (isset($path[1])) {
         throw new RuntimeException('Parent definition not found: ' . $definition[Definition::NAME]);
     }
     $definition[Definition::NAME] = $path[0];
     $start && empty($definition[Definition::ROUTE]) && isset($definition[Definition::NAME]) && ($definition[Definition::ROUTE] = $definition[Definition::NAME]);
     !$start && empty($definition[Definition::ROUTE]) && ($definition[Definition::ROUTE] = '/' . $path[0]);
     $definition = static::definition($definition);
     $parent->add($path[0], $definition);
     return $definition;
 }
Example #2
0
 /**
  * @param $name
  * @return Definition
  */
 protected function config($name)
 {
     return $name === $this->definition[Definition::NAME] ? $this->definition : $this->definition->child($name);
 }