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); // 42Anonim 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); // 50Kapanış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 timeuse(&) 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; // 2Ok 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; // 6Geri Ç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 scopeClosure::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 $valueHı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) veyause(&$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
- İşlev Tanımlama ve Çağırma
- Varsayılan ve Değişken Sayıda Parametreler
- Değişken Kapsamı: Yerel ve Genel
- Anonim İşlevler ve Kapanışlar