توابع بی نام (Anonymous functions)

در PHP 5.3 بحثی به نام توابع بی نام یا Anonymous functions مطرح شد که به شما اجازه می‌دهد یک تابع را به عنوان یک آرگومان به تابع دیگر ارسال کنید و یا آن را در داخل یک متغیر قرار دهید. توابع بی نام همانند توابع عادی تعریف می‌شوند و فقط نام ندارند و در بعد از آکولاد بسته آنها علامت سیمیکالن (;) قرار می‌گیرد. دستور استفاده از متدهای بی نام به صورت زیر است :

 $variableName  = function (parameters)
 {
     
 };

از آنجاییکه توابع بی نام، نام ندارند، پس نمی‌توان آنها را به صورت یک تابع معمولی صدا زد. برای این منظور باید نام متغیری که تابع را به آن اختصاص داده‌ایم را بنویسیم و سپس دو علامت پرانتز و یک سیمیکالن در جلوی آن قرار دهیم. به کد زیر توجه کنید :

  1: <?php
  2:     $ShowMessage = function($name)
  3:     {
  4:         echo "Hello " . $name;
  5:     };
  6: 
  7:     $ShowMessage("World");
  8: ?>
Hello World

همانطور که در کد بالا مشاهده می‌کنید، ابتدا در خط دو تابع بی نام را به متغیر ShowMessage اختصاص داده‌ایم و سپس در خط 7 نام این متغیر را نوشته و در با گذاشتن دو پرانتز در جلوی نام آن و ارسال آرگومان باعث اجرای کدهای بدنه متد بی نام شده‌ایم. این توابع می‌توانند از متغیرهایی که در خارج از آنها تعریف شده‌اند با استفاده از کلمه use استفاده کنند :

<?php
    $x = 1;
    $y = 2;
    
    $callback = function($z) use ($x, $y)
    {
        return $x + $y + $z;
    };
    
    echo $callback(3); 
?>
6

دلیل کاربرد توابع بی نام هم این است که ممکن است شما به تابعی نیاز داشته باشید که کاری را برای شما انجام دهد، اما این نیاز ندارید که آن را داخل برنامه یا حتی به عنوان بخشی از بقیه کدها اضافه کنید. به جای اینکه تابعی داشته باشید که یک بار استفاده و بعد هم رها شود، می‌توانید از تابع بی نام استفاده کنید.