Penggunaan fungsi CLOSEURE pada PHP

Assalamu’alaikum, semoga hari Anda menyenangkan karena saya akan mengenalkan apa itu closure, terutama closure
pada PHP. closure atau bisa disebut juga anonymous function adalah fungsi yang tidak memiliki nama.
closures sangat berguna sebagai nilai dari parameter callback, tetapi juga berguna pada penggunaan lain.
untuk lebih jelasnya kita lihat contoh dibawah

$hello = function() {
echo ‘world’;
};
$hello();

untuk memanggil closure gunakan tanda kurung tutup setelah nama variabel. karena closure sebenarnya sama seperti
fungsi pada umumnya, maka kita juga dapat memberikan parameter pada closure.

$hello = function($msg) {
echo $msg . ‘ world’;
};
$hello(‘hello’);

Contoh lain penggunaan closures, array_walk berguna untuk menerapkan fungsi ke setiap elemen pada array.
jika parameter $userdata diisi maka data akan dilewatkan ke fungsi pada parameter ketiga.

$fruits = [‘a’ => ‘Apel’, ‘b’ => ‘Belimbing’, ‘c’ => ‘Cerry’];
array_walk($fruits, function($item, $key) {
echo $key . ‘. ‘ . $item . “\n”;
});

nama parameter tidak harus sama dengan contoh diatas tetapi urutan data tetap sama yaitu nilai array,
kunci dan userdata jika ada.

array_walk($fruits, function(&$item, $key, $prefix) {
echo “$key. $prefix $item\n”;
}, ‘buah’);

jika parameter userdata disertakan maka parameter pertama perlu dilewatkan sebagai referensi bukan sebagai nilai.
agar nilainya dapat dirubah oleh userdata.

lihatlah perbedaannya jika tidak menggunakan closure

function test_print(&$item, $key, $prefix) {
echo “$key. $prefix $item\n”;
}
array_walk($fruits, ‘test_print’, ‘buah’);
sama kan?

sama kan?

perlu diingat bahwa variabel diluar closure tidak dapat diakses, untuk dapat mengakses variabel diluar closure gunakan keyword ‘use’ dan agar variabel diluar closures dapat dirubah didalam closures lewatkan parameter sebagai referensi.
gunakan tanda & sebelum parameter use. lihat contoh dibawah ini

$products = [ [2, 1000], [3, 2000], [2, 3000]];
$tax = 0.05;
$total = 0.00;
array_walk($products, function($product, $key) use($tax, &$total) {
$qty = $product[0];
$price = $product[1];

$total += ($qty * $price) * ($tax+1.0);
});

echo round($total, 2);

terlihat bahwa variabel $tax dapat dibaca didalam closures, dan juga variabel $total dapat berubah nilainya.

sekian dari saya, semoga bermanfaat. jika ada punya pemikiran lain silahkan merespon :)

DI artikel kali ini saya akan membahas tentang Apa Itu Closure DI PHP ?,closure atau anonymous function adalah sebuah fungsi yang ada di konsep OOP yang tidak memiliki nama alias anonymouse. closures sangat berguna sebagai nilai dari parameter callback, tetapi juga berguna pada penggunaan lain.

$dumet=function(){

echo‘Dumet school’;

};

$dumet();

JIka di lihat baris kode di atas itu seperti fungsi biasa yang sering kita buat maka kita sebenarnya juga bisa menambahakan parameter pada closure tersebut sehingga menjadi seperti ini :

$dumet=function($param){

echo$param.‘Hai semuanya’;

};

$dumet(‘Hai semuanya’);

Masih bingung ?
Baiklah saya jelaskan kembali sebelumnya saya menyebutkan closures sangat berguna sebagai nilai dari parameter callback pasti bingung yang di maksud callback di sini apa ? nah callback di php adalah parameter yang berbentuk fungsi. untuk mencontohkanya anda bisa melihat fungsi bawaan php yaitu array_walk() berikut ini .

array_walk($url,function(&$value, &$key) {

    $value = str_replace('Dumet', '', $value);

});

BIsa di lihat di bagian parameternya, di parameter pertama dalah variable biasa sedangkan pada parameter ke dua adalah contoh penggunaan closure yaotu callback.

Baiklah itu saja yang dapat saya sampaikan , sampai bertemu pda artikel selanjutnya.