טווח
ההגדרה
של
משתנה
הוא
הקונטקסט
שבו
המשתנה
מוגדר
.
לכל
משתני
PHP
יש
טווח
הגדרה
אחד
בלבד
.
טווח
זה
כולל
גם
קבצים
מסופחים.לדוגמה
:
המשתנה
$a
יהיה
מוגדר
גם
בקובץ
המסופח
-
b.inc
.
לעומת
זאת
,
בפונקציה
שהוגדרה
על-ידי
המשתמש
קיים
טווח
הגדרה
לוקאלי
.
כל
משתנה
בתוך
הפונקציה
מוגדר
בטווח
הפונקציה
בלבד
כברירת
מחדל
.
לדוגמה
:
סקריפט
זה
לא
ידפיס
קלט
כי
פקודת
ה-echo
מתייחסת
לגרסה
הלוקאלית
של
המשתנה
$a
,
ומשתנה
זה
לא
קיבל
הצבה
בטווח
הגדרתו
.
ניתן
לראות
שהתנהגות
זו
שונה
במקצת
מהתנהגות
שפת
C
בכך
שמשתנים
גלובלים
בשפת
C
זמינים
אוטומטית
גם
בפונקציות
אלא
אם
נדרסו
על-ידי
הגדרה
לוקאלית
.
תתכן
בעיה
כאשר
תכנת
ינסה
ללא
הצלחה
יתרה
לשנות
את
ערכו
של
משתנה
גלובלי
מתוך
פונקציה
.
משתנה
גלובלי
ב-PHP
חייב
להיות
מוצהר
כמשתנה
גלובלי
אם
קיימת
כוונה
להשתמש
במשתנה
זה
מתוך
הפונקציה
.
דוגמה
:
הסקריפט
ידפיס
"
3
"
.
כאשר
המשתנים
$a
ו
-
$b
מוגדרים
כגלובלים
בפונקציה
,
כל
התייחסות
אליהם
תתיחס
לגרסה
הגלובלית
שלהם
.
אין
הגבלה
למספר
המשתנים
הגלובלים
שפונקציה
יכולה
לשנות
.
דרך
נוספת
לגשת
טווח
המשתנים
הגלובלים
היא
בעזרת
המערך
המוגדר
מראש
-
$GLOBALS
.
אפשר
לכתוב
את
הדוגמה
הקודמת
גם
בצורה
הזו
:
המערך
$GLOBALS
הוא
מערך
אסוציאטיבי
באופן
ששם
המשתנה
הגלובלי
הוא
המפתח
לערך
וערך
המשתנה
הגלובלי
הוא
הערך
של
תא
זה
במערך
.
תכונה
נוספת
שיש
לציין
את
חשיבותה
היא
המשתנה
ה
סטאטי
.
משתנה
סטאטי
קיים
רק
בטווח
לוקאלי
של
פונקציה
אך
אינו
מאבד
את
ערכו
לאחר
סיום
הרצת
הפונקציה
.
לדוגמה
:
פונקציה
זו
היא
חסרת
תועלת
לחלוטין
כי
בכל
קריאה
לפונקציה
,
מתאפס
ערכו
של
המשתנה
$a
והפונקציה
תדפיס
"
0
"
.
פעולת
ה
-
$a+
+
לא
משרתת
שום
מטרה
כי
לאחר
היציאה
מהפונקציה
,
המשתנה
$a
נעלם
.
כדי
לייצר
פונקצית
ספירה
שימושית
אסור
לנו
לאבד
את
הערך
הנוכחי
של
$a
ולכן
משתנה
זה
מוגדר
כמשתנה
סטאטי
:
עכשיו
,
בכל
קריאה
לפונקציה
Test
,
יודפס
ערכו
של
המשתנה
$a
ואחר-כך
יוגדל
ערכו
.
אפשר
להשתמש
במשתנה
סטאטי
גם
לצורך
טיפול
בפונקציות
רקורסיביות
.
פונקציה
רקורסיבית
היא
פונקציה
שקוראת
לעצמה
.
בכתיבת
פונקציות
רקורסיביות
יש
לשים
לב
בכתיבת
תנאי
הפסקה
מתאים
אחרת
יווצר
מצב
שהפונקציה
תרוץ
באופן
אינסופי
.
הפונקציה
הרקורסיבית
הבאה
פשוט
סופרת
עד
10
תוך
שימוש
במשתנה
סטאטי
-
$count
כדי
לדעת
מתי
לעצור
: