JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

-->
Home

الدرس 8 الموسع: الدوال (Functions) في PHP

📘 الدرس 8: الدوال (Functions) في PHP بشكل موسع


دوال php

الدوال Functions هي كتل برمجية منفصلة تقوم بمهمة محددة وتقدر تستدعيها في أي مكان. استخدام الدوال يخلي الكود منظم، قابل لإعادة الاستخدام، وسهل الصيانة. تخيل إنك تكتب نفس الكود 20 مرة؟ مع الدوال تكتبه مرة واحدة وتستدعيه 20 مرة.

💡 قاعدة ذهبية: إذا كتبت نفس الكود أكثر من مرتين، حوله لدالة فوراً.

🔹 1. تعريف الدالة وأنواعها

لإنشاء دالة نستخدم الكلمة المفتاحية function متبوعة باسم الدالة وأقواس تحتوي المعاملات:

  • اسم الدالة: لازم يبدأ بحرف أو _ وممنوع يبدأ برقم
  • المعاملات Parameters: القيم اللي ترسلها للدالة
  • القيمة المرجعة Return: النتيجة اللي ترجعها الدالة بـ return

مثال 1: دالة بدون معاملات

<?php
function sayHello(){
  echo "مرحباً بك في موقعنا!<br>";
}

sayHello(); // استدعاء الدالة
?>

الاستخدام: عرض رسالة ترحيب ثابتة، شريط إعلاني، فوتر ثابت.

مثال 2: دالة مع معاملات

<?php
function greetUser($name, $age = 18){
  echo "مرحباً $name، عمرك $age سنة!<br>";
}

greetUser("حسام", 25); // مرحباً حسام، عمرك 25 سنة!
greetUser("أحمد"); // مرحباً أحمد، عمرك 18 سنة! - استخدم القيمة الافتراضية
?>

ملاحظة: تقدر تعطي للمعامل قيمة افتراضية $age = 18 عشان لو ما أرسلت قيمة يشتغل بدون مشاكل.

🔹 2. الدالة التي ترجع قيمة Return Value

الدوال اللي ترجع قيمة تستخدمها في العمليات الحسابية والمنطقية.

مثال عملي: دالة الجمع

<?php
function sum($a, $b){
  return $a + $b;
}

$result = sum(10, 20);
echo "المجموع: $result"; // المجموع: 30

$total = sum($result, 50);
echo "<br>المجموع الجديد: $total"; // المجموع الجديد: 80
?>

مثال عملي: دالة فحص العمر

<?php
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")

مثال عملي:

<?php
$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+

تقدر تحدد نوع البيانات للمعامل والقيمة المرجعة عشان تتجنب الأخطاء:

<?php
function multiply(int $a, int $b): int {
  return $a * $b;
}

echo multiply(5, 4); // 20
// echo multiply(5, "4"); // بيشتغل ويحول النص لرقم
?>
الأنواع المتاحة: int, float, string, bool, array, object, null

🔹 5. المتغيرات المحلية والعالمية Scope

المتغير داخل الدالة محلي ما تقدر توصل له من خارجها إلا بـ global.

<?php
$name = "حسام"; // متغير عام

function testScope(){
  global $name;
  $local = "محلي";
  echo $name; // حسام
  echo $local; // محلي
}

testScope();
echo $local; // خطأ! المتغير غير موجود هنا
?>
⚠️ تحذير: تجنب استخدام global قدر الإمكان. الأفضل تمرر المتغير كمعامل للدالة.

🔹 6. الدوال المجهولة Anonymous Functions

دوال بدون اسم تستخدمها مرة واحدة أو تخزنها في متغير:

<?php
$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. مثال عملي: نظام قالب الموقع

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

<?php
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

author-img

حسام الفقيه

Comments
No comments
Post a Comment
    NameEmailMessage