Sistema de gerenciamento de rotas.

Overview

SimpleRouter

Sistema de rotas dinâmicas.


Criar o arquivo .htaccess

O arquivo .htaccess deve ser criado na pasta raiz.

RewriteEngine On
Options All -Indexes
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=/$1 [L,QSA]

Namespace

O método namespace() é associado ao padrão MVC e define em que local a rota buscará pelo controlador.

Exemplo:

$route->namespace('App/Controllers');

Group

o método group() define a rota PAI e tudo que vier após a definição será considerada uma rota FILHA.

Exemplo:

<?php
require_once __DIR__ . '/vendor/autoload.php';

$route = new \SimpleRouter\Application\Router();

$route->namespace('App/Controllers');

$route->group('/users');
$route->get('/all', 'Controller@method');
$route->get('/{id}/profile', 'Controller@method');

$route->dispatch();

var_dump($route);

Output:

SimpleRouter\Application\Router: (object) [Object ID #3][2 properties]
    routes: (array) [1 element]
        GET: (array) [2 elements]
            /users/all: (string) "Controller@method"
            /users/{id}/profile: (string) "Controller@method"

Rotas

Declaração

Rotas estáticas

Basicamente é uma rota que não receberá parâmetros.

<?php
# Autoload.
require_once __DIR__ . '/vendor/autoload.php';

# Instância.
$route = new \SimpleRouter\Application\Router();

# Definição do namespace onde serão buscadas as classes.
$route->namespace('App/Controllers');

# Declarando um grupo de rotas, o exemplo abaixo é mesmo que declarar null.
$route->group();

# Rota com verbo GET, os verbos suportados são: GET, POST, PUT, PATCH e DELETE.
$route->get('/', 'Controller@method');

# Executando as rotas.
$route->dispatch();
Rotas dinâmicas

Ao contrário da anterior, está rora receberá parâmetros que podem ser recuperados posteriormente.

<?php
# Autoload.
require_once __DIR__ . '/vendor/autoload.php';

# Instância.
$route = new \SimpleRouter\Application\Router();

# Definição do namespace onde serão buscadas as classes.
$route->namespace('App/Controllers');

# Declarando um grupo de rotas, o exemplo abaixo é mesmo que declarar null.
$route->group();

# Rota dinâmica.
# Os dados podem ser recuperados através do método getParameters().
$route->get('/{name}/{age}', 'Controller@method');

# Executando as rotas.
$route->dispatch();
Rotas com callback

É possível (E muito simples) definir uma função de retorno para o VERBO HTTP que você desejar!

<?php
# Autoload.
require_once __DIR__ . '/vendor/autoload.php';

# Instância.
$route = new \SimpleRouter\Application\Router();

# Definição do namespace onde serão buscadas as classes.
$route->namespace('App/Controllers');

# Declarando um grupo de rotas, o exemplo abaixo é mesmo que declarar null.
$route->group();

# Rota com callback.
$route->get('/{name}/{age}', function($data) {
    echo "<p>His name is <strong>{$data->name}</strong> and his age is <strong>{$data->age}</strong> years.</p>";
});

# Executando as rotas.
$route->dispatch();

Redirecionamento

<?php
# Autoload.
require_once __DIR__ . '/vendor/autoload.php';

# Instância.
$route = new \SimpleRouter\Application\Router();

# Definição do namespace onde serão buscadas as classes.
$route->namespace('App/Controllers');

# Declarando um grupo de rotas, o exemplo abaixo é mesmo que declarar null.
$route->group();

# Redirecionando a rota para '/redirect-page'.
$route->redirect('/redirect-page');

# Executando as rotas.
$route->dispatch();

Tratando erros nas rotas

O tratamento dos erros pode ser muito útil na criação de uma classe ou função que se responsabilizará por direcionar o usuário em caso de erro na rota.

<?php
# Autoload.
require_once __DIR__ . '/vendor/autoload.php';

# Instância.
$route = new \SimpleRouter\Application\Router();

# Definição do namespace onde serão buscadas as classes.
$route->namespace('App/Controllers');

# Declarando um grupo de rotas, o exemplo abaixo é mesmo que declarar null.
$route->group();

# Rota estática.
$route->get('/', 'Controller@method');

# Definindo um novo grupo de rotas
$route->group('/erro');
$route->get('/{errcode}', 'Error@index');

# Executando as rotas.
$route->dispatch();

# Tratamento de erro
if (!is_null($route->error())) {
    $route->redirect("/erro/{$route->error()}");
}

Códigos de erro

  • 400

    • Bad Request.
      • Indica que o servidor não pode ou não irá processar a requisição devido a alguma coisa que foi entendida como um erro do cliente (por exemplo, sintaxe de requisição mal formada, enquadramento de mensagem de requisição inválida ou requisição de roteamento enganosa).
  • 404

    • Not Found.
      • Indica que o servidor não conseguiu encontrar o recurso solicitado. Normalmente, links que levam para uma página 404 estão quebrados ou desativados, e podem estar sujeitos a link rot.
  • 405

    • Method Not Allowed.
      • Indica que o verbo HTTP utilizado não é suportado, por exemplo: a requisição ocorre por meio de um GET, porém o único método disponível é o POST.
  • 501

    • Not Implemented.
      • Indica que o servidor não suporta a funcionalidade requerida para completar a requisição.
You might also like...
Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL
Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL

Times-de-Futebol-BR Descrição do Projeto Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de l

Sistema de Rotas com Controllers e Middlewares

Sistema de Rotas com Controllers e Middlewares

Ferramenta web focada no gerenciamento de atividades.
Ferramenta web focada no gerenciamento de atividades.

MBA - Meu Banco de Atividades Ao tentar organizar suas tarefas por uma ferramenta, você já sentiu uma forte burocracia para incluir algo muito simples

O manager Box é um projeto da disciplina de Projeto e prática 2 do IFPE - Igarassu, que consiste em uma aplicação web com funções de gerenciamento de estoque para pequenos empreendimentos.

ManagerBox O Manager Box é um projeto da disciplina de Projeto e prática 2 do IFPE - Igarassu, que consiste em uma aplicação web com funções de gerenc

CRUD COM LARAVEL 8, MVC, LOGIN E ROTAS, PRONTO PARA VOCE USAR NOS SEUS PROJETOS
CRUD COM LARAVEL 8, MVC, LOGIN E ROTAS, PRONTO PARA VOCE USAR NOS SEUS PROJETOS

CRUD COM LARAVEL 8, MVC, LOGIN E ROTAS, PRONTO PARA VOCE USAR NOS SEUS PROJETOS. Para rodar o Crud é preciso instalar o composer e um servidor localho

Sistema de monitoramento de máquinas sob revisão e conserto do setor de suporte da EPD-Volta Redonda
Sistema de monitoramento de máquinas sob revisão e conserto do setor de suporte da EPD-Volta Redonda

Sistema de Controle de Atendimentos e Máquinas S.C.A.M. é um projeto feito para a Empresa de Processamento de Dados de Volta Redonda, uma empresa públ

Repositório do sistema de Chat em RealTime utilizando WebSocket com Laravel, Vue.js, Inertia e Tailwind

Antes de mais nada... Deixa a estrelinha no repositório Me segue aqui no github Aula desse Projeto no YouTube Esse projeto foi desenvolvido por Gustav

Sistema de Contas a Pagar e a Receber com PHP, MySQL e Bootstrap4

contas sistema-contas Demo: Aqui Sistema de Contas a Pagar e a Receber Feito com PHP, MySQL e Bootstrap 4 Usuário padrão: gustavo Senha padrão: 1234 É

Sistema de Estoque com Laravel

Laravel PHP Framework Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable, creative ex

CRUD de sistema de empleados hecho en Laravel

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Sistema Imobiliário utilizando o Framework PHP Laravel

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

CRUD PHP MVC Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

Projeto de TCC. Sistema para melhoria de gestão e administração de bibliotecas.

TCC PROJETO ATHENA. (BIBLIOTECA ATHENA). Projeto criado por mim e integrantes do meu grupo de TCC na ETEC Juscelino Kubitschek de Oliveira. INTEGRANTE

Projeto de um sistema de Agenda feito durante o curso PHP: Do zero a maestria, ministrado pelo Matheus Baptisti
Projeto de um sistema de Agenda feito durante o curso PHP: Do zero a maestria, ministrado pelo Matheus Baptisti

PJ - Agenda Este projeto é um sistema de Agenda. O objeto de estudo aqui é a conexão com BD + partícularidades do PHP e a WEB, como sessions, variávei

Streaming de música que possui as seguintes características: Registrar a sua música, Sistema de pesquisa, Adicionar uma lista de reprodução, Perfil, Atualizar, Total de visualizações, Últimos vistos entre outros ...
Streaming de música que possui as seguintes características: Registrar a sua música, Sistema de pesquisa, Adicionar uma lista de reprodução, Perfil, Atualizar, Total de visualizações, Últimos vistos entre outros ...

Music Streaming Sobre o Projeto Fala Devs! Estou trazendo aqui um streaming de música que possui as seguintes funcionalidades: Registrar a sua música,

Projeto de um sistema de pedidos de uma Pizzaria. Feito durante o curso
Projeto de um sistema de pedidos de uma Pizzaria. Feito durante o curso "SQL - Básico ao Avançado" Dísponível na Udemy pelo instrutor Matheus Baptisti

PJ-Pizzaria Este projeto é um sistema de pedidos de uma Pizzaria. O objeto de estudo aqui é a conexão de PHP + BD, PHP e a WEB, Regras de negócio comp

O Fique Alerta é um sistema que visa estabelecer uma comunicação entre os cidadãos de alguma comunidade e instituições públicas e privadas

Fique Alerta ⚠️ O Fique Alerta é um sistema que visa estabelecer uma comunicação entre os cidadãos de alguma comunidade e instituições públicas e priv

Realice un programa en cualquier lenguaje de programación en el cual implemente un sistema de registro de asistencias para los ayudantes y becarios del LTIC.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Sistema de controle de atividades pessoais e anotações.

Aplicativo para Journaling em Laravel (PHP) e GoLang O objetivo deste app é possibilitar ao usuário fazer o controle das suas atividades pessoais, bem

Releases(1.0.5)
Owner
null
O manager Box é um projeto da disciplina de Projeto e prática 2 do IFPE - Igarassu, que consiste em uma aplicação web com funções de gerenciamento de estoque para pequenos empreendimentos.

ManagerBox O Manager Box é um projeto da disciplina de Projeto e prática 2 do IFPE - Igarassu, que consiste em uma aplicação web com funções de gerenc

Alan José 4 Apr 15, 2022
Sistema de monitoramento de máquinas sob revisão e conserto do setor de suporte da EPD-Volta Redonda

Sistema de Controle de Atendimentos e Máquinas S.C.A.M. é um projeto feito para a Empresa de Processamento de Dados de Volta Redonda, uma empresa públ

null 3 Jun 21, 2021
Projeto de TCC. Sistema para melhoria de gestão e administração de bibliotecas.

TCC PROJETO ATHENA. (BIBLIOTECA ATHENA). Projeto criado por mim e integrantes do meu grupo de TCC na ETEC Juscelino Kubitschek de Oliveira. INTEGRANTE

Lucas Menchon 2 Jun 7, 2022
Realice un programa en cualquier lenguaje de programación en el cual implemente un sistema de registro de asistencias para los ayudantes y becarios del LTIC.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Darwin Contreras 1 Jan 5, 2022
Sistema de controle de atividades pessoais e anotações.

Aplicativo para Journaling em Laravel (PHP) e GoLang O objetivo deste app é possibilitar ao usuário fazer o controle das suas atividades pessoais, bem

Victor Sousa 2 Jan 12, 2022
Sistema disema con aplicación de consultas en XML y JSON

disema-XML-JSON Sistema web para empresa de diseño "Disema", con operaciones básicas CRUD y uso de html, JQ, JS, php y css. Incluye aplicación de cons

null 1 Jan 12, 2022
Sistema web para empresa de diseño "Disema", con operaciones básicas CRUD y uso de html, JQ, JS, php y css

Disema System Sistema web para empresa de diseño "Disema", con operaciones básicas CRUD y uso de html, JQ, JS, php y css Para su correcto uso, deberá

null 1 Jan 12, 2022
Sistema de apuestas quinielas, sencilla, combinada, doble oportunidad en PHP y JavaScript

Sistema-de-Apuestas-Quinielas Sistema de apuestas quinielas, sencilla, combinada, doble oportunidad en PHP y JavaScript Instrucciones Copiar los archi

Camilo Ortiz 1 May 5, 2022
Um micro sistema de exemplo que usa alguns padrões, mas o destaque para chain of resposibility

Projeto para ilustrar o uso do Chain Of Responsibility O objetivo é apresentar exemplos de aplicação do padrão de projeto Chain of Responsibility. Nes

Alexandre Bezerra Barbosa 2 Sep 15, 2022
Sistema de login usando PHP, MySQL(PDO),HTML,CSS e bootstrap

sistemalogin link para entrar no projeto: https://williamsistema.000webhostapp.com/ Sistema de login usando PHP, MySQL(PDO),HTML,CSS e bootstrap Requi

William Lima Alves 4 Oct 7, 2022