Kodokon kodokon.com

الدوال: التصريح، وتحديد الأنواع، وreturn

أنشئ دوالك الخاصة بوسائط محددة النوع، وقيم افتراضية، وقيم مُرجَعة.

8 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

إن الدالة كتلة من التعليمات تمنحها اسمًا، لتتمكن من إعادة استخدامها بقدر ما تحتاج عبر استدعاء بسيط. اكتب مرة واحدة، واستخدم في كل مكان: هذا هو المبدأ. تصرّح بها باستخدام الكلمة المفتاحية function، متبوعةً بالاسم، والقوسين، وكتلة بين قوسين معقوفين. وتعني علامة : void بعد القوسين أن الدالة لا تُرجِع شيئًا: فهي تتصرّف فحسب.

PHP
<?php

function sayHello(): void
{
    echo "Hello and welcome!<br>";
}

sayHello();
sayHello();
تصريح واحد، واستدعاءان، وخرجان.

يحمل القوسان الوسائط: أي متغيرات تتلقّاها الدالة عند كل استدعاء. أما القيمة المحددة المُمرَّرة عند الاستدعاء فتُسمى مُعطى. في PHP الحديثة، تحدّد نوع كل وسيط (float $price) ونوع القيمة المُرجَعة (: float بعد القوسين): فترفض PHP عندئذٍ القيم ذات النوع الخاطئ، ما يمنع كثيرًا من الأخطاء البرمجية. وترسل التعليمة return نتيجة إلى موضع الاستدعاء وتوقف الدالة فورًا.

PHP
<?php

function addTax(float $price): float
{
    return $price * 1.2;
}

echo addTax(100);
echo "<br>";
echo addTax(50);
يعرض 120 ثم 60: تعود النتيجة إلى المُستدعي.

يمكن لوسيط أن يتلقّى قيمة افتراضية باستخدام =: فإذا لم يوفّر الاستدعاء مُعطى لذلك الوسيط، تتولّى القيمة الافتراضية المهمة. القاعدة الذهبية: توضع الوسائط ذات القيم الافتراضية بعد الوسائط الإلزامية.

PHP
<?php

function greet(
    string $name,
    string $greeting = "Hello"
): string {
    return "{$greeting}, {$name}!";
}

echo greet("Awa");
echo "<br>";
echo greet("Awa", "Good evening");
دون مُعطى ثانٍ، تكون greeting هي “Hello”.
PHP
<?php

function totalPrice(
    float $unitPrice,
    int $quantity = 1
): float {
    return $unitPrice * $quantity;
}

echo totalPrice(19.9, 3);
echo "<br>";
echo totalPrice(8.5);
خلاصة: الأنواع، والقيمة الافتراضية، وreturn، جميعها معًا.

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. أيّ كلمة مفتاحية تُصرِّح بدالة في PHP؟
    • def
    • function
    • func
  2. ماذا تفعل التعليمة return؟
    • تطبع قيمة على الشاشة
    • تُرجِع قيمة وتوقف الدالة
    • تعيد تشغيل الدالة من البداية
  3. مع function greet(string $name, string $greeting = "Hello")، ما قيمة $greeting إذا استدعيت greet("Awa")؟
    • سلسلة نصية فارغة
    • null
    • القيمة الافتراضية “Hello”