Regla
Clase nombre debe coincidir con nombre de archivo.
Muchos idiomas requieren clase nombres
que coincidan con nombres de archivo exactamente, o fallarán
fallarán en distingue entre mayúsculas y minúsculas sistemas de archivos (Linux).
Lenguajes soportados: PHPIntroducción
La carga automática PSR-4 de PHP requiere que los nombres de las clases coincidan exactamente con los nombres de los archivos, incluyendo mayúsculas y minúsculas. Una clase llamada UserRepository debe estar en UserRepository.php, no userrepository.php. Esto funciona en sistemas de archivos que no distinguen entre mayúsculas y minúsculas como Windows y macOS, pero falla en servidores Linux, causando errores de "Clase no encontrada" en producción.
Por qué es importante
Fallos en producción: Los nombres no coincidentes provocan fallos de carga automática en servidores Linux donde los sistemas de archivos distinguen entre mayúsculas y minúsculas. El código que funciona localmente falla en producción, lo que requiere hotfixes de emergencia y provoca tiempo de inactividad.
Cumplimiento de PSR-4: Los frameworks PHP modernos dependen de la carga automática (autoloading) de PSR-4. Las clases que no siguen las convenciones de nomenclatura no pueden cargarse automáticamente, lo que interrumpe la inyección de dependencias, los contenedores de servicios y las funcionalidades del framework.
Ejemplos de código
❌ No conforme:
<?php
// File: userrepository.php
namespace App\Repositories;
class UserRepository
{
public function findById($id)
{
return User::find($id);
}
public function save(User $user)
{
return $user->save();
}
}
Por qué es incorrecto: El nombre de la clase es UserRepository pero el nombre del archivo es userrepository.php (minúsculas). El autocargador PSR-4 buscará UserRepository.php y no lo encuentran en sistemas de archivos Linux sensibles a mayúsculas y minúsculas, causando errores fatales en producción.
✅ Conforme:
<?php
// File: UserRepository.php
namespace App\Repositories;
class UserRepository
{
public function findById($id)
{
return User::find($id);
}
public function save(User $user)
{
return $user->save();
}
}
¿Por qué esto importa? El nombre del archivo UserRepository.php coincide con el nombre de la clase UserRepository exactamente, incluyendo mayúsculas y minúsculas. El autocargador PSR-4 puede localizar y cargar la clase de forma fiable en cualquier sistema de archivos, eliminando fallos específicos del entorno y asegurando un comportamiento consistente entre desarrollo y producción.
Conclusión
Asegura una coincidencia estricta entre el nombre del archivo y el nombre de la clase desde el inicio de tu proyecto. Configura tu IDE para que nombre los archivos correctamente de forma automática al crear clases. Utiliza comprobaciones automatizadas en los pipelines de CI/CD para detectar discrepancias antes del despliegue. Los cinco minutos dedicados a asegurar una nomenclatura adecuada evitan horas de depuración de fallos de autocarga en producción.
.avif)
