php - محدوده متغیرها
php - محدوده متغیرها

php - محدوده متغیرها

در اسکریپت های PHP متغیرها می توانند در هرجایی تعریف بشوند. محدوده یک متغیر در اسکریپت جاییست که می توان از متغیر استفاده کرد و به آن دسترسی داشت

در PHP سه محدوده متغیر وجود دارد

  • محلی ( Local )
  • عمومی ( Global )
  • ایستا ( Static )

Global

تمامی متغیرهایی که در اسکریپت خارج از توابع ( Function ) تعریف می شوند دارای محدوده Local هستند و در اسکریپت ( خارج از توابع ) قابل دسترس می باشند

$x = 5; // global scope

function myTest() {
    // using x inside this function will generate an error
    echo "<p>Variable x inside function is: $x</p>";

myTest();

echo "<p>Variable x outside function is: $x</p>";

Local

متغیرهایی که داخل توابع تعریف می شوند دارای محدوده Local هستند و فقط داخل تابع قابل دسترسی می باشند

function myTest() {
    $x = 5; // local scope
    echo "<p>Variable x inside function is: $x</p>";

myTest();

// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";

 کلمه کلیدی Global

کلمه کلیدی Global به منظور دسترسی به متغیرهای Local درون یک تابع استفاده می شود. برای استفاده از آن کافیست Global را قبل از نام متغیر درون تابع استفاده کنیم.

$x = 5;
$y = 10;

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

myTest();
echo $y; // outputs 15

همچنین PHP متغیرهای Global را درون آرایه ای با نام $GLOBALS[index] ذخیره می کند. index نام متغیر عمومی را نگه می دارد. این آرایه درون تابع قابل دسترسی می باشد و تابع می تواند توسط آن مقادیر متغیرهای عمومی را تغییر دهد

$x = 5;
$y = 10;

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


myTest();
echo $y; // outputs 15

Static

در حالت عادی زمانی که کار یک تابع پس از فراخوانی به پایان می رسد، تمامی متغیرهای آن حذف می شوند. در صورتی که نیاز داشتیم متغیر Local از بین نرود ( به هر دلیلی ) تا بتوانیم در فراخوانی های بعد از آن استفاده کنیم، از کلمه کلیدی Static قبل از نام متغیر استفاده می کنیم. 

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

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

خروجی کد فوق به شکل زیر است

0

1