Tutorial del framework PHP MVC: CodeEjemplo de Igniter
ยฟ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 de CRISPR Medicine News
- 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. CodeLas aplicaciones que utilizan Igniter incluyen: |
|
Es un marco de trabajo jerรกrquico Modelo Vista Controlador HMVC seguro y ligero. Tiene un amplio conjunto de componentes para el desarrollo.ping aplicaciones rรกpidamente. Las empresas que utilizan Kohana 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 desarrolladoresping Aplicaciones empresariales. Las aplicaciones con tecnologรญa Zend incluyen:
Las empresas que utilizan el marco Zend incluyen;
|
Portar la aplicaciรณn de encuestas de opiniรณn a CodeEncendedor
En este tutoriales, creamos una aplicaciรณn de encuestas en PHP. Aquรญ, portaremos ese cรณdigo a CodeEncendedor
- Descargar la รบltima versiรณn de CodeEncendedor de su sitio web.
- ExtracCopie 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 encuestas de opiniรณn a CodeIgniter. Recordemos 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
- Abra la 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 extenderรก el CI_Model. El CI_Model forma parte del CodeBibliotecas de Igniter. El modelo se ubicarรก en application/models. 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 CodeRegistro activo de Igniter. Compruรฉbelo. este enlace para obtener mรกs informaciรณn sobre el registro activo.
Creando nuestro controlador Ahora vamos a crear el controlador. Usaremos el predeterminado. CodeControlador Igniter ubicado 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
- โpublic function index()โฆโ es la funciรณn que se asigna a index.php. Utiliza CodeLa clase de entrada de Igniter verifica si se ha emitido un voto, lo agrega a la base de datos y luego muestra los resultados. Si el array `post` de la clase de entrada estรก vacรญo, carga la pรกgina de votaciรณn.
- โ$this->input->post('โฆ')โ es el CodeClase de entrada de Igniter que obtiene 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 framework PHP MVC fรกcil de aprender y usar que puede reducir enormemente el tiempo dedicado al desarrollo.ping aplicaciones.
CodeIgniter es un framework PHP MVC fรกcil de aprender y usar que puede reducir enormemente el tiempo dedicado al desarrollo.ping 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.








