תחום ההשפעה של משתנים
חלק מהיחידה יסודות במסלול ה-PHP של Coddy. שיעור 67 מתוך 71.
משתנים שנוצרים בתוך פונקציה נפרדים לחלוטין ממשתנים שמחוץ לה. המושג הזה נקרא תחום משתנים, והבנתו מונעת באגים מבלבלים בקוד שלך.
משתנה שמוגדר בתוך פונקציה קיים רק בתוך אותה פונקציה. הוא נקרא משתנה מקומי:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // שגיאה: $message לא קיים כאן
?>המשתנה $message נוצר בתוך sayHi() ונעלם כשהפונקציה מסתיימת. ניסיון לגשת אליו מחוץ לה גורם לשגיאה.
בדומה לכך, משתנים שמוגדרים מחוץ לפונקציה אינם זמינים בה אוטומטית:
<?php
$name = "Alice";
function greet() {
echo $name; // שגיאה: $name אינו מוגדר בתוך הפונקציה הזו
}
greet();
?>למרות ש־$name קיים בקוד הראשי, הפונקציה לא יכולה לראות אותו. כדי להשתמש בערכים חיצוניים בפונקציה, מעבירים אותם כפרמטרים: זו הגישה המסודרת והמומלצת שכבר למדת.
ההפרדה הזאת למעשה מועילה. פירוש הדבר הוא שפונקציות לא ישנו בטעות משתנים בחלקים אחרים של התוכנית שלך, וכך הקוד שלך יהיה צפוי יותר וקל יותר לניפוי שגיאות.
אתגר
קליש לקרוא שתי שורות קלט:
- שם של אדם (למשל,
Alice) - סכום הבונוס כמספר שלם (למשל,
50)
יש ליצור פונקציה בשם calculateBonus שמקבלת שני פרמטרים: $name (מחרוזת) ו-$bonus (מספר שלם).
בתוך הפונקציה:
- יש ליצור משתנה מקומי
$baseSalaryולהגדיר את ערכו ל-1000 - יש לחשב את השכר הכולל על ידי חיבור
$baseSalaryו-$bonus - יש להחזיר מחרוזת בפורמט:
[name] earns [total]
יש לקרוא לפונקציה עם ערכי הקלט ולהדפיס את התוצאה שהיא מחזירה.
דוגמה 1:
אם הקלט הוא Alice ו-50, הפלט צריך להיות:
Alice earns 1050דוגמה 2:
אם הקלט הוא Bob ו-200, הפלט צריך להיות:
Bob earns 1200דוגמה 3:
אם הקלט הוא Emma ו-0, הפלט צריך להיות:
Emma earns 1000נסו בעצמכם
<?php
// קראו את הקלט
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO: צרו את הפונקציה calculateBonus למטה
// - הפונקציה צריכה לקבל את $name (string) ואת $bonus (int) כפרמטרים
// - צרו משתנה מקומי $baseSalary שערכו 1000
// - חשבו את השכר הכולל והחזירו "[name] earns [total]"
// קראו לפונקציה והדפיסו את התוצאה
echo calculateBonus($name, $bonus);
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואהשוויון וזהותאופרטורים לוגיים — חלק 1אופרטורים לוגיים — חלק 2סיכום — לוגיקה פשוטה2משתנים וסוגי נתונים
מספריםמחרוזות ומירכאותערכים בוליאנייםכללי מתן שמותסיכום – אתחול משתניםמשתנים ריקיםשרשור מחרוזותקבלת קלט מהמשתמשהמרה לסוגים שונים3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקההשמה משולבתהגדלה והקטנהקדימות אופרטוריםסיכום — חישובים פשוטיםאופרטורים למחרוזותתרגלו בעצמכם: קומפיילר PHP אונליין