CodeBlanks Logo Icon CodeBlanks

ReflectionMethod

PHP kursu · Uzman · Ders 17/54

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

  1. 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
  2. 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.

  3. 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";
    }
    

Uzman bölümündeki tüm dersler