- Params renamed to Neuron
- add path atribute to Router req - add viewPath param to View
This commit is contained in:
parent
3d18ede54d
commit
02c0dbef50
@ -2,11 +2,11 @@
|
|||||||
/*
|
/*
|
||||||
* DuckBrain - Microframework
|
* DuckBrain - Microframework
|
||||||
*
|
*
|
||||||
* Params (nombre temporal, a falta de uno mejor), sirve para
|
* Neuron, sirve para crear un objeto que alojará valores, pero
|
||||||
* crear un objeto con la característica especial de que al
|
* además tiene la característica especial de que al intentar
|
||||||
* intentar acceder a un atributo que no está definido devolerá
|
* acceder a un atributo que no está definido devolerá nulo en
|
||||||
* nulo en lugar de generar un error php notice que indica que
|
* lugar de generar un error php notice que indica que se está
|
||||||
* se está intentando acceder a un valor no definido.
|
* intentando acceder a un valor no definido.
|
||||||
*
|
*
|
||||||
* El constructor recibe un objeto o arreglo con los valores que
|
* El constructor recibe un objeto o arreglo con los valores que
|
||||||
* sí estarán definidos.
|
* sí estarán definidos.
|
||||||
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
namespace Libs;
|
namespace Libs;
|
||||||
|
|
||||||
class Params {
|
class Neuron {
|
||||||
|
|
||||||
private $data;
|
private $data;
|
||||||
|
|
@ -78,7 +78,7 @@ class Router {
|
|||||||
* redirigidos a "https://ejemplo.com/duckbrain/docs".
|
* redirigidos a "https://ejemplo.com/duckbrain/docs".
|
||||||
*/
|
*/
|
||||||
public static function redirect($uri) {
|
public static function redirect($uri) {
|
||||||
header('Location: '.self::baseURI().substr($uri,1));
|
header('Location: '.static::baseURI().substr($uri,1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -86,12 +86,12 @@ class Router {
|
|||||||
* Solo se puede usar un middleware a la vez.
|
* Solo se puede usar un middleware a la vez.
|
||||||
*/
|
*/
|
||||||
public static function middleware($middleware){
|
public static function middleware($middleware){
|
||||||
if (!isset(self::$last)) return;
|
if (!isset(static::$last)) return;
|
||||||
|
|
||||||
$method = self::$last[0];
|
$method = static::$last[0];
|
||||||
$index = self::$last[1];
|
$index = static::$last[1];
|
||||||
|
|
||||||
self::$$method[$index]['middleware'] = 'Middlewares\\'.$middleware;
|
static::$$method[$index]['middleware'] = 'Middlewares\\'.$middleware;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -102,12 +102,13 @@ class Router {
|
|||||||
* json - Donde se encuentran los valores JSON enviados en el body
|
* json - Donde se encuentran los valores JSON enviados en el body
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static function params() {
|
private static function getReq() {
|
||||||
$args = (object) '';
|
$req = (object) '';
|
||||||
$args->get = new Params($_GET);
|
$req->get = new Neuron($_GET);
|
||||||
$args->post = new Params($_POST);
|
$req->post = new Neuron($_POST);
|
||||||
$args->json = new Params(self::get_json());
|
$req->json = new Neuron(static::get_json());
|
||||||
return $args;
|
$req->path = static::URIPath();
|
||||||
|
return $req;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -135,8 +136,8 @@ class Router {
|
|||||||
* Devuelve un enlace estático
|
* Devuelve un enlace estático
|
||||||
*/
|
*/
|
||||||
public static function get($path, $callback) {
|
public static function get($path, $callback) {
|
||||||
self::$get[] = self::parse($path, $callback);
|
static::$get[] = static::parse($path, $callback);
|
||||||
self::$last = ['get', count(self::$get)-1];
|
static::$last = ['get', count(static::$get)-1];
|
||||||
return new static();
|
return new static();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,14 +154,14 @@ class Router {
|
|||||||
* Devuelve un enlace estático
|
* Devuelve un enlace estático
|
||||||
*/
|
*/
|
||||||
public static function post($path, $callback) {
|
public static function post($path, $callback) {
|
||||||
self::$post[] = self::parse($path, $callback);
|
static::$post[] = static::parse($path, $callback);
|
||||||
self::$last = ['post', count(self::$post)-1];
|
static::$last = ['post', count(static::$post)-1];
|
||||||
return new static();
|
return new static();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function put($path, $callback) {
|
public static function put($path, $callback) {
|
||||||
self::$put[] = self::parse($path, $callback);
|
static::$put[] = static::parse($path, $callback);
|
||||||
self::$last = ['put', count(self::$put)-1];
|
static::$last = ['put', count(static::$put)-1];
|
||||||
return new static();
|
return new static();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,11 +178,20 @@ class Router {
|
|||||||
* Devuelve un enlace estático
|
* Devuelve un enlace estático
|
||||||
*/
|
*/
|
||||||
public static function delete($path, $callback) {
|
public static function delete($path, $callback) {
|
||||||
self::$delete[] = self::parse($path, $callback);
|
static::$delete[] = static::parse($path, $callback);
|
||||||
self::$last = ['delete', count(self::$put)-1];
|
static::$last = ['delete', count(static::$put)-1];
|
||||||
return new static();
|
return new static();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Devuelve el URI path actual
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static function URIPath() {
|
||||||
|
return preg_replace('/'.preg_quote(static::baseURI(), '/').'/',
|
||||||
|
'/', strtok($_SERVER['REQUEST_URI'], '?'), 1);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Aplica los routers.
|
* Aplica los routers.
|
||||||
*
|
*
|
||||||
@ -220,28 +230,27 @@ class Router {
|
|||||||
* especificado anteriormente a la hora de recibirlos.
|
* especificado anteriormente a la hora de recibirlos.
|
||||||
*/
|
*/
|
||||||
public static function apply() {
|
public static function apply() {
|
||||||
$uri = preg_replace('/'.preg_quote(self::baseURI(), '/').'/',
|
$uri = static::URIPath();
|
||||||
'/', strtok($_SERVER['REQUEST_URI'], '?'), 1);
|
|
||||||
$routers = [];
|
$routers = [];
|
||||||
switch ($_SERVER['REQUEST_METHOD']){ // Según el método selecciona un arreglo de routers configurados
|
switch ($_SERVER['REQUEST_METHOD']){ // Según el método selecciona un arreglo de routers configurados
|
||||||
case 'POST':
|
case 'POST':
|
||||||
$routers = self::$post;
|
$routers = static::$post;
|
||||||
break;
|
break;
|
||||||
case 'PUT':
|
case 'PUT':
|
||||||
$routers = self::$put;
|
$routers = static::$put;
|
||||||
break;
|
break;
|
||||||
case 'DELETE':
|
case 'DELETE':
|
||||||
$routers = self::$delete;
|
$routers = static::$delete;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$routers = self::$get;
|
$routers = static::$get;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($routers as $router) { // revisa todos los routers para ver si coinciden con la URI actual
|
foreach ($routers as $router) { // revisa todos los routers para ver si coinciden con la URI actual
|
||||||
if (preg_match_all('/^'.$router['path'].'\/?$/si',$uri, $matches)){
|
if (preg_match_all('/^'.$router['path'].'\/?$/si',$uri, $matches)){
|
||||||
unset($matches[0]);
|
unset($matches[0]);
|
||||||
$args = self::params();
|
$args = static::getReq();
|
||||||
|
|
||||||
if (isset($matches[1])) { // Caso 1 - Con pseudovariables por URI
|
if (isset($matches[1])) { // Caso 1 - Con pseudovariables por URI
|
||||||
$params = [];
|
$params = [];
|
||||||
|
@ -22,10 +22,16 @@ class View {
|
|||||||
* @param array $params
|
* @param array $params
|
||||||
* Arreglo que podrá ser usado en la vista mediante $view ($param['index'] se usaría así: $view->index)
|
* Arreglo que podrá ser usado en la vista mediante $view ($param['index'] se usaría así: $view->index)
|
||||||
*
|
*
|
||||||
|
* @param string $viewPath
|
||||||
|
* Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/".
|
||||||
*/
|
*/
|
||||||
public static function render($viewName, $params = []) {
|
public static function render($viewName, $params = [], $viewPath = null) {
|
||||||
$view = new Params($params);
|
$view = new Neuron($params);
|
||||||
unset($params);
|
unset($params);
|
||||||
|
|
||||||
|
if (isset($viewPath) && file_exists($viewPath.$viewName.'.php'))
|
||||||
|
return include($viewPath.$viewName.'.php');
|
||||||
|
|
||||||
include(ROOT_DIR.'/src/Views/'.$viewName.'.php');
|
include(ROOT_DIR.'/src/Views/'.$viewName.'.php');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user