Welcome to Abdul Malik Ikhsan's Blog

–Closure in PHP 5.3– Anonymous function for special purpose

Posted in Tutorial PHP by samsonasik on April 17, 2010

Closure dalam ilmu komputer dapat diartikan anonymous function, adalah function yang tidak mempunyai nama yang spesifik. Kenapa closure dipakai ? alasannya ada 2, yaitu :

1. Dinamis.
Dalam arti flexible, ia bisa dipakai dalam situasi tertentu saja.
2. Dapat dibuat untuk term pendek
Fungsi ini bisa digunakan sekali pakai.

Yang menjadi pertanyaan adalah, kenapa harus pakai closure ? Toh untuk hal-hal sekali pakai, kita bisa langsung aja hajar coding di tempat :D. Alasannya, karena closure dapat mempunyai variable yang bebas relatif terhadap lingkungan yang mengikat variable tersebut.
Untuk lebih memperjelas, saya akan mencoba menampilkan dalam kode program :).

<?php
//Flexible & has short term
$greet = function($name)
{
 echo "Hello $name<br>";
};
$greet('World'); //print Hello World
$greet('PHP');   //print Hello PHP

$greet = function($name)
{
 echo "Hi... $name<br>";
};
$greet('World'); //print Hi...World
$greet('PHP');   //print Hi...PHP

//free variables together with
//an environment that binds those variables
function testfunc($greeting){
 $closure = function($text) use ($greeting){
 return str_replace("world", "samsonasik" , $text);
 };
 return $closure($greeting);
}
echo testfunc("Hello world");  //print Hello samsonasik

Referensi :
1. PHP Manual ( Mehdi Achour dkk )
2. http://php.net/manual/en/functions.anonymous.php
3. http://www.jibbering.com/faq/faq_notes/closures.html
4. http://wiki.php.net/rfc/closures
5. Beginning PHP 5.3 (Mat Doyle)
6. http://en.wikipedia.org/wiki/Closure_%28computer_science%29