Construir un proyecto PHP organizado desde cero marca la diferencia entre código difícil de mantener y una arquitectura clara y escalable. Aquí se muestra cómo crear una estructura de carpetas inspirada en Laravel, utilizando Composer exclusivamente para el sistema de autocarga, sin dependencias externas.
¿Por qué organizar tu proyecto como lo hacen los frameworks?
Los frameworks como Laravel proporcionan una estructura predefinida que separa responsabilidades y facilita el mantenimiento. Replicar esa organización en un proyecto propio permite entender qué papel cumple cada carpeta y archivo cuando trabajas con herramientas profesionales.
La estructura base que se construye es la siguiente:
- App: abreviación de aplicación, contiene toda la lógica del sistema.
- App/HTTP: maneja todo lo relacionado con solicitudes y respuestas.
- App/HTTP/Controllers: aloja los controladores que procesan la lógica de cada ruta.
- App/HTTP/Request.php: clase encargada de gestionar las solicitudes entrantes.
- App/HTTP/Response.php: clase encargada de construir y enviar respuestas.
- App/helpers.php: funciones auxiliares reutilizables en todo el proyecto.
- Public/index.php: punto de acceso único al sistema.
- Views: carpeta donde viven las vistas como home, plantillas y demás.
- Vendor: carpeta generada por Composer para el sistema de autocarga.
¿Cómo inicializar el proyecto con Composer? [01:52]
El primer paso es ejecutar composer init en la terminal. Este comando genera el archivo composer.json con la configuración básica del proyecto. Durante el proceso se responden preguntas como nombre del paquete, descripción, autor y licencia. En este caso, no se instalan dependencias adicionales, ya que el objetivo es aprovechar únicamente la autocarga de clases.
¿Cómo configurar PSR-4 para el autoload? [02:33]
Una vez creado el composer.json, se agrega la sección de autoload con el estándar PSR-4. Este estándar permite registrar un namespace y asociarlo a una carpeta física del proyecto:
{
"autoload": {
"psr-4": {
"App\": "App/"
},
"files": [
"App/helpers.php"
]
}
}
- El namespace
App\ se conecta directamente con la carpeta App/.
- El archivo
helpers.php se registra en la sección files para que se cargue automáticamente en cada ejecución.
Después de guardar estos cambios, se ejecuta composer dump-autoload en la terminal [03:08]. Este comando regenera los archivos de autocarga dentro de la carpeta vendor. Al no haber dependencias externas, no se genera el archivo composer.lock, algo que sí ocurre cuando se instalan paquetes.
¿Qué rol cumple cada elemento dentro de HTTP? [04:25]
La carpeta HTTP es el corazón del flujo solicitud-respuesta:
- Controllers: procesan la lógica de negocio asociada a cada ruta o acción del usuario.
- Request: encapsula los datos que llegan del cliente, como parámetros, cabeceras y método HTTP.
- Response: construye la salida que el servidor devuelve al navegador o cliente.
Este patrón refleja exactamente cómo funcionan frameworks reales. Cuando descargues Laravel u otro framework, encontrarás estas mismas carpetas con estos mismos nombres.
¿Cómo funciona el punto de acceso público? [04:50]
El archivo public/index.php actúa como punto de entrada único al sistema. Todas las peticiones del usuario pasan por este archivo, que se encarga de cargar el autoload de Composer y delegar el procesamiento a los controladores correspondientes.
La carpeta views almacena los archivos de presentación. Aquí se crean las plantillas HTML que el sistema renderiza como respuesta final al usuario.
Esta separación entre lógica (App), acceso (Public) y presentación (Views) es la base del patrón MVC (Model-View-Controller), ampliamente utilizado en desarrollo web profesional.
Si tienes dudas sobre cómo organizar tu estructura o sobre la configuración de Composer, comparte tu experiencia en los comentarios.