Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

1.3. Compilamos nuestro framework PHP

10/05/2025, by Ivan

Existen muchos caminos diferentes para construir un framework. Algunos prefieren frameworks muy complejos, otros muy simples. En nuestros artículos, vamos a construir rápidamente un framework que sea fácil de usar y fácil de entender.

Nuestros artículos te ayudarán a desarrollar tu propio framework, diferente del que necesitaremos para construir una tienda en línea. Podrás agregar fácilmente otras partes al framework para crear algo más grande. El objetivo principal de esta serie de artículos es aprender a hacer tu propio framework para cualquier CMS.

Patrones (Patterns)

Para desarrollar el framework se utilizan varios patrones de diseño de software. Un patrón es una solución y práctica efectiva para resolver problemas comunes en el desarrollo de software. Entre los patrones que usaremos están:

  • Modelo-Vista-Controlador (MVC, Model-View-Controller)
  • Registro (Registry)
  • Clase Singleton

Modelo-Vista-Controlador (MVC)

MVC es la base de nuestro framework, nos proporciona una solución para separar la interfaz de usuario de la lógica de negocio de nuestra aplicación. La interfaz de usuario (Vista) interactúa con los modelos de datos (Modelo), utilizando los controladores (Controller), que a su vez contienen la lógica necesaria para gestionar los datos en los modelos.

Por ejemplo, cuando el usuario hace clic en "Agregar al carrito" en la Vista, el controlador maneja esa solicitud e interactúa con el modelo del carrito y añade el producto. Usualmente los datos del modelo del carrito se devuelven al controlador, que luego muestra el nuevo estado del carrito con la cantidad de productos actualizada.

MVC

Usaremos nuestro propio framework y podremos ampliar sus capacidades en base a MVC. Como se describió antes, los datos están representados en los modelos, y los datos reales están almacenados en la base de datos. Sin embargo, los modelos y las tablas de la base de datos comparten el mismo formato (los campos de los modelos coinciden con los de las tablas). Así que podemos ampliar nuestro diagrama MVC. También vemos que el resultado final que se procesa en la Vista se muestra en el navegador, por lo que también lo agregaremos al diagrama.

MVC scheme

Registro (Registry)

El Registro proporciona una forma de almacenar una colección de objetos dentro de nuestro framework. Se necesita un Registro debido a la abstracción asociada con el patrón MVC. Cada controlador y modelo (como producto, carrito, página) necesita realizar tareas comunes como:

  • Consultas a la base de datos
  • Verificar si el usuario ha iniciado sesión para acceder a información específica
  • Enviar datos a la Vista (gestión de plantillas)
  • Enviar correos electrónicos, por ejemplo, al realizar una compra
  • Interacción con el sistema de archivos, por ejemplo, subir imágenes de productos

La mayoría de los sistemas y frameworks realizan estas funciones mediante objetos, y nosotros también crearemos dichos objetos. El Registro permite almacenar todos estos objetos juntos. Puede ser accedido desde cualquier lugar del framework y proporciona acceso a sus funciones. Aquí hay un esquema aproximado de nuestro Registro:

MVC

El framework interactúa directamente con el Registro cuando necesita acceder a otros objetos. Dentro del Registro, los objetos también pueden interactuar entre sí, por ejemplo, el gestor de plantillas puede estar conectado con el gestor de archivos, el remitente de correos electrónicos con las plantillas de correo, etc.

Clase Singleton

En español no hay una traducción exacta para "singleton", por eso lo llamaremos Clase Singleton, aunque normalmente se utiliza el término en inglés en la documentación. Es posible que lo veas escrito en inglés.

Una Clase Singleton es uno de los patrones más fáciles de entender. Su propósito principal es garantizar que exista solo una instancia de esa clase. Generalmente, se utiliza cuando se necesita solo un objeto de esa clase en todo el sistema y debe estar disponible globalmente.

Una Clase Singleton se utiliza cuando una clase tiene una única responsabilidad. Por ejemplo, gestionar la conexión a la base de datos, de modo que otros objetos puedan interactuar con ella.

Estructura general

El siguiente paso para desarrollar nuestro framework es planificar la estructura. Debemos crear una estructura para:

  • Modelos
  • Vistas (para permitir cambiar el estilo del sitio usando carpetas separadas por diseño)
  • Controladores (para organizar cada controlador en su propia carpeta; al agregar funcionalidades, solo necesitaremos agregar una nueva carpeta)
  • Controlador del administrador (ya que también construiremos una CMS, necesitamos permitir que los moderadores y administradores gestionen el sitio)
  • Registro
  • Objetos del Registro
  • Archivos subidos
  • Bibliotecas de terceros
  • Otro código

Teniendo en cuenta la estructura del framework, nuestras carpetas deberían verse así (usaremos nombres en inglés como es habitual en PHP):

  • Models
  • Views
    • View A
    • Templates
    • Images
    • JavaScript
  • Controllers
    • Controller A
      • ControllerA
      • ControllerAAdmin
  • Registry
    • Objects
    • Database objects
  • Assets
  • Uploads
    • Se ampliará cuando añadamos productos e imágenes a nuestro framework.
  • Libraries
  • Miscellaneous