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

مدى(مجال) استخدام المتغيرات في بي اتش بي 
في بي اتش بي تستطيع كتابة المتغيرات باي مكان بملف الكود ولكن مجال استخدام هذا المتغير ينحصر بثلاث انواع او اماكن على حسب المكان الذي كتبت فيه المتغير
مثل ماذكرنا يوجد 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 فستحصل على خطأ بحيث انك تستطيع استخدامه فقط داخل الدالة هذا سيكون الناتج عند معالجة الكود







كلمة 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 بكل مره تستخدم الدالة

تعليقات

المشاركات الشائعة من هذه المدونة

مقدمة عن بي اتش بي

صيغة بي اتش بي PHP Syntax

تثبيت بي اتش بي PHP Install