Hikayeler

Reklam vermek için turkmmo@gmail.com

PHP - Fonksiyonları Geçirme

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
Katılım
2 Mar 2015
Konular
59,185
Mesajlar
88,376
Online süresi
4ay 14g
Reaksiyon Skoru
14,227
Altın Konu
2,398
Başarım Puanı
1,051
TM Yaşı
11 Yıl 1 Ay 21 Gün
MmoLira
694,336
DevLira
234

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

php.png


PHP'deki bir fonksiyona, skaler tiplere, dizilere ve nesnelere ek olarak, bir fonksiyonu argümanlarından biri olarak da geçirebilirsiniz. Bir fonksiyon, başka bir fonksiyonu argüman olarak kabul edecek şekilde tanımlanmışsa, geçirilen fonksiyon onun içinde çağrılır. PHP'nin standart kütüphanesinde, geçirilecek argümanlardan birinin bir fonksiyon olduğu, başka bir yerleşik fonksiyon veya hatta kullanıcı tanımlı bir fonksiyon olabilen bu türden belirli yerleşik fonksiyonlar vardır.

array_map (dizi_haritası)​

array_map() yerleşik işlevlerden biridir. Bu işlevin ilk argümanı bir geri çağırma işlevidir. Diğer argümanlar olarak bir veya daha fazla dizi olabilir. Geri çağırma işlevi dizilerin tüm elemanlarına uygulanır.

array_map(?callable $callback, array $array, array ...$arrays): array

array_map() fonksiyonu bir dizi döndürür. Geri çağırma fonksiyonunun diğer argümanlar olarak geçirilen dizilerin karşılık gelen elemanlarına uygulanmasının sonucunu içerir.

Örnek

Aşağıdaki örnekte, kendisine geçirilen bir sayının karesini hesaplayan bir square() fonksiyonumuz var. Bu fonksiyon, başka bir sayı dizisiyle birlikte array_map() fonksiyonu için bir argüman olarak kullanılır. Her sayı sırayla squares() fonksiyonuna geçirilir. Sonuç dizisi bir kareler listesidir.

PHP:
<?php
   function square($number) {
      return $number * $number;
   }

   $arr = [1, 2, 3, 4, 5];
   $squares = array_map('square', $arr);
   var_dump($squares);
?>

Aşağıdaki çıktıyı üretecektir:

array(5) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(9)
[3]=>
int(16)
[4]=>
int(25)
}

call_user_func (çağrı_kullanıcı_fonksiyonu)

Bir fonksiyonu başka bir fonksiyona geçirmenin bir başka örneği call_user_func()'dır. Adından da anlaşılacağı gibi, başka bir kullanıcı tanımlı geri çağırma fonksiyonunu çağırır ve diğer argümanlar geri çağırmaya geçirilir.

call_user_func(callable $callback, mixed ...$args): mixed

Örnek

Aşağıdaki örnekte, square() fonksiyonu tekrar tekrar çağrılarak dizideki her sayı geçirilir.

PHP:
<?php
   function square($number) {
      return $number * $number;
   }
   $arr = [1, 2, 3, 4, 5];
   foreach($arr as $a) {
      echo "square of $a:" . call_user_func("square", $a). PHP_EOL;
   }
?>

Aşağıdaki çıktıyı üretecektir:

square of 1:1
square of 2:4
square of 3:9
square of 4:16
square of 5:25

Usort​

Fonksiyon geçirmenin bir başka örneği olarak usort() fonksiyonuna bakalım.


usort(array &$array, callable $callback): true

İlk parametre bir dizidir. Dizi, ikinci parametre olan geri çağırma fonksiyonuna göre sıralanır.

Geri çağırma parametresi bir karşılaştırma fonksiyonudur ve ilk argümanın ikinci argümandan küçük, eşit veya büyük olduğu düşünülürse sıfırdan küçük, eşit veya büyük bir tam sayı döndürmelidir.

Örnek

İşte bir örnek. Önce bir mysort() fonksiyonumuz var. İki sayıyı karşılaştırır ve ilk sayı ikinci sayıdan küçük, eşit veya büyükse "-1", "0" veya "1" döndürür.

usort()' un ilk argümanı mysort() fonksiyonudur ve ikincisi bir dizidir. Başlamak için, ilk iki sayı mysort()'a geçirilir. 1 döndürürse, bunlar değiştirilir. Sonra, karşılaştırma 1 döndürürse, ikinci ve üçüncü sayılar geçirilir ve değiştirilir. Aynı işlem, dizi elemanlarının artan düzende düzenlenmesi için tekrarlanır.

PHP:
<?php
   function mysort($a, $b) {
      if ($a == $b) {
         return 0;
      }
      return ($a < $b) ? -1 : 1;
   }

   $a = array(3, 2, 5, 6, 1);

   usort($a, "mysort");

   foreach ($a as $key => $value) {
      echo "$key: $value\n";
   }
?>

Aşağıdaki çıktıyı üretecektir:

0: 1
1: 2
2: 3
3: 5
4: 6

Kullanıcı tanımlı fonksiyona geri aramayı geçir

Yukarıdaki yerleşik fonksiyonların dışında, argümanlardan birini başka bir fonksiyon olarak kabul eden kendi fonksiyonunuzu tanımlayabilirsiniz.

Aşağıdaki örnekte, verilen sayının karesini ve küpünü döndüren square() ve cube() adında iki fonksiyonumuz var.

Sonra, ilk argümanı değişken fonksiyon olarak kullanılan ve myfunction() 'ın ikinci argümanı ona geçirilen myfunction() var.

Bu nedenle, myfunction() dahili olarak square() veya cube()'ü çağırarak verilen sayının karesini veya küpünü döndürür.

Örnek


PHP:
<?php
   function myfunction($function, $number) {
      $result = $function($number);
      return $result;
   }

   function cube($number) {
      return $number ** 2;
   }

   function square($number) {
      return $number ** 3;
   }

   $x = 5;

   $cube = myfunction('cube', $x);
   $square = myfunction('square', $x);

   echo "Square of $x = $square" . PHP_EOL;
   echo "Cube of $x = $cube" . PHP_EOL;
?>

Aşağıdaki çıktıyı üretecektir:

Square of 5 = 125
Cube of 5 = 25
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst