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
2