Regola
Il nome della classe deve corrispondere al nome del file.
Molti linguaggi richiedono che i nomi delle classi
coincidano esattamente con i nomi dei file, altrimenti falliranno su file system case-sensitive
(come Linux).
Linguaggi supportati: PHPIntroduzione
L'autoloading PSR-4 di PHP richiede che i nomi delle classi coincidano esattamente con i nomi dei file, maiuscole e minuscole incluse. Una classe denominata UserRepository deve trovarsi in UserRepository.php, non in userrepository.php. Questo funziona su file system case-insensitive come Windows e macOS, ma si interrompe sui server Linux, causando errori "Class not found" in produzione.
Perché è importante
Errori in produzione: nomi non corrispondenti causano problemi di autoloading sui server Linux, dove i file system fanno distinzione tra maiuscole e minuscole (case-sensitive). Il codice che funziona in locale si interrompe in produzione, richiedendo hotfix di emergenza e causando tempi di inattività (downtime).
Conformità PSR-4: i moderni framework PHP si affidano all'autoloading PSR-4. Le classi che non seguono le convenzioni di denominazione non possono essere caricate automaticamente, compromettendo l'injection delle dipendenze, i container dei servizi e le funzionalità del framework.
Esempi di codice
❌ Non 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();
}
}
Perché è errato: Il nome della classe è UserRepository ma il nome del file è userrepository.php (in minuscolo). L'autoloader PSR-4 cercherà UserRepository.php ma non riuscirà a trovarlo sui file system Linux case-sensitive, generando errori irreversibili in produzione.
✅ 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();
}
}
Perché questo è importante: Il file UserRepository.php corrisponde esattamente al nome della classe UserRepository , incluse maiuscole e minuscole. L'autoloader PSR-4 è in grado di individuare e caricare in modo affidabile la classe su qualsiasi file system, eliminando gli errori legati all'ambiente e garantendo un comportamento coerente tra sviluppo e produzione.
Conclusione
Assicura una corrispondenza rigorosa tra il nome del file e della classe fin dall'inizio del progetto. Configura il tuo IDE affinché nomini automaticamente i file in modo corretto durante la creazione delle classi. Utilizza controlli automatizzati nelle pipeline CI/CD per intercettare le discrepanze prima del deployment. I cinque minuti spesi per garantire una denominazione corretta evitano ore di debug per risolvere problemi di autoload in produzione.

