CodeBlanks Logo Icon CodeBlanks

callable türü

PHP kursu · Uzman · Ders 11/54

callable tür bildirimiyle bir fonksiyonun başka fonksiyonu kabul etmesini öğrenirsin.

callable tür bildirimi

Bir fonksiyona başka bir fonksiyonu parametre olarak geçirebilirsin. Bunun için callable tür bildirimini kullanırsın.

Örnek: function apply(callable $cb, int $x): int { return $cb($x); }. Burada $cb bir fonksiyondur; $cb($x) ile çağrılır.

callable üç biçimi kabul eder: fonksiyon adı dizesi ('strtoupper'), anonim fonksiyon ya da ['Sınıf', 'yöntem'] dizisi. Bu esneklik geri çağırma (callback) yazmayı kolaylaştırır.

is_callable ile kontrol

Bazen bir değerin çağrılabilir olup olmadığını önceden bilmen gerekir. is_callable($x) bu kontrolü yapar; true ya da false döndürür.

Kullanıcıdan gelen bir geri çağırma adını doğrulamak için yararlıdır. is_callable('strtoupper') doğru döner; is_callable('yok') yanlış.

Yanlış türde bir değer callable parametreye verilirse PHP TypeError fırlatır; is_callable bunu önler.

Uygulama apply fonksiyonunu tanımla

apply(callable $cb, $x) fonksiyonunu tanımla: $cb($x) döndürsün. Sonra apply(fn($n) => $n * 10, 5) çağırıp sonucu yeni satırla yazdır.

Örnek çözümü göster
function apply(callable $cb, $x) { return $cb($x); } yaz. Sonra echo apply(fn($n) => $n * 10, 5) . "\n"; çağır.
Örnek çözüm:
<?php
// apply fonksiyonunu tanımla ve arrow function ile çağır
function apply(callable $cb, $x) {
    return $cb($x);
}
echo apply(fn($n) => $n * 10, 5) . "\n";

Kendini test et

  1. callable tip bildirimini tamamla

    <?php
    function apply(____ $cb, $x) {
        return $cb($x);
    }
    echo apply(fn($n) => $n * 10, 5) . "\n";
    
    Cevabı göster
    <?php
    function apply(callable $cb, $x) {
        return $cb($x);
    }
    echo apply(fn($n) => $n * 10, 5) . "\n";
    
  2. Hangisi geçerli bir callable biçimi DEĞİLDİR?

    • 'strlen'
    • ['Foo', 'bar']
    • function() {}
    • [1, 2, 3]
    Cevabı göster

    [1, 2, 3] — Doğru. [1, 2, 3] bir sayı dizisidir; çağrılabilir değildir.

  3. Callable biçimlerini eşleştir

    'strlen'
    İsim dizesi
    function() {}
    Anonim fonksiyon
    ['Foo', 'bar']
    Sınıf yöntemi dizisi
    is_callable()
    Çağrılabilir mi diye bakar

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