Imprimir

MVC

El framework está diseñado siguiendo el patrón MVC (Modelo - Vista - Controlador).

Esta librería se encarga de tender las bases para la implementación de dicho patrón.

Controller

Todos los controladores de las aplicaciones deben extender esta clase. Aunque no siempre sea evidente, cuando el Router llama al controlador, ejecuta métodos de esta clase.

A su vez, el framework no tiene una clase dedicada a las vistas, sino que hay un método de esta clase, que realiza la tarea de incluir las vistas. Esto se debe a que el framework vincula un punto de entrada de un controlador con una vista, facilitando el desarrollo.

 

Controller::middleware

Agrega middlewares en la cola del Runner (ver El archivo Index).

public Controller::middleware( ...$middlewares ): bool
middlewares

La lista de middlewares a agregar.

 

Los middlewares pueden ser agregados en el constructor, lo que se ejutará en todos los puntos de entrada, de la siguiente manera:

use Junco\Mvc\Controller;

class ApiTestController extends Controller
{
	public function __construct()
	{
		$this->middleware('test');
	}
}

También, puede ser agregado en un punto de entrada en particular.

El mecanismo para hacerlo puede parecer extraño, pero debe entender que cualquier middleware debe ser ejecutado ANTES de ejecutar el punto de entrada, por lo tanto, la opción que nos queda para lograr esto es, ejecutar dos veces ese punto de entrada, uno para agregar los middleware en la cola y ejecutarlos, y otra para ejecutar el punto de entrada en sí.

Dicho esto, el código será:

use Junco\Mvc\Controller;

class ApiTestController extends Controller
{
	public function index()
	{
		if ($this->middleware('test')) {
			return true;
		}
		return '...';
	}
}

Si un punto de acceso devuelve true, eso significa que ha agregado middlewares y debe volver a ejecutar el ciclo de middlewares hasta llegar nuevamente al punto de acceso y volver a ejecutarlo, esta vez, para obtener una respuesta.

 

Controller::authenticate

Agrega el middleware de autenticación. Por su uso frecuente, se facilita su uso con un método propio.

public Controller::authenticate( int ...$label_id ): bool
label_id

La etiqueta con la que se limitarán los permisos de acceso. Ver la extensión users.

 

Controller::view

Incluye una vista. La vista será incluída dentro del método, por lo que, la variable $this, prodrá ser utilizada allí.

public Controller::view( string|callable $view = null, array $data = null )
view

La ruta a la vista a incluir, si no se completa, agregará la vista predeterminada por las convenciones.

data

Los datos que se le pasará a la vista.

Model

Según el patrón de arquitectura de MVC, el modelo se encarga de la lógica de negocio.

La clase Model contiene algunos métodos que ayudarán a ejecutar esa lógica de negocio. Sin embargo, a diferencia de otros frameworks, no incluye la conexión a la base de datos.

Actualmente, esta clase contiene únicamente métodos que permiten disponer de datos de entrada de manera segura.

 

Model::setData

Introduce datos que quedarán disponibles en el filtro.

final public Model::setData( array $data = null ): self
data

Un arreglo con los datos.

 

Model::filter

Filtra los datos externos al modelo. Note que es un método protegido, que se ejecuta dentro del modelo. Para conocer más, ver Filter.

final protected Model::filter( int $type, array $rules ): void
type

El lugar donde de donde tomará los datos, en el caso de que estos no sean introducidos. Puede ser GET o POST

rules

Las reglas de filtrado.

 

Model::setDataArray

Introduce datos múltiples, que quedarán disponibles en el filtro.

final public Model::setDataArray( array $data_array = null ): self
data_array

Un arreglo múltiple con los datos.

 

Model::filterArray

Filtra datos múltiples, externos al modelo. Note que es un método protegido, que se ejecuta dentro del modelo.

En el caso de que no pueda obtener al menos una fila, retornará false. Para conocer más, ver Filter.

final protected Model::filterArray( int $type, array $rules ): bool
type

El lugar donde de donde tomará los datos, en el caso de que estos no sean introducidos. Puede ser GET o POST.

rules

Las reglas de filtrado.

 

Model::extract

Extrae claves del arreglo data a una propiedad de igual nombre. Para ello, las propiedades deben estar previamente declaradas.

final protected Model::extract( ...$names ): void
names

Las claves a extraer del arreglo data.