- Katılım
- 8 Ocak 2026
- Mesajlar
- 306
- Çözümler
- 2
- Reaksiyon puanı
- 413
- Puanları
- 63
XenForo Class Extensions Sistemi
Çekirdek dosyaya dokunmadan davranış değiştirme rehberi
Çekirdek dosyaya dokunmadan davranış değiştirme rehberi
Bu rehber XenForo 2.3.10 sürümüne göre hazırlanmıştır. XenForo’da mevcut bir PHP sınıfının davranışını değiştirmek için çekirdek dosyayı düzenlemek yerine Class Extension sistemi kullanılmalıdır.
1. Class Extension Nedir?
Class extension, XenForo veya başka bir add-on içindeki sınıfı kendi add-on’unuz üzerinden genişletmenizi sağlar. Böylece çekirdek dosyaya dokunmadan yeni metot ekleyebilir veya mevcut metodu kontrollü şekilde override edebilirsiniz.
2. Ne Zaman Kullanılır?
- Entity davranışına yeni kontrol eklemek.
- Repository metodunu genişletmek.
- Service akışına ek işlem dahil etmek.
- Controller çıktısını küçük ölçekte değiştirmek.
- Validator veya handler davranışını add-on içinde özelleştirmek.
Dikkat: Sadece HTML eklemek istiyorsanız class extension yerine template, macro, widget veya template modification daha doğru olabilir.
3. Class Extension Nasıl Oluşturulur?
XenForo 2.3.10’da bunun için komut kullanılabilir:
Kod:
php cmd.php xf-make:extension XF/Entity/User --addon=Vendor/Addon
Bu komut extension sınıfını ve gerekli class extension kaydını oluşturur.
4. Dosya Mantığı
Örneğin
XF\Entity\User sınıfını genişletiyorsanız, add-on tarafındaki sınıfınız şu mantıkla oluşur:
Kod:
namespace Vendor\Addon\XF\Entity;
class User extends XFCP_User
{
}
Buradaki
XFCP_User sınıfı elle oluşturulmaz. XenForo class extension sistemi tarafından generated hint olarak sağlanır.5. Metot Genişletme Örneği
Bir metodu override ederken mümkünse parent davranışını koruyun.
Kod:
public function canViewProfile(&$error = null)
{
$canView = parent::canViewProfile($error);
if (!$canView)
{
return false;
}
return true;
}
Bu örnek tek başına davranış değiştirmez; doğru kalıbı göstermek için verilmiştir. Gerçek koşulunuzu bu yapının içine eklersiniz.
6. Execution Order Nedir?
Aynı sınıfı birden fazla add-on genişletiyorsa çalışma sırasını execute order belirler. Düşük değer önce çalışır.
Kod:
execute_order: 10
Birden fazla eklenti aynı metodu değiştiriyorsa parent çağrısını korumak daha da önemlidir.
7. Class Extension Kaydı Nerede Tutulur?
Development output açıkken kayıtlar add-on içinde şu alanda takip edilebilir:
Kod:
src/addons/Vendor/Addon/_output/class_extensions/
Bu dosyalar add-on geliştirme çıktısıdır. Release paketinde ilgili veriler build sürecinde XML’e aktarılır.
8. İyi Kullanım Kuralları
- Çekirdek sınıfı kopyalamayın.
- Sadece gereken metodu override edin.
- Parent çağrısını gereksiz yere kaldırmayın.
- Metot imzasını bozmayın.
- Entity, Repository ve Service sorumluluklarını karıştırmayın.
- Başka eklentilerle çakışma ihtimalini düşünün.
9. Sık Yapılan Hatalar
- XFCP sınıfını elle yazmak: Bu sınıf generated hint olarak üretilir.
- Çekirdek dosyayı düzenlemek: Güncellemede değişiklik kaybolabilir.
- Parent metodunu çağırmamak: Mevcut davranışı istemeden bozabilir.
- Çok geniş müdahale yapmak: Küçük bir ihtiyaç için büyük davranış değişikliği risklidir.
Özet: Class extension sistemi, XenForo’da PHP davranışı değiştirmenin güncelleme dostu yoludur. Doğru kullanıldığında çekirdek dosyaları temiz tutar ve add-on mimarisini güçlendirir.