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 asignarthrows 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() |