Tutorial del marco PHP MVC

⚡ Resumen inteligente

El diseño del framework PHP MVC separa los datos de la aplicación y la lógica de negocio de la presentación, utilizando modelos, vistas y controladores. CodeIgniter hace que este patrón sea práctico, permitiendo a los desarrolladores de PHP crear aplicaciones web seguras y fáciles de mantener con mayor rapidez.

  • 🧩 Patrón: El patrón MVC divide una aplicación en Modelo (datos), Vista (presentación) y Controlador (gestión de solicitudes) para obtener un código más limpio.
  • 🚀 Productividad: Los frameworks incluyen bibliotecas preconfiguradas para el acceso a bases de datos, la validación y el saneamiento de entradas, lo que permite a los equipos desarrollar funcionalidades más rápidamente.
  • 🛠️ Opciones: CodeIgniter, CakePHP y Laminas (anteriormente Zend) siguen siendo opciones activas, mientras que Kohana se dejó de utilizar en 2017.
  • 🗄️ Modelo: In CodeIgniter y sus modelos extienden CI_Model y utilizan los métodos de Query Builder para realizar operaciones seguras con la base de datos.
  • 🎮 Controlador: Los controladores extienden CI_Controller, leen la entrada del usuario a través de la clase input y cargan la vista correcta.
  • 📈 Repercusiones: La adaptación de una aplicación de sondeo PHP simple muestra cómo la estructura MVC reduce la duplicación y simplifica el mantenimiento a largo plazo.

Framework MVC de PHP

¿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 coche tiene parabrisas (vista) que el conductor (controlador) utiliza para controlar el tráfico que tiene delante, y luego acelerar o frenar (modelo) dependiendo de lo que ve delante.

A continuación, veamos por qué merece la pena utilizar un framework basado en este patrón.

¿Por qué utilizar el marco PHP MVC?

Los frameworks MVC de PHP simplifican el trabajo con tecnologías complejas mediante:

  • Ocultar todos los detalles complejos de implementación
  • Proporcionar métodos estándar que podamos utilizar para construir nuestras aplicaciones.
  • Aumenta la productividad de los desarrolladores, ya que las implementaciones básicas de actividades como la conexión a la base de datos y la sanitización de la entrada del usuario ya están parcialmente implementadas.
  • Fomentar el 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.

Modelos – 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 encarga de las solicitudes de recursos del usuario al servidor.

Como ejemplo, cuando el usuario solicita el URL …/index.php?products=listaEl controlador cargará el modelo de productos para recuperar los datos de los productos y luego mostrará 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 encarga de presentar los datos al usuario. Normalmente, esto se hace 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 frameworks PHP más populares y las características que ofrece cada uno.

Marco conceptual Descripción

CodeEncendedor


CodeEncendedor


https://codeigniter.com/

Es uno de los frameworks MVC de PHP más populares, ahora en su cuarta versión principal (CodeIgniter 4). Es ligero y tiene una curva de aprendizaje corta. Cuenta con un amplio 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 usarlo. Aplicaciones creadas con CodeEl encendedor incluye:


como un lugar


como un lugar


http://kohanaframework.org

Se trata de un framework seguro y ligero basado en el modelo jerárquico de vista y controlador (HMVC). Nota: Kohana se descontinuó oficialmente en 2017; su última versión estable fue la 3.3.6 (julio de 2016). La bifurcación de la comunidad, Koseven, continuó con su código fuente. Entre las empresas que utilizaron Kohana se incluyen:


CakePHP


CakePHP


www.cakephp.org

Está basado en Ruby on Rails y se mantiene activo (versión 5.x). Es conocido por conceptos como patrones de diseño de software, convención sobre configuración, ActiveRecord, etc. CakePHP las aplicaciones potenciadas incluyen;


Zend

https://getlaminas.org/


Zend (ahora Laminas)

Es un marco poderoso que es;

  • Seguro, confiable, rápido y escalable
  • Permite la creación de servicios web y API.

Es ideal para el desarrolloping aplicaciones empresariales. En 2020, Zend Framework hizo la transición al proyecto de código abierto Laminas. Las aplicaciones basadas en Zend/Laminas incluyen:

  • Pimcore CMS,
  • PuntoKernel.

Entre las empresas que han utilizado el marco de trabajo Zend se incluyen:

  • BBC
  • Cisco
  • Webex
  • Ofertas.com

PHP MVC Framework vs. PHP puro: Diferencias clave

¿Qué cambia realmente un framework en la práctica? PHP puro ofrece total libertad, pero cada proyecto termina reinventando el enrutamiento, la validación y el acceso a la base de datos desde cero. Un framework MVC de PHP estandariza estas tareas repetitivas, de modo que el código se mantiene coherente entre proyectos y equipos.

