Nurul Imam Studio

Belajar HTML, CSS, JavaScript, PHP & MySQL untuk pemula & tingkat lanjut

Jasa Pembuatan Website Profesional

PHP5 Anonymous Function / Lambda & Closure

Setelah kita menyelesaikan pembelajaran sederhana oop dan berlatih membuat kalkulator sederhana dengan php oop, selanjutnya kita mempelajari Anonymous Function / Lambda dan Closure pada php. Anonymous Function adalah sebuah function php yang tidak diketahui namanya. Maksud dari tanpa nama adalah tidak memberikan nama untuk function yang kita buat. Lalu bagaimana cara membuat dan memanggil function tersebut ? Biasanya kita membuat function dengan syntax berikut ini.

<?php
function NamaMahasiswa()
{
  return "Nurul Imam";
}

function Sapa($nama)
{
  echo "Hai, ".$nama."<br />";
}

Sapa(NamaMahasiswa());
?>

Syntax diatas membuat 2 function, function pertama NamaMahasiswa() untuk menampilkan Nurul Imam dan function kedua Sapa($nama) yang menampilkan Hai dan menerima parameter string $nama yang kita isi dengan NamaMahasiswa() yang berisi string. Silahkan dicoba dan dijalankan.

Demo   Download

Jika function biasa seperti diatas ada nama functionnya. Nah, untuk Anonymous Funtion tidak mempunyai nama. Perhatikan syntax berikut ini.

<?php
$nama = function ()
{
  return "Nurul Imam";
};

function Sapa($nama)
{
  echo "Hai, ".$nama."<br />";
}

Sapa($nama());
?>
Demo   Download

Sudah paham dengan Anonymous Function ? Oke, kita lanjut ke bagian Closure. Closure ini mirip dengan Anonymous Function. Namun, Closure dapat menerima parameter dan mengakses variable dari luar fungsi. Contohnya bisa anda perhatikan syntax berikut ini.

<?php
$namadepan = "Nurul";
$namabelakang = "Imam";

$namalengkap = function () use ($namadepan, $namabelakang)
{
  return $namadepan." ".$namabelakang;
};
function Sapa($nama)
{
  echo "Hai, ".$nama."<br />";
}

Sapa($nama());
?>
Demo   Download

Closure ini biasanya digunakan pada fungsi yang memerlukan callback sebagai parameternya. Apa itu callback ? Callback adalah parameter yang berbentuk fungsi. Contohnya fungsi bawaan php adalah array_walk() yang mengiterasi (sama seperti foreach) elemen dari suatu array. Parameter pertama dari array_walk() ini array dan parameter keduanya adalah callback. Callback ini adalah closure. Paham yah :D Oke kita coba syntax dibawah ini biar paham.

<?php
  $minimal = 60;
  $mahasiswa = array(
    array("nama" => "Nurul Imam",
          "nilai" => 90),
    array("nama" => "Zaenal Muttaqien",
          "nilai" => 55)
    );

  array_walk($mahasiswa, function ($siswa) use ($minimal) {
    echo "Nama : ".$siswa['nama']."<br />";
    echo "Nilai : ".$siswa['nilai']."<br />";
    echo "Keterangan : ";

    if ($siswa['nilai'] >= $minimal) {
      echo "Lulus <br /><br />";
    } else {
      echo "Gagal <br /><br />";
    }
  });
?>

Syntax diatas menggunakan fungsi array_walk() untuk melooping semua elemen dari array $mahasiswa dan parameter kedua berisikan closure untuk memproses setiap elemen array $mahasiswa tadi agar menampilkan nama, nilai, dan keterangan dengan berdasarkan variable $minimal. Silahkan lihat demonya dibawah ini.

Demo   Download

Sekian pembelajaran php oop sesi Anonymous Function / Lambda & Closure. Pembelajaran selanjutnya akan membahas tentang Fungsi Autoloader dalam PHP5. Pembahasan ini akan terus berlanjut, jadi tetep pantengin yah Daftar Pembelajaran PHP OOP ini. :)

7 Comments

  1. Pen QuranReply

    ok sip gan, sangat bermanfaat

    • Nurul ImamReply

      Sip, sama-sama :)

  2. audio sholatReply

    Terima kasih atas penjelasannya, sangat bermanfaat ilmunya.

  3. Aldi UnantoReply

    Andai closure tidak perlu menggunakan keyword ‘use’ untuk menggunakan variable dari luar fungsi, pasti jadi lebih praktis ya gan :D sayangnya rules-nya memang harus seperti itu.. hehe
    Anyway, thanks.

    • Ahmad OrizaReply

      Ada cara lain, manfaatin superglobals buat akses variabel diluar scope anonymous function

      $name = ‘John';

      $result = function ($arg){
      echo $GLOBALS[‘name’] .’ ‘. $arg;
      };

      echo $result(‘Doe’);

  4. audio shalatReply

    oh gitu rupanya gan, mantap

  5. en-teknoReply

    wah blognya keren, ini pakai wordpress ya ?
    Saya suka dengan artikelnya.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>