⚙️ الدرس 6 من 13
الدوال (Functions)
كتابة كود قابل لإعادة الاستخدام
تعريف واستدعاء الدوال
الدالة هي كتلة من الكود يمكن إعادة استخدامها. بدلاً من كتابة نفس الكود مرات عديدة، نضعه في دالة ونستدعيها عند الحاجة.
فوائد الدوال:
فوائد الدوال:
- إعادة الاستخدام (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؟