شرح صفوف ومحتوى الفقرة
بدءاً من PHP 8.1، تتيح كتابة ثلاث نقاط داخل قوسي الدالة مثل strlen(...) أو trim(...) إنشاء مرجع مباشر للدالة يدعم الإكمال التلقائي في المحررات بدلاً من كتابة اسمها كنص.
- على عكس كتابة اسم الدالة كنص (
"trim")، تخضع صيغةtrim(...)للفحص الثابت وتدعم إعادة التسمية الآمنة في بيئات التطوير. - لاحظ الفرق الدقيق: كتابة
myFunc(...$arr)تستدعي الدالة فوراً بتفكيك المصفوفة، بينما كتابةmyFunc(...)لا تستدعيها بل ترجع كائنClosureيشير إليها. - مرر هذا المرجع مباشرة إلى دوال مثل
array_map(trim(...), $inputs).
تلتقط formatSku(...) إشارة مرجعية للدالة داخل $formatter دون تنفيذها، ثم تطبقها array_map() على كل عنصر.
| الصيغة | المصطلح | السلوك البرمجي |
|---|---|---|
function f(...$a) | معامل متغير الطول (Variadic) | يجمع الوسائط الممررة داخل مصفوفة $a |
f(...$arr) | تفكيك المصفوفة عند الاستدعاء | يفكك عناصر $arr كوسائط مستقلة للدالة |
function f(&$x) | التمرير بالمرجع (By Reference) | يعدّل المتغير الأصلي $x مباشرة |
$fn($arg) | دالة متغيرة (Variable Function) | يستدعي الدالة التي يحمل المتغير النصي $fn اسمها |
f(...) | مرجع دالة من الدرجة الأولى (8.1+) | يرجع كائن Closure يشير إلى الدالة f دون تنفيذها |
<?php
function formatSku($raw) {
return "SKU-" . strtoupper(trim($raw));
}
$formatter = formatSku(...);
$items = [" kb90 ", " ms20 "];
$mapped = array_map($formatter, $items);
echo implode(" | ", $mapped) . "\n";
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
بدءاً من PHP 8.1، تتيح كتابة ثلاث نقاط داخل قوسي الدالة مثل strlen(...) أو trim(...) إنشاء مرجع مباشر للدالة يدعم الإكمال التلقائي في المحررات بدلاً من كتابة اسمها كنص. على عكس كتابة اسم الدالة كنص ("trim")، تخضع صيغة trim(...) للفحص الثابت وتدعم إعادة التسمية الآمنة في بيئات التطوير. لاحظ الفرق الدقيق: كتابة myFunc(...$arr) تستدعي الدالة فوراً بتفكيك المصفوفة، بينما كتابة myFunc(...) لا تستدعيها بل ترجع كائن Closure يشير إليها. مرر هذا المرجع مباشرة إلى دوال مثل array_map(trim(...), $inputs).