Diferencia entre revisiones de «Como Usar los Modelos en KumbiaPHP»
(No se muestran 13 ediciones intermedias de 8 usuarios) | |||
Línea 1: | Línea 1: | ||
+ | {{cleanupbox | ||
+ | |image=[[Archivo:Information_icon4.png|45px]] | ||
+ | |texto ='''Este Artículo cumple con todos los requerimientos de los Kumbieros.'''<br /> | ||
+ | }} | ||
+ | |||
+ | |||
== Introducción == | == Introducción == | ||
− | Los Modelos representan la lógica de la aplicación y son parte fundamental para el momento que se desarrolla una aplicación, un buen uso de estos nos | + | Los Modelos representan la lógica de la aplicación, y son parte fundamental para el momento que se desarrolla una aplicación, un buen uso de estos nos proporciona un gran poder al momento que se necesita escalar, mantener y reusar código en una aplicación. |
− | Por lo general un mal uso de los modelos es solo dejar el archivo con la declaración de la clase y toda la lógica se genera en el controlador. Esta práctica trae como consecuencia que en primer lugar el controlador sea entendible por alguien que intente agregar y/o modificar algo en esa funcionalidad, en segundo lugar lo poco que puedes rehusar el código en otros controladores y lo hace es repetirse el código que hace lo mismo en otro controlador. | + | Por lo general un mal uso de los modelos es solo dejar el archivo con la declaración de la clase y toda la lógica se genera en el controlador. Esta práctica trae como consecuencia que en primer lugar el controlador sea difícilmente entendible por alguien que intente agregar y/o modificar algo en esa funcionalidad, en segundo lugar lo poco que puedes rehusar el código en otros controladores y lo que hace es repetirse el código que hace lo mismo en otro controlador. |
Partiendo de este principio los controladores '''NO''' deberían contener ningún tipo de lógica solo se encargan de atender las peticiones del usuarios y solicitar dicha información a los modelos con esto garantizamos un buen uso del [http://es.wikipedia.org/wiki/Modelo_Vista_Controlador MVC]. | Partiendo de este principio los controladores '''NO''' deberían contener ningún tipo de lógica solo se encargan de atender las peticiones del usuarios y solicitar dicha información a los modelos con esto garantizamos un buen uso del [http://es.wikipedia.org/wiki/Modelo_Vista_Controlador MVC]. | ||
==El Modelo extiende el ActiveRecord== | ==El Modelo extiende el ActiveRecord== | ||
− | [http://www.kumbiaphp.com KumbiaPHP] usa [http://es.wikipedia.org/wiki/POO POO (Programación orientada a objetos)], así que [[Indice#ACTIVE_RECORD | ActiveRecord]] es una clase que ya lleva métodos listos para usar. | + | [http://www.kumbiaphp.com KumbiaPHP] usa [http://es.wikipedia.org/wiki/POO POO (Programación orientada a objetos)], así que [[Indice#ACTIVE_RECORD | ActiveRecord]] es una clase que ya lleva métodos listos para usar. Estos [[Consultas |métodos]] facilitan al usuario el manejo de las tablas de las bases de datos; entre ellos están los siguientes: find, find_all, save, update, etc. |
El Modelo extiende la clase [[Indice#ACTIVE_RECORD | ActiveRecord]] para que el usuario pueda añadir sus propios métodos, y asi encapsular la lógica. | El Modelo extiende la clase [[Indice#ACTIVE_RECORD | ActiveRecord]] para que el usuario pueda añadir sus propios métodos, y asi encapsular la lógica. | ||
Línea 36: | Línea 42: | ||
public function buscar($busqueda){ | public function buscar($busqueda){ | ||
$busqueda = filter_var($busqueda, FILTER_SANITIZE_STRING); | $busqueda = filter_var($busqueda, FILTER_SANITIZE_STRING); | ||
− | return $this->find_all_by_sql("SELECT * FROM | + | return $this->find_all_by_sql("SELECT * FROM bd.articulos a WHERE MATCH (titulo,texto) |
AGAINST('\"$busqueda\"' IN BOOLEAN MODE) ORDER BY creat_at DESC"); | AGAINST('\"$busqueda\"' IN BOOLEAN MODE) ORDER BY creat_at DESC"); | ||
Línea 43: | Línea 49: | ||
</source> | </source> | ||
− | Normalmente este código muchos usuarios lo colocan en el controller quedando el mismo '''ilegible''', | + | Normalmente este código muchos usuarios lo colocan en el controller quedando el mismo '''ilegible''', colocándolo como se muestra arriba queda muy limpia la implementación de los mismo en nuestros modelos en los controller. |
== Implementando mis modelos en los controladores == | == Implementando mis modelos en los controladores == | ||
Línea 50: | Línea 56: | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
− | class MiController extends | + | class MiController extends AppController |
{ | { | ||
public function index ($id = 1) | public function index ($id = 1) | ||
{ | { | ||
− | $this->noticias = | + | $this->noticias = (new Articulos)->ver($id); |
} | } | ||
public function ver ($slug) | public function ver ($slug) | ||
{ | { | ||
if ($slug) { | if ($slug) { | ||
− | $this->noticia = | + | $this->noticia = (new Articulos)->buscar($slug); |
} | } | ||
} | } | ||
public function rss () | public function rss () | ||
{ | { | ||
− | $this->noticias = | + | $this->noticias = (new Articulos)->ultimos(); |
− | + | View::template(null); //mostramos solo la vista, sin el template | |
} | } | ||
} | } |
Revisión actual del 17:56 23 jun 2016
{{#if:
|}}Este Artículo cumple con todos los requerimientos de los Kumbieros. |
{{{imageright}}} |
Sumario
Introducción[editar]
Los Modelos representan la lógica de la aplicación, y son parte fundamental para el momento que se desarrolla una aplicación, un buen uso de estos nos proporciona un gran poder al momento que se necesita escalar, mantener y reusar código en una aplicación.
Por lo general un mal uso de los modelos es solo dejar el archivo con la declaración de la clase y toda la lógica se genera en el controlador. Esta práctica trae como consecuencia que en primer lugar el controlador sea difícilmente entendible por alguien que intente agregar y/o modificar algo en esa funcionalidad, en segundo lugar lo poco que puedes rehusar el código en otros controladores y lo que hace es repetirse el código que hace lo mismo en otro controlador.
Partiendo de este principio los controladores NO deberían contener ningún tipo de lógica solo se encargan de atender las peticiones del usuarios y solicitar dicha información a los modelos con esto garantizamos un buen uso del MVC.
El Modelo extiende el ActiveRecord[editar]
KumbiaPHP usa POO (Programación orientada a objetos), así que ActiveRecord es una clase que ya lleva métodos listos para usar. Estos métodos facilitan al usuario el manejo de las tablas de las bases de datos; entre ellos están los siguientes: find, find_all, save, update, etc.
El Modelo extiende la clase ActiveRecord para que el usuario pueda añadir sus propios métodos, y asi encapsular la lógica.
Un Buen Modelo[editar]
A continuación una muestra de un buen modelo en KumbiaPHP
<?php
class Articulos extends ActiveRecord {
public function ver($page=1,$ppage=10){
return $this->paginate('order: creat_at desc',
"page: $page",
"per_page: $ppage");
}
public function ultimos($limit=10) {
$today = date('now');
return $this->find('order: creat_at desc',
"conditions: data <= $today",
"limit: $limit");
}
public function buscar($busqueda){
$busqueda = filter_var($busqueda, FILTER_SANITIZE_STRING);
return $this->find_all_by_sql("SELECT * FROM bd.articulos a WHERE MATCH (titulo,texto)
AGAINST('\"$busqueda\"' IN BOOLEAN MODE) ORDER BY creat_at DESC");
}
}
Normalmente este código muchos usuarios lo colocan en el controller quedando el mismo ilegible, colocándolo como se muestra arriba queda muy limpia la implementación de los mismo en nuestros modelos en los controller.
Implementando mis modelos en los controladores[editar]
A continuación se muestra un controller donde se puede apreciar lo legible que queda nuestro controller si delegamos las funciones que corresponden a sus responsables dentro del Patrón MVC que promueve KumbiaPHP.
<?php
class MiController extends AppController
{
public function index ($id = 1)
{
$this->noticias = (new Articulos)->ver($id);
}
public function ver ($slug)
{
if ($slug) {
$this->noticia = (new Articulos)->buscar($slug);
}
}
public function rss ()
{
$this->noticias = (new Articulos)->ultimos();
View::template(null); //mostramos solo la vista, sin el template
}
}
Lo que mencionamos arriba sobre la re-utilización de código y característica fundamental de la POO, si vemos el método ultimos() del modelo Articulos nos sirve para crear un RSS, un Partial (widget) con los artículos recientes, etc. es decir donde necesitemos los últimos artículos.