Php meneruskan parameter ke fungsi panggilan balik

function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}

// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>

Selamat datang di tutorial singkat dan contoh fungsi callback PHP. Fungsi adalah salah satu hal paling mendasar yang kita pelajari di PHP, lalu ikuti dengan hal "fungsi panggilan balik" ini… Jadi, apa itu panggilan balik?

Secara sederhana, fungsi callback adalah

  • Fungsi yang diteruskan ke fungsi lain sebagai parameter
  • Fungsi tersebut kemudian dipanggil di dalam fungsi lain itu sendiri

Ya, itu saja. Panggilan balik sebenarnya sederhana, tetapi pada saat yang sama membingungkan. Mari kita telusuri beberapa contoh dalam panduan ini – Baca terus

ⓘ Saya telah menyertakan file zip dengan semua kode sumber di awal tutorial ini, jadi Anda tidak perlu menyalin-tempel semuanya… Atau jika Anda hanya ingin langsung masuk

 

 

TLDR – SLIDE CEPAT

Unduh & Catatan

 

UNDUH & CATATAN

Pertama, berikut adalah tautan unduhan ke kode contoh seperti yang dijanjikan

 

CATATAN CEPAT

Jika Anda menemukan bug, jangan ragu untuk berkomentar di bawah ini. Saya mencoba menjawab pertanyaan singkat juga, tetapi itu adalah satu orang versus seluruh dunia… Jika Anda sangat membutuhkan jawaban, silakan periksa daftar situs web saya untuk mendapatkan bantuan dalam pemrograman

 

DOWNLOAD KODE CONTOH

Klik di sini untuk mengunduh kode sumber contoh, saya telah merilisnya di bawah lisensi MIT, jadi silakan membangun di atasnya atau menggunakannya dalam proyek Anda sendiri

 

 

CONTOH FUNGSI CALLBACK

Baiklah, sekarang mari kita masuk ke contoh fungsi callback PHP

 

CONTOH 1) FUNGSI PANGGILAN KLASIK

1-klasik. php

<?php
// (A) FUNCTION TO CALLBACK
function funky () { echo "YO!"; }

// (B) PASS FUNKY() INTO CALL_USER_FUNC()
call_user_func("funky");

Pertama, kami memiliki contoh yang sangat sederhana dan klasik di sini. Ingat dua "kondisi" dari apa yang membuat fungsi callback?

  • Meneruskan fungsi sebagai parameter ke fungsi lain – Kami meneruskan funky() ke call_user_func() sebagai parameter
  • Fungsi callback dipanggil di dalam fungsi itu sendiri – call_user_func() memanggil funky()

Untuk orang-orang yang belum tahu dari mana nama "callback" berasal – Kami meneruskan funky() ke call_user_func(), lalu call_user_func() memanggil kembali . Mengerti?

 

CONTOH 2) SATU LAGI YANG SEDERHANA

2-sederhana. php

// (A) FUNCTIONS TO CALL BACK
function funkyA () { echo "YO!"; }
function funkyB () { echo "MAN!"; }
 
// (B) THE "MAIN" FUNCTION
function getFunky ($callback) {
  if (is_callable($callback)) { $callback(); }
}
 
// (C) PASS CALLBACK FUNCTIONS INTO "MAIN FUNCTION"
getFunky("funkyA");
getFunky("funkyB");
_

