private static final function loadController() { $view = \View\ViewBundle::getInstance(); //$view -> setTemplate( KIT_VIEW_TEMPLATE ); ////\View\ViewBundle::getInstance() -> setVar( 'path', self::$_path ); self::prepareController(); $space = 'App\\Controllers\\' . self::$_controller . 'Controller'; $e404 = ['controller' => self::$_controller, 'action' => self::$_action]; if (!\Autoload::nameSpaceExists($space)) { return $view->e404($e404); } $cont = new $space(); $cont->setTpl(self::$_controller . '/' . self::$_action); $act_method = "action" . self::$_action; /** * Проверка существования метода экшена и выполнение его, или стандартного * метода 404 ошибки. */ if (method_exists($cont, $act_method)) { $cont->{$act_method}(self::$_furl); $cont->exir(); } else { $view->e404($e404); } }
public static function findRule($path) { $f_path = explode('/', $path); $return = []; foreach (self::$_relation as $rel_path => $row) { if ($path == $rel_path) { /** * Добавление пустого значения в начало списка, например: * Array * ( * [0] => * [1] => Account * [2] => Authorize * ) * для дальнейшего использования массива данных системой. Нулевой пустой * ключ нужен нормального разбора контроллером FURL */ array_unshift($row, ''); return $row; } else { $furl = explode('/', $rel_path); foreach ($furl as $i => $frow) { if (isset($f_path[$i]) and $frow == $f_path[$i]) { continue; } else { if ($frow[0] == '{' and $frow[strlen($frow) - 1] == '}') { if (!isset($f_path[$i])) { array_unshift($row, ''); $return = $return ?: $row; continue; } $type = ucfirst(preg_replace('#{(.*)}#', '$1', $frow)); $ns = "App\\Property\\{$type}"; if (!\Autoload::nameSpaceExists($ns)) { break; } $validate = new $ns(); if (!$validate->check($f_path[$i])) { break; } array_unshift($row, ''); $return = $return ?: $row; $return[] = $f_path[$i]; continue; } else { break; } } } } } return $return; }
private function prepareRelation($name) { $rel = $this->_initRelation[$name]; $model_name = "App\\Models\\{$rel[1]}"; if (!\Autoload::nameSpaceExists($model_name)) { throw new \Exceptions\DevelException('_RELATION_CORRECT__relname:' . $rel[1]); } $this->_relationModel[$name] = $model = new $model_name(); return $model; }
public function initValidate($type) { if (!preg_match('#^[a-z]{1}[a-z_0-9]{0,24}$#i', $type)) { throw new \Exceptions\DevelException('_PROPERTY_INIT_VALIDATE_INCORRECT'); } $this->_validateName = ucfirst($type); $validate_name = ucfirst($type); $namespace = 'App\\Property\\' . $validate_name; if (!\Autoload::nameSpaceExists($namespace)) { throw new \Exceptions\DevelException('_VALIDATOR_TYPES_NF__' . $validate_name); } $this->_validate = new $namespace(); $this->_tag = $this->getValidate()->getTag(); $modifier = "App\\Property\\Modifier\\" . $validate_name; if (\Autoload::nameSpaceExists($modifier)) { $this->_modifier = new $modifier(); } else { $this->_modifier = new \Property\Modifier(); } }