Aspecto PHP simple Framework MVC de PHP
Code organización HTML, SQL y lógica combinados en archivos individuales Separados en modelos, vistas y controladores.
Acceso a la base de datos Consultas escritas a mano en cada página. Generador de consultas integrado u ORM con enlace de parámetros
Seguridad El desarrollador debe recordar todas las medidas de seguridad. Incluye filtrado de entrada, protección XSS y CSRF.
Mantenimiento Los cambios se propagan de forma impredecible a través de los archivos. Cada capa puede cambiar de forma independiente.

👍 Consejo: Primero, crea un pequeño proyecto sencillo en PHP, como la encuesta de opinión que aparece a continuación; las dificultades de trabajar con código mixto hacen evidente el valor de la separación MVC.

Portar la aplicación de encuestas de opinión a CodeEncendedor

En esta 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.
  • Navega hasta el URL http://localhost/ciopinionpoll/

CodeLa página de bienvenida de Igniter se muestra después de extracestableciendo el marco

Los CodeLa página de bienvenida de Igniter que se muestra arriba confirma que el framework está instalado correctamente. 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 URL Realiza la solicitud y devuelve la página solicitada. Este código irá en el controlador.
  • Modelo: este es el código que responde a las solicitudes de datos y devuelve los datos solicitados. Este código se incluirá en el modelo.
  • Vistas: este es el código responsable de formatear y mostrar los datos. Este código entrará en la vista.

Ajustes de configuración de la base de datos

Para configurar la conexión a la base de datos:

  • Navegar a la carpeta ciopinionpoll
  • Abra la pestaña database.php archivo ubicado en el directorio application/config.
  • Localice las siguientes líneas de código

Configuración de la base de datos en CodeArchivo base de datos Igniter.php

  • Establecer el nombre de usuario como root
  • Establezca la contraseña como la contraseña de root de su localhost.
  • Establezca el nombre de la base de datos como opinion_poll. Tenga en cuenta que utilizaremos 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()
    {
        parent::__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++)
        {
            $query = $this->db->select('COUNT(choice) as choices_count')
                              ->where('choice', $i)
                              ->get('js_libraries');

            $table_rows .= "<tr><td>" . $libraries[$i] . " Got:</td><td><b>" . $query->row()->choices_count . "</b> votes</td></tr>";
        }

        return $table_rows;
    }

    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
  • “parent::__construct();” llama al constructor de 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 la clase 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 del ejemplo anterior que teníamos dos páginas HTML, una para votar y otra para los resultados. Usaremos el mismo código HTML con mínimas modificaciones 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 sea ciopinionpoll, navegue hasta http://localhost/ciopinionpoll/

Formulario de votación de encuesta de opinión presentado por el CodeAplicación Igniter

La página de votación que aparece arriba proviene de nuestra vista opinion_poll_form. Haga clic en Aceptar sin seleccionar ninguna opción y verá el siguiente mensaje de alerta.

Se muestra un mensaje de alerta de validación cuando no se selecciona ningún voto.

Vota por tu biblioteca favorita y luego haz clic en Aceptar. Verás la siguiente página de resultados.

Página de resultados de encuestas de opinión que muestra el recuento de votos por JavaBiblioteca de scripts

Esto confirma que las tres capas funcionan conjuntamente: el controlador recibió el voto, el modelo lo almacenó y lo contabilizó, y la vista mostró los totales.

Preguntas Frecuentes

HMVC (Modelo Vista Controlador Jerárquico) organiza una aplicación en tríadas MVC independientes que pueden llamarse entre sí. Frameworks como como un lugar HMVC se popularizó porque ayuda a modularizar aplicaciones de gran tamaño.

Sí. Laravel Actualmente es el framework MVC de PHP más popular. Sigue la misma separación Modelo-Vista-Controlador descrita aquí, añadiendo herramientas como Eloquent ORM y las plantillas Blade.

Sí. Herramientas como Copiloto de GitHub Se pueden generar modelos, controladores y vistas a partir de las indicaciones. Aun así, conviene revisar el código generado para detectar problemas de seguridad, como la salida sin escape y la inyección SQL.

No. Si bien los asistentes de IA agilizan la escritura de código, los frameworks siguen proporcionando la estructura probada, la configuración de seguridad predeterminada y las convenciones que facilitan el mantenimiento de las aplicaciones. La mejor combinación de ambos es fundamental.

No. CodeEncendedor Es apto para desarrolladores con poca experiencia en programación orientada a objetos. Basta con conocer las clases, los métodos y la herencia básica para seguir sus patrones de modelo y controlador.

Resumir este post con: