ReflectionMethod
ReflectionMethod ile bir methodun parametre, görünürlük ve dönüş türünü öğrenirsin.
ReflectionMethod ile method inceleme
ReflectionMethod tek bir methodu inceler. new ReflectionMethod("UserService", "find") ile find methodunu alırsın.
getParameters() her parametre için bir ReflectionParameter döndürür; getName() parametre adını verir. isPublic(), isPrivate(), isProtected() görünürlüğü, getReturnType() dönüş türünü söyler.
Böylece dışarıdan gelen bir sınıfı dokümansız kullanabilirsin: parametre adları ve türleri elindedir.
ReflectionParameter ile parametre inceleme
Her ReflectionParameter bir parametrenin aynasıdır. getName() adını, getType() türünü, isOptional() opsiyonel mi olduğunu söyler.
Opsiyonel parametrelerin varsayılan değeri getDefaultValue() ile alınır; ama önce isDefaultValueAvailable() ile var mı diye kontrol et.
Bu bilgilerle örneğin bir komut satırı aracı, parametre adına göre seçenek üretebilir.
Uygulama find methodunun parametrelerini yazdır
Aşağıdaki UserService::find methodu verilmiş. Bir ReflectionMethod nesnesi oluştur ve getParameters() ile her parametrenin adını ayrı satıra yazdır.
Örnek çözümü göster
$rm = new ReflectionMethod("UserService", "find"); oluştur. foreach ($rm->getParameters() as $param) { echo $param->getName() . "\n"; } ile yazdır.
Örnek çözüm:
<?php
class UserService {
public function find(int $id, ?string $field = null): ?array {
return null;
}
}
$rm = new ReflectionMethod("UserService", "find");
foreach ($rm->getParameters() as $param) {
echo $param->getName() . "\n";
}
Kendini test et
-
ReflectionMethod methodlarını eşleştir
- getParameters
- Parametre listesini döndürür
- isPrivate
- Private mı diye sorar
- getReturnType
- Dönüş türünü döndürür
- getName
- Method adını döndürür
-
new ReflectionMethod("UserService", "find") ne döndürür?
- UserService sınıfının tüm methodlarını
- find methodunun tüm parametrelerini
- find methodunu temsil eden ReflectionMethod nesnesini
- find methodunun dönüş türünü
Cevabı göster
find methodunu temsil eden ReflectionMethod nesnesini — Doğru. Tek bir methodu temsil eden ReflectionMethod alırsın.
-
getParameters() ile döngü kur
<?php $rm = new ReflectionMethod("UserService", "find"); foreach ($rm->____() as $param) { echo $param->getName() . "\n"; }Cevabı göster
<?php $rm = new ReflectionMethod("UserService", "find"); foreach ($rm->getParameters() as $param) { echo $param->getName() . "\n"; }