שליחת ארגומנטים ב-PHP היא לרוב ע"י ערך (by value), כך שאם שולחים משתנה לפונקציה כארגומנט, אז ערכו של המשתנה לא ישתנה כתוצאה משינוי הארגומנט בתוך הפונקציה. לפונקציה ניתן לשלוח קבועים או משתנים, ואף לכתוב כארגומנט פונקציה אחרת שמחזירה ערך כלשהו.
<?php function func($arg) { $arg=-1; }
$var=5; func($var);
/*
קריאה לפונקציה עם הארגומנט $var. הארגומנט עובר לפונקציה ע"י ערך (by value).
אם רוצים ששינוי הארגומנטים בתוך הפונקציה תשפיע גם על המשתנים שנשלחו לפונקציה כארגומנטים, יש צורך להעביר את המשתנים ע"י ייחוס (by reference), וזאת עושים ע"י הוספת הסימן & לפני הארגומנט.
<?php function func(&$arg
/*
הארגומנט יעבור לפונקציה ע"י ייחוס (by reference). שינוי הארגומנט בפונקציה ישפיע על המשתנה שנשלח לפונקציה.
PHP תומכת בערכי ברירת מחדל לארגומנטים בצורה דומה לזו של C++ (למי שמכיר). ערך ברירת מחדל נותנים ע"י ציון הערך של הארגומנט בעזרת הסימן שווה. ערך ברירת מחדל חייב להיות סקלר (ולא יכול להיות משתנה אחר או מחלקה, למשל). בנוסף, יש לסדר את הארגומנטים כך שכל הארגומנטים עם ערכי ברירת המחדל יופיעו בסוף (כדי למנוע כפל משמעות ובעיות ריצה).
<?php function feeling($name,$mood="great"
/*
ארגומנט עם ערך ברירת מחדל. ארגומנטים עם ברירות מחדל יבואו תמיד בסוף רשימת הארגומנטים לפונקציה.
שלושת הפונקציות ידפיסו הודעת שגיאה אם הם נקראים מחוץ להגדרת פונקציה.
כעקרון, ב-PHP3 מספר הארגומנטים ששולחים לפונקציה לא יכול לחרוג ממספר הארגומנטים שהוגדרו לה, אך ב-PHP4 החריגה הזו מותרת, ובלבד שמספר הארגומנטים ששולחים לפונקציה לא יהיה מתחת למספר הארגומנטים בלי ברירת מחדל שהוגדרו לפונקציה (ב-PHP3 וגם ב-PHP4). ב-PHP3 ניתן לעשות "סימולציה" דומה למספר משתנה של ארגומנטים ע"י שליחת מערך של פרמטרים כארגומנט יחיד.
תגובות בנושא
שליחה לפונקציה
02-11-03 08:02 זיו
#1306
שלום רב,
ראשית לא ממש הבנתי למה ואיך משתמשים בשלושת הפונקציות בסעיף 4, למה בעצם צריך אותם...? ושנית - בכלליות - האם אני יכול לשלוח לפונקציה יותר משתנים ממה שהוגדרו לה? למשל - בדוגמא, האם הייתי יכול לקרוא לפונקציה:
feeling("Dana","Good","x"(
?
תגובה לשואל
03-12-07 12:01 גד תימור
#2755
תשובות:
1) הפוקציות כמו שכבר הוסבר נותנות אפשרות
לעבור על הארגומנטים שנישלחו
2) יש אפשרות להגדיר מראש!! לפוקציה שיש לה 3 ,4 או 5 משתנים ע"י הגדרת משתנים דיפולטים