🐘 درس هفتم: توابع در PHP؛ ساخت کدهای منظم و قابل استفاده مجدد
🎯 هدف این درس: یاد میگیریم تابع چیست، چگونه یک تابع در PHP تعریف کنیم، پارامتر دریافت کنیم، مقدار برگردانیم و کدهای تکراری را به شکل حرفهای مدیریت کنیم.
مهمان عزیز! 👋 به درس هفتم از دوره جامع PHP خوش آمدی.
تا اینجا با متغیرها، انواع داده، عملگرها، شرطها، حلقهها و آرایهها آشنا شدی. حالا به یکی از مهمترین مفاهیم برنامهنویسی میرسیم: تابعها (Functions).
تصور کن در یک پروژه چندین بار لازم باشد یک کار مشخص را انجام بدهی؛ مثلاً قیمت را محاسبه کنی، نام کاربر را نمایش بدهی یا یک متن را پردازش کنی.
اگر برای هر بار انجام این کار، همان کد را دوباره بنویسی، برنامه خیلی زود شلوغ و سختنگهداری میشود.
تابع دقیقاً برای حل همین مشکل ساخته شده است. یک بخش مشخص از منطق برنامه را داخل یک واحد مستقل قرار میدهیم و هر زمان که لازم بود، آن را فراخوانی میکنیم.
💡 یک تعریف ساده:
تابع را میتوانیم مثل یک ماشین کوچک در نظر بگیریم؛ اطلاعاتی را دریافت میکند، روی آنها کاری انجام میدهد و در صورت نیاز یک نتیجه برمیگرداند.
🧩 بخش ۱: تابع چیست؟
تابع مجموعهای از دستورات است که برای انجام یک وظیفه مشخص نوشته میشود.
به جای اینکه دستورات را چندین بار در نقاط مختلف برنامه تکرار کنیم، آنها را یک بار داخل تابع قرار میدهیم.
در PHP برای تعریف یک تابع از کلمه کلیدی function استفاده میکنیم.
ساختار کلی تابع
ساختار تابع
PHP
v8.2
<?php
function sayHello() {
echo "سلام مهمان عزیز! 👋";
}
// فراخوانی تابع
sayHello();
?>
در این مثال تابعی با نام sayHello ساختهایم.
هر زمان که sayHello() را بنویسیم، دستورات داخل تابع اجرا میشوند.
⚠️ نکته مهم:
تعریف کردن یک تابع به معنی اجرای آن نیست. تابع زمانی اجرا میشود که آن را فراخوانی کنیم.
📥 بخش ۲: پارامترها در تابع
یک تابع میتواند اطلاعاتی را از بیرون دریافت کند. این اطلاعات را پارامتر (Parameter) مینامیم.
مثلاً به جای اینکه تابع همیشه یک نام ثابت را نمایش دهد، میتوانیم نام موردنظر را هنگام فراخوانی به آن ارسال کنیم.
پارامتر در تابع
PHP
v8.2
<?php
function greetUser($name) {
echo "سلام " . $name . " عزیز! 👋<br>";
}
greetUser("مهمان");
greetUser("علی");
greetUser("سارا");
?>
در اینجا $name یک پارامتر است. هنگام فراخوانی تابع، مقداری که داخل پرانتز قرار میدهیم به این پارامتر منتقل میشود.
🔢 بخش ۳: چند پارامتر در یک تابع
تابع میتواند بیش از یک پارامتر دریافت کند. پارامترها را با کاما از یکدیگر جدا میکنیم.
چند پارامتر
PHP
v8.2
<?php
function showProfile($name, $age, $city) {
echo "نام: " . $name . "<br>";
echo "سن: " . $age . " سال<br>";
echo "شهر: " . $city . "<br>";
}
showProfile("مهمان", 28, "اصفهان");
?>
↩️ بخش ۴: برگرداندن مقدار با return
همیشه قرار نیست تابع نتیجه را مستقیماً با echo نمایش دهد.
گاهی بهتر است تابع یک مقدار را با استفاده از return برگرداند تا بخش دیگری از برنامه بتواند از آن استفاده کند.
دستور return
PHP
v8.2
<?php
function addNumbers($a, $b) {
return $a + $b;
}
$result = addNumbers(10, 20);
echo "نتیجه: " . $result;
?>
💡 تفاوت مهم:
echo برای نمایش خروجی استفاده میشود، اما return یک مقدار را از تابع خارج میکند تا بتوانیم بعداً از آن استفاده کنیم.
⚙️ بخش ۵: پارامتر پیشفرض
میتوانیم برای یک پارامتر مقدار پیشفرض تعیین کنیم.
در این حالت اگر هنگام فراخوانی تابع مقداری برای آن پارامتر ارسال نشود، PHP از مقدار پیشفرض استفاده میکند.
پارامتر پیشفرض
PHP
v8.2
<?php
function welcome($name = "مهمان") {
echo "سلام " . $name . " عزیز!<br>";
}
welcome("مهمان");
welcome();
?>
🌐 بخش ۶: محدوده متغیرها در تابع
یکی از نکات مهم درباره توابع، Scope یا محدوده دسترسی متغیرها است.
متغیری که داخل یک تابع تعریف میشود، به صورت عادی فقط در همان تابع قابل استفاده است.
محدوده متغیر
PHP
v8.2
<?php
$siteName = "رجستری آکادمی";
function showCourse() {
$courseName = "دوره جامع PHP";
echo $courseName . "<br>";
}
showCourse();
echo $siteName;
?>
💡 نکته کلیدی:
تا جای ممکن اطلاعات موردنیاز تابع را از طریق پارامترها دریافت کن و نتیجه را با return برگردان. این روش باعث میشود توابع مستقلتر و قابل استفاده مجدد باشند.
🧮 بخش ۷: ساخت یک تابع محاسباتی
حالا که مفهوم پارامتر و return را یاد گرفتیم، یک مثال واقعیتر میسازیم.
این تابع قیمت نهایی یک محصول را با درنظرگرفتن درصد تخفیف محاسبه میکند.
محاسبه قیمت با تابع
PHP
v8.2
<?php
function calculateFinalPrice($price, $discount) {
$discountAmount = $price * $discount / 100;
$finalPrice = $price - $discountAmount;
return $finalPrice;
}
$price = 500000;
$discount = 20;
$finalPrice = calculateFinalPrice($price, $discount);
echo "قیمت اصلی: " . $price . " تومان<br>";
echo "تخفیف: " . $discount . "%<br>";
echo "قیمت نهایی: " . $finalPrice . " تومان";
?>
📝 پروژه عملی: ساخت سیستم محاسبه نمره
🎯 پروژه: تابع تعیین وضعیت دانشجو
تابعی بنویسید که نام دانشجو و نمره او را دریافت کند و بر اساس نمره، وضعیت او را مشخص کند.
- نمره ۱۰ یا بیشتر: قبول
- نمره کمتر از ۱۰: مردود
- تابع باید نتیجه را با
returnبرگرداند.
🔍 راهحل پروژه:
وضعیت دانشجو
PHP
v8.2
<?php
function getStudentStatus($name, $score) {
if ($score >= 10) {
return $name . " قبول شد. 🎉";
}
return $name . " مردود شد.";
}
$result = getStudentStatus("مهمان", 18);
echo $result;
?>
📝 تمرینهای عملی
🎯 تمرین شماره ۱: محاسبه مربع عدد
تابعی به نام square بنویسید که یک عدد دریافت کند و مربع آن را با return برگرداند.
🎯 تمرین شماره ۲: محاسبه میانگین
تابعی بسازید که سه نمره دریافت کند و میانگین آنها را محاسبه و برگرداند.
🎯 تمرین شماره ۳: پیام خوشآمدگویی
تابعی بسازید که نام کاربر و شهر او را دریافت کند و یک پیام خوشآمدگویی مناسب برگرداند.
🔑 نکات کلیدی درس
- ✅ تابع با کلمه کلیدی
functionتعریف میشود. - ✅ تعریف تابع بهتنهایی باعث اجرای آن نمیشود؛ باید آن را فراخوانی کنیم.
- ✅ پارامترها به تابع اجازه میدهند اطلاعات را از بیرون دریافت کند.
- ✅ یک تابع میتواند چند پارامتر داشته باشد.
- ✅ دستور
returnنتیجه را از تابع برمیگرداند. - ✅ پارامترها میتوانند مقدار پیشفرض داشته باشند.
- ✅ استفاده صحیح از توابع باعث کاهش تکرار کد و افزایش خوانایی برنامه میشود.
- ✅ بهتر است هر تابع یک وظیفه مشخص و واضح داشته باشد.
💡 نکته حرفهای مهمان:
اگر یک تکه کد را در چند جای برنامه تکرار میکنی، قبل از کپیکردن دوباره آن، از خودت بپرس آیا بهتر نیست آن را به یک تابع تبدیل کنم؟
این طرز فکر یکی از پایههای نوشتن کد تمیز و قابل نگهداری است.
🧩 جمعبندی درس
مهمان جان، در این درس با یکی از مهمترین ابزارهای برنامهنویسی PHP آشنا شدی.
حالا میتوانی منطقهای تکراری را داخل تابع قرار بدهی، اطلاعات را با پارامتر دریافت کنی و نتیجه را با return به برنامه برگردانی.
این مفاهیم در پروژههای واقعی PHP دائماً استفاده میشوند و در ادامه مسیر، مخصوصاً هنگام ساخت فرمها، کار با دیتابیس و پروژه نهایی دوره، کاربرد بسیار زیادی خواهند داشت.
در درس بعدی وارد دنیای فرمها در PHP میشویم و یاد میگیریم اطلاعاتی را از کاربر با روشهای GET و POST دریافت و اعتبارسنجی کنیم.



