Home » PHP » Fungsi Callback di PHP – Kode dan Contohnya

Fungsi Callback di PHP – Kode dan Contohnya

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Fungsi Callback

Fungsi callback (sering disebut hanya “callback”) adalah fungsi yang dikirimkan sebagai argumen ke fungsi lain.

Fungsi apa pun yang ada dapat digunakan sebagai fungsi callback. Untuk menggunakan fungsi sebagai fungsi callback, berikan string yang berisi nama fungsi sebagai argumen fungsi lain:

Contoh :

Meneruskan callback ke fungsi PHP array_map() untuk menghitung panjang setiap string dalam array:

<?php
function my_callback($item) {
  return strlen($item);
}

$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?>
  /* Output 
  Array
(
    [0] => 5
    [1] => 6
    [2] => 6
    [3] => 7
)
  /

Dimulai dengan versi PHP 7 maka dapat meneruskan fungsi anonim sebagai fungsi callback:

Contoh :

Gunakan fungsi anonim sebagai callback untuk fungsi array_map() PHP:

<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map( function($item) { return strlen($item); } , $strings);
print_r($lengths);
?>
  /* Output 
  Array
(
    [0] => 5
    [1] => 6
    [2] => 6
    [3] => 7
)
  */

Callbacks di User Defined Functions

Fungsi dan metode yang ditentukan pengguna juga dapat menggunakan fungsi callback sebagai argumen. Untuk menggunakan fungsi callback di dalam fungsi atau metode yang ditentukan pengguna, panggil dengan menambahkan tanda kurung ke variabel dan berikan argumen seperti pada fungsi normal:

Contoh :

Jalankan callback dari fungsi yang ditentukan pengguna:

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

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

function printFormatted($str, $format) {
  // Memanggil fungsi callback $format
  echo $format($str);
}

// Berikan "exclaim" dan "ask" sebagai fungsi panggilan balik ke printFormatted ()
printFormatted("Hello world", "exclaim");
printFormatted("Hello world", "ask");
?>
  
  /*Output
  Hello world! Hello world?
  */

You may also like