פונקציות משתנות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 6 מתוך 68.
פונקציות משתנה מציעות דרך נוספת לקרוא לפונקציות באופן דינמי ב-PHP. במקום להשתמש ב-call_user_func(), אפשר לקרוא לפונקציה ישירות על ידי התייחסות למשתנה שמכיל את שם הפונקציה כאילו הוא הפונקציה עצמה.
התחביר פשוט: אם יש לך משתנה שמכיל שם של פונקציה, אפשר לקרוא לפונקציה הזאת על ידי הוספת סוגריים למשתנה:
<?php
function sayHello() {
echo "Hello World!";
}
$functionName = "sayHello";
$functionName(); // פלט: Hello World!
?>הדבר עובד גם עם פונקציות שמקבלות פרמטרים. פשוט מעבירים את הארגומנטים בתוך הסוגריים:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
$func = "greet";
$func("Alice"); // פלט: Hello, Alice!
?>פונקציות משתנות מספקות דרך נקייה ואינטואיטיבית להריץ קוד באופן דינמי. התכונה הזו שימושית במיוחד כשצריך לקרוא לפונקציות שונות בהתאם לתנאים או לקלט מהמשתמש, וכך להפוך את הקוד לגמיש יותר ולהתאים אותו למצבים שונים.
אתגר
קלצרו שלוש פונקציות: calculateArea מקבלת שני מספרים (אורך ורוחב) ומחזירה את המכפלה שלהם, calculatePerimeter מקבלת שני מספרים ומחזירה את הסכום שלהם כפול שתיים, ו־calculateDiagonal מקבלת שני מספרים ומחזירה את השורש הריבועי של סכום הריבועים שלהם.
תקבלו שלוש קלטים: שם הפעולה ("area", "perimeter" או "diagonal"), האורך והרוחב. קראו את שלושת הקלטים, אחסנו את שם הפונקציה במשתנה וקראו לפונקציה הזאת באמצעות תחביר של פונקציה דרך משתנה, עם שתי המידות. אחסנו את הערך שהיא מחזירה ב־$result: השורה שמתחת לקוד שלכם מדפיסה אותו.
פורמט הקלט: שלוש שורות — בשורה הראשונה מופיע שם הפעולה, בשורה השנייה מופיע האורך (מספר שעשוי להכיל ספרות עשרוניות), ובשורה השלישית מופיע הרוחב (מספר שעשוי להכיל ספרות עשרוניות)
הפלט הצפוי: תוצאת החישוב
נסו בעצמכם
<?php
// קראו את נתוני הקלט
$operation = trim(fgets(STDIN));
$length = floatval(fgets(STDIN));
$width = floatval(fgets(STDIN));
// TODO: צרו כאן את שלוש הפונקציות (calculateArea, calculatePerimeter, calculateDiagonal)
// TODO: קראו לפונקציה המתאימה באמצעות תחביר של פונקציה משתנה ושמרו את התוצאה ב-$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 אונליין