طراحی وب سایت کتابخانه

طراحی وب سایت کتابخانه

متغیرها (Variables)

دوشنبه, ۱۱ اسفند ۱۳۹۳، ۰۱:۴۳ ب.ظ

     برای نشان دادن یک متغیر ابتدا یک علامت ($) و سپس نام متغیر را می آورید. در نظر داشته باشید که نام متغیر به بزرگی و کوچکی حروف حساس است. 

     در نامگذاری متغیرها باید همانند نامگذاری برچسب ها از قوانین خاصی تبعیت نمایید. نام یک متغیر با یک حرف یا علامت زیرخط (_) آغاز می شود که بعد از آن هر تعداد حرف، عدد، یا علامت زیرخط را می توانید قرار دهید. با استفاده از قواعد عبارت های رایج می توان این موضوع را اینگونه بیان کرد:

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

     در واقع منظور از حروف این حروف می باشد: a-z و A-Z و منظور از بایت ها: 127 الی 255 (0x7f-0xff)

     به طور کلی قواعد زیر را در مورد نامگذاری متغیرها رعایت کنید: 

  1. یک متغیر با علامت $ شروع می شود و پس از آن نام مورد نظر خود را می آورید.
  2. نام متغیر باید با علامت زیرخط (_) یا یک حرف آغاز شود. 
  3. نام متغیر نباید با یک عدد شروع شود.
  4. نام متغیر فقط باید شامل حرف و عدد باشد (حروف a تا z - کوچک یا بزرگ).
  5. نام متغیر به بزرگی و کوچکی حروف حساس است. 

     برای روشن تر شدن مطلب، به چند مثال زیر توجه کنید: 

<?php
$var = 'touk';
$Var = 'Mehrdad';
echo "$var, $Var"; // outputs "touk, Mehrdad"

$4you = 'not yet'; // invalid; نام متغیر نباید با عدد شروع شود
$_4you = 'not yet'; // valid; نام متغیر نباید با علامت زیرخط شروع شود
$täyte = 'mansikka'; // valid; 'ä' is (Extended) ASCII 228.
// استفاده از کدهای اسکی که معتر است
?>

     متغیرها در زبان پی اچ پی با زبان های کامپایلی مانند زبان C تفاوت اساسی دارد؛ در اینگونه زبانها باید قبل از استفاده از یک متغیر، ابتدا متغیر را تعریف کرده و نوع آن را نیز مشخص کرد اما در پی اچ پی اینگونه نیست. به عبارت دیگر در پی اچ پی لازم نیست قبل از استفاده از متغیرها، آنها را تعریف کنیم و در نتیجه متغیر می تواند نوع خود را بر اساس موقعیتی که در آن مورد استفاده قرار می گیرد تغییر دهد.

     به صورت پیش فرض، همیشه متغیرها با مقدار نسبت داده می شوند، این بدان معنی است که هنگامی که یک عبارت را به یک متغیر نسبت می دهیم، تمام مقدار مربوط به آن عبارت به داخل متغیر کپی می شود. یعنی هنگامی که مقدار یک متغیر را به یک متغیر دیگر نسبت می دهیم، تغییر دادن مقدار یکی از این متغیرها بر روی مقدار متغیر دیگر تاثیر نخواهد داشت. به عبارت دیگر این دو متغیر از یکدیگر مستقل هستند. 

     البته پی اچ پی راه دیگری را نیز برای نسبت دادن مقدار به یک متغیر ارائه می کند. به این شیوه نسبت دادن با مرجع می گویند (Assign by Reference). در این حالت متغیر جدیدی که ایجاد می کنیم به متغیر اصلی ارجاع می دهد؛ در واقع این متغیر به یک نام مستعار یا اشاره کننده به متغیر اولیه تبدیل می شود.

     اگر می خواهید یک متغیر را به صورت با مرجع تعریف کنید، قبل از متغیری که نسبت داده شده است یک علامت & قرار دهید.

     مثال زیر خروجی "نام این سایت طوک است" را دوبار ایجاد می کند:

