آموزش کامل PHP – قسمت دهم: توابع

در این قسمت از سری آموزش های php به آموزش توابع می پردازیم. توابع از مهمترین بخش های هر زبان برنامه نویسی می باشد.

تابع (function)

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

در php دو نوع تابع داریم، یکی توابع پیش فرض که از قبل در برنامه وجود دارد و یکی توابعی که توسط کاربر نوشته می شوند. توابع پیش فرض در واقع همان دستوراتی هستند که در php وجود دارند مثلا echo که ورودی را از ما می گیرد و بدون تغییر چاپ می کند.

چند نکته

  • بر خلاف متغییرها نام توابع به حروف کوچک و بزرگ حساس نمی باشد. یعنی چه با حروف بزرگ و چه با حروف کوچک بنویسیم تاثیری در عملکرد آن ندارد.
  • نام تابع را می تواند با یک آندرلاین شروع شود.
  • تا زمانی که تابع فراخوانی نشود کد داخل آن اجرا نمی شود.

ساختار کلی توابع در php

<?php

function name() {

func code

}

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

پارامتر های تابع (ورودی تابع)

تابع می تواند یک یا چند ورودی داشته باشد یا اصلا ورودی نداشته باشد. ورودی را می توانیم به صورت پارامتری به تابع ارسال کنیم. برای این منظور برای هر ورودی یک متغیر در داخل پرانتز جلوی نام تابع تعریف می کنیم. به مثال زیر توجه کنید:

<?php

function myfunc($name , $age){

echo your name is $name and age is $age;

}

myfunc("mohammad" , "27");

?>

کار تابع فوق این است که نام و سنی را که برای آن ارسال کرده ایم را در خروجی نمایش دهد. عملیات تابع در زمان فراخوانی انجام می شود. یعنی خط پنجم.

آرگومان های ورودی پیش فرض

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

php?>

("function myfunc ($name = "mohammad

{ ;echo $name }

;()myfunc

<?

در کد فوق هنگام تعریف تابع یک مقدار پیش فرض برای پارامتر نام در نظر گرفته شده بنابراین با وجود این که در هنگام فراخوانی تابع ورودی داده نشده برنامه با خطا مواجه نمی شود.

مقادیر بازگشتی در تابع

برای استفاده از مقادیر بازگشتی در تابع از دستور return به صورت زیر استفاده می کنیم.

<?php

function zarb($a , $b) {

$c = $a * $b;

return $c;

}

$d = zarb(3 , 3);

echo $d;

?>

در کد فوق مقدار بازگشتی تابع ضرب را در متغیر d ریخته و آن را در خروجی نمایش داده ایم.

آموزش کامل PHP – قسمت نهم: معرفی Include و require

در این قسمت از آموزش php یک پرژه کوچک را با هم شروع خواهیم کرد و آموزش ها را با شیوه جذاب و کاربردی تری ادامه خواهیم داد. قبل این که پروژه را شروع نکاتی را ذکر می کنیم.

هنگام نوشتن پروژه های بزرگ بهتر است که کدها را در بخش های مختلف و در فایل های جداگانه بنویسیم. قصد داریم با دستورات include و require کدها و پروژه های خود را سازماندهی کنیم.

دستور include

با استفاده از دستور include می توانیم محتویات یک فایل را در فایل دیگر استفاده کنیم. برای شروع یک پوشه جدید به نام mysite در پوشه htdocs نرم افزار سرور مجازی xampp ایجاد کنید. در این پوشه سه فایل php به نام های index.php, head.php و footer.php ایجاد کنید.

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

حال به ادامه پروژه می پردازیم، فایل head.php را باز کرده و کدهای زیر را در آن قرار دهید:

<!DOCTYPE html>

<html>

<style>

#header {

background-color:black;

color:white;

text-align:center;

padding:5px;

}

#section {

padding:10px;

}

#footer {

background-color:black;

color:white;

clear:both;

text-align:center;

padding:5px;

}

</style>

</head>

<body>

<div id="header">

<h1>My Site</h1>

</div>

سپس فایل index.php را باز کرده و کدهای زیر را در آن قرار دهید:

<?php

include ("head.php");

?>

<div id="section">

<h2>learning php - pardiswp.com</h2>

<p>we learning php in pardiswp. php is very powerful for developing any kind of web applications. so we love it!</p>

</div>

<?php

include ("footer.php");

?>

خب تا اینجا ما در بالا و پایین کد index.php  دو دستور ساده php به کار برده ایم. در قسمت بالای کد فوق فایل head.php را به ایندکس اضافه کرده ایم که برای این کار از دستور اینکولود استفاده شده است. در پایین نیز فایل footer.php را به کد اضافه کردیم. در این صورت هر تغییری که در فایل های سربرگ و پاورقی ایجاد شود در فایل index.php هم اعمال می شود.