Mari kita tingkatkan "sangat sederhana" menjadi "sederhana". Ini akan terlihat seperti "panggilan balik umum".

  • Kami memiliki fungsi
    // (A) FUNCTIONS TO CALL BACK
    function funkyA () { echo "YO!"; }
    function funkyB () { echo "MAN!"; }
     
    // (B) THE "MAIN" FUNCTION
    function getFunky ($callback) {
      if (is_callable($callback)) { $callback(); }
    }
     
    // (C) PASS CALLBACK FUNCTIONS INTO "MAIN FUNCTION"
    getFunky("funkyA");
    getFunky("funkyB");
    _4 "utama" yang akan memanggil kembali ke
    // (A) FUNCTIONS TO CALL BACK
    function funkyA () { echo "YO!"; }
    function funkyB () { echo "MAN!"; }
     
    // (B) THE "MAIN" FUNCTION
    function getFunky ($callback) {
      if (is_callable($callback)) { $callback(); }
    }
     
    // (C) PASS CALLBACK FUNCTIONS INTO "MAIN FUNCTION"
    getFunky("funkyA");
    getFunky("funkyB");
    5 jika ditentukan
  • Jadi, sangat mudah -
    • // (A) FUNCTIONS TO CALL BACK
      function funkyA () { echo "YO!"; }
      function funkyB () { echo "MAN!"; }
       
      // (B) THE "MAIN" FUNCTION
      function getFunky ($callback) {
        if (is_callable($callback)) { $callback(); }
      }
       
      // (C) PASS CALLBACK FUNCTIONS INTO "MAIN FUNCTION"
      getFunky("funkyA");
      getFunky("funkyB");
      _6 akan menelepon kembali ke
      // (A) FUNCTIONS TO CALL BACK
      function funkyA () { echo "YO!"; }
      function funkyB () { echo "MAN!"; }
       
      // (B) THE "MAIN" FUNCTION
      function getFunky ($callback) {
        if (is_callable($callback)) { $callback(); }
      }
       
      // (C) PASS CALLBACK FUNCTIONS INTO "MAIN FUNCTION"
      getFunky("funkyA");
      getFunky("funkyB");
      7
    • // (A) FUNCTIONS TO CALL BACK
      function funkyA () { echo "YO!"; }
      function funkyB () { echo "MAN!"; }
       
      // (B) THE "MAIN" FUNCTION
      function getFunky ($callback) {
        if (is_callable($callback)) { $callback(); }
      }
       
      // (C) PASS CALLBACK FUNCTIONS INTO "MAIN FUNCTION"
      getFunky("funkyA");
      getFunky("funkyB");
      _8 akan menelepon kembali ke
      // (A) FUNCTIONS TO CALL BACK
      function funkyA () { echo "YO!"; }
      function funkyB () { echo "MAN!"; }
       
      // (B) THE "MAIN" FUNCTION
      function getFunky ($callback) {
        if (is_callable($callback)) { $callback(); }
      }
       
      // (C) PASS CALLBACK FUNCTIONS INTO "MAIN FUNCTION"
      getFunky("funkyA");
      getFunky("funkyB");
      9

Mengenai mengapa kami melakukan cara "bodoh" ini untuk meneruskan suatu fungsi ke dalam suatu fungsi, lihat contoh berikut

 

 

CONTOH 3) LULUSKAN PARAMETER KE FUNGSI CALLBACK

3-parameter. php

<?php
// (A) "MAIN FUNCTION"
function repeater ($num, $callback) {
  return $callback($num);
}
 
// (B) CALLBACK FUNCTIONS
function twice ($num) { return $num * 2; }
function thrice ($num) { return $num * 3; }
 
// (C) RUN!
echo repeater(12, "twice"); // 24
echo repeater(12, "thrice"); // 36
_

Sebelum troll yang marah berteriak "ini bodoh, kita bisa langsung memanggil

<?php
// (A) "MAIN FUNCTION"
function repeater ($num, $callback) {
  return $callback($num);
}
 
// (B) CALLBACK FUNCTIONS
function twice ($num) { return $num * 2; }
function thrice ($num) { return $num * 3; }
 
// (C) RUN!
echo repeater(12, "twice"); // 24
echo repeater(12, "thrice"); // 36
0 dan itu akan melakukan hal yang sama" - Ya, inti dari contoh ini adalah untuk mengilustrasikan

  • Fungsi panggilan balik masih berfungsi. Kita dapat meneruskan variabel ke dalam fungsi callback
  • Gagasan menggunakan fungsi panggilan balik adalah untuk "menggunakan kembali fungsi utama, tetapi memodifikasi cara kerjanya". Baca "contoh praktis" berikutnya di bawah ini

 

CONTOH 4) CALLBACK FETCH CURL

4-ikal. php

<?php
// (A) "MAIN" FUNCTION - CURL FETCH
function fetch ($url, $after) {
  // (A1) FETCH CONTENT FROM URL
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
 
  // (A2) CALLBACK AFTER CURL FETCH
  if (is_callable($after)) { $after($result); }
}
 
// (B) CALLBACK FUNCTIONS
function save ($data) { file_put_contents("demo.html", $data); }
function show ($data) { echo $data; }
 
