آموزش Arrow functions در php

تاریخ: 21 فروردین 1400

در php7.4 یک سینتکس ساده تر برای توابع ناشناخته معرفی شد که از Arrow برای تعریف دستورات تابع استفاده می شود.

این سینتکس برای ساده کردن پاس دادن متغیر های global به تابع ناشناخته و عدم استفاده از use معرفی شد.

Arrow Functions حالت کوتاه شده closure هستند.

ساختار Arrow functions در php

این توابع به ساده ترین حالت ممکن نوشته می شوند:

fn (argument_list) => expr

در ساختار arrow function، بخش های زیر را مشاهده می کنید:

  1. arrow function ها با کیورد fn شروع می شوند.
  2. فقط می توانند یک دستور داشته باشند. نتیجه هم برگردانده می شود.
  3. نیاز به کیورد های return و use نداریم.
  4. دسترسی به متغیرهای LSB (هم خانواده) و this$ موجود می باشد.

 

مثال: فرض کنید می خواهیم یک arrow function بنویسیم که یک متغیر خارجی را در 2 ضرب می کند:

$x = 2;
$twoMultiply = fn() => $x*2;
echo $twoMultiply(); //output: 4

اگر میخواستیم از use استفاده کنیم:

$x = 2;
$twoMultiply = function () use ($x) {
    return $x*2;
};
echo $twoMultiply(); //outpur: 4

مشاهده می کنید که با استفاده از arrow function حداقل دو خط کد کمتر شده است.

در واقع Anonymous function های closure و Arrow Function ها مانند هم عمل می کنند با این تفاوت که در Arrow Function ها به متغیر های خارج دسترسی داریم ولی در Anonymous function های closure، باید به دستور use پاس دهیم.

 

استفاده از Arrow function های تو در تو

در php امکان استفاده از Arrow function های تو در تو را داریم:

$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;
var_export($fn(5)(10));// Outputs 51

 

pass by refrence در arrow functions

امکان پاس دادن رفرنس متغیر به arrow function وجود دارد:

$z = 1;
$fn = fn(&$y) => $y++;
$fn($z);
echo $z; //output: 2

 

default argument value در arrow functions

مشابه توابع معمولی و Anonymous functions، می توانیم برای آرگومان های arrow functions، مقدار default ست کنیم:

$fn = fn($z=1) => ++$z;
echo $fn(); //output: 2

 

 

 

دیدگاهتان را بنویسید