0Pricing
PHP Academy · Ders

Anonim İşlevler ve Kapanışlar

Satır içi işlevler yazın ve use ile değişkenleri yakalayın.

Anonim İşlevler ve Kapanışlar, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.

Anonim Fonksiyonlar Nedir?

Anonim fonksiyon (lambda), adı olmayan bir fonksiyondur. PHP'de yerleşik Closure sınıfının bir örneğidir ve bir değişkende saklanabilir, argüman olarak geçirilebilir veya başka bir fonksiyondan döndürülebilir.

Temel Anonim Fonksiyon

Bir fonksiyonu bir değişkene atayın ve çağırın:

<?php
$double = function(int $n): int {
    return $n * 2;
};

echo $double(5);   // 10
echo $double(21);  // 42

Anonim Fonksiyonları Geçirme

Bir kapanışı array_map, usort gibi fonksiyonlara veya kendi geri çağırma işlevlerinize argüman olarak geçirin:

<?php
$nums = [3, 1, 4, 1, 5, 9];

$squared = array_map(function(int $n): int {
    return $n ** 2;
}, $nums);

print_r($squared); // [9, 1, 16, 1, 25, 81]

Fonksiyon Döndürme

Bir fonksiyon, bir kapanış oluşturup döndürebilir — bu, bir fabrika desenidir:

<?php
function makeMultiplier(int $factor): Closure {
    return function(int $n) use ($factor): int {
        return $n * $factor;
    };
}

$triple  = makeMultiplier(3);
$tenX    = makeMultiplier(10);

echo $triple(5);   // 15
echo $tenX(5);     // 50

Kapanışlar ve use

Kapanışlar, dış kapsamdaki değişkenleri use ile yakalayabilir. & eklemediğiniz sürece yakalama değer yoluyla yapılır (kopyalanır):

<?php
$taxRate = 0.18;

$addTax = function(float $price) use ($taxRate): float {
    return $price * (1 + $taxRate);
};

$taxRate = 0.20;  // change outer variable
echo $addTax(100); // 118 — captured value at creation time

use(&) ile Referansla Yakalama

Kapanışın güncellenmiş dış değerleri görebilmesi için referansla yakalayın:

<?php
$count = 0;

$increment = function() use (&$count): void {
    $count++;
};

$increment();
$increment();
echo $count;  // 2

Ok Fonksiyonları (PHP 7.4)

Ok fonksiyonları, dış kapsamı otomatik olarak değer yoluyla yakalayan, tek ifadeli ve kısa kapanışlardır:

<?php
$rate = 1.18;
$prices = [10, 20, 30];

// Arrow function — no 'use' needed
$withTax = array_map(fn($p) => $p * $rate, $prices);

print_r($withTax); // [11.8, 23.6, 35.4]

Ok Fonksiyonları Dış Kapsamı Değiştiremez

Ok fonksiyonları yalnızca değer yoluyla yakalar — dış değişkenleri değiştiremez:

<?php
$total = 0;
$nums  = [1, 2, 3];

// This does NOT modify $total!
array_walk($nums, fn($n) => $total += $n);

echo $total;  // 0

// Use a reference closure for mutation:
array_walk($nums, function($n) use (&$total) { $total += $n; });
echo $total;  // 6

Geri Çağırma İşlevleri Olarak Kapanışlar

Birçok PHP işlevi çağrılabilir bir değer kabul eder — bir kapanış, [$obj, 'method'] dizisi veya bir dize biçiminde işlev adı geçirebilirsiniz:

<?php
$words = ['banana', 'apple', 'cherry'];

usort($words, fn($a, $b) => strcmp($a, $b));

print_r($words); // ['apple', 'banana', 'cherry']

Hemen Çağrılan Kapanış

Bir kapanışı aynı satırda tanımlayıp çağırabilirsiniz — yalıtılmış bir kapsam oluşturmak için kullanışlıdır:

<?php
$result = (function(): int {
    $x = 10;
    $y = 20;
    return $x + $y;
})();

echo $result; // 30
// $x and $y are not in outer scope

Closure::bind ve bindTo

Closure::bind() kullanarak bir kapanışı farklı bir nesnenin bağlamına yeniden bağlayabilirsiniz:

<?php
class Counter {
    private int $value = 0;
}

$increment = Closure::bind(function(int $by): void {
    $this->value += $by;
}, new Counter(), Counter::class);

// Now $increment has access to private $value

Hızlı Kontrol

PHP'de use kullanan normal bir kapanış ile ok fonksiyonu arasındaki temel fark aşağıdakilerden hangisidir?

Özet: Anonim Fonksiyonlar ve Kapanışlar

Özet:

  • Anonim fonksiyonlar değişkenlerde saklanır ve aktarılır
  • Kapanışlar, dış değişkenleri use($var) ile (değer yoluyla) veya use(&$var) ile (referans yoluyla) yakalar
  • Ok fonksiyonları (PHP 7.4), dış kapsamı otomatik olarak değer yoluyla yakalar
  • Geri çağırma işlevleri için kullanışlıdır: array_map, usort, array_filter…
  • Fabrika fonksiyonlarından döndürülebilir

Sıkça Sorulan Sorular

“Anonim İşlevler ve Kapanışlar” dersi ücretsiz mi?

Evet — “Anonim İşlevler ve Kapanışlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.

“Anonim İşlevler ve Kapanışlar” dersinde ne öğreneceğim?

Satır içi işlevler yazın ve use ile değişkenleri yakalayın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

PHP Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Anonim İşlevler ve Kapanışlar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İşlev Tanımlama ve Çağırma
  2. Varsayılan ve Değişken Sayıda Parametreler
  3. Değişken Kapsamı: Yerel ve Genel
  4. Anonim İşlevler ve Kapanışlar
← PHP Academy Sayfasına Dön