// (C) GO!
fetch("https://en.wikipedia.org/wiki/Rule-based_system", "save");
fetch("https://code-boxx.com", "show");
  1. “Fungsi utama”
    <?php
    // (A) "MAIN FUNCTION"
    function repeater ($num, $callback) {
      return $callback($num);
    }
     
    // (B) CALLBACK FUNCTIONS
    function twice ($num) { return $num * 2; }
    function thrice ($num) { return $num * 3; }
     
    // (C) RUN!
    echo repeater(12, "twice"); // 24
    echo repeater(12, "thrice"); // 36
    1 akan mendapatkan konten dari
    <?php
    // (A) "MAIN FUNCTION"
    function repeater ($num, $callback) {
      return $callback($num);
    }
     
    // (B) CALLBACK FUNCTIONS
    function twice ($num) { return $num * 2; }
    function thrice ($num) { return $num * 3; }
     
    // (C) RUN!
    echo repeater(12, "twice"); // 24
    echo repeater(12, "thrice"); // 36
    2 yang Anda tentukan, lalu meneruskannya ke fungsi callback
    <?php
    // (A) "MAIN FUNCTION"
    function repeater ($num, $callback) {
      return $callback($num);
    }
     
    // (B) CALLBACK FUNCTIONS
    function twice ($num) { return $num * 2; }
    function thrice ($num) { return $num * 3; }
     
    // (C) RUN!
    echo repeater(12, "twice"); // 24
    echo repeater(12, "thrice"); // 36
    3
  2. Kami memiliki 2 fungsi panggilan balik di sini
    • <?php
      // (A) "MAIN FUNCTION"
      function repeater ($num, $callback) {
        return $callback($num);
      }
       
      // (B) CALLBACK FUNCTIONS
      function twice ($num) { return $num * 2; }
      function thrice ($num) { return $num * 3; }
       
      // (C) RUN!
      echo repeater(12, "twice"); // 24
      echo repeater(12, "thrice"); // 36
      4 akan menyimpan
      <?php
      // (A) "MAIN FUNCTION"
      function repeater ($num, $callback) {
        return $callback($num);
      }
       
      // (B) CALLBACK FUNCTIONS
      function twice ($num) { return $num * 2; }
      function thrice ($num) { return $num * 3; }
       
      // (C) RUN!
      echo repeater(12, "twice"); // 24
      echo repeater(12, "thrice"); // 36
      5 yang diberikan ke dalam file
    • Sementara
      <?php
      // (A) "MAIN FUNCTION"
      function repeater ($num, $callback) {
        return $callback($num);
      }
       
      // (B) CALLBACK FUNCTIONS
      function twice ($num) { return $num * 2; }
      function thrice ($num) { return $num * 3; }
       
      // (C) RUN!
      echo repeater(12, "twice"); // 24
      echo repeater(12, "thrice"); // 36
      6 akan langsung menampilkan
      <?php
      // (A) "MAIN FUNCTION"
      function repeater ($num, $callback) {
        return $callback($num);
      }
       
      // (B) CALLBACK FUNCTIONS
      function twice ($num) { return $num * 2; }
      function thrice ($num) { return $num * 3; }
       
      // (C) RUN!
      echo repeater(12, "twice"); // 24
      echo repeater(12, "thrice"); // 36
      5

Seperti yang Anda lihat, proses utama

<?php
// (A) "MAIN FUNCTION"
function repeater ($num, $callback) {
  return $callback($num);
}
 
// (B) CALLBACK FUNCTIONS
function twice ($num) { return $num * 2; }
function thrice ($num) { return $num * 3; }
 
// (C) RUN!
echo repeater(12, "twice"); // 24
echo repeater(12, "thrice"); // 36
1 adalah mendapatkan konten dari situs web. Tetapi tergantung pada fungsi panggilan balik yang diteruskan, itu akan bertindak sangat berbeda. Itu adalah bagian cerdas tentang fungsi panggilan balik – Gunakan kembali fungsi dengan cara yang berbeda

 

 

CONTOH 5) FUNGSI CALLBACK DI KELAS

5-kelas-panggilan balik. php

<?php
// (A) CLASS - STATIC FUNCTION TO CALLBACK
class MyClass {
  public static function MyFunc () { echo "FOO!"; }
}
 
// (B) THE "MAIN" FUNCTION
function funky ($callback) {
  if (is_callable($callback)) { $callback(); }
}
 
