שימוש ב-'call_user_func'
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 5 מתוך 68.
הפונקציה call_user_func() מספקת דרך עוצמתית לקרוא לפונקציות באופן דינמי ב-PHP. במקום לקרוא לפונקציה ישירות לפי שמה, אפשר לשמור את שם הפונקציה במשתנה מסוג מחרוזת ולהשתמש ב-call_user_func() כדי להפעיל אותה.
הנה התחביר הבסיסי:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // פלט: Hello World!
?>הדבר נעשה שימושי במיוחד כשצריך לקרוא לפונקציות שונות בהתאם לקלט מהמשתמש או לתנאים. אפשר גם להעביר ארגומנטים לפונקציה על ידי הכללתם כפרמטרים נוספים:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // פלט: 8
?>קריאה דינמית לפונקציות זו חשובה במיוחד כשבונים יישומים גמישים שבהם הפונקציה הספציפית שיש להפעיל נקבעת בזמן הריצה, כמו מחשבונים, מעבדי פקודות או מערכות ניתוב.
אתגר
קלצרו שלוש פונקציות: multiply שמקבלת שני מספרים ומחזירה את המכפלה שלהם, subtract שמקבלת שני מספרים ומחזירה את ההפרש שלהם, ו־divide שמקבלת שני מספרים ומחזירה את המנה שלהם.
תקבלו שלוש קלטים: שם הפעולה ("multiply", "subtract" או "divide"), ושני מספרים. קראו את שלושת הקלטים, השתמשו ב־call_user_func() כדי להפעיל את הפונקציה המתאימה עם שני המספרים, והדפיסו את התוצאה.
מבנה הקלט: שלוש שורות - בשורה הראשונה מופיע שם הפעולה, בשורה השנייה מופיע המספר הראשון, ובשורה השלישית מופיע המספר השני
הפלט הצפוי: תוצאת הפעולה
נסו בעצמכם
<?php
// קראו את הקלט
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: צרו כאן את שלוש הפונקציות (multiply, subtract, divide)
// TODO: השתמשו ב-call_user_func() כדי להפעיל את הפונקציה המתאימה
// הציגו את התוצאה
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 אונליין