القيم الافتراضية للمعاملات
جزء من قسم الأساسيات في رحلة PHP على Coddy. الدرس 64 من 71.
أحيانًا تريد أن تكون لمعامل الدالة قيمة احتياطية عند عدم توفير أي وسيط. تتيح لك القيم الافتراضية للمعاملات تحديد ما ينبغي أن تكون عليه قيمة المعامل إذا لم يحدده المستدعي.
لتعيين قيمة افتراضية، أسندها مباشرةً في تعريف الدالة باستخدام العامل =:
<?php
function greet($name = "Guest") {
echo "Hello, $name!\n";
}
greet("Alice");
greet();
?>يُنتج هذا:
Hello, Alice!
Hello, Guest!عندما تُجري call لـ greet("Alice")، فإن الوسيطة تتجاوز القيمة default. وعندما تُجري call لـ greet() من دون وسيطة، تستخدم PHP القيمة "Guest" بدلاً من ذلك.
يمكنك مزج المعاملات المطلوبة والاختيارية، ولكن يجب أن تأتي المعاملات ذات القيم الافتراضية بعد المعاملات المطلوبة:
<?php
function createUser($name, $role = "member") {
return "$name is a $role";
}
echo createUser("Alice") . "\n";
echo createUser("Bob", "admin");
?>ينتج عن ذلك:
Alice is a member
Bob is a adminالمعامل الأول $name مطلوب، بينما تكون قيمة $role الافتراضية هي "member" إذا لم يتم توفيرها. يجعل هذا النمط دوالك أكثر مرونة من دون مطالبة المستدعين بتوفير كل وسيطة دائمًا.
التحدي
سهلاقرأ سطرين من input:
- اسم product (مثلًا،
Laptop) - قيمة quantity (مثلًا،
5). قد يكون هذا input فارغًا
أنشئ function تُسمّى formatOrder وتقبل معاملين: $product (required) و$quantity (optional، وقيمته defaults هي 1). يجب أن تُرجع function سلسلة نصية بالتنسيق التالي:
Order: [quantity]x [product]إذا كان input الخاص بـ quantity فارغًا، فاستدعِ function باستخدام اسم product فقط (مع استخدام default الخاص بـ quantity). بخلاف ذلك، استدعها باستخدام القيمتين.
اطبع النتيجة المُعادة.
المثال 1:
إذا كانت قيمتا input هما Laptop و5، فيجب أن يكون output كما يلي:
Order: 5x Laptopالمثال 2:
إذا كانت قيمتا input هما Keyboard وسطرًا فارغًا، فيجب أن يكون output كما يلي:
Order: 1x Keyboardالمثال 3:
إذا كانت قيمتا input هما Monitor و3، فيجب أن يكون output كما يلي:
Order: 3x Monitorجرّب بنفسك
<?php
// اقرأ المدخلات
$product = trim(fgets(STDIN));
$quantity = trim(fgets(STDIN));
// TODO: أنشئ الدالة formatOrder مع $product (مطلوب) و $quantity (اختياري، الافتراضي 1)
// يجب أن تُرجع الدالة سلسلة نصية بالتنسيق: "Order: [quantity]x [product]"
// TODO: استدعِ الدالة بشكل مناسب بناءً على ما إذا كانت quantity فارغة أم لا
// إذا كانت quantity فارغة، استدعِ مع product فقط (استخدم الافتراضي)
// وإلا، استدعِ مع كل من product و quantity
// اطبع النتيجة
echo $result;
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4معاملات المقارنة والمنطق
معاملات المقارنةالمساواة والتطابقالمعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيط2المتغيرات وأنواع البيانات
الأرقامالنصوص وعلامات الاقتباسالقيم المنطقية (Booleans)قواعد التسميةملخص - تهيئة المتغيراتالمتغيرات الفارغةدمج النصوصاستقبال مدخلات المستخدمتحويل أنواع البيانات5المنطق الشرطي
جملة Ifجملة If - Elseالعامل الثلاثي (Ternary Operator)عامل Null Coalescingجملة Switchمراجعة - اتخاذ القرارات3المعاملات الأساسية
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسالتعيين المركبالزيادة والنقصانأسبقية المعاملاتمراجعة - الحسابات البسيطةمعاملات النصوصتدرّب بنفسك: مترجم PHP عبر الإنترنت