چطور در PHP متغیر تعریف کنیم؟
در هر زبان برنامه نویسی اولین قدم شناخت سینتکس آن و نحوه تعریف متغیرها می باشد. متغیر به عنوان یک ظرف برای ذخیره سازی اطلاعات می باشد که درست تعریف کردن آن در هر زبان برنامه نویسی دارای اهمیت بسیار زیادی می باشد.
در تعریف متغیرها در PHP از علامت $ استفاده می شود. پس از علامت $ کافیست که نام متغیر را بنویسیم و در نهایت مقدار آن را تعریف کنیم.
$txt = "Hello World!";
$x = 5;
$y = 5.5;
بعد از آنکه کد بالا اجرا گردید متغیر txt$ مقدار !Hello World را در خود جای می دهد بنابراین از این پس به جای !Hello World براحتی می توانیم متغیر txt را فراخوانی کنیم. همین مورد برای متغیر های x و y نیز صادق می باشد.
برای تعریف متغیر های متنی کافیست از علامت ” یا ‘ پدر دو طرف آن استفاده کنیم.
قوانین تعریف متغیر ها
در هر زبان برنامه نویسی قوانینی برای تعریف متغیرها وجود دارد که باید آن ها به دقت مورد توجه قرار گیرند:
- متغیرها با علامت دلار ($) آغاز می شوند و پس از آن نامی به دلخواه برای فراخوانی آن نوشته می شود.
- نام متغیرها باید با حرف یا کارکتر _ آغاز گردد.
- نام متغیرها نمی تواند با عدد آغاز گردد.
- نام متغیرها تنها می تواند شامل کارکترهای الفبایی، عددی و _ باشد. ( A-Z ، a-z ، 0-9 ، _ ).
در PHP نام متغیرها به بزرگی و کوچکی حساس می باشد. متغیر با نام a با متغیر با نام A یکسان نیست.
در PHP نیازی به تعریف نوع متغیر نیست. خود کد به صورت خودکار بر اساس مقدار آن نوع را مشخص می کند.
اسکوپ (حوزه) تعریف متغیر در PHP
حوزه تعریف هر متغبر را می توان محدوده ای از کد تعریف کرد که در آن این متغیر تعریف شده و قابل فراخوانی می باشند. حوزه تعریف را می توانیم در سه دسته مشخص بیان کنیم. که عبارتند از:
- محلی (local)
- جهانی (global)
- استاتیک (static)
حوزه تعریف محلی و جهانی
هر متغیری که خارج از یک تابع تعریف شود دارای محدوده تعریف جهانی می باشد و در تمام نقاط خارج از توابع قابل تعریف می باشند. برای روشن شدن بیشتر موضوع به به مثال زیر توجه بفرمائید.
$x = 5; // global scope
function myTest() {
// استفاده از متغیر در داخل تابع منجر به خطا خواهد شد
echo "Variable x inside function is: $x";
}
myTest();
echo "Variable x outside function is: $x";
حال اگر متغیر درون تابع تعریف گردد محدود تعریف آن محلی یا LOCAL می باشد که تنها در داخل تابع قابلیت فراخوانی دارد.
function myTest() {
$x = 5; // local scope
echo "Variable x inside function is: $x";
}
myTest();
// استفاده از متغیر در خارج از تابع منجر به خطا خواهد شد
echo "Variable x outside function is: $x";
?>
حوزه تعریف استاتیک
همانطور که قبلا بیان شد در تعریف متغیر محلی در داخل تابع بعد از آنکه تابع فراخوانی شد و اجرای آن به اتمام رسید متغیرهای داخل تابع پاک خواهند شد و در صورت فراخوانی مجدد درون تابع متغیرها دوباره بدون در نظر گرفتن مقدار قبلی بازتعریف می شوند. حال اگر بخواهیم از مقادیر قبلی آن ها استفاده شود و ایم فرایند پاکسازی انجام نگیرد باید چه کرد؟
برای حل این مشکل که بخصوص در استفاده از حلقه بوجود خواهد آمد باید از حوزه تعریف static استفاده کنیم. برای روشن شدن بیشتر موضوع به مثال زیر توجه فرمائید.
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();