תחום ההגדרה של משתנה הוא טווח ההכרה של משתנה בתוך הבלוק בו הוא נמצא ובתת-בלוקים שלו. כמו טווח הגדרה של משתנים כן גם טווח הכרה של פונקציות (וקבצים שנכללו). ב-PHP, בשונה מ-C, משתנים גלובליים לא מוכרים בתוך הפונקציות כדי לא לשנות בטעות ערכים גלובליים. כדי להשתמש במשתנה גלובלי חיצוני בתוך פונקציה, יש להגדיר את המשתנה כמשתנה גלובלי שבא מחוץ לפונקציה בעזרת global, שמציין רשימה של משתנים שיהיו לקוחים מן המשתנים הגלובליים.
<?php $a=1; $b=2;
/*
משתנים גלובליים.
*/
function func() { global$b;
/*
מצהירים כי המשתנה $b יהיה לקוח מן המשתנים הגלובליים.
*/
$a=11;
/*
המשתנה $a לא הוגדר בפונקציה כמשתנה גלובלי, לכן הוא משתנה מקומי שטווח הכרתו היא בתוך הפונקציה בלבד, ושינוי ערכו בפונקציה לא ישפיע על ערכו של המשתנה הגלובלי $a.
*/
$b=22;
/*
המשתנה $b הוגדר בפונקציה כמשתנה גלובלי, לכן שינוי ערכו בפונקציה ישפיע על ערכו של המשתנה הגלובלי $b.
דרך נוספת לגשת למשתנים גלובליים הוא בעזרת המערך הגלובלי $GLOBALS (המערכים הגלובליים המוגדרים מראש שהוזכרו בדף הקודם נגישים בכל מקום שהוא, גם בתוך הפונקציות). באמצעות $GLOBALS, במקום להגדיר את המשתנים הגלובליים בפונקציה, נוכל לרשום $GLOBALS['var_name'] כדי לגשת למשתנה הגלובלי $var_name.
משתנה מקומי שמוגדר בתוך פונקציה נעלם לאחר שיוצאים מן הפונקציה, וקריאה נוספת לאותה הפונקציה תאתחל את המשתנה מחדש. אך אם בכל זאת נרצה לשמור על ערכו של המשתנה בכל יציאה מהפונקציה נצטרך להגדיר את המשתנה כסטטי - static.
<?php function Increase() { static$a=0;
/*
המשתנה $a מוגדר בפונקציה כמשתנה סטטי. בקריאה הראשונה לפונקציה ערכו יאותחל עם הערך 0, ובכל קריאה נוספת ערכו יישמר מהפעם האחרונה שהפונקציה נקראה.
nice shit
אני יודע ASP מעולה וזה הרבה יותר קל
ונוח פה הכל מסורבל בPHP
לא כל כך הבנתי תהסבר הראשון.
09-12-02 02:02 פיני
#400
הדבר הייד שהבנתי זה ש
שנתתה שני משתנים
a
b
ואת בי הגדרת כגלובלי.
מזה:
function func()
???
תגובה: function func()
09-12-02 02:02 אלי חן (מנהל)
#401
השורה הזו בעצם מגדירה פונקציה.. תראה את החלק של "פונקציות" בהמשך.
תחום גדרה של משתנים ותבניות
31-10-02 18:02 קידן אילני
#495
אם יש לי משתנה גלובלי שמוגדר בתבנית, אז אני מצליח להגיע אליו ולבדוק את הערך שלו בתוך דף התוכן, אבל אם אני משנה את ערך המשתנה, ועובר דף תוכן, אז בדף השני ערך המשתנה חוזר להיות מה שהוגדר בתבנית, ולא שומר על הערך ששיניתי, איך פותרים את זה, ובעצם איך מעבירים מידע מדף תוכן אחד לדף אחר
PHP
08-12-03 03:01 [ללא שם]
#1030
לASP יש מגבלות רבות, PHP היא שפה עם הרבה יותר אפשריות מASP, אתה חושב שPHP מסורבל בגלל שכנראה אתה יותר רגיל לASP אבל מי שרגיל PHP קל לו יותר לעבוד עם השפה
בקשר לדוגמא השנייה
02-11-03 08:01 זיו
#1304
קודם כל ממש אבל ממש כל הכבוד על האתר !!!
אני מתכנת ב ASP ואני חייב להגיד שהאתר הזה ממש עושה לי חיים קלים במעבר ל PHP, שוב - כל הכבוד !
בקשר לדוגמא השנייה, לא הבנתי למה בפעם השנייה a מחזיר 1, הרי גם בפעם השנייה אתה מזין 0 לתוך המשתנה, מה ההבדל בעצם אם אתה רושם static או לא, עדיין הזנת ערך לתוכו...
בקשר לדוגמא השניה
03-11-03 07:01 יונתן גורן
#1354
הפקודה static מגדירה את המשתנה רק בפעם הראשונה שקוראים לפונקציה, ואז מפסיקה להזין לו ערכים.
ואני גם חושב שהאתר מוצלח מאוד, אבל למי שאין רקע בתכנות לא יכול להבין ממש את הדוגמאות וההסברים...
שחכת גם
04-12-04 05:02 טל חדד
#1528
שהיא שומרת את הערך האחרון כשיוצאים מהפונקציה ומחזירה אותו בפעם הבאה שקוראים לפונקציה
פירגון!
01-11-05 23:02 רונן יריב
#2639
אלי, כל הכבוד לך ולכל מי שעוד אולי עסק במלאכה. לא האמנתי שהמעבר ל-php יהיה כזה פשוט. השיטה שבה חילקת את המדריכים לנושאים, ההסברים הפשוטים והלא מעייפים, הדוגמאות ובמיוחד שירשורי התגובות - הכל הכל מסודר בנוסחה מושלמת ממש! כל הכבוד!
ומה לעשות, ישראלי לא יודע לתת מחמאה בלי "אבל" - רציתי להציע שאת השרשורים תעצב בצורה קצת יותר מצומצמת, כלומר שכל כותרת תתפוס פחות מקום ויהיה אפשר לקרוא יותר הודעות במסך (כלומר פחות גלילות).
ולסיום מתוק - שוב ,תודה ו- כ ל ה כ ב ו ד !!!
איך...
07-12-06 20:00 ניר וקנין
#2699
איך אני עושה משתנה שתופס באפילו אם אני יחליף
דף... session? ומה אם אני רוצה משתנה שהוא לא רק
עובר בין דפים אל גם בין משתמשים למשל סופר משתמשים
כל אדם שנכנס מוסיף אחד למשנה כל שהוא כך שמשתנה אחד
הוא בעצם תופס לכל המשתמשים איך עושים את זה?