פונקציות callback
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 4 מתוך 68.
פונקציית callback היא פונקציה שמועברת כארגומנט לפונקציה אחרת. במקום לקרוא לפונקציה מיד, מעבירים את שמה כדי שהפונקציה שמקבלת אותה תוכל לקרוא לה מאוחר יותר, בעת הצורך.
כדי להעביר פונקציה כ־callback, פשוט משתמשים בשם הפונקציה כמחרוזת:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
function processUser($username, $callback) {
// בצע עיבוד כלשהו...
$callback($username); // קרא לפונקציית ה-callback
}
processUser("Alice", "greet"); // פלט: Hello, Alice!
?>בדוגמה הזאת, "greet" מועברת כפונקציית callback אל processUser(). לאחר מכן, הפונקציה processUser() קוראת ל-callback באמצעות המחרוזת כשם של פונקציה.
פונקציות callback שימושיות להפליא, כי הן הופכות את הפונקציות שלך לגמישות יותר. אותה פונקציה יכולה לבצע פעולות שונות, בהתאם לפונקציית ה־callback שמעבירים לה. המושג הזה הוא יסודי ברבות מהפונקציות המובנות של PHP, כמו array_map() ו־array_filter(), שתפגוש בהמשך הקורס הזה.
אתגר
קלצרו שתי פונקציות: אחת בשם formatUppercase שמקבלת מחרוזת ומחזירה אותה באותיות גדולות, ואחרת בשם formatLowercase שמקבלת מחרוזת ומחזירה אותה באותיות קטנות.
לאחר מכן צרו פונקציה בשם applyFormat שמקבלת שני פרמטרים: מחרוזת טקסט ושם של פונקציית callback. הפונקציה הזו צריכה להפעיל את פונקציית ה-callback על הטקסט ולהחזיר את התוצאה.
תקבלו שתי קלטים: סוג הפעולה ("upper" או "lower") והטקסט שיש לעצב. קראו את שני הקלטים, קבעו באיזו פונקציית callback להשתמש בהתאם לסוג הפעולה, קראו ל-applyFormat עם פונקציית ה-callback המתאימה, והדפיסו את התוצאה המעוצבת.
פורמט הקלט: שתי שורות - השורה הראשונה מכילה את סוג הפעולה ("upper" או "lower"), והשורה השנייה מכילה את הטקסט שיש לעצב
הפלט הצפוי: הטקסט המעוצב בהתאם לסוג הפעולה
נסו בעצמכם
<?php
// קראו את הקלט
$operation = trim(fgets(STDIN));
$text = trim(fgets(STDIN));
// TODO: כתבו את הקוד שלכם למטה
// צרו את הפונקציה formatUppercase
// צרו את הפונקציה formatLowercase
// צרו את הפונקציה applyFormat
// קבעו באיזו פונקציית callback להשתמש לפי סוג הפעולה
// קראו לפונקציה applyFormat עם פונקציית ה-callback המתאימה
// הציגו את התוצאה
echo $result;
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'use'פונקציות חץפונקציות callbackשימוש ב-'call_user_func'פונקציות משתנותהעברה באמצעות הפניהפונקציות רקורסיביותסיכום: מגוון פונקציות4מערכים רב־ממדיים
יצירת מערך דו־ממדיגישה לאיברי מערך דו־ממדישינוי איברי מערך דו־ממדימעבר באמצעות לולאות מקוננותמערכים אסוציאטיביים דו־ממדייםסיכום: תרגיל רשת פשוטה2מניפולציות מתקדמות במערכים
הוספה באמצעות 'array_push'הסרה באמצעות 'array_pop'הוספה לתחילת המערך באמצעות 'array_unshift'הסרה מתחילת המערך באמצעות 'array_shift'מיזוג מערכים ממוספריםמיזוג מערכים אסוציאטיבייםחילוץ באמצעות 'array_slice'בדיקת ערכים באמצעות 'in_array'חיפוש מפתחות באמצעות 'array_search'סיכום: תרגיל רשימת השמעה3מיון מערכים
מיון מערכים עם אינדקסים בסדר עולהמיון מערכים עם אינדקסים בסדר יורדמיון מערכים אסוציאטיביים לפי ערךמיון מערכים אסוציאטיביים לפי מפתחמיון בסדר טבעימיון מותאם אישית באמצעות 'usort'סיכום: מיון טבלת מוביליםתרגלו בעצמכם: קומפיילר PHP אונליין