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\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 {

	# Métodos de mi modelo Ejemplo

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

    public function __destruct() {
        parent::__destruct();
    }
}					
					

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: 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.php app:m Prueba

La consola deberá indicar si se creó el modelo con éxito, en caso de que ya exista un modelo con ese nombre, no será creado

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 $functions Contiene la instancia del Helper Functions
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.
protected __destruct() Destructor finalizador de la clase.
protected setId() Asigna el id desde un modelo, ideal para cuando queremos darle un valor numérico que proviene de un formulario y puede ser inseguro.
mixed $id Id a asignar en $this->id
string $default_msg = 'No puedede asignarse el id.' Mensaje a lanzar en caso de que no se pueda asignar

throws ModelsException cuando no se puede asignar el id

La interfaz IModels

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

Método Necesario
public __construct(IRouter $router)
public __destruct()