Menu
Coddy logo textTech

שימוש ב-'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
?>

קריאה דינמית לפונקציות זו חשובה במיוחד כשבונים יישומים גמישים שבהם הפונקציה הספציפית שיש להפעיל נקבעת בזמן הריצה, כמו מחשבונים, מעבדי פקודות או מערכות ניתוב.

challenge icon

אתגר

קל

צרו שלוש פונקציות: 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;
?>
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר PHP אונליין