Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Cadastro e Login - #6 Classe Despachante

07/09/2018

Hoje faremos a criação base do nosso sistema, o arquivo despachante (ClassDispatch). Esse arquivo será a base de inclusão das nossas urls.

Criando o arquivo despachante no PHP

Dentro da pasta classes vamos criar o arquivo ClassDispatch com o seguinte código:

<?php
namespace Classes;

use Traits\TraitParseUrl;

class ClassDispatch{

    private $init;
    private $url;
    private $dir=null;
    private $cont;
    private $file;
    private $page;

    use TraitParseUrl;

    public function __construct()
    {
        $this->url=TraitParseUrl::parseUrl();
        $this->cont=count($this->url);
        $this->verificaParametros();
    }

    #Verificar se existem parâmetros digitados pelo usuário
    private function verificaParametros()
    {
        if($this->cont == 1 && empty($this->url[0])){
            $this->page=DIRREQ.'views/index.php';
        }else{
            $this->verificaDir();
        }
    }

    #Verificar se o índice digitado pelo usuário é um diretório
    private function verificaDir()
    {
        $this->init=$this->url[0].'/';

        for($i=0; $i<$this->cont; $i++){
            if(is_dir($this->init)){
                if($i==0){
                    $this->dir.=$this->init;
                }elseif(is_dir($this->dir.$this->url[$i])){
                    $this->dir.=$this->url[$i].'/';
                }else{
                    $this->file=$this->url[$i];
                    break;
                }
            }else{
                if($i==0){
                    $this->dir.='views/';
                }

                if(is_dir($this->dir.$this->url[$i])){
                    $this->dir.=$this->url[$i].'/';
                }else{
                    $this->file=$this->url[$i];
                    break;
                }
            }
        }

        $this->dir=str_replace("//","/",$this->dir);
        $this->verificaFile();
    }

    #Verificar se existe o arquivo requisitado, se não existir ele chama o index.php, senão chama a pagina 404.
    private function verificaFile()
    {
        $dirAbs=DIRREQ.$this->dir;
        if(file_exists($dirAbs.$this->file.'.php')){
            $this->page=$dirAbs.$this->file.'.php';
        }elseif(file_exists($dirAbs.'index.php')){
            $this->page=$dirAbs.'index.php';
        }else{
            $this->page=DIRREQ.'views/404.php';
        }
    }

    #Retornar a página final para o sistema
    public function getInclusao()
    {
        return $this->page;
    }
}

Vamos as explicações dos métodos:

verificaParametros(): esse método vai verificar se foi requisitado algum parâmetro na url, então se for apenas o "localhost" ou "seusite.com" ele já vai definir o atributo page como views/index.php senão ele vai chamar o método verificaDir().

verificaDir(): possui a função de verificar se o parâmetro passado na url é um diretório e caso for ele vai concatenando até gerar uma árvore de diretórios. Quando não for mais um diretório requisitado ele vai setar o atributo file.

verificaFile(): esse método verifica se existe o arquivo .php solicitado pelo atributo $this->file, se existir ele já atribui ao atributo page aquele caminho, senão ele verifica se existe dentro do diretório o arquivo index.php e atribui o $this->page. Se de tudo não existir, ele chama a página de erro 404.php.

getInclusao(): retorna para o sistema o atributo page. Esse atributo já vem com todos os diretórios concatenados e com o arquivo.php, pronto para ser incluído no sistema.

Incluindo a página no index.php

Na index.php vamos instanciar a ClassDispatch e incluir dinâmicamente o arquivo solicitado:

$dispatch=new Classes\ClassDispatch();
include($dispatch->getInclusao());

A ClassDispatch é um pouco complexa, mas ela é a base do nosso sistema. � muito interessante que você a entenda para dar prosseguimento ao curso.

Sucesso nos códigos e na vida!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Cadastro e Login - #5 htaccess e TraitUrlParser
Na vídeo-aula de hoje realizaremos a configuração do nosso arquivo htaccess e criaremos a TraitParseUrl que trabalhará diretamente na url digitada pelo usuário.
Saiba mais!
Cadastro e Login - #7 Diagrama de Classes
Na vídeo-aula de hoje aprenderemos como criar um diagrama de classes do nosso sistema. O diagrama de classes apoia toda a equipe de desenvolvedores.
Saiba mais!
Cadastro e Login
Neste curso vamos aprender a criar um sistema completo de cadastro e login.
Saiba mais!