در نهایت کد زیر را در فیل footer.php می نویسیم:

<div id="footer">

Copyright © pardiswp.com

</div>

</body>

</html>

حالا مرورگر خود را باز کنید و پروژه را در آن تست کنید. باید آدرس http://127.0.0.1/mysite/index.php را در مروگر باز کنید. تصویری مشابه زیر خواهید دید:

پروژه تست php

حال اگر روی صفحه راست کلیک کنید و گزینه view source page را بزنید کد سورس نهایی که ترکیبی از کد فایل ها است را خواهید دید. در این کد در فایل ایندکس به جای دستور include کد همان فایلی که فراخوانی کرده ایم، قرار می گیرد.

دستور require

این دستور هم مشابه دستور include عمل می کند و تنها در نوع بررسی خطاها متفاوت است. یعنی در زمان فراخوانی اگر فایل وجود نداشته باشد یا مسیر آن اشتباه باشد، php خطا نشان می دهد. روش استفاده از این دستور نیز دقیقا مشابه اینکولود است.

توجه داشته باشید از آن جایی که هر سه فایل ما در یک پوشه است روش آدرس دهی ما به شکلی که در فوق استفاده شده می باشد. روش آدرس دهی در php  بسیار ساده است که در قسمت های آینده و در خلال پروژه های بیشتر با آن آشنا خواهیم شد.

در آخر توصیه می کنیم که این پروژه را به دقت انجام دهید و تمرین داشته باشید. ما همین پروژه را در جلسات آینده تکمیل تر خواهیم کرد. فایل پروژه را می توانید از [highlight color=”blue”]این قسمت[/highlight] دانلود کنید.

آموزش کامل PHP – قسمت هشتم: switch

در این قسمت از آموزش یکی دیگر از دستورات پایه ای زبان php را آموزش خواهیم داد تا رفته رفته در قسمت های بعدی وارد مباحث پیشرفته تر شویم. دستور سویچ یکی از دستورات کاربردی در زبان های برنامه نویسی مانند پی اچ پی است که کاربرد آن شبیه به else … if است. اگر یادتان باشد در قسمت های قبل به طور کامل در مورد این دستورات شرطی صحبت کردیم و گفتیم که برای بررسی چند شرط می توانیم استفاده کنیم. اما دستور switch جایگزین بهتری برای شرط های چندگانه است.

دستور شرطی switch

روش استفاده از دستور switch به صورت زیر است:

<?php

$a = 1;

switch ($a){

case "1":

echo "number 1";

break;

case "2":

echo "number 2";

break:

default:

echo "number 1 & 2 not";

break;

} ?>

اگر به کد فوق توجه کنید ابتدا یک متغیر تعریف کرده ایم و مقدار یک را به آن نسبت داده ایم سپس آن متغیر را در پرانتز و در مقابل دستور switch قرار داده ایم. در ساختار سویچ هر case مانند else if عمل می کند و شرط جداگانه ای است. عملکرد برنامه به این صورت است که اگر مقدار متغیر 1 بود یعنی کیس 1، “عدد 1 است” چاپ می شود. اگر 2 بود، عدد 2 و اگر هیچکدام نبود دستور درون دیفالت اجرا می شود.

همان طور که مشاهده می کنید عملکرد این دستور دقیقا مشابه else if است و انسجام بهتری دارد. توصیه می شود برای بررسی چند شرط از این دستور استفاده کنید.

اصول کلی استفاده از switch

  1. قرار دادن آنچه قصد بررسی مقدارش را داریم در پرانتز مقابل دستور switch (متغییر یا دستوراتی که نهایتا یک خروجی داشته باشند)
  2. به ازای هر شرط یک دستور case را نوشته و علامت دو نقطه : را در مقابل قرار می دهیم
  3. کد مورد نظر را برای شرطی که در مرحله قبل نوشتیم، می نویسیم
  4. با استفاده از عبارت break و سپس قرار دادن علامت نقطه ویرگول ; شرط یاد شده را پایان می‌دهیم
  5. به ازای هر شرط دیگری که قصد بررسی آن را داریم مراحل ۲ تا ۴ را مجددا تکرار می‌کنیم
  6. همانند مثال بالا، در نهایت default را در پایین‌ترین بخش دستور switch می‌نویسیم تا در صورتی که هیچ کدام از شرط‌ های نوشته شده برقرار نبود، این دستور اجرا شود

