آموزش Closure و Anonymous function در php
- توسط : علی حسین شهابی
- 0 نظر
سلام دوستان گلم… امیدوارم حالتون مثل همیشه خوب باشه.
مورد بحث امروزمون درباره Closure و Anonymous function در زبان php است. مطمین ان خیلی جاها برخورد کردین باهاشون.
Anonymous function
Anonymous function ها به بیان ساده همان تابع ها هستن با این تفاوت که نامی ندارند. برای مثال نوشتن یک تابع معمولی در php چیزی مانند زیر است :
// Regular function
function greeting () {
return "Hello world";
}
و برای صدا زدن تابع بالا به روش زیر عمل مکنیم :
echo greeting();
// Returns "Hello world"
خب حالا anonymous function ها نامی ندارن پس به صورت زیر تعریف می شوند :
به دلیل اینکه این تابع ها اسمی ندارند پس یا باید آن ها را درون یک متغیر بریزیم یا به یک فانکشن دیگه ای پاس بدیم.
همان طور که دیدید ما تابع رو داخل یک متغیر ریختیم و سپس متغیر رو صدا زدیم.
همچنین همانطور که بالا گفتم میتونیم اونو به یه تابع دیگه پاس بدیم به این صورت »
// Pass Lambda to function
function shout ($message){
echo $message();
}
// Call function
shout(function(){
return "Hello world";
});
از این تابع ها میشه زمانی استفاده کرده که نیاز دارین یک تابع تعریف کنید و فقط یک بار اجراش کنید…..
همچنین میتونیم از تابع create-function هم استفاده نماییم.این تابع به صورت runTime یک تابع ایجاد کرده :
// Use create_function
$greeting = create_function('', 'echo "Hello World!";');
// Call function
$greeting();
یا مثلا :
\n";
}
array_walk($fruits, 'test_print');
و حالا بیایم داخل تابع امون از use هم استفاده کنیم به این شکل :
// Set a multiplier
$multiplier = 3;
// Create a list of numbers
$numbers = array(1,2,3,4);
// Use array_walk to iterate
// through the list and multiply
array_walk($numbers, function($number) use($multiplier){
echo $number * $multiplier;
});
فریم ورک لاراول
داخل فریم ورک لاراول هم از closure ها , anonymous functions ها استفاده زیادی شده مثلا در نوشتن یه route :
Route::get('user/(:any)', function($name){
return "Hello " . $name;
});
امیدوارم تو این قسمت با closure ها , anonymous functions آشنا شده باشید.
موفق و پیروز باشید.