Advertisement
johnatanlopes

Route

May 14th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. <?php
  2.  
  3. require_once("Request.php");
  4.  
  5. class Route extends Request
  6. {
  7.  
  8. # Variáveis
  9. public $rotas = [];
  10. public $caminhoBase = "/php/php-route";
  11. public $url;
  12. public $req;
  13.  
  14. # Construtor captura a url e o método da requisição
  15. public function __construct()
  16. {
  17. $this->url = str_replace($this->caminhoBase, "", $_SERVER['REQUEST_URI']);
  18. $this->req = $_SERVER['REQUEST_METHOD'];
  19. }
  20.  
  21. # Executa uma função que não existe, que no caso é os métodos
  22. # Chama o método addRotas para adicionar as rotas no array
  23. public function __call($name, $arguments)
  24. {
  25. $this->addRotas($name, $arguments[0], $arguments[1]);
  26. }
  27.  
  28. # Adiciona a a rota e demais argumentos no array rotas
  29. public function addRotas($name, $rota, $callback)
  30. {
  31. array_push($this->rotas, ["rota" => $rota, "metodo" => $name, "callback" => $callback]);
  32. }
  33.  
  34. # Retorna o array das rotas
  35. public function getRotas()
  36. {
  37. return $this->rotas;
  38. }
  39.  
  40. # Caso não seja exibido nenhuma rota retornamos a mensagem de rota não encontrada
  41. public function rotaNaoEncontrada()
  42. {
  43. echo "Erro 404! - Página não existe";
  44. }
  45.  
  46. # Executa o metodo referente a requisição
  47. public function executaMetodoHttp($rota, $metodo, $callback)
  48. {
  49.  
  50. if ($this->url == $rota && strtolower($this->req) == $metodo)
  51. {
  52. if ($metodo == "get")
  53. {
  54. parent::getHttp($rota, $callback);
  55. exit();
  56. }
  57.  
  58. if ($metodo == "post")
  59. {
  60. parent::postHttp($rota, $callback);
  61. exit();
  62. }
  63. }
  64.  
  65. }
  66.  
  67. # Executa toda a lógica para executar a requisição do método
  68. public function executa()
  69. {
  70. $rotas = $this->getRotas();
  71. foreach ($rotas as $rota)
  72. {
  73. $this->executaMetodoHttp($rota["rota"], $rota["metodo"], $rota["callback"]);
  74. }
  75. $this->rotaNaoEncontrada();
  76. }
  77.  
  78. # Somente iniciamos a execução quando o objeto é finalizado
  79. public function __destruct()
  80. {
  81. $this->executa();
  82. }
  83.  
  84. }
  85.  
  86. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement