Hata Mesajının Anlamı
PHP’de “Fatal error: Class not found” hatası, belirli bir sınıfın tanımlanmamış veya erişilemez olduğunu gösterir. Bu hata, sınıfın doğru şekilde tanımlanmamış olması, yanlış isimle çağrılması veya sınıf dosyasının bulunamamasından kaynaklanabilir.
Sınıf Dosyasının Bulunamaması
Dosya Yolu Kontrolü
PHP sınıf dosyalarının doğru yolda olduğundan emin olunmalıdır. WordPress, tema ve eklenti dosyalarını belirli dizinlerde arar. Eğer sınıf dosyası yanlış bir dizindeyse, bu hata ortaya çıkar.
– Tema Dizini: `wp-content/themes/tema-adi/`
– Eklenti Dizini: `wp-content/plugins/eklenti-adi/`
Autoload Kullanımı
WordPress, otomatik yükleme (autoload) mekanizması kullanır. Ancak, bazen bu mekanizma düzgün çalışmayabilir. Bu durumda, sınıf dosyasının manuel olarak dahil edilmesi gerekebilir:
“`php
require_once ABSPATH . ‘wp-content/plugins/eklenti-adi/class-sinif-adi.php’;
“`
Sınıf Adı ve Namespace Uyumsuzluğu
Doğru Sınıf Adı Kullanımı
PHP 5.3 ve üzeri sürümlerde namespace kullanımı yaygındır. Eğer sınıf adı yanlış ise veya namespace belirtilmemişse, hata alınır.
– Örnek:
“`php
namespace PluginName\ClassName;
class MyClass {}
“`
“`php
use PluginName\ClassName\MyClass;
$instance = new MyClass();
“`
Namespace Kontrolü
Namespace tanımlanırken, sınıfın bulunduğu dosya dizinine göre doğru namespace kullanılmalıdır.
Composer ve Autoload
Composer Kullanımı
Composer, PHP projelerinde bağımlılık yönetimi ve autoload işlevselliği sağlar. WordPress ile entegre edilmiş bir projede Composer kullanılıyorsa:
– composer.json dosyasına sınıfın bulunduğu dizini ekleyin:
“`json
{
“autoload”: {
“psr-4”: {
“PluginName\\”: “src/”
}
}
}
“`
– Composer’ı yeniden yükleyin:
“`bash
composer dump-autoload
“`
Plugin ve Theme Activation Hooks
Aktivasyon ve Deaktivasyon Hookları
WordPress eklentileri ve temaları, aktivasyon ve deaktivasyon sürecinde belirli fonksiyonlar çalıştırır. Sınıf dosyaları bu hooklar içinde tanımlanmalıdır:
“`php
register_activation_hook(__FILE__, ‘plugin_activation_function’);
function plugin_activation_function() {
require_once plugin_dir_path(__FILE__) . ‘class-sinif-adi.php’;
// Sınıf tanımlamaları ve diğer aktivasyon işlemleri
}
“`
Hatalı Sınıf Adı veya Yanlış Yükleme
Sınıf Adı Kontrolü
Sınıf adının doğru yazıldığından emin olun. PHP sınıf isimleri case-sensitive’dir:
“`php
class MyClass {}
$instance = new myClass(); // Hatalı, doğrusu “MyClass”
“`
Sınıf Yükleme Sırası
WordPress, dosyaları belirli bir sırayla yükler. Eğer bir sınıf, başka bir sınıfa bağımlıysa, bağımlı olan sınıfın dosyası önce yüklenmelidir.
PHP Sürümü ve WordPress Uyumluluğu
PHP Sürümü
WordPress’in gerektirdiği PHP sürümü, bazı sınıf ve fonksiyonların kullanımını etkileyebilir. Eğer PHP sürümü çok eskiyse, modern sınıf yapılarını desteklemeyebilir.
– PHP Sürümünü Kontrol Et:
“`php
phpversion();
“`
WordPress Uyumluluğu
Eklenti veya tema geliştiricileri, WordPress’in belirli bir sürümüyle uyumlu olmayan kod yazmış olabilir. Bu durumda, WordPress sürümünü yükseltmek veya kodun uyumluluğunu kontrol etmek gerekebilir.
Hata Ayıklama ve Loglama
Hata Ayıklama
WordPress’de hata ayıklama modunu aktif ederek daha fazla bilgi edinilebilir:
“`php
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_LOG’, true);
“`
Log Dosyası Kontrolü
`wp-content/debug.log` dosyası hata mesajlarını detaylı olarak içerir. Bu dosyada, sınıfın neden bulunamadığını açıklayan ek bilgiler bulunabilir.
Sonuç
PHP’de “Class not found” hatası, sınıfın doğru şekilde tanımlanmamış olması, yanlış isimle çağrılması veya sınıf dosyasının bulunamamasından kaynaklanabilir. Bu hatayı çözmek için, sınıf dosyasının yolunu kontrol etmek, namespace kullanımını doğrulamak, Composer ve autoload mekanizmalarını kontrol etmek, aktivasyon hooklarını doğru kullanmak ve PHP sürümü ile WordPress uyumluluğunu gözden geçirmek gereklidir. Ayrıca, hata ayıklama ve loglama ile daha fazla bilgi edinerek sorunu çözme sürecini hızlandırmak mümkündür.