درphp متغيرآن هرجائي ازاسكريپت آن ميتواند تعريف يا مقدار بگيرد .درهرجائي از اسكريپت كه بتوان به آن رجوع نموده ويا استفاده كرد، ميدان (scope ) آن نامند .درصورتيكه ازمتغيري خارج ازميدانش استفاده شود، خطا صادر ميشود.
درphp براي متغيرها سه نوع ميدان وجود دارد .ميدان ها مطابق زيرند.
-1ميدان محليlocal
-2جهانيglobal
-3ايستاstatic
اگر متغيري خارج ازتوابع تعريف شود، ازآن خارج توابع ميتوان استفاده نمود .اين نوعglobal ميباشد.
مثال ـ درمثال زير متغير$xازنوع ميدان جهاني است.
<?php $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) است .در مثال زيرمتغير$x از نوع محلي است .
<?php 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>"; ?>
دراين مثال متغيرمحلي$x دردو تابع تعريف شده است، اما متفاوت هستند .هركدام درتابع خودشان قابل تشخيص هستند.بعبارتي هيچكدام آنها برديگري اثر دارد.
براي اينكه درتابع ازمتغيرهاي بيروني بتوان استفاده نمود، بايد متغير مربوطه درتابع با كلمه globalتعريف گردد .درمثال زير براي دو متغير $y , $x مورد فوق صادق است.
<?php $x = 5; $y = 10; function myTest() { global $x, $y; $y = $x + $y; } myTest(); echo $y; // outputs 15 ?>
درphp همه متغيرهاي جهاني دريكarray بنام$GLOBALS[index] كهindex ، نام متغير ميباشد ذخيره ميگردد .با آن ميتوان درتوابع ازمتغيرهاي بيروني استفاده نمود.دراين حالت ضرورت تعريف مطابق مثال قبلي نيست .درمثال زير، كه كارمثال قبلي است، ازمتغيرسوپرگلوبال $GLOBALاستفاده شده است.
<?php $x = 5; $y = 10; function myTest() { $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; } myTest(); echo $y; // outputs 15 ?>
پس از اجراي تابع بطور عادي همه متغيرها حذف ميگردند .بعضي مواقع لازم است، حذف نشده واستفاده شوند .براي اينكار متغير مورد نياز بايد با كي وردstatic درتابع تعريف شود.
مثال ـ در مثال زير متغير$x بصورتstatic تعريف شده است، وتا پايان باقي ميماند .
<?php <?php function myTest() { static $x = 0; echo $x; $x++; } myTest(); myTest(); myTest(); ?>
دراين مثال هرموقع كه تابعmytest()اجرا شود، ارآخرين مقدار متغير$x درآخرين اجراي تابع mytest() استفاده ميشود .
توجه ـ متغير $x ،همچنان براي تابع متغير محلي است ميتوان ازآن خارج تابع استفاده نمود.