Reflection nedir?
Reflection API ile çalışma anında sınıf ve method bilgisini sorgulamayı öğrenirsin.
Reflection nedir?
Reflection API, çalışma anında (runtime) bir sınıfın method ve property bilgisini sorgulamanı sağlar. new ReflectionClass("UserService") ile bir sınıfı sardığında adını, methodlarını ve property'lerini öğrenebilirsin.
Reflection, kodun kendisini inceleyen koddur. Test çatıları, bağımlılık container'ları ve doküman üreticileri bu API üzerine kuruludur.
Bu seride ReflectionClass, ReflectionMethod, ReflectionProperty ve ReflectionFunction sınıflarını tanıyacağız.
ReflectionClass ile ilk adım
ReflectionClass bir sınıfın aynasıdır: kuruluş biçimini öğrendikten sonra getName() tam adını, getMethods() method listesini ve getProperties() property listesini döndürür.
İncelemek için önce bir nesne oluşturmalısın: $rc = new ReflectionClass("UserService");. Dönen nesne üzerinde method ve property gezginleri çalışır.
Fonksiyonlar için ReflectionFunction kullanılır; PHP'nin reflection ailesi Reflection soyut sınıfından türeyen bu türlerle başlar.
Uygulama UserService sınıfının adını yazdır
Aşağıdaki UserService sınıfı verilmiş. Bir ReflectionClass nesnesi oluştur ve getName() ile sınıfın tam adını yazdır.
Örnek çözümü göster
$rc = new ReflectionClass("UserService"); oluştur. Sonra echo $rc->getName() . "\n"; ile yazdır.
Örnek çözüm:
<?php
class UserService {
public function list(): array {
return [];
}
}
$rc = new ReflectionClass("UserService");
echo $rc->getName() . "\n";
Kendini test et
-
Reflection hangi aşamada işe yarar?
- Derleme zamanında, kod makineye çevrilirken
- Çalışma anında, program zaten çalışırken
- Yalnız hata ayıklama modunda
- Yalnız web isteklerini işlerken
Cevabı göster
Çalışma anında, program zaten çalışırken — Doğru. Reflection sınıf ve method bilgisini program çalışırken sorgular.
-
ReflectionClass çağrısını tamamla
<?php $rc = new ____("UserService"); echo $rc->getName() . "\n";Cevabı göster
<?php $rc = new ReflectionClass("UserService"); echo $rc->getName() . "\n"; -
Reflection ailesini eşleştir
- ReflectionClass
- Sınıf bilgisini verir
- ReflectionMethod
- Method bilgisini verir
- ReflectionFunction
- Fonksiyon bilgisini verir
- ReflectionProperty
- Property bilgisini verir