PHP Anonim Fonksiyonlar

Bu yazımızda PHP dilinde kullanılan anonim (callback) fonksiyonlardan bahsedeceğiz. Önce Anonimin kelime anlamına bakalım.

Anonim kelimesi dilimize Fransızcadan geçmiştir ve "adı bilinmeyen, anlamsız" anlamına gelen bir kelimedir.

Php dilinde ise anonim fonksiyonlar diğer fonksiyonlardan bağımsız, bir değişkene atanan fonksiyonlardır. Php'de bir çok yerleşik anonim fonksiyon bulunmaktadır.

Şimdi bir örnek yapalım. İlk kod bloğumuzda anonim fonksiyon özelliğini kullanmadan yazalım.

<?php
function geri_cagir($key) {
  return strlen($key);
}

$rastgele= ["kivi""çilek""mısır""fındık"];
$uzunluk= array_map("geri_cagir", $rastgele);
print_r($uzunluk);
?>

İkinci kod bloğumuzda ise aynı örneği anonim fonksiyon kullanarak yapalım.

<?php
$rastgele= ["kivi""çilek""mısır""fındık"];
$uzunluk= array_map( function($key) return strlen($key); } , $rastgele);
print_r($lengths);
?>

Yukardaki kod bloklarının farkına gelirsek, gördüğünüz üzere ikinci kod bloğu daha kısa kod içeriyor ama ikisi de aynı işlevi görüyor. Bunun nedeni birinci kod bloğunda fonksiyonu global olarak, ikinci kod bloğunda ise array_map() fonksiyonunun içine global fonksiyon olarak yazmamızdır.


Kullanıcı Tanımlı Anonim Fonksiyonlar

Kullanıcı tanımlı fonksiyonlar ve yöntemler, anonim fonksiyonların işlevlerini bağımsız değişken olarak alabilir. Kullanıcı tanımlı bir fonksiyon veya yöntem içinde anonim fonksiyonları kullanmak için, değişkene parantez ekleyerek çağırın ve normal fonksiyonlarda olduğu gibi bağımsız değişkenler iletin:

<?php
function sasirmak($str) {
  return $str . "! ";
}


function soru($str) {
  return $str . "? ";
}


function yazdirma_formati($str, $format) {
  // Format değişkeni callback fonksiyona dönüştü
  echo $format($str);
}
 
yazdirma_formati("Merhaba KodlamakLazım", "sasirmak");
echo "<br>";
yazdirma_formati("Merhaba Zafer", "soru");
?>


YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.