| يادگيري PHP در سه سوت! |
|
|
| نویسنده مهدي پارسائيان | ||||||||||||
| ۲۰ آبان ۱۳۸۷ | ||||||||||||
تعريف از پي.اچ.پي: در يك كلام: « PHP يك زبان برنامه نويسي اسكريپتي ( script language ) مثل perl، قابل جاسازي يا تلفيق ( embedding ) در كدهاي HTML (مثل جاوا اسكريپت) ، قابل اجرا بر روي سيستمهاي مختلف مثل لينوكس و ويندوز، با كابردهاي وسيع براي برنامه نويسي پيشرفته در وب است.» درضمن Server-side هم هست يعني مثل ASP روي سرور اجرا و خروجيش بصورت يك فايل HTML تحويل شما مي شود بر خلاف JavaScript كه Client-Side است. پس لازم نيست مرورگر شما خاصيت اضافه اي داشته باشد. اگر چه پي.اچ.پي syntax خودش رو از C قرض! گرفته، اما C++ و Perl و Java هم از عنايت ايشون بي نصيب نمونده اند. شما اگر C بلدين كه خوش بحالتون وگرنه اصلا نگران نباشين. PHP آسون تر از اونيه كه فكرشو بكنين... سوت اول: پي.اچ.پي و بانك اطلاعاتي: از آنجائيكه برنامه نويسي حرفه اي بدون بانك اطلاعاتي ( database ) نميشه، پي.اچ.پي هم با خيلي از بانك هاي اطلاعاتي رابطه داره. مثلا، Adabas D, Ingres, Oracle (OCI7 and OCI8), dBase, InterBase, Ovrimos Empress FrontBase, PostgreSQL , FilePro (read-only), mSQL, Solid, Hyperwave, Direct MS-SQL, Sybase, IBM DB2, MySQL, Velocis, Informix, ODBC, Unix dbm اما بهتر از همه با MySql كار مي كنه ولاغير!
ديگه چي؟ بغير از بانكهاي اطلاعاتي، پي.اچ.پي كارهاي زير را مثل آب خوردن انجام ميده: ساخت و پرداخت تصاوير، كارهاي امنيتي، كار با كوكي ها، آپ.لود فايل، پردازش XML و هزارتا + يك كار ديگه.
چه جوري استفاده كنيم؟ به راحتي! هرجا كه خواستين، دستور مورد نظرتون رو بين دو تا علامت "<?" و "?>" ميذارين. اينطوري: <? echo "This is a test"; ?> مدلهاي ديگه اي هم هست، ولي همين بهتره. البته كافيه يكبار از يكي از دستورات پي.اچ.پي توي يك فايل HTML استفاده كنين، تا اونوقت براي هميشه بايد فايلتون رو به ".php" تغيير نوع بدهيد، تا بتونه روي سرور اجرا بشود مگر اينكه ... يك مثال آبكي: < html> < body> <? echo "zoor nazan farsi neveshtam!"; ?> </body> </html>
چند تا نكته: اول: پي.اچ.پي، case-sensetive است. يعني حساس به حروف. پس $a و $A با هم فرق دارند. دوم: تمام دستورات در پي.اچ.پي به سميكالن " ; " ختم مي شوند. اين را هيچ وقت فراموش نكنيد. سوم: اگر بخواهيد توضيحات ( comments ) يك خطي داشته باشيد، بايد از دو علامت "//" استفاده كنيد. و اگر توضيحاتتان در چند خط باشند از "/*" در ابتدا و "*/" در انتهاي توضيح. چهارم: بين علامت كوتيشن (") و گيومه (') يك فرق كوچيك هست. پي.اچ.پي محتواي بين كوتيشن را تحليل و ترجمه ميكنه، همين!
انواع ( type ): پي.اچ.پي، 8 تا نوع ( type ) داره: boolean و integer و float و string و array و object و resource و NULL كه پنج تاي اولي پركاربردتر هستند. متغيرها: يك متغير با گذاشتن علامت $ به اول يك اسم ساخته ميشه! دامنه تعريف متغيرها، در ناحيه اي است كه تعريف مي شوند. بعدا كه تعريف تابع را ياد گرفتيد، مي بينيد كه از يك متغير سراسري همين جوري! نمي شود در بدنه يك تابع استفاده كرد. (اين را گفتم، چون خيلي ها اشتباه مي كنند.) در ضمن پي.اچ.پي يك عالمه متغير "از پيش تعريف شده" ( predefined ) داره كه خيلي باحالن. براي اينكه اونها رو بينيد كافيه كد زير رو بنويسيد و اجرا كنيد: <? echo phpinfo(); ?> مثلا $_SERVER['PHP_SELF'] كه اسم فايل برنامه رو برمي گردونه. از اين براي مستقل كردن كدهاي برنامه از اسم فايل خيلي استفاده مي شه. يا $_SERVER['HTTP_USER_AGENT'] كه نوع مرورگرتان را برمي گرداند. يا $HTTP_POST_VARS و $HTTP_GET_VARS كه براي ارتباط با فرم ها بايد! استفاده بشوند. (البته مي تونيد از $_POST يا $_GET هم استفاده كنيد، به شرطي كه نسخه پي.اچ.پي بالاتر از 4.2 باشه)
اولين تجربه! براي اولين تجربه بد نيست! كه با كاركردن با فرم ( form ) آشنا شويم. فرض كنيد مي خواهيد اسم يكي را بگيريد و به او سلام كنيد. اين فرم (مثلا hello.htm ) : <form method="POST" action="hello.php"> <input type="text" name="username" size="20"> <input type="submit" value="Say!" name="ok"> </form> اين هم برنامه hello.php <? // hello.php $username= $HTTP_POST_ VARS['username']; // php 4 and later // you can use $_POST in php 4.2 instead $HTTP_POST_VARS echo " Hello dear ", $username; ?> البته بايد ياد بگيريد كه چگونه اين دو كد را در يك برنامه بنويسيد.سوت دوم :
:: آرايه ها: آرايه ها موجودات دوست داشتني هر زبان هستند. قبلا فقط مي شد تنها عناصر همنوع را در يك آرايه قرار داد، اما در php مي توان هر نوع داده اي ( از 8 نوع) را با هر نوع انديسي (integer و string ) در يك آرايه جمع كرد. به چند روش ميشه، يه آرايه رو تعريف كرد. 1. $a= array( key => value, …. );
2. $a[key]= value;
3. $a[]= value;
چند تا مثال: ساختن يك آرايه خالي ! $a= array ();
آرايه مشخصات يك نفر $a= array('name'=>'netvand', 'family'=>''netkadeh", 'age'=>22);
همان آرايه بالايه كه با 3 تا دستور ساخته شده $a['name']= 'netvand'; $a['family']='netkadeh'; $a['age']= 22; اگر انديسي براي آرايه مشخص نكنيد، يعني خونه صفرم [0]. $a[]=1; اما مقادير بعدي بعد از اون به ترتيب قرار مي گيرند. يعني [1] و [2] و… $a[]=2; $a[]= 3; به همين راحتي! جلوتر كه رفتيد، مي تونيد آرايه هاي چندبعدي هم تعريف كنيد. (آرايه اي از آرايه ) براي اينكه ببينيد آرايه كه ساخته ايد، چي از آب دراومده از اين دستور كمك بگيريد: <? print_r($a); ?>
متدوالترين دستوري كه براي كار با آرايه ها به كار ميره، دستور foreach است. foreach ( $arrayname as $key =>$value )
echo $value,"<br>";
foreacho ( $arrayname as $key )
echo $arrayname[$key], "<br>";
دستورات بالا، مقدار عناصر آرايه رو توي سطرهاي متوالي چاپ ( بخاطر <br> ) مي كنن. توجه: توي PHP يه عالمه تابع آماده براي كار روي آرايه نوشته شده كه كافيه شما فقط طرز استفادشون رو ياد بگيرين. همين.
:: چند نكته در مورد فرم ها: همانطور كه مي دونيد، انتقال اطلاعات بين صفحات از طريق دو متد POST (براي فرمها) و GET (از طريق خط آدرس url) ها صورت مي گيره. شما هر عنصري كه در فرم استفاده كنيد، انديسي همنام با آن در $_POST (كه يك آرايه است) ساخته مي شود كه شما بايد درون برنامه تان از اون استفاده كنين.
.: يك مثال پيچيده تر: <? // form2.php $do= $_GET['do']; if ($do == 'send') { $name= $_POST['name']; $comments= $_POST['comments']; $check= $_POST['check']; $which= $_POST['which']; $what= $_POST['what']; //do something you want with those. } else { ?> <form method="POST" action="<?=$_SERVER['PHP_SELF']?do=send?>"> <p>Name:<input type="text" name="name" size="20"> <p>Comments: <p><textarea rows="2" name="comments" cols="20"></textarea> <p><input type="checkbox" name="check" value="ON"> check this <p><input type="radio" value="1" checked name="which"> 1 <input type="radio" name="which" value="2"> 2 <p><select size="1" name="what"> <option>I want this</option> <option>no, this is better</option> <option>both of them</option> </select> <p><input type="submit" value="Submit" name="submit"> <input type="hidden" name="ding" value="ok"> </form> <? } ?>
اول: بجاي ساختن دوتا فايل، هر دو تا را توي يه برنامه كه اسمشو گذاشتم form2.php نوشتم. براي همين لازم شد تا از ساختار كنترلي if () { … } else { … } استفاده كنم. نترسيد! خيلي آسونه.
دوم: توي اين فرمي كه تعريف كردم، از همه عناصر يك فرم استفاده كردم. به اسمها دقت كنيد: name و comments و check و which و what و ding كه يك فيلد مخفيه!.
سوم: $do= $_GET['do'] پارامتريه كه قراره از طريق خط آدرس به برنامه داده بشه. do به برنامه ميگه چه تصميمي بگيره و چه كار بكنه.
سوم: به مقدار action در تعريف فرم دقت كنين. action="<?=$SERVER['PHP_SELF']?do=send ?>" .. علامت مساوي كار دستور echo رو انجام ميده. يعني مقدار متغير رو حساب مي كنه. .. متغير $_SERVER['PHP_SELF'] نام برنامه را برمي گردونه. اين كار رو براي مستقل كردن برنامه از اسم فايلش انجام دادم. (شما هم هميشه اين كار رو انجام بدين.) .. مقدار action بعد از اجراي برنامه مي شود: form2.php?do=send
چهارم: ؟
پارامترهاي خط آدرس: حتما با نمونه هايي از اين قبيل را ديده ايد:
مثلا آدرس بالا، مقدار تاريخ را از طريق متغير date به برنامه ارسال مي كنه. اشتباه نكنيد!. در اين مورد آقاي برنامه نويس، براي كوتاه كردن آدرس (و احتمالا بالابردن امنيت!) نام برنامه را حذف كرده. شما مي توانيد فرض كنيد default.asp يا بوده.
به هر حال براي بدست آوردن مقدار مقدار date در برنامه بايد از اين دستور استفاده كنين: $date= $HTTP_GET_VARS['date']; // since php 3.0 $date= $_GET['date']; // since php 4.1.0 سوت سوم
:: رشته ها: رشته رو كه ميشناسيد: مجموعه اي از كاراكترهاست كه هرچي هم بخواين مي تونه بزرگ باشه. اصلا نگران نباشيد! اما دقت كنيد براي اينكه بتونيد از كاراكترهاي escaped داخل رشته ها استفاده كنيد بايد قبلشون بك اسلش (\) بذارين. مثلا: آخرخط (\n) ، سر خط (\r) ، بك اسلاش (\\) ، دلار (\$) و كوتيشن (\") و يه چندتاي ديگه.
رشته رو 3 جور ميشه ساخت. اول: با علامت نقل قول. (') دوم: با كوتيشن (دوتا نقل قول). (") سوم: <<<EOD ......... >>>
توجه كنيد كه: 1ـ اگر بخواين داخل نقل قول (') از بك.اسلش يا نقل قول استفاده كنين (كه فقط همين دو تا رو هم ميشه استفاده كرد)، بايد قبلشون يك بك.اسلش بذارين، حتماً. <? echo ' I\'ll show your C:\\*.* '; ?> //output: I'll show your C:\*.* اگر بقيه رو بذارين خودشون رو همراه يك بك.اسلش نشون ميده. مثل متغيرها. <? echo 'in ghalate! \n choon sare khat nemire.'; ?> //output: in ghalate! \n choon sare khat nemire.
2ـ همونطور كه قبلا گفتم، php متغيرهاي داخل دوتا علامت نقل قول رو expand نمي كنه. يعني مقدارشون را جايگزين اسمشون نميكنه. مثلا $p= 'u don\'t see this!'; echo 'Oh! $p.'; //output: Oh! $p. اين تنها فرق رشته هاي نقل قولي با كوتيشني است.
به اينا خوب نگاه كنين: <? $php = 'PHP!'; echo 'first char is: '.$php[0]; //output: first char is: P
echo 'last char is: '.$php{strlen($php)-1}; //output: last char is: !
$Ilike= "I like "; echo $Ilike.$php;
$Ilike .= $php; // $Ilike= $Ilike.$php; echo $Ilike; //output: I like PHP! ?> خوب حتما فهميدين كه چه جوري ميشه حرف اول و آخر رشته رو چاپ كرد و چطوري دوتا روشته رو به هم چسبوند (با علامت نقطه) و به يك رشته مقداري رو اضافه كرد. (با نقطه مساوي)
نوع سوم رشته ها رو هم خودتون امتحان كنيد. شايد خيلي استفاده نداشته باشن.
و اما اينكه: براي كار با رشته ها هم يك عالمه تابع ( هشتاد ويكي!) نوشته شده كه فقط كافيه syntax اونها رو ياد بگيرين.
:: عملگرها: تعداد زيادي عملگر هست (لازم نيست بشماريد) كه براي كاركردن با "نوع" هاي مختلف داده اي بكار ميرن. معروفترينشون اين ها هستن. + و – و . و * و / و % (عملگرهاي رياضي) = و =+ و =. (براي مقداردهي اعداد و رشته ها) == (برابر) و =! (مخالف) و <= و >= و < و > (عملگرهاي مقايسه اي) ++ و -- ( افزودن و كاستن) فقط در موقع استفاده بايد حق تقدم عملگرها رو درنظر بگيرين.
حالا كه اينها رو يادگرفتين، ميشه رفت سراغ ساختارهاي كنترلي.
:: ساختارهاي كنترلي: تذكر خيلي مهم: معمولا چون بدنه اين دستورات بيشتر از يك دستور دارن، حتما لازمه كه بين دو تا آكولاد {} قرار بگيرن. گذاشتن سمي كالن بعد از دستورات را هم كه فراموش نمي كنيد. معرف تراشون، اينان: -- اگر: if (expr) statement توجه: پرانتزها هميشه لازم هستن. مثال: if ($a > $b) echo $a;
-- اگر، وگرنه: if (expr) statement else statement مثال: if ($a > $b) echo $a; else echo $b; -- هروقت كه: توي اين دستور، اگر فقط عبارت درست باشه، بدنه حلقه اجرا ميشه.
while (expr) statement مثال: $a= 1; while ($a < 1000) $a++; -- تا وقتي كه: اين دستور، بدنه را حداقل يكبار اجرا ميكنه تا به كنترل شرط برسه. do statement while (expr); مثال: $a=1000; do $a--; while ($a == 0); -- براي: for (expr1; expr2; expr3) statement
مثال: for ( $i =0; $i< 10; $i++) print($i); يه جور ديگه! for ($i=0; $i<10; print $i, $i++);
اين يكي رو حتما ياد بگيريد: (خيلي باحاله، كوچيك و پراستفاده) $first ? $second : $third اگر $first درست باشه، مقدار $second و گرنه $third برگردونده ميشه. $b= ($a>=10) ? $a: '0'.$a; /* output: $a=5 , $b=05 $a=20, $b=20 */ :: تابع: براي اينكه n تا دستور رو k بار انجام بديم و البته همه اون n تا دستور رو k بار ننويسيم، تابع چاره كارشه. يكبار، اون n دستور رو توي يك تابع مي نويسيم و هرجا كه لازم شد، تابع رو صدا مي كنيم. فهميدين كه چي شد!
function function_name(arg_1, arg_2 , … ) { statements; return function_value } نكته ها: 1ـ اگر داخل تابع متغيري تعريف كنيد، فقط داخل تابع معتبره. شما مي تونيد همنام با متغيرهاي سراسري (اونايي كه داخل برنامه اصلي تعريف شدن)، داخل تابع متغير تعريف كنين. برنامه هم از مقدار اونها استفاده خواهد كرد. هيچ اشكالي هم نداره! 2ـ در نسخه هاي اخير PHP ، حتي از متغيرهاي سراسري هم نمي شود داخل تابع استفاده كرد مگر اينكه با global تاكيد كنيد كه اينها سراسري هستن يا اونها را به صورت متغيرمرجع به تابع ارجاع بدين. global $a, $b, $c;
3ـ پارامترهاي تابع، متغيرهاي داخلي محسوب ميشن و فقط داخل بدنه تابع معتبر هستن. 4ـ مي تونيد، به تابع پارامتر ندهيد، يا پارامتر تابع رو همونجا (هنگام تعريف تابع) مقداردهي كنيد. 5ـ تابع شما مي تونه، ظاهرا، مقداري رو برنگردونه (كه خودش مقدار True رو برمي گردونه). 6- ؟
به پايان آمد اين دفتر، يک عالمه حرف همچنان باقيست... منبع: http://php.netkadeh.net بازدید: 841
|
||||||||||||
| آخرین بروز رسانی ( ۲۰ آبان ۱۳۸۷ ) | ||||||||||||
| <قبل | بعد> |
|---|
| صفحه اصلی |
| اخبار |
| مقالات |
| جستجوی پیشرفته |
| یزدلاگ در رسانه |
| تازه کاران |
| مدیریت |