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

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

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

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

إنّ variable المعرّف داخل function لا يوجد إلا داخل تلك function. ويُسمّى local variable:

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

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

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

وبالمثل، لا تكون المتغيرات المُعرَّفة خارج دالة متاحةً داخلها تلقائيًا:

<?php
$name = "Alice";

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

greet();
?>

على الرغم من أن $name موجود في الكود الرئيسي، لا تستطيع function رؤيته. لاستخدام القيم الخارجية في function، مرّرها كـ parameters: فهذا هو الأسلوب النظيف والموصى به الذي تعلّمته بالفعل.

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

challenge icon

التحدي

سهل

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

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

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

داخل الدالة:

  • أنشئ متغيرًا محليًا $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

جرّب بنفسك

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

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



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

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

جميع دروس الأساسيات

تدرّب بنفسك: مترجم PHP عبر الإنترنت