Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once("Request.php");
- class Route extends Request
- {
- # Variáveis
- public $rotas = [];
- public $caminhoBase = "/php/php-route";
- public $url;
- public $req;
- # Construtor captura a url e o método da requisição
- public function __construct()
- {
- $this->url = str_replace($this->caminhoBase, "", $_SERVER['REQUEST_URI']);
- $this->req = $_SERVER['REQUEST_METHOD'];
- }
- # Executa uma função que não existe, que no caso é os métodos
- # Chama o método addRotas para adicionar as rotas no array
- public function __call($name, $arguments)
- {
- $this->addRotas($name, $arguments[0], $arguments[1]);
- }
- # Adiciona a a rota e demais argumentos no array rotas
- public function addRotas($name, $rota, $callback)
- {
- array_push($this->rotas, ["rota" => $rota, "metodo" => $name, "callback" => $callback]);
- }
- # Retorna o array das rotas
- public function getRotas()
- {
- return $this->rotas;
- }
- # Caso não seja exibido nenhuma rota retornamos a mensagem de rota não encontrada
- public function rotaNaoEncontrada()
- {
- echo "Erro 404! - Página não existe";
- }
- # Executa o metodo referente a requisição
- public function executaMetodoHttp($rota, $metodo, $callback)
- {
- if ($this->url == $rota && strtolower($this->req) == $metodo)
- {
- if ($metodo == "get")
- {
- parent::getHttp($rota, $callback);
- exit();
- }
- if ($metodo == "post")
- {
- parent::postHttp($rota, $callback);
- exit();
- }
- }
- }
- # Executa toda a lógica para executar a requisição do método
- public function executa()
- {
- $rotas = $this->getRotas();
- foreach ($rotas as $rota)
- {
- $this->executaMetodoHttp($rota["rota"], $rota["metodo"], $rota["callback"]);
- }
- $this->rotaNaoEncontrada();
- }
- # Somente iniciamos a execução quando o objeto é finalizado
- public function __destruct()
- {
- $this->executa();
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement