Tutorial de PHP MVC Framework: ejemplo de CodeIgniter
¿Qué es el marco PHP MVC?
PHP MVC es un patrón de diseño de aplicaciones que separa los datos de la aplicación y la lógica empresarial (modelo) de la presentación (vista). MVC significa Modelo, Vista y Controlador.
El controlador media entre los modelos y las vistas.
Piense en el patrón de diseño MVC como un automóvil y un conductor.
El automóvil tiene parabrisas (vista) que el conductor (controlador) usa para monitorear el tráfico adelante y luego acelerar o frenar (modelo) dependiendo de lo que ve adelante.
¿Por qué utilizar el marco PHP MVC?
- Los marcos PHP MVC simplifican el trabajo con tecnologías complejas al:
- Ocultar todos los detalles complejos de implementación
- Proporcionar métodos estándar que podemos utilizar para construir nuestras aplicaciones.
- Mayor productividad del desarrollador, esto se debe a que la implementación básica de actividades como conectarse a la base de datos, desinfectar la entrada del usuario, etc., ya está parcialmente implementada.
- Cumplimiento de los estándares de codificación profesionales.
Patrón de diseño PHP MVC
Analicemos ahora brevemente cada componente del patrón de diseño MVC.
Modelo – esta parte se ocupa de la lógica empresarial y los datos de la aplicación. Se puede utilizar para realizar validaciones de datos, procesar datos y almacenarlos. Los datos pueden provenir de;
- archivo plano
- base de datos
- Documento XML
- Otras fuentes de datos válidas.
Control – esta es la parte que se ocupa de las solicitudes de recursos del servidor por parte de los usuarios.
Por ejemplo, cuando los usuarios solicitan la URL …/index.php?products=lista, el controlador cargará el modelo de productos para recuperar los datos de los productos y luego generará los resultados en la vista de lista.
En pocas palabras, el controlador vincula los modelos y las vistas según los recursos solicitados.
Vistas – esta parte se ocupa de presentar los datos al usuario. Suele ser en forma de páginas HTML.
Tipos de marco PHP MVC
Seleccionar el mejor marco PHP es un desafío.
No es necesario que escriba su propio marco para beneficiarse de las ventajas de MVC.
Sólo debe intentar crear su propio diseño de aplicación relacionado con MVC para comprender cómo funcionan los marcos MVC.
Una vez que se sienta cómodo con la forma en que funcionan los marcos MVC, debe pasar a los marcos maduros y ya probados.
La siguiente tabla describe brevemente algunos de los marcos php populares y las características que ofrece cada marco.
Marco conceptual | Descripción |
---|---|
|
Es uno de los frameworks PHP MVC más populares. Es liviano y tiene una curva de aprendizaje corta. Tiene un rico conjunto de bibliotecas que ayudan a crear sitios web y aplicaciones rápidamente. Los usuarios con conocimientos limitados de programación orientada a objetos también pueden utilizarlo. Las aplicaciones impulsadas por CodeIgniter incluyen; |
|
Es un marco de trabajo ligero y seguro de modelo jerárquico de vista de controlador HMVC. Tiene un amplio conjunto de componentes para desarrollar aplicaciones rápidamente. Entre las empresas que utilizan Kohana se incluyen: |
|
Está basado en Ruby on Rails y es conocido por conceptos como patrones de diseño de software, convención sobre configuración, ActiveRecord, etc. CakePHP las aplicaciones potenciadas incluyen; |
|
Es un marco poderoso que es;
Cuenta con API de proveedores como AmazonGoogle Flickr, Yahoo, etc. Es ideal para desarrollar aplicaciones empresariales. Las aplicaciones impulsadas por Zend incluyen;
Las empresas que utilizan el marco Zend incluyen;
|
Portar la aplicación de encuesta de opinión a CodeIgniter
En este tutoriales, creamos una aplicación de encuesta PHP. Aquí, trasladaremos ese código a CodeIgniter.
- Descargar la última versión de CodeIgniter de su sitio web.
- Extraiga el contenido del archivo comprimido a su directorio de desarrollo en el directorio de su servidor web. Usaremos ciopinionpoll como nombre de carpeta en esta lección.
- Navegar a la URL http://localhost/ciopinionpoll/
Ahora vamos a portar nuestra aplicación de encuesta de opinión a CodeIgniter. Recuerde que nuestra aplicación se dividió en tres componentes principales, a saber;
- Controlador frontal: esta es la parte que responde a las solicitudes de URL y devuelve la página solicitada. Este código irá al controlador.
- Modelo: este es el código que responde a los datos solicitados y devuelve los datos solicitados. Este código irá al modelo.
-
Vistas: este es el código responsable de formatear y mostrar los datos. Este código entrará en la vista.
- Navegar a la carpeta ciopinionpoll
- Abre el database.php archivo ubicado en el directorio application/config.
- Localice las siguientes líneas de código
Ajustes de configuración de la base de datos
- Establecer el nombre de usuario como root
- Establezca la contraseña en su contraseña raíz de host local
- Nombre de la base de datos para opinion_poll. Tenga en cuenta que usaremos la base de datos creada en la lección anterior.
- Guarde los cambios y cierre el archivo.
Creando nuestro modelo
A continuación vamos a crear nuestro modelo que ampliará CI_Model. CI_Model es parte de las bibliotecas CodeIgniter. El modelo estará ubicado en aplicación/modelos opinion_poll_model.php
<?php class Opinion_poll_model extends CI_Model { public function __construct() { $this->load->database(); } public function total_votes() { $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries'); return $query->row()->choices_count; } public function get_results() { $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model-> select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } public function add_vote($choice) { $ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); } } ?>
AQUÍ,
- “clase Opinion_poll_model extiende CI_Model…” es nuestro modelo que extiende CI_Model
- “…padre:: __construct();” llama al constructor CI_Model
- “$esto->cargar->base de datos();” carga la biblioteca de la base de datos para que nuestra aplicación pueda interactuar con la base de datos
- “$this->db->” es el registro activo de CodeIgniter. Mira esto enlace para obtener más información sobre el registro activo.
Creando nuestro controlador Ahora vamos a crear el controlador. Usaremos el controlador CodeIgniter predeterminado que se encuentra en application/controllers/welcome.php. Reemplace su código fuente con el siguiente código.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('opinion_poll_model'); } public function index() { if ($this->input->post('submitbutton') && !$this->input->post('vote')) { echo "<script>alert('You did not vote!');</script>"; } if ($this->input->post('vote')) { $this->opinion_poll_model->add_vote($this->input->post('vote')); $data['total_votes'] = $this->opinion_poll_model->total_votes(); $data['rows'] = $this->opinion_poll_model->get_results(); $this->load->view('results', $data); } else { $this->load->view('opinion_poll_form'); } } } /* End of file welcome.php */ /* Location: ./application/controllers/welcome.php */ ?>
AQUÍ,
- "if (! definido ('BASEPATH')) salir ('No se permite acceso directo al script');" garantiza que los usuarios no accedan directamente a la clase de controlador
- “clase Bienvenido extiende CI_Controller…” nuestro controlador extiende la clase CI_Controller
- La “función pública __construct()” llama al método constructor de clases de CI_Controller y carga nuestro modelo Opinion_poll_model
- “índice de función pública()…” es la función que se asigna a index.php. utiliza la clase de entrada de CodeIgniter para verificar si se ha enviado un voto, agregarlo a la base de datos y luego mostrar los resultados. Si la matriz de publicaciones de la clase de entrada está vacía, carga la página de votación.
- “$this->input->post('…')” es la clase de entrada CodeIgniter que toma el contenido de la variable global $_POST.
- "$this->opinion_poll_model->add_vote($this->input->post('vote'))" llama al método add_vote del modelo para agregar el voto a la base de datos.
Creando nuestras vistas
Recordemos que en el ejemplo anterior teníamos dos páginas HTML, una para la votación y otra para los resultados. Usaremos el mismo código HTML con modificaciones mínimas para crear nuestras vistas. Crea los siguientes archivos en el directorio application/views
opinion_poll_form.php <html> <head> <title> JavaScript Libraries - Opinion Poll </title> </head> <body> <h2>JavaScript Libraries - Opinion Poll</h2> <p><b>What is your favorite JavaScript Library?</b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" /> JQuery <br /> <input type="radio" name="vote" value="2" /> MooTools <br /> <input type="radio" name="vote" value="3" /> YUI Library <br /> <input type="radio" name="vote" value="4" /> Glow </p> <p> <input type="submit" name="submitbutton" value="OK" /> </p> </form> </body> </html>
Ahora creemos la página de resultados results.php
<html> <head> <title>JavaScript Libraries - Opinion Poll Results</title> </head> <body> <h2>JavaScript Libraries - Opinion Poll Results</h2> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p> <p><table><tr><td> <?php print($rows); ?> </tr></td></table></p> <p><a href="#">Return to voting page</a></p> </body> </html>
Probar nuestra aplicación
Suponiendo que el directorio raíz de su aplicación es ciopinion, busque http://localhost/ciopionpoll/
Haga clic en el botón Aceptar y verá el siguiente mensaje de alerta
Vota por tu candidato favorito y luego haz clic en Aceptar. Verás la siguiente página de resultados.
Conclusión
CodeIgniter es un marco PHP MVC fácil de aprender y usar que puede reducir en gran medida el tiempo dedicado a desarrollar aplicaciones.
CodeIgniter es un marco PHP MVC fácil de aprender y usar que puede reducir en gran medida el tiempo dedicado a desarrollar aplicaciones.
Resumen
- Un marco es un conjunto de bibliotecas que proporcionan una implementación parcial de tareas comunes.
- PHP tiene varios marcos MVC maduros y probados de código abierto.
- Un buen enfoque de desarrollo separa los datos de la presentación y fomenta el uso de un punto de entrada único a una aplicación.
- Las aplicaciones PHP tradicionales que siguen las mejores prácticas de diseño de aplicaciones se pueden migrar a marcos MVC con modificaciones mínimas.