🚀 الدخول في عالم الدوال المجهولة Anonymous Functions في PHP

سنتحدث عن مفهوم قد يبدو غريباً في البداية لكنه مفيد جداً في تنظيم الكود، وهو الدوال المجهولة (Anonymous Functions).

ببساطة، الدالة التقليدية التي تعلمناها سابقاً تكون لها "اسم" محدد (مثل sayHello) ونقوم باستدعائها باستخدام هذا الاسم. أما الدالة المجهولة، فهي دالة ليس لها اسم! 😱

قد تتساءل: "كيف سأقوم بتشغيل دالة ليس لها اسم؟".. الإجابة هي أننا نقوم بتخزين هذه الدالة داخل متغير، ومن ثم نتعامل مع هذا المتغير وكأنه هو الدالة.


🛠️ كيف نكتب الدالة المجهولة؟

لكي ننشئ دالة مجهولة، نستخدم الكلمة المحجوزة function ولكننا لا نضع بعدها أي اسم. نقوم مباشرة بفتح الأقواس () ثم تحديد جسم الدالة.

لنلقِ نظرة على الفرق بين الدالة العادية والمجهولة:

1. الدالة العادية (Named Function):

function welcome() {
    echo "Welcome to Codex Academy!";
}

welcome(); // استدعاء الدالة عن طريق اسمها

2. الدالة المجهولة (Anonymous Function):

// هنا قمنا بتعريف الدالة وتخزينها مباشرة في متغير اسمه $greet
$greet = function() {
    echo "Welcome to Codex Academy!";
};

$greet(); // استدعاء الدالة عن طريق اسم المتغير

لاحظ شيئاً هاماً جداً: في الدالة المجهولة، وضعنا فاصلة منقوطة ; بعد إغلاق القوس المتعرج }. لماذا؟ لأننا في الحقيقة نقوم بعملية "تعيين قيمة لمتغير"، وعمليات التعيين في PHP يجب أن تنتهي بفاصلة منقوطة.


📥 تمرير البيانات للدوال المجهولة

تماماً مثل الدوال العادية، يمكن للدوال المجهولة أن تستقبل "بارامترات" (Parameters) لتعالجها.

مثال عملي بسيط: تخيل أننا نريد إنشاء دالة مجهولة تقوم بحساب مجموع رقمين:

// تعريف دالة مجهولة تستقبل رقمين $a و $b
$sum = function($a, $b) {
    return $a + $b; // إرجاع مجموع الرقمين
};

// الآن نقوم بتشغيل الدالة وتمرير القيم لها
echo $sum(5, 10); // المخرجات ستكون: 15

في هذا المثال:

  1. أنشأنا دالة مجهولة.
  2. خزنّاها في المتغير $sum.
  3. استدعينا المتغير $sum كأنه دالة ومررنا له القيم 5 و 10.

💡 متى نستخدم الدوال المجهولة؟

قد تسأل نفسك: "لماذا أتعب نفسي بتخزين الدالة في متغير بينما يمكنني إعطاؤها اسماً ببساطة؟"

الحقيقة أن الدوال المجهولة تكون مفيدة جداً في حالات معينة، أهمها:

  1. التنظيم: عندما تحتاج دالة صغيرة جداً تُستخدم مرة واحدة فقط في مكان محدد، ولا داعي لتسميتها وتكرارها في كامل المشروع.
  2. التمرير كـ "مُعامل": في دروس قادمة، ستتعلم كيف يمكنك تمرير دالة كاملة كـ "مدخل" لدالة أخرى (وهذا ما يسمى Callback)، وهذا هو السر الحقيقي لقوة الدوال المجهولة.

⚠️ ملاحظات سريعة للمبتدئين

  • الاسم: الدالة المجهولة ليس لها اسم خاص بها، بل تعتمد على اسم المتغير الذي تحملها.
  • النطاق: يمكنك تعريفها في أي مكان داخل الكود، سواء داخل دالة أخرى أو في الملف الرئيسي.
  • البساطة: لا تحاول تعقيد الدالة المجهولة؛ اجعلها تؤدي مهمة واحدة صغيرة ومحددة.

🎓 ملخص الدرس

  • الدالة المجهولة هي دالة بدون اسم.
  • يتم تخزينها في متغير لاستخدامها لاحقاً.
  • تنتهي بتعريفها فاصلة منقوطة ; لأنها تُعامل كمتغير.
  • يمكنها استقبال بيانات وإرجاع قيم تماماً كالدوال العادية.