Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

القيم الافتراضية للمعاملات

جزء من قسم الأساسيات في رحلة 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" إذا لم يتم توفيرها. يجعل هذا النمط دوالك أكثر مرونة من دون مطالبة المستدعين بتوفير كل وسيطة دائمًا.

challenge icon

التحدي

سهل

اقرأ سطرين من input:

  1. اسم product (مثلًا، Laptop)
  2. قيمة 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;
?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم PHP عبر الإنترنت