CodeBlanks Logo Icon CodeBlanks

Özet - Closure ve callback

PHP kursu · Uzman · Ders 14/54

Closure, arrow function ve callable'la fonksiyonel filtre/map zinciri yazarsın.

Özet - Closure ve callback

Bu grupta closure'ların altı taşını öğrendin: function () {} anonim fonksiyon, use ($x) ile değişken yakalama, fn() => arrow function, callable tür bildirimi, higher-order fonksiyonlar ve bindTo ile bağlama.

Bunları birleştirince veriyi boru gibi akıtan özlü kod yazarsın: array_filter süzer, array_map dönüştürür, closure'lar içine dış kapsamdan değişken taşır.

Son görevde bu üçünü bir araya getiren bir zincir kuracaksın.

Uygulama Özet - Süz ve KDV ekle zinciri

$prices = [100, 250, 50, 400] olarak veriliyor. Önce array_filter ile 100'den büyük olanları süz; sonra array_map ve fn ile her birini 1.18 ile çarp (KDV ekle). Son olarak her fiyatı yeni satırda yazdır.

Örnek çözümü göster
$filtered = array_filter($prices, fn($p) => $p > 100); ile süz. $withTax = array_map(fn($p) => $p * 1.18, $filtered); ile KDV ekle. foreach ($withTax as $price) { echo $price . "\n"; } ile yazdır.
Örnek çözüm:
<?php
// Fiyatları süz ve KDV ekle
$prices = [100, 250, 50, 400];
$filtered = array_filter($prices, fn($p) => $p > 100);
$withTax = array_map(fn($p) => $p * 1.18, $filtered);
foreach ($withTax as $price) {
    echo $price . "\n";
}

Kendini test et

  1. Grubun altı taşını eşleştir

    function () {}
    Anonim fonksiyon
    use ($x)
    Değişken yakalar
    fn($n) => $n * 2
    Arrow function
    callable
    Tip bildirimi
    bindTo()
    $this bağlar
  2. Bir dizinin her elemanını iki katına çıkarmak için en kısa yol hangisidir?

    • foreach ile elle döngü
    • array_push ile ekleme
    • array_map ile arrow function
    • for döngüsü ile yeniden yazma
    Cevabı göster

    array_map ile arrow function — Doğru. array_map(fn($n) => $n * 2, $arr) tek satırda her elemanı iki katına çıkarır.

  3. array_filter ile çift sayıları süz

    <?php
    $nums = [1, 2, 3, 4, 5];
    $evens = array_filter($nums, ____);
    foreach ($evens as $n) {
        echo $n . "\n";
    }
    
    Cevabı göster
    <?php
    $nums = [1, 2, 3, 4, 5];
    $evens = array_filter($nums, fn($n) => $n % 2 === 0);
    foreach ($evens as $n) {
        echo $n . "\n";
    }
    

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