باز بر می گردم به مثال قسمت اول ، همون باکس بالای فروم "خوش آمدید + نام کاربری" . اینطور تعبیر می کنیم که کلمه ی "خوش آمدید" یک ثابت هستش ، و در تمام صفحات و برای هر کاربر یکسان . اما "نام کاربری" (برای من Bonyanalam و برای شما نام کاربری خودتون) برای هر شخص متفاوته . به مثال زیر توجه کنید :
<?php
/*
code ha be sharhe zir mibashand :
in ghesmate tozihate chand khati hastesh
*/
define('WELCOME', ' خوش آمدید '); //ta'rife sabete WELCOME
$user = 'Bonyanalam'; //ta'rife moteghayere $user
echo WELCOME . $user; #chape خوش آمدید Bonyanalam
?>
تحلیل کد : خطوط اول و آخر اعلان php هستش <? php?>
قسمت هائی که با رنگ نارنجی متمایز شدن قسمت توضیحات برنامه (Comment) هستن که همونطور که می بینید نحوه ی استفاده برای توضیحات چند خطی و 1 خطی متفاوته .
من توسط دستور define یک ثابت تعریف کردم ، که مقدار "خوش آمدید" رو به ثابت WELCOME اختصاص دادم .
در خط بعدی مقدار "Bonyanalam" رو که یک قطعه ی رشته اي از چند كاراكتر هست رو به متغیر user نسبت دادم .
در خط یکی مونده به آخر توسط دستور echo مقدار ثابت WELCOM و مقدار متغیر user رو توسط پیوند دهنده ی "." با هم نمایش دادم که خروجی این دستور به صورت زیر هستش :
خوش آمدید Bonyanalam
نکته1 : معمولا" برای تعریف ثابت برای متمایز شدن از حروف بزرگ استفاده می شه .
نکته2 : متغیر ها رو همیشه با علامت $ می شناسیم .
نکته3 : اسامی ثابتها و متغیر ها به حروف کوچک و بزرگ حساسن و اولین کاراکتر برای اونها نمی تونه عدد باشه ، مثلا" 1ali$ اشتباست و متغیر های user$ و User$ یا هم متفاوتند . براي نامگذاري با كاراكتر هاي ويژه فقط كاراكتر underscore "_" مجاز هستش .
نکته4 : یک متغیر همیشه یک رشته نیست ، ممکنه یک آرایه ، یک مقدار عددی ، بدون مقدار ، مقدار true یا false و ... داشته باشه .
نکته 5 : علامت . (نقطه) باعث ادغام (جمع) دو رشته می شه . که در اینجا ثابت WELCOME و متغیر user$ حاوی دو رشته ی متفاوت هستن (خوش آمدید و Bonyanalam)
تو هر زبان برنامه نویسی متغیر ها انواع مختلفی دارن . PHP هم از این قاعده مستثنی نیست . انواع داده ها ئی که یک متغیر می تونه داشته باشه به شرح زیر هستند :
boolean : ساده ترین نوع داده که شامل دو مقدار true و false هستش و معمولا" تو دستورات شرطی به کار می ره . متغیری که داری مقدار باشه برابر true و در غیر اینصورت false هستش .
integer : اعداد صحیح رو شامل می شه .
double : اعداد اعشاری .
string : رشته های متنی ، مانند مثال بالا (Bonyanalam و درون " " يا ' ' قرار مي گيره) .
array : یا آرایه ها که خودشون شامل چندین متغیر هستن .
object : نوعی داده ی ترکیبی مربوط به کلاس ها هستش .
NULL : یا خالی برابر با false هستش و مقدار "هیچی" یا تهی رو در بر داره .
ما تو پاسکال یا برنامه های خانواده ی C زمان تعریف متغیر ، نوع متغیر رو هم تعیین می کردیم ، اما تو php اجباری نیست . php خودش تشخیص می ده که متغیر ما از چه نوعیه . حالا از هر نوع از متغیر ها مثالی می زنم :
$a = true; //boolean
$b = 25; //integer
$c = 2.5; //double
$d = "ebarat"; //string
$e[] = "harchi"; //array
$f = ""; //NULL
در مورد آرایه ها و کلاس ها بعدا" مفصلا" صحبت می کنم ، در مورد این متغیر ها باید بگم هر متغیر هم نوع و گاه غیر هم نوع قابلیت محاسبه شدن توسط 4 عمل اصلی و اعمال فرعی و همچنین انتساب به هم رو دارا هستن و هر جا که لازم باشه موتور تحلیل گر php نوع متغیر ها رو به هم تبدیل می کنه (مثلا" جمع 2 و 2.5 نمی تونه یه integer باشه) :
<?php
$a = 8;
$b = 2.5;
$c = $a + $b; //majmoo'e $a va $b
$d = $a - $b; //tafazole $a va $b
$e = $a * $b; //zarbe $a va $b
$f = $a / $b; //taghsime $a bar $b
$g = $a % $b; //baghimandeye taghsime $a bar $b
echo $c."<br>". $d."<br>".$e."<br>".$f."<br>".$g."<br>";
echo "$c <br> $d <br> $e <br> $f <br> $g <br><br>"; //maghadir
echo '$c <br> $d <br> $e <br> $f <br> $g <br><br>'; //kamelan string
$a = ($b = 3) + $c; //meghdare jadide $a va $b
echo "$a <br> $b"; //namayeshe meghdare $a
?>
تحلیل کد : فکر می کنم کاملا" متوجه شده باشید داستان از چه قراره ، فقط نکته ای رو می تونم بگم که متغیر های داخل کوتیشن " " مقدارشون برگردونده می شه ، اما اگه داخل سینگل کوتیشن ' ' باشن ، به عنوان یک عبارت رشته ای در نظر گرفته می شن . در مورد ادغام رشته ها ، همونطور که تو مثالای قبلی گفتیم ، به جای + از . (نقطه) استفاده می کنیم . در خطوط آخر هم متغیر های a$ و b$ مقدار جدیدی گرفتن . خروجی کد رو با هم ببینیم :
10.5
5.5
20
3.2
0
10.5
5.5
20
3.2
0
$c
$d
$e
$f
$g
13.5
3
اجازه بدید حالا که در مورد عملگرهای حسابی صحبت کردیم ، در مورد عملگر های مشابه و عملگر های کاهشی و افزایشی هم صحبت کنیم ، به اسکریپت زیر توجه کنید :
<?php
$a = 8;
$b = ' Bonyanalam ';
$c = 12;
$a +=2; //$a = $a + 2
echo "$a <br>"; //$a == 10
$a -=2; //$a = $a - 2
echo "$a <br>"; //$a == 8
$a *=2; //$a = $a * 2
echo $a . "<br>"; //$a == 16
$a /=2; //$a = $a / 2
echo "$a <br><br>"; //$a == 8
$b .= 'Forums'; //$b == $b . ' Forums '
echo "$b <br><br>"; //$b == ' Bonyanalam Forum '
# $c == 12
echo $c++ . "<br>"; // $c = 12
echo "$c <br>"; //$c == 13
$c = 10; //meghdare jadide $c
echo ++$c . '<br>' ; //$c == 11
echo $c ; //$c == 11
?>
و به خروجی دقت کنید :
10
8
16
8
Bonyanalam Forums
12
13
11
11
در اینجا ++c$ یک دستور افزایشی استفاده شده (--c$ عکس اونه که کاهشی بهش می گن) که ابتدا متغیر c$ در نظر گرفته می شه و بعد 1 واحد به اون اضافه می شه ، در c$++ هم یک نوع از دستور افزایشیه (c$-- عکس اونه) با این تفاوت که ابتدا یک واحد در نظر گرفته می شه و بعد متغیر c$ با اون 1 واحد جمع می شه ، این دستورات رو روی متغیر های حاوی کاراکتر های string هم می شه انجام داد . خودتون امتحان کنید !
شايد اين سوال براتون پيش بايد كه اين اعمال چه ربطي مثلا" به وب داره ؟ ببينيد ؛ همين فروم رو مثال مي زنم ؛ تعداد افراد آنلاين (++تعداد) ، به دست آوردن سن كاربر (تاريخ كنوني - تاريخ تولد) ، مدت زمان آنلاين (آنلاين قبلي + آنلاين فعلي) و خيلي چيزاي ديگه .
عملگرهای دیگه ای مثل عملگر های مقایسه ای (اگر a$ بزرگتر از b$ باشه) و عملگرهای منطقی (اگر متغیر a$ و b$ هر دو دارای مقدار باشن) و عملگر های آرایه ای نا گفته مونده که بهتره همراه دستورات شرطی با هم بررسیشون کنیم .
تمرین : تمام متغیر های این قسمت رو امتحان کنید ، تغییر بدین و با error های php آشنا بشید .