Pessoal estou com um dúvida terrivel não consigo checar os paramentros passados pela url ele sempre pagar anterior o que fazer?
Vejam o codigo::
<?php
class Rota
{
private $controlador = 'Paginas';
private $metodo = 'index';
private $parametros = [];
public function __construct()
{
$url = $this->url() ? $this->url() : [0];
if (file_exists('../app/Controllers/' . ucwords($url[0] . 'php'))) {
$this->controlador = ucwords($url[0]);
unset($url[0]);
}
require_once '../app/Controllers/' . $this->controlador . '.php';
$this->controlador = new $this->controlador;
if (isset($url[1])) {
if (method_exists($this->controlador, $url[1])) {
$this->metodo = $url[1];
unset($url[1]);
}
}
$this->parametros = $url ? array_values($url) : [];
call_user_func_array([$this->controlador, $this->metodo], $this->parametros);
var_dump($this);
}
private function url()
{
$url = filter_input(INPUT_GET, 'url', FILTER_SANITIZE_URL);
if (isset($url)) {
$url = trim(rtrim($url, '/'));
$url = explode('/', $url);
return $url;
}
}
}
Minha class Paginas:
<?php
class Paginas{
public function sobre($id){
echo $id."<hr>";
}
}
O debug está me retornando:
paginas
object(Rota)#1 (3) { [“controlador”:“Rota”:private]=> object(Paginas)#2 (0) { } [“metodo”:“Rota”:private]=> string(5) “sobre” [“parametros”:“Rota”:private]=> array(1) { [0]=> string(7) “paginas” } }
url usada: http://localhost/minha_pagina/paginas/sobre
Ele não deveria gerar um erro e pedir para que eu passasse mais um paramentro na url? Ao inves disso ele so me retorna o metodo paginas o que fazer?