آموزش Closure و Anonymous function در php

  • خانه
  • آموزش Closure و Anonymous function در php
Image تحقیقات

آموزش Closure و Anonymous function در php

سلام دوستان گلم… امیدوارم حالتون مثل همیشه خوب باشه.

مورد بحث امروزمون درباره  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  آشنا شده باشید.

موفق و پیروز باشید.