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

Múltiplos Uploads com PHP, Mysql e Ajax - #5 Despachante

28/10/2019

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 (essa index na raiz geral do projeto) vamos instanciar a ClassDispatch e incluir dinâmicamente o arquivo solicitado:

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

Crie um arquivo simples dentro da pasta views com o nome index.php:

<?php
echo "Hello World";

Acesse no firefox o http://localhost . Se aparecer a mensagem Hello World quer dizer que seu arquivo despachante já está incluindo corretamente os arquivos.

Página 404

Dentro de views também, crie uma página 404.php para receber um valor quando a url digitada não existir:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>Página não encontrada!</h1>
</body>
</html>

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

Múltiplos Uploads com PHP, Mysql e Ajax - #4 htaccess e parseUrl
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!
Múltiplos Uploads com PHP, Mysql e Ajax - #6 DB e ModelConexão
Na aula de hoje realizaremos a criação do nosso banco de dados e faremos também a classe de conexao PDO ao banco MySql.
Saiba mais!
MultiUploads
No curso de múltiplos uploads utilizando php, mysql e ajax trabalharemos com o envio de diferentes arquivos, barra de progresso e sem utilização de plugins.
Saiba mais!