diff --git a/src/Libs/Router.php b/src/Libs/Router.php index 12b5a0c..16c5426 100644 --- a/src/Libs/Router.php +++ b/src/Libs/Router.php @@ -92,16 +92,18 @@ class Router { header('Location: '.static::basePath().substr($path,1)); } - /* + /** * Añade un middleware a la última ruta usada. * Solo se puede usar un middleware a la vez. * * @param mixed $callback + * @param int $prioriry * * @return Router * Devuelve un enlace estático. */ - public static function middleware($callback) : Router{ + + public static function middleware($callback, int $priority = null) : Router { if (!isset(static::$last)) return new static(); @@ -112,12 +114,23 @@ class Router { $callback = 'Middlewares\\'.$callback; } - static::$$method[$index]['callback'][] = $callback; + if (isset($priority) && $priority <= 0) + $priority = 1; + + if (is_null($priority) || $priority >= count(static::$$method[$index]['callback'])) + static::$$method[$index]['callback'][] = $callback; + else { + static::$$method[$index]['callback'] = array_merge( + array_slice(static::$$method[$index]['callback'], 0, $priority), + [$callback], + array_slice(static::$$method[$index]['callback'], $priority) + ); + } return new static(); } - /* + /** * @return Neuron * Devuelve un objeto que contiene los atributos: * post - Donde se encuentran los valores enviados por $_POST.