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'] = "
Você não pode acessar esta página. Realize o login primeiro!
";
$this->urlController = 'ControllerAuth';
$this->urlMetodo = 'auth';
}
}
}
}