url = filter_input(INPUT_GET, 'url', FILTER_DEFAULT); //echo $this->url; //echo "
Antes da formatação: " .$this->url; $this->clearUrl(); //echo "
Depois da formatação: " .$this->url; // SEPARA OS VALORES EM ARRAY $this->urlConjunto = explode("/", $this->url); /*echo "
";
            print_r($this->urlConjunto);
            echo "
";*/ // trata o controller, caso exista if (isset($this->urlConjunto[0])){ $this->urlController = $this->validarController($this->urlConjunto[0]); } // trata o método, caso exista if (isset($this->urlConjunto[1])){ $this->urlMetodo = $this->validarMetodo($this->urlConjunto[1]); } // trata o parâmetro, caso exista if (isset($this->urlConjunto[2])){ $this->urlParametro = (int)$this->urlConjunto[2]; //echo "
{$this->urlParametro}"; }else { $this->urlParametro = null; } }else{ $this->urlController = $this->validarController(CONTROLLER); $this->urlMetodo = $this->validarMetodo(METHOD); } } public function clearUrl(){ // eliminar as tags html $this->url = strip_tags($this->url); // retirar espaços em branco contidos nas laterais da variável URL $this->url = trim($this->url); // retirar a última barra, caso exista $this->url = rtrim($this->url, "/"); // FORMATA OS CARACTERES self::$formatar = array(); self::$formatar['a'] = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîï ðñòóôõöøùúûýýþÿRr"!@#$%&*()_-+={[}]?;:.,\\\'<>°ºª '; self::$formatar['b'] = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiii dnoooooouuuyybyRr--------------------------------'; // traduz os caracteres do padrão A para o padrão B $this->url = strtr(utf8_decode($this->url), utf8_decode(self::$formatar['a']), self::$formatar['b']); } // método que trata o nome do controller passado na url para o padrao CamelCase. // Ex.: ControlleUsuario de Classe public function validarController($controller){ // retiro os espaços entre as palavras e acrescento as palavras para o // primeiro caracter em maiúsculo // separa o - para retirá-lo $controller = explode("-", strtolower($controller)); // Junto através de espaços para que eu possa colocar as primeiras em maiúsculo $controller = implode(" ", $controller); // Coloco as primeiras palavras em maiúsculo $controller = ucwords($controller); // Substituo o espaço em branco para juntar as palavras $controller = str_replace(" ", "", $controller); //echo "
{$controller}"; return $controller; } // método que trata o nome do método passado na url public function validarMetodo($metodo) { // retiro os espaços entre as palavras e acrescento as palavras para // o primeiro caracter em minúsculo // separa o - para retirá-lo $metodo = explode("-", strtolower($metodo)); // Junto através de espaços para que eu possa colocar as primeiras em maiúsculo $metodo = implode(" ", $metodo); // Coloco as primeiras palavras em maiúsculo $metodo = ucwords($metodo); // Substituo o espaço em branco para juntar as palavras e coloco a primeira em minúsculo $metodo = lcfirst(str_replace(" ", "", $metodo)); //echo "
{$metodo}"; // retorna o nome do método, com o primeiro caracter em minúsculo. Ex.: index return $metodo; } public function carregar() { //Verifica se a classe que está na urlController existe //echo "Classe a ser carregada: {$this->urlController}"; if (class_exists($this->urlController)) { try { // verifica se o usuario está logado $this->validarSessao(); // peço para carregar o método $this->carregarMetodo(); } catch (Exception $e) { echo "Erro ao carregar a classe e o método: " . $e->getMessage() . "
"; $this->urlController = $this->validarController(CONTROLLER); $this->urlMetodo = $this->validarMetodo(METHOD); $this->carregar(); } }else { //echo "Erro ao carregar a classe {$this->urlController}
"; $this->urlController = $this->validarController(CONTROLLER); $this->urlMetodo = $this->validarMetodo(METHOD); $this->carregar(); } } public function carregarMetodo() { $classeCarregar = new $this->urlController(); //Verificar se existe o método if (method_exists($classeCarregar, $this->urlMetodo)){ //echo "
Método a ser carregador: {$this->urlMetodo}"; if ($this->urlParametro !== null) { $classeCarregar->{$this->urlMetodo}($this->urlParametro); }else { $classeCarregar->{$this->urlMetodo}(); } }else{ //echo "
Erro ao carregar o método: {$this->urlMetodo}"; $this->urlController = $this->validarController(CONTROLLER); $this->urlMetodo = $this->validarMetodo(METHOD); $this->carregarMetodo(); } } private function validarSessao(){ if (!isset($_SESSION['id'])) { if (($this->urlController != 'ControllerAuth') && ($this->urlMetodo != 'auth')){ $_SESSION['msg'] = " "; $this->urlController = 'ControllerAuth'; $this->urlMetodo = 'auth'; } } } }