📘 الدرس 8: الدوال (Functions) في PHP بشكل موسع
الدوال Functions هي كتل برمجية منفصلة تقوم بمهمة محددة وتقدر تستدعيها في أي مكان. استخدام الدوال يخلي الكود منظم، قابل لإعادة الاستخدام، وسهل الصيانة. تخيل إنك تكتب نفس الكود 20 مرة؟ مع الدوال تكتبه مرة واحدة وتستدعيه 20 مرة.
🔹 1. تعريف الدالة وأنواعها
لإنشاء دالة نستخدم الكلمة المفتاحية function متبوعة باسم الدالة وأقواس تحتوي المعاملات:
- اسم الدالة: لازم يبدأ بحرف أو _ وممنوع يبدأ برقم
- المعاملات Parameters: القيم اللي ترسلها للدالة
- القيمة المرجعة Return: النتيجة اللي ترجعها الدالة بـ
return
مثال 1: دالة بدون معاملات
function sayHello(){
echo "مرحباً بك في موقعنا!<br>";
}
sayHello(); // استدعاء الدالة
?>
الاستخدام: عرض رسالة ترحيب ثابتة، شريط إعلاني، فوتر ثابت.
مثال 2: دالة مع معاملات
function greetUser($name, $age = 18){
echo "مرحباً $name، عمرك $age سنة!<br>";
}
greetUser("حسام", 25); // مرحباً حسام، عمرك 25 سنة!
greetUser("أحمد"); // مرحباً أحمد، عمرك 18 سنة! - استخدم القيمة الافتراضية
?>
ملاحظة: تقدر تعطي للمعامل قيمة افتراضية $age = 18 عشان لو ما أرسلت قيمة يشتغل بدون مشاكل.
🔹 2. الدالة التي ترجع قيمة Return Value
الدوال اللي ترجع قيمة تستخدمها في العمليات الحسابية والمنطقية.
مثال عملي: دالة الجمع
function sum($a, $b){
return $a + $b;
}
$result = sum(10, 20);
echo "المجموع: $result"; // المجموع: 30
$total = sum($result, 50);
echo "<br>المجموع الجديد: $total"; // المجموع الجديد: 80
?>
مثال عملي: دالة فحص العمر
function checkAge($age){
if($age >= 18){
return "مسموح لك بالدخول";
} else {
return "عذراً، العمر غير مناسب";
}
}
echo checkAge(20); // مسموح لك بالدخول
echo checkAge(15); // عذراً، العمر غير مناسب
?>
🔹 3. الدوال المضمنة Built-in Functions
PHP فيها أكثر من 1000 دالة جاهزة. ما تحتاج تعيد اختراع العجلة.
| الدالة | الوظيفة | مثال |
|---|---|---|
strlen() | طول النص | strlen("PHP") // 3 |
date() | التاريخ والوقت | date("Y-m-d") |
str_replace() | استبدال نص | str_replace("a","b",$str) |
array_push() | إضافة لمصفوفة | array_push($arr, "قيمة") |
md5() | تشفير النص | md5("password") |
مثال عملي:
$text = "مرحبا بالعالم";
echo "طول النص: " . mb_strlen($text, "UTF-8"); // 13
echo "<br>التاريخ اليوم: " . date("Y-m-d"); // 2026-09-04
echo "<br>الوقت الآن: " . date("H:i:s"); // 14:30:25
?>
🔹 4. أنواع المعاملات في PHP 7+
تقدر تحدد نوع البيانات للمعامل والقيمة المرجعة عشان تتجنب الأخطاء:
function multiply(int $a, int $b): int {
return $a * $b;
}
echo multiply(5, 4); // 20
// echo multiply(5, "4"); // بيشتغل ويحول النص لرقم
?>
🔹 5. المتغيرات المحلية والعالمية Scope
المتغير داخل الدالة محلي ما تقدر توصل له من خارجها إلا بـ global.
$name = "حسام"; // متغير عام
function testScope(){
global $name;
$local = "محلي";
echo $name; // حسام
echo $local; // محلي
}
testScope();
echo $local; // خطأ! المتغير غير موجود هنا
?>
global قدر الإمكان. الأفضل تمرر المتغير كمعامل للدالة.
🔹 6. الدوال المجهولة Anonymous Functions
دوال بدون اسم تستخدمها مرة واحدة أو تخزنها في متغير:
$greet = function($name){
return "أهلاً $name";
};
echo $greet("حسام"); // أهلاً حسام
// استخدام مع array_map
$nums = [1, 2, 3];
$squared = array_map(function($n){ return $n * $n; }, $nums);
print_r($squared); // [1, 4, 9]
?>
🔹 7. مثال عملي: نظام قالب الموقع
استخدم الدوال عشان ما تكرر كود الهيدر والفوتر في كل صفحة:
function headerSite($title){
echo "<!DOCTYPE html><html><head>";
echo "<title>$title</title></head><body>";
echo "<h1>مدونة الحسام</h1>";
}
function footerSite(){
echo "<footer>© 2026 جميع الحقوق محفوظة</footer>";
echo "</body></html>";
}
function showArticle($title, $content){
echo "<article><h2>$title</h2><p>$content</p></article>";
}
// الاستخدام
headerSite("الصفحة الرئيسية");
showArticle("تعلم PHP", "PHP لغة رائعة لتطوير المواقع.");
showArticle("الحلقات", "يمكنك استخدام الحلقات لتكرار الكود.");
footerSite();
?>
🔹 8. أفضل الممارسات في الدوال
| الممارسة | السبب |
|---|---|
| استخدم أسماء واضحة | calculateTotal() أفضل من calc() |
| دالة واحدة = مهمة واحدة | سهولة الاختبار والصيانة |
| استخدم التعليقات | اشرح ماذا تفعل الدالة |
| تجنب الدوال الطويلة | لو زادت عن 30 سطر قسمها |
| تحقق من المدخلات | استخدم isset() و is_numeric() |
1. الدوال تقلل تكرار الكود وتسهل الصيانة
2. استخدم
return لاسترجاع النتائج3. حدد نوع البيانات للمعاملات لو تقدر
4. فصل الكود المتكرر في دوال مستقلة
5. الدوال المضمنة وفرت عليك 80% من الشغل
© جميع الحقوق محفوظة - مدونة الحسام | al-hassam.blogspot.com
