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();

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

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

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

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

نظرات

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

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