/** * @param Config $config * @return Route */ public static function element($config) { $spec = $config->core(); $type = $config->value('type'); // if ($type) { $class = str_replace('~', __NAMESPACE__, $type); $factory = "{$class}::factory"; if (is_callable($factory)) { $route = $factory($config); } else { throw new Exception\RuntimeException("Factory [{$factory}] is not callable", 1); } if (!$route instanceof Route) { throw new Exception\RuntimeException("Factory [{$factory}] did not resurn a Route instance", 2); } } elseif (isset($spec['regex'])) { $route = RegexRoute::factory($config); } elseif (isset($spec['path']) || isset($spec['domain'])) { $route = SimpleRoute::factory($config); } else { $route = SegmentRoute::factory($config); } return $route; }
/** * @return boolean */ protected function tableExists() { $exists = null; $table = $this->params->value('session_table'); if ($table) { $db = $this->getDb(); try { $status = $db->query("SELECT 1 FROM {$table} LIMIT 1"); $exists = (bool) $status; } catch (PDOException $ex) { $ex->getCode(); $exists = false; } } return $exists; }
/** * @param Param $params * @return object * @throws Exception\RuntimeException */ protected function controllerInstance(Param\Node $params, Resources $context, &$class = null) { // Get the parameter values $name = $params->value('controller'); if (!$name) { throw new Exception\RuntimeException("Routing parameter 'controller' is empty", 5); } $class = $this->className($name); $instance = null; // Create the instance if ($context && $context->has($class)) { $instance = $context->get($class); } elseif (class_exists($class, true)) { $instance = new $class(); } // Initialize if (method_exists($instance, 'init')) { $instance->init($context); } return $instance; }
/** * @param Model $model * @param int $depth * @param string|CssClass $base * @return CssClass */ protected function itemClass(Model $model, $depth, $base) { $class = CssClass::cast($base); $class->add($model->value('class')); return $class; }
/** * @param int $status * @param Param\Node $config * @return string */ protected function defaultLayout($status, Param\Node $config) { if ($status && $status != 200) { $layout = $config->value('error_layout', 'layout/error'); } else { $layout = $config->value('default_layout', 'layout/default'); } return $layout; }