🎯 Proyecto básico con ORM Doctrine y Dotenv
Este proyecto pretende servir como base para hacer más sencilla la gestión de datos en PHP. En concreto, se ha utilizado el ORM Doctrine, que es un Object-Relational Mapper que proporciona persistencia transparente para objetos PHP. Emplea el patrón Data Mapper con el objetivo de obtener un desacoplamiento completo entre la lógica de negocio y la persistencia de los datos en los sistemas de gestión de bases de datos (SGBD).
Adicionalmente, este proyecto se apoya en el componente Dotenv para facilitar su configuración a través de variables de entorno. Esto permite que cualquier configuración que pueda variar entre diferentes entornos pueda ser establecida en variables de entorno, tal como se aconseja en la metodología “The twelve-factor app” ✅.
Para realizar la instalación de la aplicación crearán un usuario, contraseña y base de datos
en el SGBD. A continuación se debe crear una copia del fichero ./.env
y renombrarla
como ./.env.local
(si se ejecuta en entornos basados en contenedores Docker, el fichero
se deberá llamar ./.env.docker
). A continuación se editará este fichero para asignar
los parámetros:
- (opcional) Configuración del servidor de bases de datos
- Nombre de la base de datos
- Configuración del acceso a la base de datos (usuario y contraseña)
Una vez editado el anterior fichero, desde el directorio raíz del proyecto se ejecutarán los comandos:
$> composer update
$> php bin/doctrine.php orm:schema-tool:update --dump-sql --force
Para comprobar la validez de la información de mapeo y la sincronización con la base de datos:
$> php bin/doctrine.php orm:validate-schema
A continuación se describe el contenido y estructura del proyecto:
- Directorio
bin
:- Ejecutables (doctrine.php)
- Directorio
src
:- Subdirectorio
src/Entity
: entidades PHP (incluirán ATRIBUTOS de mapeo del ORM) - Subdirectorio
src/scripts
: scripts de ejemplo - Subdirectorio
src/Utility
: clases DoctrineConnector y Utils (proporcionan el gestor de entidades)
- Subdirectorio
- Directorio
vendor
:- Componentes desarrollados por terceros (Doctrine, Dotenv, etc.)