// (C) PASS STATIC FUNCTION MYFUNC() INTO FUNKY()
funky("MyClass::MyFunc");

Ya, sesederhana itu –

<?php
// (A) "MAIN FUNCTION"
function repeater ($num, $callback) {
  return $callback($num);
}
 
// (B) CALLBACK FUNCTIONS
function twice ($num) { return $num * 2; }
function thrice ($num) { return $num * 3; }
 
// (C) RUN!
echo repeater(12, "twice"); // 24
echo repeater(12, "thrice"); // 36
9 jika Anda perlu memanggil kembali fungsi di kelas. Tetapi perhatikan bahwa fungsi panggilan balik harus
<?php
// (A) "MAIN" FUNCTION - CURL FETCH
function fetch ($url, $after) {
  // (A1) FETCH CONTENT FROM URL
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
 
  // (A2) CALLBACK AFTER CURL FETCH
  if (is_callable($after)) { $after($result); }
}
 
// (B) CALLBACK FUNCTIONS
function save ($data) { file_put_contents("demo.html", $data); }
function show ($data) { echo $data; }
 
// (C) GO!
fetch("https://en.wikipedia.org/wiki/Rule-based_system", "save");
fetch("https://code-boxx.com", "show");
0 atau PHP akan membuat kesalahan

 

CONTOH 6) FUNGSI PANGGILAN PADA OBJEK

6-objek-panggilan balik. php

<?php
// (A) OBJECT - TO CALLBACK MYFUNC()
class MyClass {
  public function MyFunc () { echo "FOO!"; }
}
$myObj = new MyClass();
 
// (B) THE "MAIN" FUNCTION
function funky ($callback) {
  // (B1) FUNCTION IN OBJECT
  if (is_array($callback)) { call_user_func($callback); }
 
  // (B2) "REGULAR" CALLBACK FUNCTIONS
  else if (is_callable($callback)) { $callback(); }
}
 
// (C) PASS OBJECT + FUNCTION TO CALL
// SINCE OBJECTS ARE NOT GLOBAL, WE HAVE TO PASS IN ENTIRE OBJECT
funky([$myObj, "MyFunc"]);

Terakhir, komplikasi muncul saat memanggil fungsi dalam suatu objek. Karena objek tidak bersifat global, kita harus meneruskan seluruh objek bersama dengan fungsi callback

 

 

Itu saja untuk kodenya, dan berikut adalah beberapa tambahan kecil yang mungkin berguna bagi Anda

 

  • Callback / Panggilan – PHP
  • Panggil Fungsi Pengguna – PHP

 

LEMBAR CHEAT INFOGRAFIS

Terima kasih telah membaca, dan kami telah sampai di akhir panduan ini. Saya harap ini membantu Anda untuk lebih memahami fungsi panggilan balik, dan jika Anda ingin berbagi apa pun dengan panduan ini, jangan ragu untuk berkomentar di bawah ini. Semoga berhasil dan selamat membuat kode

Bagaimana cara melewatkan fungsi callback di PHP?

Panggilan balik sederhana . Contoh. use the call_user_func() function to call functions, where arguments are the function's string name. Example:

Bisakah Anda meneruskan fungsi sebagai parameter dalam PHP?

Ada jenis fungsi lain yang dikenal sebagai fungsi PHP Parameterized, ini adalah fungsi dengan parameter yang telah ditentukan sebelumnya. Anda akan melewatkan sejumlah parameter di dalam fungsi . Parameter yang diteruskan ini bertindak sebagai variabel dalam fungsi Anda. Mereka dideklarasikan di dalam tanda kurung, setelah nama fungsi.

Bagaimana Anda melewatkan fungsi panggilan balik?

Metode meneruskan fungsi sebagai parameter ke fungsi lain untuk menggunakannya di dalam digunakan di pustaka JavaScript hampir di semua tempat. Fungsi Panggilan Balik JavaScript adalah fungsi yang diteruskan sebagai parameter ke fungsi JavaScript lain, dan fungsi panggilan balik dijalankan di dalam fungsi yang diteruskan .

Apa gunanya panggilan balik di PHP?

Fungsi callback (sering disebut hanya sebagai "callback") adalah fungsi yang diteruskan sebagai argumen ke fungsi lain .