انجمن‌های فارس وب

نسخه کامل: آموزش php - از آغاز تا پايان (بخش دوم)
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
تو این قسمت می خوام در مورد ثابت ها و متغیر ها صحبت کنم . ثابت ها و متغیر ها هر دو مقداری رو در خودشون جای می دن ، با این تفاوت که مقدار ثابت در کل برنامه تغییر نمی کنه و مقدار متغیر ، ممکنه توسط برنامه نویس تغییر کنه .

باز بر می گردم به مثال قسمت اول ، همون باکس بالای فروم "خوش آمدید + نام کاربری" . اینطور تعبیر می کنیم که کلمه ی "خوش آمدید" یک ثابت هستش ، و در تمام صفحات و برای هر کاربر یکسان . اما "نام کاربری" (برای من 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 آشنا بشید .

مرجع آدرس ها