Pada artikel sebelumnya kita telah membahas tentang apa itu JSON. Nah kali ini kita akan membahas tentang Anonymous Function/Lambda dan Closure, Ukee mari kita bahas satu persatu dan kita mulai dari Anonymous Function atau Lambda.

Apa itu Anonymous Function/Lamda?

Apakah anda pernah menonton film Hacker? mereka sering menyebutkan dirinya sebagai anonymous kan? tidak mau menyebutkan nama asli mereka kan? Nah, Anonymous Function/Lambda pun sama, mereka berdua tidak mau menyebutkan namanya tetapi tindakan dan perlakuannya sangat terasa oleh kita. Pada dasarnya, ini adalah sebuah fungsi (function) biasa tapi mempunyai keistimewaan yaitu tidak mempunyai nama. Ukee perhatikan contoh syntax ini :

function nama () {
    return "Imam";
}

function sekolah ($nama) {
    return $nama . " rajin sekolah! :D";
}

echo sekolah(nama());

Pembaca yang baik pasti akan tahu bahwa itu adalah function biasa :P. Ukee mari kita jalankan bagaimana hasilnya?

Function Basic

Anonymous function :

function () {
    return "Imam";
}

Tapi tunggu dulu, jika kita ingin menggunakan function ini kita perlu mempassing function tersebut ke sebuah variable. Contohnya seperti ini :

$nama = function () {
    return "Imam";
};

function sekolah ($nama) {
    return $nama . " rajin sekolah! :D";
}

echo sekolah($nama());

Perhatikan di baris ke 1, disitu kita mempassing anonymous function ke sebuah variable yaitu (nama) dan tentunya di akhir function yaitu ( } ) pada baris ke 3 kita perlu menutup block dengan ( ; ) perhatikan juga di baris 9 kita perlu menambahkan tanda ( $ ) untuk memanggilnya sebagaimana pemanggilan variable seperti biasanya.

Coba jalankan, seperti apa hasilnya? seharunya hasilnya akan tetap sama!

Function Anonymous

Sudah paham? Jika sudah paham, mari kita lanjutkan ke Closure.

Apa itu Closure?

Sama dengan Anonymous Function/Lambda, Closure juga berbentuk fungsi (function) tapi perbedaannya ada di kemampuannya yaitu closure dapat mengakses parameter dan variable dari luar function itu sendiri dan biasanya closure ini digunakan pada function yang menggunakan callback sebagai parameternya. Perhatikan, contohnya seperti :

$nama_depan = "Imam";
$nama_belakang = "Digm";

function sekolah ($namaLengkap) {
    return $namaLengkap . " rajin sekolah! :D";
}

$namaLengkap = function () use ($nama_depan, $nama_belakang) {
    return $nama_depan . " " . $nama_belakang;
}

echo sekolah($namaLengkap());

Perhatikan di baris 8, terlihat bahwa jika kita ingin mengakses variable yaitu ($nama_depan, $nama_belakang) dari luar closure kita harus menggunakan keyword use. Dan jika dijalankan hasilnya akan tetap sama.

Closure

Itu masih closure biasa seperti anonymous, tapi bagaimana jika closure ini di gunakan sebagai parameter dari sebuah function? Contohnya seperti apa? Pernah menggunakan function array_walk() bawaan dari PHP yang return valuenya boolean? Jika sudah maka parameter kedua itu dinamakan callback.

Apa itu callback?

Callback adalah sebuah parameter atau argumen pada sebuah function yang berupa function, bisa juga teknik Closure ini dinamakan inner-function jadi ada function di dalam function. Ukee saya kasih contoh :

$min = 65;
$nilai = [
    ['nama' => 'Imam', 'nilai' => 70],
    ['nama' => 'Ramita', 'nilai' => 55],
    ['nama' => 'Rosmini', 'nilai' => 85],
];
array_walk($nilai, function ($siswa) use ($min) {
    echo $siswa['nama'] . " = " . $siswa['nilai'] . " -> ";
    $status = ($siswa['nilai'] >= $min) ? "Lulus" : "Tidak Lulus";
    echo $status;
    echo "\n";
});

Bagaimana jika code diatas kita dijalankan?

Closure as Callback

Sudah paham kan? 😄

Semoga paham dan jika belum paham silahkan kasih komentar dikotak disqus yang ada di bawah ini atau anda dibaca ulang lagi lebih teliti ya, karena teknik-teknik ini akan sering kita gunakan didalam pengembangan aplikasi yang menggunakan Laravel.