توابع در PHP کاربرهای فراوانی دارند. به کمک تابعهای مختلف میتوانیم کارهای خارقالعادهای را بدون نیاز به درک پیچیدگی آنها انجام دهیم. در این آموزش علاوه بر آشنایی با ساختار تابع در php با نحوه تعریف توابع نیز آشنا میشویم.
زبان برنامهنویسی PHP بیش از 1,000 تابع از پیش تعریف شده (Built-in) دارد که با صدا زدن آنها کارهای بزرگی انجام میشود.
مثلاً فرض کنید برای خواندن فایل در PHP فقط کافی است تابع fopen()
را صدا زده و نام فایل را به آن بدهیم! بدون آنکه نیاز باشد خودمان را درگیر سختیهای کار با فایل کنیم!
در این جلسه از آموزش با چگونگی استفاده از توابع در زبان php آشنا میشویم. ابتدا انواع آن را بررسی کرده و سپس شروع به تعریف توابع دلخواه میکنیم. همچنین نکاتی برای حرفهایتر شدن را با هم مرور خواهیم کرد.
فهرست محتوای آموزش
انواع تابع در PHP
تقریباً در تمام زبانهای برنامهنویسی، دو نوع تابع وجود دارد:
- توابع داخلی (Built-in)
- توابع تعریف شده توسط کاربر (User Defined)
تابع داخلی همان هزاران توابعی هست که به طور پیشفرض روی کامپایلر PHP تعریف شده است. در هنگام برنامهنویسی، میتوانیم برای اهداف مختلف از آنها استفاده کنیم. برای مثال، برای کار با زمان در PHP از تابع معروف time()
یا getdate()
استفاده میکنیم.
اما اگر بخواهیم کار خاصی انجام دهیم، باید تابع خودمان را بنویسیم. این کار بسیار ساده است! ابتدا بهتر است ساختار یک تابع را درک کنیم:
تابع PHP چیست ؟
فرض کنید قطعه کدی در برنامه خود دارید که لازم است آن را در قسمتهای مختلف تکرار کنید. به جای تکرار آن قطعه از کد، بهتر است آن را به صورت یک تابع تعریف کرده و هر بار فقط تابع را فراخوانی کنیم.
ساختار تابع در زبان PHP به صورت زیر است:
function Name() {
//Some Code to be Executed;
}
ساختار تابع با کلمه کلیدی function، شروع میشود. سپس یک نام برای آن تعریف شده و محدوده کدهای آن به کمک براکت باز و بسته ({
و }
) مشخص میشود.
در انتخاب نام تابع دقت داشته باشید که:
- نام شامل حروف انگلیسی، اعداد و کاراکتر زیر خط (underline) باشد.
- اولین کاراکتر در نام تابع باید حرف انگلیسی یا _ باشد.
- نام مورد استفاده در سراسر کدهای آن صفحه برای تابع دیگری د نظر گرفته نشده باشد.
- حروف کوچک یا بزرگ در نام توابع اهمیتی ندارد. (غیر حساس یا Case-Insensitive)
برای تعریف ورودی، از فضای درون پرانتزهای جلوی نام استفاده میکنیم. این مورد در بخش بعدی بررسی میشود.
بهتر است نامی برای تابع یا آرگومانهای ورودی انتخاب کنید که علاوه بر خوانا بودن، هدف و کاری که انجام میدهند را مشخص کند.
تعریف تابع در PHP
حال که با ساختار کلی آشنا شدیم، بیایید تا یک تابع ساده بنویسیم. تابع زیر که نام آن sayHello()
است، معروفترین عبارت در برنامه نویسی را در خروجی چاپ میکند.
<?php
function sayHello() {
echo "Hello world!";
}
محدوده کدهای تابع میتواند به هر میزان دلخواهی باشد. یعنی ممکن است یک تابع مثل تابع بالا فقط دارای یک خط باشد ولی تابعی چندین هزار خط کد داشته باشد.
البته پیشنهاد میکنم برای افزایش خوانایی کد، توابع بسیار طولانی (در حد چند صد خط) را به چند تابع تقسیم کنید.
برای صدا زدن یا فراخوانی تابعی که تعریف کردیم، باید نام آن را به همراه پرانتزهای جلوی آن بنویسیم:
sayHello();
نتیجه فراخوانی تابع، چاپ شدن عبارت Hello World!
در خروجی است.
اگر تابعی داشته باشیم که چند آرگومان ورودی از ما بخواهد، بایستی در هنگام فراخوانی، آن مقادیر را نیز تعریف کنیم. مثلاً، قطعه کد زیر سه عدد را گرفته و با هم جمع میکند.
<?php
function addNumbers($i, $j, $k) {
echo $i + $j + $k;
}
addNumbers(17, 26, 21);
در پروژههای بزرگ، معمولاً مجموعهای از توابع پر کاربرد را تعریف میکنند که در بخشهای مختلف سایت استفاده میشود. این کار معمولاً با فراخوانی فایلها در هم استفاده میشود. یعنی توابع را در یک فایل نوشته، سپس با include و require در PHP آنها را در فایلهای دیگر وارد میکنیم.
ترفندهای کار با توابع PHP
در کار با تابع PHP معمولاً دو کار اساسی انجام میدهیم:
- تعریف و گرفتن ورودی در هنگام فراخوانی تابع
- خروجی دادن تابع
همچنین ممکن است گاهی لازم شود تا آرگومانهای ورودی را به صورت اختیاری تعریف کنیم. در این بخش با این سه مبحث آشنا خواهیم شد.
گرفتن ورودی در تابع
تعریف ورودی برای تابع مشابه تعریف متغیر در PHP است. برای این منظور کافی است یک نام متغیر برای آرگومان ورودی خود در نظر گرفته و در ابتدای آن علامت دلار ($) قرار دهیم.
در محدوده کدهای تابع، هر کجا که به آن مقدار نیاز داشتیم، مشابه استفاده از متغیرها، به راحتی از آن استفاده میکنیم.
همان تابع sayHello()
را به یاد بیاورید. میخواهیم یک مقدار ورودی برای آن تعریف کنیم تا نام فرد را گرفته و به او سلام دهد.
برای این کار به صورت زیر عمل میکنیم:
<?php
function sayHello($name) {
echo "Hello " . $name . "!";
}
در خط دوم، برای تابع خود یک آرگومان ورودی به نام $name
تعریف کردیم. سپس در خط سوم از آن برای اعلام سلام از آن استفاده شده است.
اگر میخواهید ترفندهای حرفهای کار با رشته در PHP را بیاموزید، به آموزش رشته در PHP مراجعه کنید.
برای استفاده از این تابع، لازم است تا هنگام فراخوانی آن، مقدار ورودی مورد نظر را به تابع بدهیم.
sayHello("Omid"); // Hello Omid!
sayHello("Sara"); // Hello Sara!
مقادیری که در کامنتهای جلوی هر خط آورده شده، خروجی تابع در برنامه خواهد بود.
تعریف خروجی برای تابع در PHP
تا الآن در تمام مثالهایی که زدیم، خروجی ما در صفحه وب چاپ میشد. اگر بخواهیم یک مقدار را به عنوان خروجی تابع تعریف کنیم باید به چه صورت عمل کرد؟
فرض کنید در حال نوشتن فایل در PHP هستید. ابتدا باید به کمک تابع داخلی fopen()
فایل مورد نظر را ایجاد یا باز کرده و شئ مربوط به آن را نگه داریم.
$file = fopen("SabzDanesh.txt", "w");
پس از اجرای تابع، یک مقدار بازگشتی توسط fopen()
به ما داده شده که آن را درون متغیر $file
برای انجام عملیاتهای بعدی میریزم.
برای تعریف مقدار بازگشتی (Returning value) در تابع، از کلمه کلیدی return استفاده میکنیم.
وقتی اجرای کدهای تابع به return برسد، مقدار جلوی آن به عنوان خروجی بازگردانده شده و از تابع خارج میشویم.
یعنی وقتی درون یک تابع به return میرسیم، کدهای پس از آن دیگر اجرا نمیشود و اجرای برنامه از خطی که تابع فراخوانی شده بود ادامه پیدا خواهد کرد.
تابع addNumbers()
را به گونهای مینویسیم که نتیجه جمع را به عنوان خروجی به ما بدهد:
function addNumbers($i, $j, $k) {
return $i + $j + $k;
}
برای نمایش نتیجه در خروجی، باید مقدار برگشتی تابع را چاپ کنیم. به صورت زیر:
echo addNumbers(17, 23, 37);
آرگومان ورودی پیشفرض
اگر تابعی دارای یک آرگومان ورودی معمولی باشد و در هنگام فراخوانی، آن مقدار را تعریف نکنیم، با خطای Uncaught ArgumentCountError مواجه خواهیم شد.
گاهی اوقات لازم است برای برخی از آرگومانهای ورودی، یک مقدار پیشفرض در نظر بگیرم. در این صورت، اگر آرگومان مورد نظر در هنگام فراخوانی تعریف نشد، از مقدار پیشفرض خودمان استفاده میشود.
برای تعریف مقدار پیشفرض برای ورودیهای تابع، کافی است در هنگام تعریف پارامتر، مقدار مورد نظر را نیز به آن انتساب دهیم. به مثال زیر دقت کنید:
<?php
function addNumbers($i, $j, $k=0) {
echo $i + $j + $k;
}
addNumbers(17, 21, 29); // 67
addNumbers(17, 21); // 38
?>
در این جا برای آرگومان سوم ($k
) مقدار پیشفرض 0 را در نظر گرفتهایم.
همانطور که میبینید در آخرین فراخوانی تابع addNumbers()
فقط دو آرگومان اول به عنوان ورودی داده شده است؛ اما تابع بدون هیچ خطایی اجرا میشود.
جمعبندی: تابع در PHP
در این آموزش با توابع در پیاچپی آشنا شدیم. زبان php بیش از هزار تابع داخلی دارد که در هر برنامه و هر زمانی که خواستیم میتوانیم از آنها استفاده کنیم.
علاوه بر آنها، خودمان میتوانیم توابع دلخواهی با کلمه کلیدی function تعریف کنیم. هر تابع میتواند بدون ورودی بوده یا چند ورودی داشته باشد. یاد گرفتیم که میتوان برای این ورودیها مقدار پیشفرض نیز تعیین کرد.
همچنین توابع مختلف میتوانند یک مقدار به عنوان خروجی خود با کلمه کلیدی return برگردانند. این مقدار میتواند از هر نوعی باشد.
در این منبع انگلیسی چند مثال بیشتر از توابع PHP وجود دارد که میتوانید ببینید.
این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش PHP
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
ممنون از توضیحات تون
سلامت باشی مریم عزیز. مرسی برای انرژی خوبتون
ممنون ازتون. ی چیزی رو متوجه نشدم
وقتی یه تابع رو صدا میزنیم برنامه همونجا صبر میکنه تا کار تابع تموم بشه؟؟
سلام
بهطور معمول، آره. اجرای برنامه میپره به بدنه تابع PHP و وقتی ازش خارج میشه، برمیگرده جای قبلی که بوده.
سلام
مرسی اموزشتون خیلی کامله
اگر فیلم هم قرار بدید عالی میشه
سلام؛ حتماً الهام عزیز
در حال برنامهریزی برای ضبط ویدئوهای آموزشی سایت هستیم و تا حدود یک ماه آینده شروع به انتشار میکنیم.