Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

نطاق المتغيرات

جزء من قسم Fundamentals في رحلة PHP على Coddy — الدرس 67 من 71.

المتغيرات التي يتم إنشاؤها داخل دالة تكون منفصلة تمامًا عن المتغيرات خارجها. يُسمى هذا المفهوم نطاق المتغير (variable scope)، وفهمه يمنع حدوث أخطاء برمجية محيرة في كودك.

المتغير الذي يتم تعريفه داخل دالة يوجد فقط داخل تلك الدالة. ويسمى متغير محلي:

<?php
function sayHi() {
    $message = "Hello!";
    echo $message;
}

sayHi();
echo $message; // خطأ: $message غير موجود هنا
?>

المتغير $message يتم إنشاؤه داخل sayHi() ويختفي عند انتهاء الدالة. محاولة الوصول إليه من الخارج تتسبب في حدوث خطأ.

وبالمثل، فإن المتغيرات المعرفة خارج الدالة لا تتوفر تلقائياً داخلها:

<?php
$name = "Alice";

function greet() {
    echo $name; // خطأ: $name غير معرف داخل هذه الدالة
}

greet();
?>

على الرغم من وجود $name في الكود الرئيسي، إلا أن الدالة لا يمكنها رؤيته. لاستخدام قيم خارجية في دالة، قم بتمريرها كمعاملات (parameters) — هذا هو النهج النظيف والموصى به الذي تعلمته بالفعل.

هذا الفصل مفيد في الواقع. فهو يعني أن الدوال لن تغير المتغيرات في أجزاء أخرى من برنامجك عن طريق الخطأ، مما يجعل كودك أكثر قابلية للتوقع وأسهل في تصحيح الأخطاء.

challenge icon

التحدي

سهل

اقرأ سطرين من المدخلات:

  1. اسم الشخص (على سبيل المثال، Alice)
  2. مبلغ المكافأة كعدد صحيح (على سبيل المثال، 50)

أنشئ دالة تسمى calculateBonus تقبل معاملين: $name (سلسلة نصية) و $bonus (عدد صحيح).

داخل الدالة:

  • أنشئ متغيراً محلياً $baseSalary وقم بتعيينه إلى 1000
  • احسب إجمالي الراتب عن طريق جمع $baseSalary و $bonus
  • أعد سلسلة نصية بالتنسيق التالي: [name] earns [total]

استدعِ الدالة مع قيم المدخلات واطبع النتيجة المعادة.

مثال 1:

إذا كانت المدخلات هي Alice و 50، يجب أن يكون المخرج:

Alice earns 1050

مثال 2:

إذا كانت المدخلات هي Bob و 200، يجب أن يكون المخرج:

Bob earns 1200

مثال 3:

إذا كانت المدخلات هي Emma و 0، يجب أن يكون المخرج:

Emma earns 1000

ورقة مرجعية

المتغيرات التي يتم إنشاؤها داخل دالة هي متغيرات محلية (local variables) وتوجد فقط داخل تلك الدالة. يُسمى هذا المفهوم نطاق المتغير (variable scope).

لا يمكن الوصول إلى متغير تم تعريفه داخل دالة من خارجها:

<?php
function sayHi() {
    $message = "Hello!";
    echo $message;
}

sayHi();
echo $message; // خطأ: $message غير موجود هنا
?>

وبالمثل، فإن المتغيرات المعرفة خارج الدالة لا تتوفر تلقائياً داخلها:

<?php
$name = "Alice";

function greet() {
    echo $name; // خطأ: $name غير معرف داخل هذه الدالة
}

greet();
?>

لاستخدام قيم خارجية في دالة، قم بتمريرها كمعاملات (parameters).

جرّب بنفسك

<?php
// قراءة المدخلات
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));

// TODO: قم بإنشاء دالة calculateBonus أدناه
// - يجب أن تقبل $name (سلسلة نصية) و $bonus (عدد صحيح) كمعاملات
// - قم بإنشاء متغير محلي $baseSalary وقيمته 1000
// - احسب إجمالي الراتب وأرجع "[name] earns [total]"



// استدعاء الدالة وطباعة النتيجة
echo calculateBonus($name, $bonus);
?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals