دامنه متغیرها (Variables Scope)
دامنه متغیرها یعنی محدوده دید متغیر. مثل کارت ورود به کلاس. هر متغیر فقط در بخش مشخصی دیده می شود. در PHP سه دامنه داریم: سراسری، محلی، و استاتیک.
انواع دامنه در PHP
متغیر می تواند سراسری (Global)، محلی (Local)، یا استاتیک (Static) باشد. هرکدام قوانین دید و عمر متفاوتی دارند.
گلوبال و لوکال
متغیر خارج تابع، «سراسری» است و داخل تابع مستقیم دیده نمی شود.
$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>";
متغیر داخل تابع، «محلی» است و بیرون تابع دیده نمی شود.
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 استفاده کن.
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
همه گلوبال ها در آرایه $GLOBALS هم هستند و از هرجا در دسترس اند.
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
حفظ مقدار محلی با static
متغیرهای محلی معمولاً بعد از اجرا حذف می شوند. با static مقدارشان بین فراخوانی ها حفظ می شود.
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
نکته: متغیر استاتیک همچنان «محلی» است؛ فقط فراموش کار نیست!
مسیر ادامه مطالعه
- متغیرها در PHP برای مروری سریع.
- Echo/Print برای چاپ خروجی.
جمع بندی سریع
- Global بیرون تابع است؛ داخل تابع دیده نمی شود.
- Local داخل همان تابع معتبر است.
- با
globalیا$GLOBALSبه گلوبال برس. - با
staticمقدار محلی را نگه دار.