예제 #1
0
파일: tree.Test.php 프로젝트: poef/ariadne
 function testAutoCreateCD()
 {
     $tree = \arc\tree::expand();
     $tree->cd('foo')->nodeValue = 'bar';
     $collapsed = \arc\tree::collapse($tree);
     $this->assertTrue($collapsed == array('/foo/' => 'bar'));
 }
예제 #2
0
파일: config.php 프로젝트: poef/ariadne
 public static function getConfiguration()
 {
     $context = \arc\context::$context;
     if (!$context->arcConfig) {
         $context->arcConfig = new config\Configuration(\arc\tree::expand()->cd($context->arcPath));
     }
     return $context->arcConfig;
 }
예제 #3
0
파일: events.php 프로젝트: poef/ariadne
 /**
  *	Factory method for the static stack. Returns the shared stack only. Use new \arc\events\Stack
  *	or your own factory method to create a seperate Stack instance.
  */
 public static function getEventsTree()
 {
     $context = \arc\context::$context;
     if (!$context->arcEvents) {
         $context->arcEvents = new events\EventsTree(\arc\tree::expand()->cd($context->arcPath));
     }
     return $context->arcEvents;
 }
예제 #4
0
파일: grants.php 프로젝트: poef/ariadne
 public static function getGrantsTree()
 {
     $context = \arc\context::$context;
     if (!$context->arcUser) {
         $context->arcUser = '******';
     }
     if (!$context->arcGroups) {
         $context->arcGroups = ['public'];
     }
     if (!$context->arcGrants) {
         $context->arcGrants = new grants\GrantsTree(\arc\tree::expand()->cd($context->arcPath), $context->arcUser, $context->arcGroups);
     }
     return $context->arcGrants;
 }
예제 #5
0
파일: route.php 프로젝트: poef/ariadne
 /**
  * Matches a path or url to a list of routes and calls the best matching route handler.
  * @param string $path
  * @param mixed $routes A tree of routes with handlers as nodeValue.
  * @return array|bool
  */
 public static function match($path, $routes)
 {
     $routes = \arc\tree::expand($routes);
     $controller = \arc\tree::dive($routes->cd($path), function ($node) {
         if (isset($node->nodeValue)) {
             return $node;
         }
     });
     if ($controller) {
         $remainder = substr($path, strlen($controller->getPath()));
         if (is_callable($controller->nodeValue)) {
             $result = call_user_func($controller->nodeValue, $remainder);
         } else {
             $result = $controller->nodeValue;
         }
         return ['path' => $controller->getPath(), 'remainder' => $remainder, 'result' => $result];
     }
     return false;
 }
예제 #6
0
파일: hash.php 프로젝트: poef/ariadne
 /**
  * Converts a hash to a \arc\tree\NamedNode
  * @param $hash
  * @param null $parent
  * @return tree\NamedNode|null
  */
 public static function tree($hash, $parent = null)
 {
     if (!isset($parent)) {
         $parent = \arc\tree::expand();
     }
     if (is_array($hash) || $hash instanceof \Traversable) {
         foreach ($hash as $index => $value) {
             $child = $parent->appendChild(self::escape($index));
             if (is_array($value)) {
                 self::tree($value, $child);
             } else {
                 $child->nodeValue = $value;
             }
         }
     } else {
         $parent->nodeValue = $hash;
     }
     return $parent;
 }
예제 #7
0
파일: NamedNode.php 프로젝트: poef/ariadne
 public function unserialize($data)
 {
     return \arc\tree::expand(unserialize($data));
 }