برای درک بهتر این دستور یک مثال می زنیم. نام شهر را از کاربر گرفته و در صورتی که شیراز بود پیام خوشامد را نمایش می دهیم.

<?php

$usercity = 20;

switch ($usercity){

case "shiraz":

echo "welcome";

break;

case default:

echo "you are not from shiraz";

break;

} ?>

نکته: نوشتن بخش default اجباری نیست ولی پیشنهاد می کنیم همیشه این بخش را هم بنویسید تا شرایط را بهتر کنترل کنید.

پایان قسمت هشتم

آموزش کامل PHP – قسمت هفتم: حلقه for

در ادامه قسمت قبلی در این قسمت نیز در مورد حلقه ها و این بار حلقه for صحبت می کنیم.

حلقه for

اگر به حلقه while در قسمت قبلی آموزش بیشتر توجه کنید متوجه می شوید که در تمام مثال ها از متغیر به عنوان نوعی شمارشگر استفاده کرده ایم. این متغیر در واقع نقش کنترل حلقه را برای ما ایفا می کند و تعداد دفعات تکرار را نگهداری می کند. از عملگرها هم برای افزایش و کاهش استفاده می کردیم. در حلقه for این موارد را باید حتما در خود حلقه تعریف کنیم. برای درک بهتر به کد زیر توجه کنید:

<?php

for (counter; condition; step){

code to run

} ?>

در کد فوق counter شمارنده، condition شرط و step گام حلقه می باشد. همچنین دقت کنید که بین این آیتم ها علامت نقطه ویرگول قرار دارد. مثال:

<?php

for ($i = 1; $i < 7; $i++){

echo "$i <br>";

} ?>

در مثال فوق i شمارنده حلقه با مقدار اولیه 1 است. شرط حلقه نیز تا زمانی که i کمتر 7 باشد بر قرار است. گام حلقه هم 1+ است. دستور بدنه حلقه که داخل آکولاد نوشته شده در هر گام مقدار جاری متغیر را چاپ می کند. بنابراین خروجی این برنامه اعداد 1 تا 6 است.

استفاده از حلقه for به جای while باعث می شود که کدنویسی شما کمتر و سریعتر شود. حلقه ها در عین سادگی قدرت زیادی در برنامه نویسی دارند. در مثال زیر جدول ضرب اعداد 1 تا 10 را با حلقه for تولید می کنیم:

<table align = "center">

<?php

for ($i = 1; $i <= 10; $i++){

for ($j=1; $j <= 10; $j++){

echo "$i * $j";

echo "-"; }

echo "<br>";

echo "<br>";

} ?>

</table>

در مثال فوق از حلقه for به صورت تو در تو استفاده کرده ایم. از حلقه های while نیز می توان به صورت تو در تو تا بی نهایت استفاده کرد.

حلقه دیگری به نام for each نیز در php وجود دارد که در قسمت های آینده ی آموزش و در خلال پروژه با آن آشنا خواهیم شد.

آموزش کامل PHP – قسمت ششم: حلقه while

در قسمت پنجم آموزش php در مورد ساختار شرطی if صحبت کردیم. در این قسمت حلقه تکرار while را توضیح خواهیم داد.

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

حلقه while

while معادل فارسی “تا وقتی که” می باشد و کاربرد آن در برنامه نوبسی به معنی لغوی آن شبیه است. یعنی دستوراتی که در آن قرار دارند تا وقتی که شرط حلقه برقرار باشد اجرا خواهند شد. به طور کلی حلقه ها در زبان های برنامه نویسی ساختار های تکرار و تصمیم هستند. هر حلقه از دو قسمت اصلی به نام شرط و بدنه تشکیل می شود. دستورات در بدنه قرار می گیرند. به مثال زیر توجه کنید:

<?php

$i = 0;

while (i<6){

echo "$i <br>";

i++;

} ?>

در مثال فوق ابتدا متغیر i را با مقدار اولیه صفر تعریف کرده ایم. سپس در مقابل نام حلقه شرط آن را داخل پرانتز مشخص کرده و در داخل بدنه حلقه بین 2 علامت آکولاد دستورات را نوشته ایم. طرز کار حلقه فوق بدین صورت است که ابتدا شرط حلقه بررسی می شود و در صورت بر قرار بودن، دستورات بدنه تا زمانی که شرط بر قرار است اجرا می شوند و بعد از آن کنترل برنامه از حلقه خارج خواهد شد. خروجی مثال فوق اعداد 0 تا 5 می باشد.

