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

التصريح بأنواع المعاملات

جزء من قسم Fundamentals في رحلة PHP على Coddy. الدرس 65 من 71.

تعد PHP لغة ضعيفة التنميط (loosely typed language)، مما يعني أن المتغيرات يمكنها تخزين أي نوع من البيانات. وفي حين أن هذه المرونة مريحة، إلا أنها قد تؤدي إلى أخطاء برمجية غير متوقعة عندما تستقبل دالة (function) نوعاً خاطئاً من الوسائط (argument). تتيح لك تصريحات النوع (Type declarations) تحديد الأنواع التي يجب أن تقبلها المعاملات (parameters) الخاصة بك بالضبط.

لإضافة تصريح النوع، ضع اسم النوع قبل المعامل:

<?php
function double(int $number) {
    return $number * 2;
}

echo double(5);
?>

ينتج عن هذا 10. إن int قبل $number يخبر PHP أن هذه الدالة تتوقع عدداً صحيحاً. إذا قام شخص ما بتمرير سلسلة نصية مثل "hello"، سيقوم PHP بإنتاج خطأ بدلاً من التسبب في مشاكل بصمت لاحقاً.

يمكنك استخدام تصريحات النوع مع معلمات متعددة:

<?php
function greetUser(string $name, int $age) {
    return "$name is $age years old.";
}

echo greetUser("Alice", 25);
?>

تتضمن تعريفات الأنواع الشائعة int، و float، و string، و bool، و array. استخدامها يجعل كودك أكثر قابلية للتنبؤ ويساعد في اكتشاف الأخطاء مبكرًا، خاصة مع نمو برامجك.

challenge icon

التحدي

سهل

اقرأ ثلاثة أسطر من المدخلات:

  1. الاسم الأول للشخص (على سبيل المثال، Alice)
  2. اسم العائلة للشخص (على سبيل المثال، Smith)
  3. سنة الميلاد (على سبيل المثال، 1995)

أنشئ دالة تسمى createProfile تقبل ثلاثة معاملات مع تصريحات النوع:

  • $firstName كـ string
  • $lastName كـ string
  • $birthYear كـ int

يجب أن تحسب الدالة عمر الشخص (افترض أن السنة الحالية هي 2024) وتعيد سلسلة نصية بالتنسيق التالي:

[firstName] [lastName] is [age] years old.

استدعِ الدالة مع قيم المدخلات واطبع النتيجة المعادة.

مثال 1:

إذا كانت المدخلات هي Alice، و Smith، و 1995، يجب أن يكون المخرج:

Alice Smith is 29 years old.

مثال 2:

إذا كانت المدخلات هي Bob، و Johnson، و 2000، يجب أن يكون المخرج:

Bob Johnson is 24 years old.

مثال 3:

إذا كانت المدخلات هي Emma، و Davis، و 1988، يجب أن يكون المخرج:

Emma Davis is 36 years old.

جرّب بنفسك

<?php
// قراءة المدخلات
$firstName = trim(fgets(STDIN));
$lastName = trim(fgets(STDIN));
$birthYear = intval(fgets(STDIN));

// TODO: إنشاء دالة createProfile مع تصريحات النوع
// يجب أن تقبل الدالة firstName$ (سلسلة نصية)، و lastName$ (سلسلة نصية)، و birthYear$ (عدد صحيح)
// حساب العمر (السنة الحالية هي 2024) وإرجاع السلسلة النصية المنسقة


// استدعاء الدالة وطباعة النتيجة
echo createProfile($firstName, $lastName, $birthYear);
?>
quiz iconاختبر نفسك

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

جميع دروس Fundamentals

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