0Pricing
PHP Academy · درس

المعاملات الافتراضية والمتغيرة العدد

استخدموا القيم الافتراضية والمعاملات متغيرة العدد في دوال PHP.

المعاملات الافتراضية والمتغيرة العدد درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

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

تتيح القيم الافتراضية للمستدعين حذف الوسائط. وتُستخدم القيمة الافتراضية عندما لا يتم تمرير الوسيط:

<?php
function createUser(string $name, string $role = 'viewer'): string {
    return "$name ($role)";
}

echo createUser('Alice');          // Alice (viewer)
echo createUser('Bob', 'admin');   // Bob (admin)

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

قواعد مهمة للمعاملات الافتراضية:

  • يجب أن تأتي المعاملات ذات القيم الافتراضية بعد المعاملات المطلوبة
  • يجب أن تكون القيم الافتراضية تعبيرات ثابتة، وليست استدعاءات دوال أو متغيرات
  • تخفف الوسائط المسماة في PHP 8 شرط الترتيب

المعاملات التي تقبل NULL

استخدم ?type للسماح بـ NULL كوسيط صالح، مع جعل NULL قيمة افتراضية:

<?php
function findUser(?int $id = null): string {
    if ($id === null) {
        return 'Searching all users';
    }
    return "User #$id";
}

echo findUser();    // Searching all users
echo findUser(42);  // User #42

الدوال متغيرة عدد الوسائط مع ...

استخدم ... قبل أحد المعاملات لقبول عدد متغير من الوسائط على هيئة مصفوفة:

<?php
function sum(int ...$numbers): int {
    return array_sum($numbers);
}

echo sum(1, 2, 3);        // 6
echo sum(10, 20, 30, 40); // 100

المعاملات المتغيرة مع المعاملات المطلوبة

يمكنك دمج المعاملات المطلوبة مع معامل متغير في النهاية:

<?php
function logMessage(string $level, string ...$messages): void {
    foreach ($messages as $msg) {
        echo "[$level] $msg" . PHP_EOL;
    }
}

logMessage('INFO', 'App started', 'Config loaded');

عامل التفكيك في الاستدعاء

استخدم ... عند استدعاء دالة لتفكيك المصفوفة إلى وسائط منفردة:

<?php
function add3(int $a, int $b, int $c): int {
    return $a + $b + $c;
}

$args = [1, 2, 3];
echo add3(...$args);  // 6

$extra = [4, 5];
echo add3(1, ...$extra);  // 10

الوسائط المسماة (PHP 8)

تتيح لك الوسائط المسماة تمرير القيم باستخدام اسم المعامل، بغض النظر عن الترتيب:

<?php
function createTag(string $tag, string $content, string $class = ''): string {
    $cls = $class ? " class=\"$class\"" : '';
    return "<$tag$cls>$content</$tag>";
}

// Skip $class, pass $content by name
echo createTag(content: 'Hello', tag: 'p');
// <p>Hello</p>

الوسائط المسماة مع الدوال المضمنة

تعمل الوسائط المسماة مع دوال PHP المضمنة أيضًا:

<?php
$arr = [3, 1, 4, 1, 5];

// Traditional positional
$result1 = array_slice($arr, 1, 3);

// Named arguments
$result2 = array_slice(array: $arr, offset: 1, length: 3);

print_r($result1); // [1, 4, 1]

الإرث القديم لـ func_get_args()

قبل ظهور صياغة المعاملات المتغيرة في PHP 5.6، كان استخدام func_get_args() شائعًا للوصول إلى جميع الوسائط. وقد تصادفه في الشيفرات القديمة:

<?php
function legacySum(): int {
    $args = func_get_args();
    return array_sum($args);
}

echo legacySum(1, 2, 3, 4);  // 10
// Modern: use int ...$numbers instead

المعامل المتغير مع تحديد النوع

ادمج تلميحات الأنواع مع المعاملات المتغيرة لفرض قيود صارمة على المدخلات:

<?php
declare(strict_types=1);

function joinStrings(string $sep, string ...$parts): string {
    return implode($sep, $parts);
}

echo joinStrings('-', 'a', 'b', 'c');  // a-b-c
// joinStrings('-', 'a', 42); // TypeError in strict mode

دمج القيم الافتراضية والوسائط المسماة

تعمل الوسائط المسماة والقيم الافتراضية معًا لتوفير أقصى قدر من المرونة:

<?php
function sendEmail(
    string $to,
    string $subject,
    string $body = '',
    bool   $html  = false
): bool {
    // simulate send
    return true;
}

// Skip $body, pass $html by name
sendEmail('a@b.com', 'Hi', html: true);

تحقق سريع

ماذا يفعل العامل ... في تعريف دالة PHP؟

مراجعة: المعاملات الافتراضية والمتغيرة

ملخص:

  • تتيح القيم الافتراضية استخدام معاملات اختيارية
  • تأتي المعاملات ذات القيم الافتراضية بعد المعاملات المطلوبة
  • يتيح ?type استخدام NULL مع قيمة افتراضية اختيارية
  • يجمع ...$args الوسائط المتغيرة في مصفوفة
  • يوسّع عامل التفكيك ...$arr المصفوفة عند موضع الاستدعاء
  • تمرر الوسائط المسماة (PHP 8) القيم حسب الاسم لا حسب الموضع

الأسئلة الشائعة

هل درس «المعاملات الافتراضية والمتغيرة العدد» مجاني؟

نعم — نص درس «المعاملات الافتراضية والمتغيرة العدد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «المعاملات الافتراضية والمتغيرة العدد»؟

استخدموا القيم الافتراضية والمعاملات متغيرة العدد في دوال PHP. تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «المعاملات الافتراضية والمتغيرة العدد»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعريف الدوال واستدعاؤها
  2. المعاملات الافتراضية والمتغيرة العدد
  3. نطاق المتغيرات: محلي وعام
  4. الدوال المجهولة والإغلاقات
← العودة إلى PHP Academy