Composer ile kurulum tamamlanıyor ama uygulama Class "App\\Service\\MailSender" not found diyorsa, sorunun kaynağı her zaman eksik paket değildir. PSR-4 autoload eşlemesi, namespace, dosya yolu ve sınıf adının harfleri birlikte kontrol edilmelidir. Windows'ta çalışan bir sınıfın Linux sunucuda bulunmaması, özellikle harf duyarlılığına işaret eder.
Namespace ile klasör yolunu yan yana okuyun
Örneğin App\\Service\\MailSender sınıfı için composer.json içinde App\\ önekinin hangi kaynak dizine eşlendiğini bulun. Ardından sınıfın o dizin altındaki göreli yolunun ve dosya adının bu eşlemeye uyup uymadığını kontrol edin. PSR-4, namespace parçalarının dizinlere; sınıfın son parçasının da dosya adına karşılık gelmesini bekler. Gerçek proje farklı bir önek kullanıyorsa örneği kendi eşlemenize göre okuyun.
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Bu ayarda sınıf bildirimi namespace App\\Service;, dosya ise src/Service/MailSender.php yolunda olmalıdır. Linux üzerinde MailSender.php ile Mailsender.php eşleşmez; namespace ve sınıf adındaki harfler de PHP dosyasındaki bildirimle birebir aynı olmalıdır.
Kontrol sırasını basit tutun: hata metnindeki tam namespace'i kopyalayın, composer.json önek eşlemesini bulun, kaynak dizindeki yolu ve dosyanın namespace/sınıf bildirimini karşılaştırın. Daha sonra dağıtım paketinde bu dosyanın bulunduğundan emin olun. Yerel makinede dosya var fakat üretimde yoksa, autoload haritasından önce Git tarafından izlenip izlenmediğini ve dağıtımın doğru commit'i içerip içermediğini araştırın.
Autoload dosyasını kontrollü yenileyin
Dosya ve eşleme doğruysa proje kökünde composer validate ile yapılandırmayı kontrol edin, ardından mevcut bağımlılık kilidini koruyarak composer dump-autoload -o çalıştırın. Sınıfın yüklendiğini uygulamanın çalıştığı PHP sürümü ve kullanıcıyla test edin. Bir sınıf bulunamadı diye doğrudan composer update çalıştırmak bağımlılık sürümlerini değiştirebilir; sorun yalnızca autoload haritasındaysa bu gereksiz risk yaratır.
Autoload kuralının ayrıntıları için PSR-4 standardına, Composer komutları ve autoload üretimi için Composer temel kullanımı belgesine bakın. Birden çok katmanı olan PHP uygulamasında namespace'leri düzenleme konusunu MVC mimarisi rehberiyle birlikte ele alabilirsiniz.