Callback Functions

در PHP، Callback Function به تابعی گفته می‌شه که به عنوان آرگومان ورودی به یک تابع دیگه ارسال می‌شه.
این ویژگی کمک می‌کنه توابع باز‌استفاده‌پذیرتر و انعطاف‌پذیرتر باشن.

1️⃣ تعریف ساده Callback Function

<?php function myCallback($item) { return strtoupper($item); } $fruits = ["apple", "banana", "cherry"]; // ارسال تابع myCallback به array_map $result = array_map("myCallback", $fruits); print_r($result); ?>

📌 خروجی:

Array ( [0] => APPLE [1] => BANANA [2] => CHERRY )

2️⃣ استفاده از تابع داخلی (Built-in Function) به عنوان Callback

<?php $numbers = [1, 2, 3, 4, 5]; // استفاده از تابع داخلی sqrt به عنوان callback $result = array_map("sqrt", $numbers); print_r($result); ?>

📌 خروجی: [1, 1.414, 1.732, 2, 2.236]

3️⃣ استفاده از توابع ناشناس (Anonymous Functions) یا Closure

<?php $numbers = [1, 2, 3, 4, 5]; // تعریف تابع ناشناس در لحظه $result = array_map(function($n) { return $n * 2; }, $numbers); print_r($result); ?>

📌 خروجی: [2, 4, 6, 8, 10]

4️⃣ استفاده از متد کلاس به عنوان Callback

<?php class MyClass { public static function myStaticFunc($n) { return $n * 3; } } $numbers = [1, 2, 3]; // متد استاتیک کلاس به عنوان callback $result = array_map(["MyClass", "myStaticFunc"], $numbers); print_r($result); ?>

📌 خروجی: [3, 6, 9]

5️⃣ متد غیر استاتیک به عنوان Callback

<?php class MyClass { public function myMethod($n) { return $n + 10; } } $obj = new MyClass(); $numbers = [1, 2, 3]; $result = array_map([$obj, "myMethod"], $numbers); print_r($result); ?>

📌 خروجی: [11, 12, 13]

📌 جمع‌بندی

  • Callback Function تابعی هست که به عنوان آرگومان به توابعی مثل array_map, array_filter, usort و … داده می‌شه.

  • می‌تونه:

    • یک تابع معمولی باشه ("myFunc")

    • یک تابع داخلی ("strlen", "sqrt")

    • یک تابع ناشناس (function($x){ ... })

    • متد یک کلاس (["ClassName", "methodName"] یا [$object, "methodName"])