/ دورة PHP الشاملة
0/13 مكتملة
⚙️ الدرس 6 من 13

الدوال (Functions)

كتابة كود قابل لإعادة الاستخدام

🕐 20-30 دقيقة 📝 5 أسئلة 💻 2 أمثلة برمجية

تعريف واستدعاء الدوال

الدالة هي كتلة من الكود يمكن إعادة استخدامها. بدلاً من كتابة نفس الكود مرات عديدة، نضعه في دالة ونستدعيها عند الحاجة.

فوائد الدوال:
  • إعادة الاستخدام (DRY: Don't Repeat Yourself)
  • تنظيم الكود وتقسيمه لأجزاء منطقية
  • سهولة الصيانة والتعديل
  • اختبار كل جزء بشكل مستقل
PHP
<?php
// تعريف دالة بسيطة
function sayHello() {
    echo "مرحباً بالجميع! <br>";
}

// استدعاء الدالة
sayHello(); // مرحباً بالجميع!
sayHello(); // يمكن استدعاؤها مرات عديدة
sayHello();

// دالة مع معاملات (Parameters)
function greet($name, $title = "الأستاذ") {
    echo "مرحباً $title $name! <br>";
}

greet("أحمد");           // مرحباً الأستاذ أحمد
greet("فاطمة", "الدكتورة"); // مرحباً الدكتورة فاطمة

// دالة مع قيمة مُرجَعة (return)
function add($a, $b) {
    return $a + $b;
}

$result = add(15, 27);
echo "15 + 27 = $result <br>";

// يمكن استخدام نتيجة الدالة مباشرة
echo "10 + 5 = " . add(10, 5);
?>
الناتج المتوقع
مرحباً بالجميع! مرحباً بالجميع! مرحباً بالجميع! مرحباً الأستاذ أحمد! مرحباً الدكتورة فاطمة! 15 + 27 = 42 10 + 5 = 15

النطاق (Scope) والدوال المتقدمة

نطاق المتغيرات (Variable Scope): المتغيرات المعرَّفة خارج الدالة لا يمكن الوصول إليها داخلها والعكس، إلا باستخدام global.

أنواع الدوال المتقدمة:
  • Variadic Functions: دوال تقبل عدداً غير محدود من المعاملات باستخدام ...
  • Anonymous Functions: دوال بدون اسم (Closure)
  • Arrow Functions (PHP 7.4+): اختصار للـ Anonymous Functions
PHP
<?php
$globalVar = "أنا عالمي";

function testScope() {
    // $globalVar غير متاح هنا مباشرة
    // global $globalVar; // لاستخدامه
    $localVar = "أنا محلي";
    echo $localVar . "<br>";
}
testScope();
// echo $localVar; // خطأ! localVar غير موجود هنا

// Variadic: عدد غير محدود من المعاملات
function sumAll(...$numbers) {
    return array_sum($numbers);
}
echo sumAll(1, 2, 3)         . "<br>"; // 6
echo sumAll(10, 20, 30, 40)  . "<br>"; // 100

// Anonymous Function (Closure)
$double = function($x) {
    return $x * 2;
};
echo $double(5) . "<br>"; // 10

// Arrow Function (أنيقة!)
$triple = fn($x) => $x * 3;
echo $triple(4) . "<br>"; // 12

// Type Declarations (PHP 7+)
function divide(float $a, float $b): float {
    if ($b == 0) return 0;
    return $a / $b;
}
echo divide(10, 3); // 3.333...
?>
الناتج المتوقع
أنا محلي 6 100 10 12 3.3333333333333
🧠

اختبر فهمك — الدوال (Functions)

5/5 للمتابعة
السؤال 1
ما الكلمة المفتاحية لتعريف دالة في PHP؟
السؤال 2
ما القيمة الافتراضية للمعامل في: function greet($name, $title = "Mr")?
السؤال 3
ما الكلمة المفتاحية لاستخدام متغير عالمي داخل دالة؟
السؤال 4
ما مبدأ DRY في البرمجة؟
السؤال 5
ما صيغة Arrow Function في PHP 7.4؟