فصل ۱: توابع چیستند و چرا مهم هستند؟

۱.۱ تعریف تابع

یک تابع بلوکی از کد است که یک کار خاص را انجام می‌دهد و می‌توان آن را بارها و بارها در برنامه فراخوانی (اجرا) کرد.

مثال از زندگی واقعی: فرض کنید شما یک دستورالعمل پخت چای دارید. هر بار که کسی چای می‌خواهد، شما کل مراحل را از اول توضیح نمی‌دهید، بلکه فقط می‌گویید: "برو چای درست کن!". در برنامه‌نویسی، تابع همان "دستورالعصل پخت چای" است.

۱.۲ مزایای استفاده از توابع

  • کاهش تکرار کد: یک بار تابع را می‌نویسید و بارها استفاده می‌کنید.
  • خوانایی بیشتر: کد شما تمیز و منظم می‌شود.
  • عیب‌یابی آسان‌تر: اگر خطایی باشد، فقط باید یک قسمت (تابع) را درست کنید.
  • قابلیت استفاده مجدد: می‌توانید توابع را در پروژه‌های مختلف استفاده کنید.

فصل ۲: ساختار یک تابع در PHP

۲.۱ نحوه تعریف تابع

برای تعریف تابع از کلمه کلیدی function استفاده می‌کنیم.

ساختار کلی:

function functionName() {
    // کدی که می‌خواهیم اجرا شود
}

مثال ساده:

function salam() {
    echo "سلام به همه دانش آموزان خوش آمدید!";
}

۲.۲ فراخوانی تابع

بعد از تعریف تابع، برای اجرای آن، باید آن را فراخوانی کنیم.

salam(); // خروجی: سلام به همه دانش آموزان خوش آمدید!

فصل ۳: پارامترها و آرگومان‌ها

۳.۱ پارامتر (Parameter)

متغیرهایی هستند که در داخل پرانتز تعریف تابع می‌آیند. مثل یک "فرم خالی" که باید پر شود.

مثال:

function salamBeFard($name) {
    echo "سلام " . $name . "! عزیز";
}

اینجا $name یک پارامتر است.

۳.۲ آرگومان (Argument)

مقداری است که هنگام فراخوانی تابع، به پارامترها پاس داده می‌شود. مثل "پر کردن فرم".

salamBeFard("آرمان"); // خروجی: سلام آرمان! عزیز
salamBeFard("نازنین"); // خروجی: سلام نازنین! عزیز

اینجا "آرمان" و "نازنین" آرگومان هستند.

۳.۳ چند پارامتری

یک تابع می‌تواند چندین پارامتر داشته باشد.

function jam($a, $b) {
    $natije = $a + $b;
    echo "حاصل جمع: " . $natije;
}

jam(5, 3); // خروجی: حاصل جمع: 8

فصل ۴: مقدار بازگشتی (Return Value)

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

برای این کار از دستور return استفاده می‌کنیم.

مثال بدون return:

function jam($a, $b) {
    $natije = $a + $b;
    echo "حاصل جمع: " . $natije;
}
jam(2, 3); // فقط چاپ می‌کند. نمی‌توانیم نتیجه را ذخیره کنیم.

مثال با return:

function jam($a, $b) {
    $natije = $a + $b;
    return $natije; // نتیجه را برمی‌گرداند
}

$javab = jam(2, 3); // مقدار ۵ در متغیر $javab ذخیره می‌شود.
echo $javab; // خروجی: 5

نکته مهم: بعد از اجرای دستور return، تابع بلافاصله پایان می‌یابد و هیچ کد دیگری در تابع اجرا نمی‌شود.


فصل ۵: محدوده متغیرها (Variable Scope)

این مفهوم خیلی مهم است!

۵.۱ متغیر محلی (Local Variable)

متغیری که داخل یک تابع تعریف می‌شود، فقط در همان تابع قابل دسترسی است.

function test() {
    $localVar = "من اینجا هستم"; // متغیر محلی
    echo $localVar; // کار می‌کند
}
test();
echo $localVar; // خطا! $localVar اینجا تعریف نشده است.

۵.۲ متغیر سراسری (Global Variable)

متغیری که خارج از توابع تعریف می‌شود. برای استفاده از آن در داخل یک تابع، باید از کلمه کلیدی global استفاده کنیم.

$globalVar = "من بیرون هستم"; // متغیر سراسری

function test() {
    global $globalVar; // به تابع می‌گوییم که از متغیر سراسری استفاده کن
    echo $globalVar; // حالا کار می‌کند
}
test(); // خروجی: من بیرون هستم

فصل ۶: مقدار پیش‌فرض پارامترها

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

function salamBeFard($name = "کاربر") {
    echo "سلام " . $name . "!";
}

salamBeFard("آرمان"); // خروجی: سلام آرمان!
salamBeFard(); // خروجی: سلام کاربر!

نکته: پارامترهای با مقدار پیش‌فرض باید در انتهای لیست پارامترها قرار بگیرند.


فصل ۷: انواع توابع در PHP

۷.۱ توابع از پیش ساخته‌شده (Built-in Functions)

این توابع را خود PHP برای ما آماده کرده است. مثال‌ها:

  • strlen("سلام") : طول رشته را برمی‌گرداند.
  • date("Y-m-d") : تاریخ امروز را برمی‌گرداند.
  • array(1, 2, 3) : یک آرایه ایجاد می‌کند.

۷.۲ توابع تعریف شده توسط کاربر (User-Defined Functions)

همان توابعی هستند که خودمان می‌نویسیم (همه مثال‌های بالا).


فصل ۸: مثال‌های کاربردی و تمرین

مثال ۱: تابع بررسی عدد زوج

function isEven($number) {
    if($number % 2 == 0) {
        return true;
    } else {
        return false;
    }
}

if(isEven(4)) {
    echo "عدد زوج است";
} else {
    echo "عدد فرد است";
}

مثال ۲: تابع محاسبه سن

function calculateAge($birthYear) {
    $currentYear = date("Y");
    $age = $currentYear - $birthYear;
    return $age;
}

$myAge = calculateAge(2005);
echo "سن شما: " . $myAge . " سال";