Desde hace algunos meses he estado intentando encontrar el punto perfecto para desarrollar con PHP sin usar ningún framework como Laravel o CodeIgniter.
Como desarrolladores, queremos algo que sea sólido, fácil de usar y confiable; además de que tenga rica documentación y su uso sea entendible.
Hoy vengo a presentar mi caja de herramientas que uso al desarrollar con PHP, la cual podría ser llamada framework.
También quiero mostrar cómo es que se pueden juntar las herramientas para tener una base sólida de desarrollo con PHP.
Nota: puedes ver la plantilla en GitHub.
He decidido usar los siguientes elementos.
Para tener un enrutador ligero y fácilmente configurable he usado phroute, pues permite los 4 verbos HTTP además de que es una librería ligera que soporta filtros (algo parecido a un middleware)
Twig es un motor de plantillas seguro y con una larga presencia en el mundo del desarrollo web.
Es un simple motor como Blade, que permite hacer mejores plantillas de diseño. Nos olvidamos del include y de los bloques <?php echo $algo ?>
Toda aplicación web en la nube que permita registro de usuarios necesita enviar correos de verificación; pues bien, PHPMailer viene como anillo al dedo cuando se trata de enviar correos electrónicos con facilidad.
Lo que me gusta es cómo se puede combinar con otros frameworks, por ejemplo, Twig, para obtener el HTML.
Valitron es una librería de PHP que sirve para validar datos. Permite obtener los errores de validación como arreglo, es ligera, no tiene dependencias y simple.
Ya sé que PDO no es una librería de PHP, pero hace falta mencionar que uso este driver de PHP para interactuar con las bases de datos.
No se está forzado a usar Bootstrap, pues las plantillas son totalmente modificables, sin embargo el código existente sugiere Bootstrap 4.
Las credenciales y otros datos que no pueden ser puestos públicamente están dentro de un archivo env.php
En el mismo también controlamos otros aspectos como el caché de Twig o las direcciones de correo del remitente.
Todas las dependencias son manejadas con Composer, y mi propio código también es cargado de esta manera.
Las sesiones son almacenadas en la base de datos, y gracias a que se cuenta con un manejador propio, se puede saber a qué usuario le pertenece cada sesión, permitiendo cerrarla remotamente.
No he utilizado ningún ORM, todas las consultas son “a mano”. Obviamente esto podría cambiarse al instalar una librería para ello.
Para juntar todas estas tecnologías se utiliza composer, mi código también es cargado de esta forma.
Los controldores y modelos viven dentro de la carpeta app:
Ambos son automáticamente cargados por Composer.
El controlador se encarga de procesar y validar los datos con Valitron, para llamar a los modelos y finalmente redireccionar a las vistas con o sin datos flash de sesión.
Las vistas heredan de una plantilla maestra:
La misma incluye otros componentes. Pero ahora veamos cómo es que otra plantilla se basa en esta maestra:
Simplemente la extendemos, y automáticamente incluirá la barra de navegación junto con el pie y otros estilos.
Apenas he creado dos clases mías, una llamada Redirect (que se encarga de hacer redirecciones y poner datos flash en la sesión) y otra llamada Validator, que valida los datos y si algo falla redirige hacia atrás (basada en Valitron).
La de Validator es incluso más corta:
Tengo los servicios de sesión o de seguridad, que se encargan simplemente de encerrar funciones útiles, traer la sesión o la base de datos.
Para usar esta plantilla, hay que clonarla desde GitHub. Después hay que configurar el archivo env.php
Por defecto tiene soporte para el registro de usuarios.
Comenzamos agregando rutas en el archivo rutas.php:
Cada ruta se corresponde con un método de controlador. Ahora creamos un controlador, por ejemplo:
Y ese controlador puede llamar a varios o un modelo. Por ejemplo el modelo de los usuarios:
Recuerda que en varias ocasiones se invoca al método view, definido en el index:
La clase Twig es de servicios y proporciona una instancia de Twig que renderiza la plantilla con los datos que le sean pasados.
Sé que faltan algunas cosas, por ejemplo:
La ventaja de todo esto es que cualquiera que conozca los componentes y librerías puede trabajar con esta plantilla o caja de herramientas, ya que no obliga a tener un paradigma de programación.
La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…
Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…
El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…
El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…
En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…
Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…
Esta web usa cookies.
Ver comentarios
el /vendor/autoload.php NO EXISTE
Hola. El /vendor/autoload.php DEBE SER GENERADO CON COMPOSER (ejecutando composer install)