<?php
$name = 'طوک';              // Assign the value 'طوک' to $name
$site = &$name;              // Reference $name via $site.
$site = "نام این سایت $site است";  // Alter $site...
echo $site;
echo $name;                 // $name is altered too.
?>
     همانطور که در بالا نیز اشاره شد در پی اچ پی لازم نیست قبل از استفاده از متغیرها آنها را تعریف کرد. هرچند بهتر است عادت کنید این کار را انجام دهید چون در اینصورت کدهای شما خواناتر شده و اصول برنامه نویسی را نیز بهتر رعایت کرده اید. اما اگر این کار را هم نکنید، پی اچ پی خودش کارها را روبه راه می کند! متغیرهایی که مقداردهی اولیه نشده اند بسته به نوع آنها و محیطی که در آن مورد استفاده قرار می گیرند یک مقدار پیش فرض دارند. مقدار پیش فرض برای نوع بولی FALSE است، دو نوع عدد صحیح و شناور صفر (0) است، در نوع رشته یک مقدار رشته خالی به آن نسبت داده می شود و مقدار پیش فرض برای یک آرایه، یک ارایه خالی می باشد.
دامنه (حوزه) متغیرها
      منظور از دامنه (حوزه) یک متغیر (Scope) محدوده ای است که متغیر در آن تعریف شده است. در اکثر موارد، متغیرهایی که در پی اچ پی تعریف می کنیم فقط در یک دامنه (حوزه) معتبر هستند. این دامنه (حوزه)، شامل فایلهایی نیز می شود که در داخل فایل خود فراخوانی می کنید. به مثال زیر توجه کنید:
<?php
$number = 1;
include 'file.inc';
?>
      همانطور که در مثال بالا مشاهده می کنید، متغیر number را در داخل این فایل پی اچ پی تعریف کرده ایم و سپس یک فایل دیگر را نیز به داخل فایل اصلی فراخوانی کرده ایم؛ متغیری که در فایل اصلی تعریف کرده ایم در داخل فایلی که آن را فراخوانی کرده ایم نیز معتبر است و در دسترس می باشد.
     اگر یک تابع را تعریف کنید و در داخل تابع یک یا چند متغیر را ایجاد کنید، این متغیرها در داخل حوزه محلی تابع تعریف و ایجاد شده اند و فقط در داخل همان تابع قابل دستری می باشند. برای درک بهتر قضیه به مثال زیر توجه کنید:
<?php
$number = 1; /* global scope */ 

function sample()
{ 
    echo $number; /* این یک مغیر محلی در داخل تابع است */ 
} 

sample();
?>
      تابع sample در مثال بالا هیچ خروجی نمایش نمی دهد، به خاطر اینکه متغیر number اول به صورت سراسری تعریف شده اما همین متغیر در داخل تابع به صورت محلی تعریف شده و یک متغیر مجزاست. به همین خاطر استفاده از تابع echo در داخل تابع تعریف شده هیچ نوع خروجی ایجاد نمی کند. اگر می خواهید یک متغیر سراسری در داخل تابع نیز در دسترس باشد باید آن متغیر را با استفاده از عبارت global به صورت سراسری تعریف کنید.
     به مثال زیر در مورد استفاده از کلمه global و نحوه تاثیر آن بر روی مقدار متغیرها را مشاهده می کنید:
<?php
$number1 = 1;
$number2 = 2;

function Sum()
{
    global $number1, $number2;

    $number2 = $number1 + $number2;
} 

Sum();
echo $number2;
?>
      خروجی مثال بالا عدد 3 خواهد بود. می بینید که نتیجه با مثال قبلی کاملا متفاوت است؛ و این تفاوت به خاطر استفاده از کلمه global در داخل تابع است. در این مثال، متغیرهای number1 و number2 را به صورت سراسری (global) تعریف کرده ایم، به همین خاطر این متغیرها، مقادیری را که در خطوط اول کد به آن نسبت داده ایم به خود می پذیرد و بر روی نتجیه تابع تعریف شده عمل می کند.
     با استفاده از آرایه خاص $GLOBALS نیز می توان برای متغیرها دامنه سراسری تعریف کرد. این آرایه یک آرایه انجمنی است. البته درنظر داشته باشید که آرایه مذکور یک آرایه فوق سراسری است (Super Global) یعنی متغیری که به این طریق تعریف شده است در هر حوزه ای در دسترس است. بنابر این مثال قبلی را می توان به این صورت نیز نوشت:
<?php
$number1 = 1;
$number2 = 2;

function Sum()
{
    $GLOBALS['number2'] = $GLOBALS['number1'] + $GLOBALS['number2'];
} 

Sum();
echo $number2;
?>
    
موافقین ۲ مخالفین ۰ ۹۳/۱۲/۱۱
مهرداد یوسفی فرد

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی