آموزش پیشرفته PHP – تابع بازگشتی(callback function)
سلام
با یک جلسه ی دیگه از آموزش پیشرفته PHP در خدمتتون هستیم؛ در این جلسه میخواهیم بپردازیم به مبحث Callback Function یا تابع بازگشتی که اگر به صورت خلاصه خواسته باشیم تعریف کنیم، در PHP این امکان وجود دارد که یک تابع را به عنوان آرگومان ورودی به تابع دیگری میتوانیم ارسال کنیم. در ادامه همراه بپرسم باشید.
تابع بازگشتی PHP
از هر تابع موجود در PHP می توانیم به عنوان تابع بازگشتی استفاده کنیم. برای استفاده از یک تابع به عنوان تابع بازگشتی(Callback Function)، یک رشته حاوی نام تابع را به عنوان آرگومان وارد کنید، مانند مثال زیر:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
<?php function my_callback($item) { return strlen($item); } $strings = ["apple", "orange", "banana", "coconut"]; $lengths = array_map("my_callback", $strings); print_r($lengths); ?> |
در مثال بالا یک تابع بازگشتی به نام my_callback را ایجاد کردیم و با کم ()array_map تعداد کاراکتر هر رشته را چاپ کردیم.
در نسخه PHP 7 میتوانیم توابع ناشناس را به عنوان توابع بازگشتی ارسال کنیم:
۱ ۲ ۳ ۴ ۵ |
<?php $strings = ["apple", "orange", "banana", "coconut"]; $lengths = array_map( function($item) { return strlen($item); } , $strings); print_r($lengths); ?> |
تعریف تابع بازگشتی توسط کاربر
توابع و روشهای تعریف شده توسط کاربر را میتوان به عنوان تابع بازگشتی به عنوان آرگومان در نظر گرفت. برای استفاده از تابع بازگشتی در داخل یک تابع تعریف شده توسط کاربر، کافیست آن تابع را با اضافه کردن () به متغیر فراخوانی کرد و آرگومان ها را مانند توابع عادی وارد کنید:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ |
function exclaim($str) { return $str . "! "; } function ask($str) { return $str . "? "; } function printFormatted($str, $format) { // Calling the $format callback function echo $format($str); } // Pass "exclaim" and "ask" as callback functions to printFormatted() printFormatted("Hello world", "exclaim"); printFormatted("Hello world", "ask"); |
در مثال بالا این کار را انجام دادیم.
توابع بازگشتی مبحث کمی پیچیده ای است که با کمی تمرین قادر به درک آن هستید؛ ما هم سعی میکنیم در آموزش های بعدی از این توابع بیشتر استفاده کنیم.
این قسمت از آموزش به پایان رسید، مشکلی در رابطه با آموزش بالا داشتید می توانید در سایت بپرسید
موفق باشید.
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید