Modelos

Los modelos son clases destinadas al manejo de la lógica, acciones y son la única entidad que puede realizar una interacción con la base de datos, de acuerdo a la estructura del framework, es la tercera capa de funcionamiento en el flujo MVC.

Creación de un Modelo

Todos los modelos de nuestra aplicación deben crearse en la ruta ./app/models/ y el formato del nombre debe ser Nombre.php, el nombre del archivo debe ser exactamente el mismo que el de la clase contenedora.

Para que un modelo sea 100% funcional, debe herederar de la clase padre Ocrend\Kernel\Models\Models e implementar la interfaz Ocrend\Kernel\Models\IModels

Vamos a crear el modelo Ejemplo, para ello debemos crear el fichero./app/models/Ejemplo.php


namespace app\models;

use app\models as Model;
use Ocrend\Kernel\Helpers as Helper;
use Ocrend\Kernel\Models\Models;
use Ocrend\Kernel\Models\IModels;
use Ocrend\Kernel\Models\ModelsException;
use Ocrend\Kernel\Models\Traits\DBModel;
use Ocrend\Kernel\Router\IRouter;

class Ejemplo extends Models implements IModels {

    public function __construct(IRouter $router = null) {
        parent::__construct($router);
    }

}

A continuación, para proceder a usarlo, debemos llamarlo desde otro modelo, otro controlador o desde algún verbo http teniendo en cuenta que debe existir el namespace use app\models as Model

$modelo = new Model\Ejemplo;

En caso de necesitar usar atributos dentro del modelo, que impliquen la lectura de la URL, por ejemplo el atributo $this->id, se debe instanciar de la siguiente manera:

$modelo = new Model\Ejemplo($router);

NOTA: los modelos no pueden obtener información de la URL al ser invocados desde la API.

NOTA 2: la variable $router debe ser una implementación de la interfaz Ocrend\Kernel\Router\IRouter, de ésta manera nos vemos obligados a instanciar desde un controlador o desde otro modelo que reciba dicha implementación al ser instanciado desde algún controlador.

Creación de un modelo con el generador

Otra forma de crear un modelo, es usando el generador de código el cual sin falla alguna escribirá todo el código necesario para que el modelo quede funcional.

php gen app:m Nombre

La consola deberá indicar si se creó el modelo con éxito, en caso de que ya exista un modelo con ese nombre, se preguntará si desea sobreescribirlo.

La clase Models

La clase Models está ubicada en el namespace Ocrend\Kernel\Models\Models. Es una clase abstracta, ésta existe sólo para ser heredada por los modelos de nuestro sitio y distribuir de forma global funciones, propiedades y métodos entre toda la lógica que tenga nuestra aplicación.

Método / Atributo Función
protected $id Tiene siempre el id pasado por la ruta (aplicando reglas), en caso de no haber ninguno, será cero.
NOTA: si no se pasa alguna implementación de la interaz IRouter no será posible obtener nunca el valor de la ruta "/id" y el valor siempre será cero (0).
protected $id_user Contiene el id del usuario que tiene su sesión iniciada. Si no existe ningún usuario conectado, el valor será NULL
protected __construct() Constructor inicializador de la clase.
IRouter $router interfaz del enrutador para obtener información sobre la url.

La interfaz IModels

La implementación de ésta interfaz es para garantizar el correcto funcionamiento del modelo.

Método Necesario
public __construct(IRouter $router)