توابع ناشناس (ضمنی) یا Anonymous Function در php :

توابع ناشناس یا Anonymous Function در زبان برنامه‌نویسی PHP مفهومی است که به برنامه‌نویسان اجازه می‌دهد تا توابعی را تعریف کنند که بدون نیاز به نامگذاری قبلی به آن‌ها اشاره کنند. این نوع توابع به عنوان مقدمه‌ای برای استفاده از توابع کال‌بک (Callback Functions) و توابع بسته (Closure Functions) مورد استفاده قرار می‌گیرند.

توابع ناشناس در PHP با استفاده از کلمه کلیدی `function` و سپس یک عبارت lambda یا یک بلوک کد تعریف می‌شوند. عبارت lambda یا بلوک کد می‌تواند به عنوان ورودی‌ها و خروجی‌های تابع استفاده شود و می‌تواند در داخل یک عبارت یا یک بلوک کد دیگر قرار گیرد.

یک مثال ساده از تابع ناشناس در PHP به صورت زیر است:

“`php
$greeting = function($name) {
echo “Hello, $name!”;
};

$greeting(“John”); // Output: Hello, John!
“`

در این مثال، یک تابع ناشناس با نام `$greeting` تعریف شده است که یک ورودی به نام `$name` دریافت می‌کند و پیامی را به همراه نام دریافتی چاپ می‌کند. سپس با فراخوانی تابع `$greeting` با پارامتر “John”، پیام “Hello, John!” چاپ می‌شود.

تابع ناشناس می‌تواند به صورت آرگومان تابعی یا متدی گرفته شود، همچنین می‌تواند به عنوان مقدمه‌ای برای تعریف توابع بسته استفاده شود. به عنوان مثال، تابع `array_map` در PHP یک تابع ناشناس را به عنوان آرگومان اول دریافت می‌کند که برروی هر عضوی از یک آرایه عملیاتی را انجام می‌دهد.

“`php
$numbers = [1, 2, 3, 4, 5];
$doubleNumbers = array_map(function($number) {
return $number * 2;
}, $numbers);

print_r($doubleNumbers); // Output: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
“`

در این مثال، با استفاده از تابع `array_map`، تابع ناشناسی تعریف می‌شود که هر عضو آرایه `$numbers` را دریافت کرده و آن را در دو ضرب کرده و برگردانده. سپس با استفاده از تابع `print_r`، مقادیر جدید حاصل از ضرب دو را چاپ می‌کنیم.

استفاده از توابع ناشناس در PHP به برنامه‌نویسان اجازه می‌دهد تا کد خود را کوتاه‌تر و خواناتر کنند و به راحتی توابع کال‌بک را پیاده‌سازی کنند. همچنین، استفاده از توابع ناشناس در برخی موارد می‌تواند کارایی کد را بهبود بخشد و زمان اجرای برنامه را کاهش دهد.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *