20. الدوال المجهولة والمُغلِقات
تستخدم PHP الحديثة دوال ليس لها اسم محدد. هذه الدوال حاسمة لمفاهيم مثل استدعاءات الاسترجاع (callbacks)، تصفية المصفوفات، وتمرير المنطق كوسائط.
الدوال المجهولة (Lambdas)
الدالة المجهولة هي دالة بدون اسم، يتم تخزينها في متغير.
php
<?php // تعيين نص الدالة إلى متغير $multiply $multiply = function($a, $b) { return $a * $b; }; // استدعاء الدالة باستخدام اسم المتغير echo "5 * 4 = " . $multiply(5, 4); ?>المُغلِقات (Closures)
تصبح الدالة المجهولة مُغلِقًا عندما تستورد متغيرات من النطاق المحيط (النطاق الأصل) باستخدام الكلمة المفتاحية use.
ملاحظة: لا يمكن للدوال المجهولة في PHP الوصول تلقائيًا إلى المتغيرات المحلية من النطاق المحيط؛ يجب استيرادها بشكل صريح.
php
<?php $base_rate = 0.15; // متغير محلي في النطاق العام $calculate_fee = function($price) use ($base_rate) { return $price * $base_rate; }; $product_price = 200; $fee = $calculate_fee($product_price); echo "Fee for item: " . $fee; // Output: 30 // يمكننا حتى تغيير قيمة المتغير المستورد بالمرجع (&) $modifier = 5; $increment = function() use (&$modifier) { $modifier++; }; $increment(); $increment(); echo "<br>قيمة المُعدِّل الجديدة: " . $modifier; // Output: 7 ?>تُستخدم المُغلِقات على نطاق واسع في الأطر والدوال مثل array_map أو array_filter.