المعاملات والقيم المرجعة
في الدرس السابق أنشأنا دوال بسيطة. الآن نريد مستوى أقوى: دوال تستقبل بيانات مختلفة وتعيد نتائج نستفيد منها في أي مكان داخل البرنامج.
ما هي Parameters و Arguments في PHP؟
عندما تكتب الدالة، المتغيرات داخل تعريفها تسمى Parameters. وعندما تستدعي الدالة وترسل قيمًا فعلية، هذه القيم تسمى Arguments.
مثال 1: دالة تستقبل قيمة واحدة
الكود:
<?php
function welcomeUser($name) {
echo "مرحباً يا $name <br>";
}
welcomeUser("أحمد");
welcomeUser("سارة");
?>
ما يظهر في المتصفح:
مرحباً يا أحمد
مرحباً يا سارة
شرح الكود: $name هو Parameter داخل الدالة.
القيم "أحمد" و"سارة" هي Arguments أرسلناها وقت الاستدعاء.
نفس الدالة نفذت مرتين بسلوك مختلف حسب القيمة المرسلة.
مثال 2: دالة تستقبل أكثر من معامل
الكود:
<?php
function printFullName($firstName, $lastName) {
echo "الاسم الكامل: $firstName $lastName <br>";
}
printFullName("Rachid", "Bennani");
printFullName("Sara", "Amrani");
?>
ما يظهر في المتصفح:
الاسم الكامل: Rachid Bennani
الاسم الكامل: Sara Amrani
شرح الكود: الدالة فيها Parameterين، لذلك عند الاستدعاء يجب إرسال قيمتين بنفس الترتيب.
الترتيب مهم لأن أول قيمة ترتبط بـ $firstName والثانية بـ $lastName.
ما معنى return في PHP؟
بدل أن تطبع الدالة النتيجة مباشرة بـ echo، يمكنها إرجاع قيمة بـ return.
هذه القيمة تستطيع تخزينها، جمعها، أو إرسالها لدالة أخرى.
مثال 3: دالة تعيد قيمة رقمية
الكود:
<?php
function sum($x, $y) {
$z = $x + $y;
return $z;
}
$result = sum(5, 10);
echo "المجموع هو: $result";
?>
ما يظهر في المتصفح:
المجموع هو: 15
شرح الكود: الدالة sum لا تطبع داخلها، بل تعيد الناتج.
بعدها خزنا الناتج في $result ثم طبعناه خارج الدالة.
مثال 4: return مع إعادة استخدام حقيقية
الكود:
<?php
function calcTax($price) {
return $price * 0.2;
}
$phonePrice = 1000;
$tax = calcTax($phonePrice);
$finalPrice = $phonePrice + $tax;
echo "السعر قبل الضريبة: $phonePrice <br>";
echo "الضريبة: $tax <br>";
echo "السعر النهائي: $finalPrice";
?>
ما يظهر في المتصفح:
السعر قبل الضريبة: 1000
الضريبة: 200
السعر النهائي: 1200
شرح الكود: استخدمنا return لحساب الضريبة داخل دالة مستقلة. هذا يجعل منطق الحساب قابلًا لإعادة الاستخدام في أي منتج آخر.
echo vs return داخل الدالة
| الحالة | echo | return |
|---|---|---|
| ما تفعله | تطبع مباشرة | تعيد قيمة |
| المرونة | أقل مرونة | أكثر مرونة |
| الاستخدام الأفضل | رسائل مباشرة وسريعة | حسابات ومنطق قابل لإعادة الاستخدام |
أخطاء شائعة في المعاملات و return
- نسيان إرسال عدد القيم المطلوبة عند الاستدعاء.
- الخلط بين Parameter و Argument.
- استخدام echo داخل دالة حسابية ثم محاولة استعمال الناتج كقيمة.
- نسيان كلمة
returnرغم الحاجة لإرجاع نتيجة.
تمرين سريع
- أنشئ دالة
multiplyتستقبل رقمين وتعيد حاصل الضرب. - استدعها بثلاث قيم مختلفة (مثلاً 2 و3، 5 و4، 10 و0).
- اطبع النتائج في شكل: "ناتج العملية = ...".
الأسئلة الشائعة — FAQ
ما الفرق بين Parameter و Argument؟
Parameter داخل تعريف الدالة، وArgument هي القيمة المرسلة وقت الاستدعاء.
ما الفرق بين echo و return؟
echo يطبع مباشرة، return يعيد قيمة لاستخدامها لاحقاً.
هل يمكن للدالة استقبال أكثر من معامل؟
نعم، ويمكنك تمرير عدة قيم حسب تعريف الدالة.
لماذا return مهمة؟
لأنها تجعل الدالة مرنة وقابلة لإعادة الاستخدام في الحسابات والمنطق.