config = $config; date_default_timezone_set('Europe/Moscow'); error_reporting(E_ALL); $this->user_agent = $_SERVER['HTTP_USER_AGENT']; $this->user_IP = $_SERVER['REMOTE_ADDR']; $this->setRoute( '|^/$|', 'Index', 'index' ); $dsn = 'mysql:host=' . $this->config->db->host . ';dbname=' . $this->config->db->dbname . ';charset=utf8'; try { $this->dbh = new \PDO( $dsn, $this->config->db->user, $this->config->db->password ); } catch (\PDOException $exception) { die( 'Нет подключения к MySQL: ' . $exception->getMessage() ); } } /** * Получение useragent пользователя * * @return string */ public function getUserAgent() { return $this->user_agent; } /** * Получение IP пользователя * * @return string */ public function getUserIP() { return $this->user_IP; } public function getPostObj( $array ) { $out = []; foreach ( $array as $value ) { if ( isset( $_POST[ $value ] ) ) { $out[ $value ] = $_POST[ $value ]; } else { $out[ $value ] = false; } } return (object) $out; } /** * Установка маршрута * * @param string $regexp регулярное выражение описывающее путь * @param string $controller котроллер. * @param string $action действие. по умолчанию 'index' */ public function setRoute( $regexp, $controller, $action = 'index') { $this->route_table[] = array($regexp,$controller,$action); } /** * Редирект * * @param string $url адрес переброса */ public function Redirect( $url ) { header( 'Location: ' . $url ); exit(0); } public function routeRun( $controller, $action = 'index', $params = [] ) { $a = $this->config->controller_namespace . $controller . 'Controller'; $obj = new $a; call_user_func_array( [ $obj, $action . 'Action' ], $params ); exit(0); } /** * Запуск маршрутов */ public function run(){ foreach ( $this->route_table as $route_array ) { if ( preg_match( $route_array[0], $_SERVER['REQUEST_URI'], $matches ) ) { $a = $this->config->controller_namespace . $route_array[1] . 'Controller'; $obj = new $a; $param_arr = []; foreach ( $matches as $key => $value ) { if ( ! is_int( $key ) ) { $param_arr[] = $value; } } call_user_func_array( [ $obj, $route_array[2] . 'Action' ], $param_arr ); break; } } } }