در حلقه while اگر شرط برقرار نباشد دستورات بدنه حلقه اجرا نخواهند شد. اما در php راهی وجود دارد که در صورت نیاز دستورات بدنه، حتی بدون برقراری شرط حلقه می توانند یک بار اجرا شوند. برای این منظور از دستور زیر استفاده می کنیم.

 حلقه do … while

این دستور زمانی استفاده می شود که قصد داریم دستورات بدنه حلقه حداقل یک بار اجرا شوند. در do … while ابتدا دستورات یک بار اجرا شده و سپس شرط حلقه بررسی می شود. به مثال زیر توجه کنید:

<?php

$i = 1;

do{

echo "number is $i <br>";

$i++;

} while ($i <= 5);

?>

همان طور که مشاهده می کنید شرط while چه برقرار باشد و چه نباشد دستورات قبل از آن حتما یک بار اجرا می شود. در مثال فوق خروجی برنامه اعداد 1 تا 5 خواهد بود زیرا شرط حلقه بر قرار است و تا زمانی که شرط درست است دستورات بدنه do اجرا می شوند.

پایان قسمت ششم

آموزش کامل PHP – قسمت پنجم: دستورات شرطی

در قسمت چهارم آموزش php با آرایه ها در این زبان آشنا شدیم. در این قسمت از آموزش با عبارت های شرطی در پی اچ پی آشنا خواهیم شد.

دستور شرطی if

دستور if به معنی “اگر” همواره یکی از مهترین و پرکاربردترین دستورات در تمامی زبان های برنامه نویسی است. به وسیله این دستور شما می توانید کنترل شرطی در مواقع لزوم در کد نویسی داشته باشید. روش استفاده از این دستور به صورت زیر است.

<?php

$x1 = "20";

$x2 = "15";

if (x1 == "20") {

echo 'this is a';

}

else {

echo 'this is b';

} ?>

 همان طور که مشاهده می کنید شرط در پرانتز در مقابل if قرار می گیرد و دستوراتی که می خواهیم در صورت برقرار بودن شرط اجرا شود در آکولاد می نویسیم. دستوراتی که بعد از else می آیند در صورت برقرار نبودن شرط اجرا می شوند. خروجی دستورات بالا چاپ عبارت ‘this is a’ در مروگر است، حال شما برای تمرین کد را طوری تغییر دهید که عبارت مقابل else در مرورگر نمایش داده شود.

یک روش دیگر در استفاده از if به صورت زیر است:

<?php

$x = true;

$y = false;

if ($x) {

echo 'this is true';

}

else {

echo 'this is false';

} ?>

در مثال فوق به دلیل درست بودن شرط مقابل if عبارت ‘this is true’ در مرورگر نشان داده می شود. حال اگر شرط را با y$ عوض کنیم به دلیل نادرستی شرط عبارت مقابل else در مرورگر چاپ خواهد شد.

کنترل چند شرطی با else if

اگر در برنامه خود با شرایطی مواجه شدید که مجبور به بررسی چند حالت مختلف شوید و در صورت برقراری هر کدام از شرط ها خواستید دستوراتی را اجرا کنید. در این مواقع بهتر است از else if استفاده کنید. به مثال زیر توجه کنید:

<?php

$x1 = "20";

$x2 = "15";

$x3 = "10";

if (x1 == "20") {

echo 'this is a'; }

else if ($x2 =="15") {

echo 'this is b'; }

else if ($x3 == "10") {

echo 'this is c'; }

else {

echo 'this is null'; } ?>

همان طور که مشاهده می کنید در مقابل else if شرط های دیگر را به کار برده ایم.

شرط های تو در تو

if را به صورت تو در تو نیز می توانیم به کار بریم که با بزرگ تر شدن پروژه ها کاربرد پیدا می کند. این روش را با مثال ساده ای بیان می کنیم:

<?php

$name = "mohammad";

$family = "safari";

if ($name == "mohammad") {

if ($family == "safari") {

echo "full name is mohammad safari";

} }

else {

echo "not found";

} ?>

ابتدا شرط اول بررسی می شود و اگر درست بود شرط دوم نیز بررسی می شود و در صورت درستی نام کامل نمایش داده می شود. توجه داشته باشید که اگر هر کدام از دو شرط بر قرار نباشد کنترل برنامه به else رفته و عبارت “not found” نمایش داده می شود.

در php می توان چند شرط را همزمان نیز به کار برد مثلا شرط های مثال فوق را به صورت زیر نیز می توان نوشت:

if ($name == “mohammad” && $family == “safari”)

دستور فوق به معنای بر قراری همزمان دو شرط می باشد.

اگر سوالی در مورد هر یک از مباحث مطرح شده داشتید، آن را در بخش دیدگاه‌ها بپرسید.