مجال المتغيرات في بي اتش بي Variable Scope

Ali Majrashiمنذ 8 سنوات

مدى(مجال) استخدام المتغيرات في بي اتش بي 

في بي اتش بي تستطيع كتابة المتغيرات باي مكان بملف الكود ولكن مجال استخدام هذا المتغير ينحصر بثلاث انواع او اماكن على حسب المكان الذي كتبت فيه المتغير

مثل ماذكرنا يوجد 3 اماكن لاستخدام المتغيرات داخل ملف بي اتش بي :

  • local ( محلي او محصور)
  • global ( عام او شامل )
  • static (ساكن او ثابت)

مجال الإستخدام في local و global

اي متغير يتم تعريفه خارج اي دالة (function) يعتبر ذو مجال global ويمكن دخول محتواه فقط خارج الدالة (function)

اي متغير يتم تعريفه داخل اي دالة (function) يعتبر ذو مجال local ويمكن دخول محتواه فقط من داخل الدالة (function)

مثال بسيط لاستخدام العام للمتغير والمحصور بالدالة :


<?php
$x=5; // ذو مجال global

function myTest()
{
$y=10; // ذو مجال local
echo "<p>تجربة متغير داخل دالة:<p>";
echo "المتغير x هو: $x";
echo "<br>";
echo "المتغير y هو : $y";
}

// استخدام الدالة

myTest();

echo "<p>تجربة المتغير خارج الدالة:<p>";
echo "المتغير x هو : $x";
echo "<br>";
echo "المتغير y هو: $y";
?>

في هذا المثال يوجد متغيرين x و y ودالة myTest المتغير x ذو مجال global لانه تم تعريفه خارج دالة 

اما المتغير y فانه ذو مجال local لانه تم تعريفه داخل دالة عند معالجة الكود ومحاولة طباعة المتغيرات داخل الدالة لاحظ انه يتم اخراج المتغير y  فقط لانه معرف بداخل الدالة وعند محاولة طباعة المتغير x فستحصل على خطأ ولن يطبع الكود المتغير 

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

ccs-1-0-74418000-1385342657.jpg

كلمة global في بي اتش بي 

الكلمة global تستخدم للحصول على محتوى متغير ذو مدى global داخل الدالة في المثال السابق حاولنا طباعة متغير global داخل دالة ولم نستطع لمدى استخدام المتغير ولكن بكلمة global داخل الدالة يمكن الحصول على المتغير داخل الدالة باخبارها ان المتغير global مثال بسيط


<?php
$x=10;
$y=2;

// ستقوم الدالة بتعريف المتغيرين على انهم global ثم معالجتهم
// وتحديث المتغير y بالنتيجه

function myTest()
{
global $x,$y;
$y=$x+$y;
}

myTest();
echo $y; // سوف يقوم باخراج 12
?>

تقوم بي اتش بي بتخزين جميع المتغيرات ذات المدى global بداخل مصفوفه باسم


$GLOBALS[index]

حيث index هي اسم المتغير يمكن دخول هذه المصفوفه من داخل الدالة وتحديث اي متغير ذو مجال global

المثال السابق يمكن ان يكتب ايضا بهذه الطريقه :


<?php
$x=10;
$y=2;

// ستقوم الدالة بالتعرف على المتغيرين عن طريق اسم المصفوفه 
// وتحديث المتغير y بالنتيجه بعد عمليه حسابية

function myTest()
{
 $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}

myTest();
echo $y; // سوف يقوم باخراج 12 
?>

كلمة static في بي اتش بي

بشكل طبيعي عند عمل دالة وتعريف متغير داخلها وعند استخدام الدالة فانه بعد معالجة الدالة واخراجها جميع المتغيرات التي بداخل الداله يتم مسح قيمها ولكن احيانا نرغب بان يتم الإحتفاظ بهذه القيم لعمليات اخرى في هذه الحالة نستخدم الكلمة static داخل الدالة امام المتغير لنخبر هذه الدالة بان المتغير ثابت وساكن لكي لايتم مسح محتوى بعد استخدام الدالة

مثال:


<?php

function myTest()
{
static $x=0;
echo $x;
$x++;
}

// عند الإستخدام فانه سيطبع 0 1 2 

myTest();
myTest();
myTest();

?>

قم بتجربة الكود ولكن بدون كلمة static التي هي قبل المتغير x ستلاحظ انه سوف يتم طباعة 0 بكل مره تستخدم الدالة

التعليقات (2)

Jasser:

المفروض النتيجة تكون ١٢ وليس ٢٠

من اين أتت ٢٠ ؟

Ali Majrashi:

المفروض النتيجة تكون ١٢ وليس ٢٠

من اين أتت ٢٠ ؟

شكرا للتنبيه سوف يتم تغيير الخطا ????

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !