TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #27 664
کلوژرها در PHP یکی از انواع مفید و قدرتمند توابع ناشناس هستند. کلوژرها به شما امکان می‌دهند توابعی بنویسید که می‌توانند متغیرهای خارجی از دامنه‌ی تعریف شده خود را "بگیرند" یا استفاده کنند، حتی اگر این متغیرها در دامنه‌ی global تعریف نشده باشند.

نحوه تعریف:
یک
کلوژر در PHP با استفاده از کلمه کلیدی function بدون نام فانکشن تعریف می‌شود. می‌توان آن را به یک متغیر اختصاص داد و مانند هر فانکشن دیگری، با فراخوانی نام متغیر می‌توان آن را اجرا کرد.

$my_function = function () {
// Code
};


تفاوت با توابع عادی:
تفاوت
اصلی کلوژرها با توابع عادی در این است که کلوژرها می‌توانند متغیرهای خارج از دامنه‌ی تعریف شده‌ی خود را با استفاده از کلیدواژه use "بگیرند". این امر باعث می‌شود کلوژرها برای پیاده‌سازی پترن‌های طراحی خاص و برای مواردی که نیاز به حفظ حالت بین اجراها است، مناسب باشند.

کلوژر ها بر خلاف توابع عادی بدون نام هستند.

آرگومان های ورودی‌ها و کلمه کلیدی use:
مانند
توابع عادی، کلوژرها می‌توانند پارامترهای ورودی داشته باشند. این پارامترها در زمان فراخوانی کلوژر به آن ارسال می‌شوند.
$my_function = function ($text) {
echo $text
};
$my_function('hello');
// hello


برای دسترسی به متغیرهای خارج از دامنه‌ی کلوژر، از کلمه کلیدی use استفاده می‌شود. این متغیرها در زمان تعریف کلوژر به آن "بسته" می‌شوند و مقادیر آنها حفظ می‌شود، حتی اگر بعداً تغییر کنند.
$text  = 'hello',
$my_function = function () use ($text) {
echo $text
};
$my_function();
// hello


مثال:
فرض کنید می‌خواهیم یک کلوژر بنویسیم که یک عدد را به عنوان ورودی گرفته و آن را با عدد دیگری که در زمان تعریف کلوژر مشخص شده، جمع کند.

$anotherNumber = 5;
$addition = function ($number) use ($anotherNumber) {
return $number + $anotherNumber;
};

echo $addition(3); // 8


کلوژ هارا میتوان به عنوان ورودی به متد ها یا توابع دیگر ارسال کرد:
function execute($action) {
$action();
}

execute(function () {
echo 'hello';
});

———
‏Arrow functions، یک قابلیت نوین و ساده‌تر برای نوشتن توابع ناشناس (Anonymous functions) هستند. این توابع به خصوص برای تعریف توابع کوچک و کاربردی طراحی شده‌اند که می‌توانند بلافاصله اجرا شوند.

نحوه تعریف:
‏Arrow
functions با استفاده از کلمه کلیدی fn به جای کلمه‌کلیدی function تعریف می‌شوند. ساختار کلی آنها به این شکل است:
$function = fn($arg1, $arg2, ...) => expression;


بدنه‌ی arrow function تنها شامل یک عبارت (expression) است و نیازی به استفاده از return برای برگرداندن نتیجه نیست. نتیجه‌ی این عبارت به طور خودکار برگردانده می‌شود.

تفاوت با فانکشن‌های عادی:
‏Arrow
functions بر خلاف توابع عادی، همیشه ناشناس هستند.
نتیجه به طور خودکار برگردانده می‌شود، بدون نیاز به استفاده از return.

تفاوت با کلوژرها:
‏Arrow functions به طور خودکار تمام متغیرهای مورد استفاده را از دامنه‌ی بیرونی "می‌گیرند"، بنابراین نیازی به استفاده از کلمه‌کلیدی use نیست.
کوتاه‌تر و مختصرتر از کلوژرها هستند و برای تعاریف تک خطی بهینه شده‌اند.

مثال :
فرض
کنید می‌خواهیم یک آرایه از اعداد را دو برابر کنیم. می‌توانیم از arrow function در تابع array_map استفاده کنیم:
$numbers = [1, 2, 3, 4];
$doubled = array_map(fn($number) => $number * 2, $numbers);

print_r($doubled);
//Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )


در این مثال، ما از یک arrow function به عنوان callback در array_map استفاده کردیم تا هر عنصر آرایه را دو برابر کنیم. این نمونه نشان دهنده‌ی سادگی و کارایی بالای arrow functions در PHP برای انجام عملیات‌های مختصر و مفید است. Arrow functions به ویژه هنگام کار با آرایه‌ها، کالکشن‌ها و دیتا استراکچرهایی که نیاز به ترانسفورمیشن دارند، مفید هستند.

👤 AmirHossein

💎 Channel: @DevelopixPHP
  • 🔥 4
  • ❤ 2
  • 👍 1
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →