אתה נמצא כאן יסודות השפה  >>  פונקציות  >>  ארגומנטים

ארגומנטים

1. שליחת ארגומנטים

שליחת ארגומנטים ב-PHP היא לרוב ע"י ערך (by value), כך שאם שולחים משתנה לפונקציה כארגומנט, אז ערכו של המשתנה לא ישתנה כתוצאה משינוי הארגומנט בתוך הפונקציה. לפונקציה ניתן לשלוח קבועים או משתנים, ואף לכתוב כארגומנט פונקציה אחרת שמחזירה ערך כלשהו.

<?php
  function func($arg)
  {
     $arg=-1;
  }
  
  $var=5;
  func($var);
/*קריאה לפונקציה עם הארגומנט $var.
הארגומנט עובר לפונקציה ע"י ערך (by value).
*/

  echo "\$var is $var";
?>

2. שליחת ארגומנטים ע"י ייחוס

אם רוצים ששינוי הארגומנטים בתוך הפונקציה תשפיע גם על המשתנים שנשלחו לפונקציה כארגומנטים, יש צורך להעביר את המשתנים ע"י ייחוס (by reference), וזאת עושים ע"י הוספת הסימן & לפני הארגומנט.

<?php
  function func(&$arg
/*הארגומנט יעבור לפונקציה ע"י ייחוס (by reference).
שינוי הארגומנט בפונקציה ישפיע על המשתנה שנשלח לפונקציה.
*/
)
  {
     $arg=-1;
  }
  
  $var=5;
  func($var);
  echo "\$var is $var";
?>

3. ערכי ברירת מחדל לארגומנטים

PHP תומכת בערכי ברירת מחדל לארגומנטים בצורה דומה לזו של C++ (למי שמכיר). ערך ברירת מחדל נותנים ע"י ציון הערך של הארגומנט בעזרת הסימן שווה. ערך ברירת מחדל חייב להיות סקלר (ולא יכול להיות משתנה אחר או מחלקה, למשל). בנוסף, יש לסדר את הארגומנטים כך שכל הארגומנטים עם ערכי ברירת המחדל יופיעו בסוף (כדי למנוע כפל משמעות ובעיות ריצה).

<?php
  function feeling($name,$mood="great"
/*ארגומנט עם ערך ברירת מחדל.
ארגומנטים עם ברירות מחדל יבואו תמיד
בסוף רשימת הארגומנטים לפונקציה.
*/
)
  {
     echo "$name feels $mood today.";
  }
  
  feeling("Ronna");
/*קריאה לפונקציה
ללא מתן ערך לארגומנט עם ברירת המחדל.
במקרה זה ערכו של הארגומנט יהיה
ערך ברירת המחדל שהוגדר לו.
*/

  feeling("Dan","BAD");
/*קריאה לפונקציה
עם מתן ערך לארגומנט עם ברירת המחדל.
במקרה זה ערכו של הארגומנט
ישוכתב לערך שנשלח.
*/

?>

4. מספר משתנה של ארגומנטים

PHP4 תומכת במספר משתנה של ארגומנטים, וכדי להשתמש בתכונה זו משתמשים ב-3 פונקציות עיקריות:
הפונקציה הערך המוחזר מהפונקציה
func_num_args() מספר הארגומנטים בפונקציה הנוכחית.
func_get_arg() הארגומנט במקום המסויים.
func_get_args() מערך של כל הארגומנטים.
שלושת הפונקציות ידפיסו הודעת שגיאה אם הם נקראים מחוץ להגדרת פונקציה.

כעקרון, ב-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 משתנים ע"י הגדרת משתנים דיפולטים

לא הבנתי 06-12-09 13:00
 אלכס נוסינוב
#2842

לא הבנתי מה עשית בסעיף 1
תוכל להסביר לי?
תודה


לדף הקודםהגדרת פונקציה -הקודם
לתחילת הדףלתחילת הדף
הבא- החזרת ערךלדף הבא