Anonymous function ها به بیان ساده همان تابع ها هستن با این تفاوت که نامی ندارند. برای مثال نوشتن یک تابع معمولی در php چیزی مانند زیر است :
PHP
// Regular function
function greeting () {
return "Hello world";
}
و برای صدا زدن تابع بالا به روش زیر عمل مکنیم :
PHP
echo greeting();
// Returns "Hello world"
خب حالا anonymous function ها نامی ندارن پس به صورت زیر تعریف می شوند :
PHP
// Anonymous function
function () {
return "Hello world";
}
به دلیل اینکه این تابع ها اسمی ندارند پس یا باید آن ها را درون یک متغیر بریزیم یا به یک فانکشن دیگه ای پاس بدیم.
PHP
// Anonymous function
// assigned to variable
$greeting = function () {
return "Hello world";
}
// Call function
echo $greeting();
// Returns "Hello world"
همان طور که دیدید ما تابع رو داخل یک متغیر ریختیم و سپس متغیر رو صدا زدیم.
همچنین همانطور که بالا گفتم میتونیم اونو به یه تابع دیگه پاس بدیم به این صورت »
PHP
// Pass Lambda to function
function shout ($message){
echo $message();
}
// Call function
shout(function(){
return "Hello world";
});
از این تابع ها میشه زمانی استفاده کرده که نیاز دارین یک تابع تعریف کنید و فقط یک بار اجراش کنید…..
سلام @mrbardia72
تو سوال برای function closure توضیح خواسته شده بود اما شما برای Anonymous function توضیح نوشتید.
اینها یکی هستند؟
یک closure به عنوان یک anonymous function شناخته میشه که تابع بدون نام معرفی میشه.
مثال زیر برای شما به شناخت بهتر کمک میکنه:
function ShowName(Closure $closure) {
$closure();
}
ShowName(function(){
echo 'ناصر قاسمی';
});
// output: ناصر قاسمی
در واقع در مثال بالا در تابع ShowName یک آرگومان از نوع Closure دریافت می شود.
نکته: Closure می تواند خودش آر گومان نیز داشته باشد. به مثال زیر توجه کنید:
function SayHelloToName(Closure $closure) {
$closure('ناصر قاسمی');
}
SayHelloToName(function($value){
echo "Hello to $value";
});
// output: Hello to ناصر قاسمی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