PHP – حوزه متغیر (Variables Scope)

حوزه متغیرهای PHP

در PHP، متغیرها می‌توانند در هر کجای اسکریپت اعلان شوند.

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

PHP سه نوع حوزه متغیر دارد:

  • Local (محلی)
  • Global (سراسری)
  • Static (ثابت)

حوزه سراسری و محلی

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

مثال

متغیری با حوزه سراسری:

$x = 5; // global scope

function myTest() {
  // استفاده از x داخل این تابع خطا ایجاد می‌کند
  echo "<p>Variable x inside function is: $x</p>";
}
myTest();

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

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

مثال

متغیری با حوزه محلی:

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

// استفاده از x خارج از تابع خطا ایجاد می‌کند
echo "<p>Variable x outside function is: $x</p>";

شما می‌توانید متغیرهای محلی با نام مشابه در توابع مختلف داشته باشید، زیرا متغیرهای محلی تنها توسط تابعی که در آن اعلان شده‌اند شناخته می‌شوند.

کلمه کلیدی global در PHP

کلمه کلیدی global برای دسترسی به یک متغیر سراسری از داخل یک تابع استفاده می‌شود. برای این کار، از کلمه کلیدی global قبل از متغیرها (داخل تابع) استفاده کنید:

مثال

$x = 5;
$y = 10;

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

myTest();
echo $y; // خروجی 15

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

مثال بالا می‌تواند به این صورت بازنویسی شود:

مثال

$x = 5;
$y = 10;

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

myTest();
echo $y; // خروجی 15

کلمه کلیدی static در PHP

به طور معمول، زمانی که یک تابع کامل/اجرا می‌شود، تمام متغیرهای آن حذف می‌شوند. با این حال، گاهی اوقات ما می‌خواهیم یک متغیر محلی حذف نشود. ما به آن برای کاری دیگر نیاز داریم.

برای این کار، از کلمه کلیدی static زمانی که متغیر را برای اولین بار اعلان می‌کنید استفاده کنید:

مثال

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

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

سپس، هر بار که تابع فراخوانی می‌شود، آن متغیر همچنان اطلاعاتی را که از آخرین باری که تابع فراخوانی شده بود، دارد.

نکته: متغیر همچنان محلی به تابع است.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.