Si quieres que tus proyectos en PHP se vean y funcionen como software profesional, necesitas conocer Composer, la herramienta que estructura tu código y delega la autocarga de clases. Con ella dejas de escribir include o require por cada archivo y empiezas a construir aplicaciones bajo un estándar real de la industria.
¿Qué es Composer y por qué lo usan los proyectos PHP profesionales?
Composer es el gestor de dependencias y autocarga de clases que utilizan los sistemas serios hechos en PHP. Su poder principal, al menos en este punto, es automatizar la carga de clases para que tú no tengas que incluir archivo por archivo dentro de tu proyecto.
Sin Composer, tu código se llena de líneas como "aquí necesito la clase curso, voy a incluirla" y "aquí necesito otro archivo, también lo incluyo". Esa repetición se vuelve insostenible. Composer resuelve eso de un solo movimiento.
¿Qué hace Composer en un proyecto PHP? Gestiona dependencias y carga automáticamente las clases que defines en tu proyecto, eliminando la necesidad de hacer include o require manuales en cada archivo.
¿Cómo configurar el archivo composer.json con autoload PSR-4?
Todo arranca con un archivo llamado composer.json en la raíz del proyecto. Ahí abres y cierras llaves, declaras la sección autoload y aplicas el estándar PSR-4, que es la convención profesional de PHP para autocargar clases.
La idea es simple: le dices a Composer que cada vez que tu código mencione un namespace como App, redirija esa búsqueda hacia una carpeta específica de tu proyecto. Por convención, esa carpeta se llama src porque representa el código fuente.
{
"autoload": {
"psr-4": {
"App\": "src/"
}
}
}
Esa carpeta src la creas tú a mano. Es donde vivirá tu aplicación.
¿Qué comando instala el autoload de Composer?
Una vez configurado el composer.json, abres la terminal y ejecutas el comando para que Composer haga su trabajo. El proceso genera automáticamente una carpeta vendor con el archivo autoload.php dentro.
Ahí ocurre la magia: Composer inspecciona tu sistema y crea un archivo interno llamado PSR4.php donde queda registrada la regla que escribiste. Cada vez que tu código diga App, Composer sabrá que debe buscar en src.
No necesitas memorizar lo que pasa por debajo, pero sí entender que toda la inteligencia de la autocarga vive en vendor/autoload.php.
¿Cómo organizar las clases con namespaces en la carpeta src?
Después de instalar el autoload, mueves tus clases (por ejemplo, Curso y Tipo) hacia la carpeta src. Cada archivo debe declarar al inicio su namespace:
php
<?php
namespace App;
class Curso {
// ...
}
¿Por qué `App` y no otro nombre? Porque eso fue lo que registraste en el `composer.json`. Si hubieras escrito `Platzi`, entonces todas tus clases tendrían que declarar `namespace Platzi`.
Aquí entra una práctica importante: en proyectos de software libre se usa el nombre del proveedor seguido del componente, por ejemplo `Platzi/MiComponente`. Esto evita colisiones entre paquetes de distintos autores. En este caso usamos `App` por simplicidad.
> **¿Qué es un namespace en PHP?** Es un identificador que agrupa clases bajo un mismo nombre lógico, evitando conflictos cuando dos clases distintas tienen el mismo nombre en proyectos diferentes.
### ¿Cómo importar clases desde el archivo index?
El archivo `index.php` es la puerta de entrada del proyecto. Ahí cargas el autoload una sola vez y luego importas las clases con la palabra clave `use`:
php
<?php
require __DIR__ . '/vendor/autoload.php';
use App\Curso;
use App\Tipo;
Fíjate en el detalle del `__DIR__`. Esa constante devuelve la **ruta absoluta** del archivo actual, no una ruta relativa. La diferencia es clave.
## ¿Cuál es la diferencia entre ruta relativa y ruta absoluta en PHP?
Una ruta relativa parte desde la posición del archivo y mira hacia los lados buscando sus hermanos. Una ruta absoluta entrega el camino completo del sistema, sin depender desde dónde se ejecute.
Si quieres comprobarlo tú mismo, imprime el valor de `__DIR__` en pantalla:
php
var_dump(__DIR__);
Verás en el navegador la ruta completa de tu proyecto. Eso es alcance profesional: tu código no se rompe si cambias la forma en que lo ejecutas.
## ¿Por qué agregar la carpeta vendor al gitignore?
La carpeta `vendor` no se sube al repositorio. Cualquiera que clone tu proyecto puede regenerarla ejecutando Composer, así que ocupar espacio en Git no tiene sentido.
Para excluirla, creas un archivo `.gitignore` en la raíz y agregas:
vendor/
Al guardar, notarás que la carpeta cambia de color en tu editor, señal de que Git ya la está ignorando.
- Mantienes el repositorio liviano.
- Evitas conflictos de versiones entre dependencias.
- Sigues la convención que usan todos los proyectos PHP profesionales.
Con esto, tu proyecto deja de ser un conjunto de archivos sueltos con `include` por todas partes y pasa a tener una **estructura profesional con autocarga delegada a Composer**. Tu cabeza queda libre para concentrarse en lo único que importa: el código dentro de `src`.
Como desafío, recrea esta misma estructura en un proyecto propio. Crea tu `composer.json`, define tu *namespace*, organiza tu carpeta `src` y ejecuta el autoload. ¿Qué nombre de proveedor vas a usar para tu proyecto? Cuéntalo en los comentarios.
A ver banda, wachen la explicación:
¿Qué es el sistema de autocarga de Composer?
El autoloader de Composer es una herramienta que nos ahorra escribir muchosrequireoincludemanualmente. Composer se encarga automáticamente de encontrar y cargar las clases que usamos, siempre que sigamos algunas reglas simples.
¿Cómo lo hace? Con namespaces, directorios y clases organizadas
Para que Composer sepa dónde buscar tus clases, usas lo que se llama PSR-4, un estándar de organización de código. La idea es que el nombre de una clase (junto con su namespace) debe reflejar su ubicación en tu proyecto.
Componentes clave:
NamespaceEl namespace actúa como una especie de “apellido” de una clase. Ayuda a evitar conflictos entre clases con el mismo nombre y a organizar el código.namespace App\Controllers;
class UsuarioController {
// ...
}
Aquí, el namespace es App\Controllers.
DirectorioEl autoloader de Composer espera que el directorio coincida con el namespace. Si usas "App\\": "src/" en tu composer.json, entonces:
App\Controllers\UsuarioController debe estar en:
src/Controllers/UsuarioController.php
ClaseLas clases deben estar definidas con el nombre correcto, y el archivo debe tener el mismo nombre que la clase.// src/Controllers/UsuarioController.php
namespace App\Controllers;
class UsuarioController {
public function index() {
echo "Hola desde UsuarioController";
}
}
¿Qué debe haber en composer.json?
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Después de agregar eso, debes ejecutar:
composer dump-autoload
Esto actualiza el archivo vendor/autoload.php, que luego incluyes una sola vez en tu proyecto:
require __DIR__ . '/vendor/autoload.php';
Y listo, puedes usar cualquier clase con su namespace sin hacer require manualmente:
use App\Controllers\UsuarioController;
$controlador = new UsuarioController();
$controlador->index();
En resumen, Composer te ayuda a:
Cargar clases automáticamente
Mantener el proyecto ordenado
Evitar errores por rutas mal escritas
Trabajar como los profesionales en proyectos grandes
Ey en verdad muchas gracias por tu explicacion, me ayudo a fijarme mejor toda la clase.
La verdad me tiene muy desilucionado este curso, se me ha hecho eterno terminarlo a persar de que tiene pocas horas de contenido, el profesor avanza muy rapido a punta de ctrl z, no explica nada de sintaxis, ni el por que de muchas cosas, termino por aprender mas de las explicaciones de los comentarios o chatgpeteando todo que por la enseñanza de el, ¿para que pago una suscripcion de cursos en los que espero todos los conceptos esten desmenuzados, explicados y ordenados para poder entender y aprender mas rapido que por mi cuenta; si realmente nada es asi?.
Este a pesar de su acertividad en lo directo que explica, no acompaña realmente al estudiante, y menos teniendo en cuenta que el curso es sobre "Fundamentos de php". En retrospectiva muy mal enfocada la transmicion de conocimiento.
Lo que buscas entonces es fundamentos de programación, o pensamiento lógico, que dicho sea de paso también ofrece platzi. Los lenguajes de programación son como aprender un idioma: sabes que hola es similar a hello, pero no tomas un curso literal de “gramática de inglés” sino lo que tomas son “cursos de inglés” espero haberte ayudado a entender.
Mucha información, pero muy buena para tener en cuenta y entender mucho mejor a la hora de hacer aplicaciones o desarrollo estructurado y profesional.
Composer es una herramienta de gestión de dependencias para proyectos PHP. Facilita la instalación y actualización de bibliotecas y paquetes necesarios para el desarrollo de aplicaciones. Al utilizar un archivo composer.json, puedes definir las dependencias de tu proyecto, y Composer se encargará de descargarlas y autoloadarlas, mejorando la organización y la profesionalidad de tu código. Es esencial para la gestión de proyectos PHP modernos y hace que el trabajo en equipo sea más eficiente al asegurar que todos los miembros tengan las mismas versiones de dependencias.
public function updateTitle(string $newTitle): void
{
if (empty($newTitle)) return;
if (strlen($newTitle) < 5) return;
$this->title = $newTitle;
}
}
composer.json
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
.gitignor
/vendor
Reto terminado:
Para los que no les funciona el "composer dump-autoload", verifiquen primero que:
Crearon los archivos correctamente.
Se encuentran en la carpeta raiz de su index.php en el path de la terminal.
Que escribieron el comando correctamente.
Sino les funciona el trabajo en la terminal ejecuten este comando...
"composer init"
Y solo denle enter a todos los valores predeterminados y se crearán los archivos
La autocarga de clases en PHP es un mecanismo que permite cargar automáticamente las clases necesarias sin tener que incluir manualmente cada archivo. Esto se logra mediante herramientas como Composer, que gestionan las dependencias y el autoloading. Al definir un estándar de autocarga, como PSR-4, se puede establecer una estructura organizada en el proyecto, mejorando la mantenibilidad y eficiencia. Composer genera un archivo autoload.php que se encarga de localizar y cargar las clases según la configuración establecida en el archivo composer.json.
Composer es una herramienta de gestión de dependencias en PHP. Permite a los desarrolladores declarar las bibliotecas de las que depende su proyecto y las instala automáticamente. Gracias a Composer, se facilita la autoloading de clases, lo que significa que puedes cargar tus clases sin tener que incluir manualmente cada archivo. Esto optimiza la estructura del código y promueve buenas prácticas en el desarrollo de aplicaciones PHP, permitiendo una mejor organización y mantenimiento.