میدان دید متغیرها در php
میدان دید یک متغیر، به محدوده ای از کدها گفته می شود که آن متغیر قابل استفاده است. در زبان php سه نوع میدان دید برای متغیرها وجود دارد که عبارتند از:
- میدان دید local (محلی)
- میدان دید global (سراسری)
- میدان دید static (استاتیک)
میدان دید global یا سراسری در php
در زبان برنامه نویسی php، اگر یک متغیر را بیرون از تابع ها تعریف کنیم، میدان دید آن سراسری یا global خواهد بود. و تنها در بیرون از تابع ها قابل استفاده است اما اگر بخواهیم از آنها در تابع ها نیز استفاده کنیم راهی وجود دارد.
به مثال زیر توجه کنید:
<?php
$name = "sina";
function show_name(){
echo $name;
}
show_name();
?>
با اجرای کدهای بالا خطای زیر تولید می شود:
Notice: Undefined variable: name in /opt/lampp/htdocs/test4.php on line 5
خطای بالا می گوید که متغیر name$ در این تابع تعریف نشده است.
اما در بیرون از تابع ها، می توانیم به متغیر های سراسری به سادگی دسترسی داشته باشیم. به مثال زیر توجه کنید:
<?php
$name = "sina";
echo $name;
?>
نتیجه به صورت زیر خواهد بود:
sina
میدان دید محلی یا local در php
«متغیرهایی که در داخل تابع ها تعریف می شوند، را متغیر محلی می نامیم. یک متغیر محلی، تنها در همان تابعی که تعریف شده است قابل استفاده است و نمی توانیم در بیرون از تابع به مقدار آن دسترسی داشته باشیم.»[1] به مثال زیر توجه کنید:
<?php
function show_name(){
$name = "sina";
echo $name;
}
show_name();
?>
نتیجه:
sina
اگر بخواهیم در بیرون از تابع به مقدار یک متغیر محلی دسترسی داشته باشیم با خطا مواجه خواهیم شد:
<?php
function show_name(){
$name = "sina";
}
show_name();
echo $name;
?>
نتیجه:
Notice: Undefined variable: name in /opt/lampp/htdocs/test7.php on line 7
نکته: «فرض کنید دو تابع داریم، این امکان وجود دارد که در هر تابع یک متغیر با یک نام یکسان تعریف کنیم مثلا در هر دو تابع می توانیم متغیری به نام name$ تعریف کنیم چون متغیرهای درون تابع فقط درون همان تابع تعریف شده هستند.»[2]
استفاده از کلمه ی کلیدی global در php
اگر بخواهیم از متغیرهای سراسری در داخل یک تابع استفاده کنیم، می توانیم از کلمه ی کلیدی global استفاده کنیم. به مثال زیر توجه کنید:
<?php
$name = "sina ";
$family = "abbasi";
function full_name(){
global $name;
global $family;
echo $name . $family;
}
full_name();
?>
نتیجه:
sina abbasi
همان طور که مشاهده می کنید، در خط ۶ و ۷ در درون تابع از کلمه ی کلیدی global قبل از نام متغیرها استفاده کردیم و به این ترتیب توانستیم به php بفهمانیم که منظور ما از این دو متغیر همان متغیرهای سراسری تعریف شده در بیرون از تابع هستند. و در خط شماره ی ۹ از آن دو متغیر استفاده کردیم. و مقدار آنها را با یکدیگر، به وسیله ی عملگر نقطه ادغام کردیم.
«در php تمام متغیرهای سراسری در یک آرایه به نام GLOBALS[index] ذخیره می شوند. و باید به جای کلمه ی index نام متغیر مورد نظر را قرار دهیم تا به مقدار آن دسترسی داشته باشیم. می توانیم این آرایه را در داخل تابع ها نیز مورد استفاده قرار دهیم.»[3]
کلمه ی کلیدی static در php
«وقتی که ما یک تابع را اجرا می کنیم، پس از آن تمام مقدارهای متغیرهای آن از بین می روند . اما گاهی اوقات لازم داریم که مقدار یک متغیر محلی درون تابع از بین نرود. زیرا بعدا به آن نیاز داریم. برای انجام این کار می توانیم از کلمه ی کلیدی static به هنگام تعریف آن متغیر استفاده کنیم.»[4]
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
نتیجه:
0
1
2
همان طور که در خط شماره ۳ مشاهده می کنید، به هنگام تعریف متغیر x$ از کلمه ی کلیدی static قبل از آن استفاده کردیم. اما این متغیر هنوز هم در تابع، محلی است.
منابع و مآخذ
۱- سایت www.w3schools.com/php/php_variables
۲. همان
۳. همان
۴. همان
- بازدید: 735
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.