PHP Functions
PHP functions পর্ব-৬: PHP Anonymous Functions,lambda and Closures
PHP Anonymous functions কি?
PHP Anonymous functions: Anonymous শব্দের অর্থ হচ্ছে নাম বিহীন বা বেনামী, আর anonymous function মানে হচ্ছে নাম বিহীন function বা বেনামী function, সুতরাং PHP তে যখন কোনো function declare বা ঘোষণা করা হয়, কিন্তু function টির কোনো নাম থাকেনা, PHP তে সেই function কে anonymous function বলে।
Anonymous function বুঝার জন্য প্রথমে আমরা একটা সাধারণ function তৈরী করি।
<?php function makeGreeting($name, $timeOfDay){ return $timeOfDay." ". $name."!"; } echo makeGreeting("Omran","Good Morning"); //Result: Good Morning Omran! ?>
উপরের function টিকেই anonymous function হিসেবে নিচের মতো declare এবং call করতে পারি।
https://w3programmers.com/bangla/php-course/
নোট : anonymous function অবশ্যই semi-colon (;) দিয়ে শেষ করতে হয়।
<?php // Assign an anonymous function to a variable $makeGreeting = function( $name, $timeOfDay ) { return "Good $timeOfDay, $name!"; }; echo $makeGreeting("Omran","Morning"); //Result: Good Morning Omran! ?>
ব্যাখ্যা : পাঠক ভালোভাবে লক্ষ্য করুন, আমরা সাধারণত function keyword লেখার পর function name “অর্থাৎ : function test(){….} “লিখি। কিন্তু উপরের কোডে আমরা তা করি নাই, বরং আমরা নাম ছাড়া function declare করি, এবং variable এ সংরক্ষণ করি। এবং পরবর্তীতে সেই variable এর সাথে parenthesis যোগ করে function হিসেবে কল করি.
PHP তে Lambda function কি?
যখন একটি anonymous function অন্য একটা function এর argument হিসেবে pass হয়, তখন সেটিকে বলা হয় lambda function. চলুন একটি উদাহরণ দেখা যাক:
<?php // Pass Lambda to function function shout ($message){ echo $message(); } // Call function shout(function(){ return "Hello world"; }); ?>
ব্যাখ্যা : পাঠক ভালোভাবে লক্ষ্য করুন, shout function এর $message parameter টি argument হিসেবে একটি anonymous function receive করেছে।
PHP তে কি anonymous function কে array element হিসেবে ব্যবহার করা যাবে ?
https://w3programmers.com/bangla/php-course/
অবশ্যই PHP তে anonymous function কে array element হিসেবে ব্যবহার করা যাবে। চলুন একটি উদাহরণ দেখা যাক:
<?php // Store 3 anonymous functions in an array $luckyDip = array( function() { echo 'You got a bag of toffees!'; }, function() { echo 'You got a toy car!'; }, function() { echo 'You got some balloons!'; } ); // Call a random function $choice = rand( 0, 2 ); $luckyDip[$choice](); ?>
Random Result:
You got a toy car!
ব্যাখ্যা : এখানে $choice variable টি rand function দিয়ে 0-2 range এর মধ্যে random number generate করবে। আর আমাদের array টির index ও 0-2 এর মধ্যে, তাই এখানে তিনটি anonymous function থেকে randomly যেকোনো একটির result আসবে।
PHP তে anonymous function কি callback function হিসেবে ব্যবহার করা যাবে?
হ্যা PHP তে anonymous function কে call back function হিসেবে ব্যবহার করা যাবে। চলুন একটা উদাহরণ দেখা যাক।
<?php $arr = range(1, 10); foreach(array_filter($arr, function($val) { return $val % 2 == 0; }) as $val){ echo $val,"n"; } //Result: 2,4,6,8,10 ?>
ব্যাখ্যা : এখানে array_filter function এর কাজ হচ্ছে কোনো array কে অন্য যেকোনো function দিয়ে array value গুলোকে filter করা। আর উপরের উদাহরণে , আমরা অন্য যেকোনো সাধারণ function এর পরিবর্তে anonymous function ব্যবহার করেছি।
এবার চলুন আমরা anonymous function ব্যবহার করে একটি number sorting করে ফেলি।
<?php $people = array( array( 'name' => 'Omran', 'age' => 39 ), array( 'name' => 'ShiShir', 'age' => 23 ), array( 'name' => 'Badol', 'age' => 46 ) ); usort( $people, function( $personA, $personB ) { return ( $personA['age'] < $personB['age'] ) ? -1 : 1; } ); foreach($people as $val){ echo "$val[name] is $val[age] years oldn"; } ?>
Result
ShiShir is 23 years old Omran is 39 years old Badol is 46 years old
https://w3programmers.com/bangla/php-course/
PHP তে closures কি ?
closure হচ্ছে একটা object যা anonymous function কে represent করে । অন্য ভাবে বলা যায়, closure হচ্ছে anonymous function কে Object Oriented way তে ব্যবহার করার মাধ্যম। PHP তে closure দিয়ে Anonymous function এর বাহিরের কোনো variable কে anonymous function এর মধ্যে ব্যবহার করা যায় । চলুন একটা উদাহরণ থেকে বুঝা যাক।
উদাহরণ ১: closure ছাড়া anonymous function :
<?php $client="Farhan"; $output=function(){ echo "Welcome ".$client; }; $output(); // will show error ?>
উদাহরণ ২: closure দিয়ে anonymous function :
<?php $client="Farhan"; $output=function() use($client){ echo "Welcome ".$client; }; $output(); //output: Welcome Farhan ?>
closure দিয়ে আরো একটা anonymous function দেখুন :
<?php function myClosure( $num ) { return function( $x ) use( $num ){ return $num * $x; }; } $closure = myClosure( 10 ); echo $closure( 2 ).'n';// Result: 20 echo $closure( 3 ).'n';// Result: 30 ?>
One thought on “PHP functions পর্ব-৬: PHP Anonymous Functions,lambda and Closures”
Leave a Reply
You must be logged in to post a comment.
$luckyDip = array(
function() {
echo ‘You got a bag of toffees!’;
},
function() {
echo ‘You got a toy car!’;
},
function() {
echo ‘You got some balloons!’;
}
);
var_dump($luckyDip[0]());
Answer: You got a bag of toffees!NULL
So Sir, My Question is why there is a NULL printing After I specify the index?
And another question is in $luckyDip[$choice](); why we need to put () at the end? Is it showing that we are calling a function?
Thank you Sir, I love your lessons and try to follow, your work help me a lot. 🙂