לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 08-08-2007, 12:30
  Xpein Xpein אינו מחובר  
 
חבר מתאריך: 21.01.06
הודעות: 813
מתחיל בphp - צריך עזרה בנושא הפונקציות

היי, התחלתי ללמוד php מספר ללימוד עצמי והגעתי לנושא של פונקציות.
הבנתי שאפשר לעשות פונקציה בעזרת ההצהרה function.
בספר נתנו דוגמה על פונקציה שעושה למשל BR
קוד PHP:
 function printBR($txt)
{
print (
"$txt<br>");



ואז לדוגמא שמשתמשים בפונקציה זה עושה אנטר.
קוד PHP:
 printBR ("Hello");
printBR ("hi"); 


לא הבנתי למה יש להשתמש במשתנה $txt, ולא להשאיר את הסוגריים ריקות,
במה המשתנה הזה תורם? למה אי אפשר להשתמש רק בprint <br> ואז זה ידפיס אנטר?


בכל מקרה עוד שאלה, לא הבנתי למה משתמש מה שעושים בסוגריים לדוגמא:
קוד PHP:
 function myname$name 

למה משתמש ה$name הזה ומה אפשר לעשות איתו? ראיתי בהצצה קטנה בהודעות בפורום הזה
שמשתמשים ביצירת פונקציות להרשמות, בסוגריים של פונקציה שמים את username , email
וכו', איך זה עוזר? לאיפה נשלחים הנתונים האלה ומה עושים איתם? האם זה שימושי? מה זה משנה אם יש משהו בתוך הסוגריים או אין?

ועוד שאלה קטנה D=
לפעמים בשורות עושים את הקוד n/ מה הפירוש של זה? האם צריך להשתמש בזה
או לא חובה?

אני חדש בנושא אז אני מבקש לדבר איתי כמה שיותר פשוט.
תודה מראש!
_____________________________________
--- ! Area Close ! ---

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 08-08-2007, 13:05
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 1 שנכתבה על ידי Xpein שמתחילה ב "מתחיל בphp - צריך עזרה בנושא הפונקציות"

יפה שאתה שואל כדי להבין, גם את הדברים הקטנים ביותר
דבר ראשון, בהצלחה בלימוד


עכשיו נתחיל לענות על שאלות,

ברשותך אני אתחיל מהשאלה השניה,

מהם המשתנים שמופיעים בסוגריים בfunction (פונקצייה) ?
דבר ראשון, לא ציינת "משתנים" אלא "הדברים בסוגריים", ולכן אני רוצה לקוות שאכן אתה מכיר משתנים ויודע איך לעבוד איתם
בקשר לשאלה,
אם לרשותך פונקצייה שאתה רוצה לקבל מידע ממקום אחר, ולהפוך אותו למשהו שונה/חדש,
אתה יכול להעזר במשתנים של הפונקצייה, ובכך להעביר את המידע הנחוץ ולהשתמש בו.

לדוגמא, אם אתה רוצה לקחת כתובת אימייל, ולהפוך אותה לפעילה, אתה יכול לקבל את הכתובת, ולשנות אותה.

קוד PHP:
 $email "name@domain.com"
$active_email "<a href='mailto:$email'>Send Email to $email</a>"

ולסיים כך !

אבל !
מה קורה אם יש לך נניח מערכת עם הרבה אימיילים בכל מיני איזורים שונים במערכת?
במקום להעתיק את הקוד הזה כמה פעמים (מעטות/רבות, לא משנה !),
אתה יוצר פונקצייה

קוד PHP:
 function make_active_email() { 
 



ובפונקצייה אתה רושם פעם אחת את מה שאתה רוצה לעשות

קוד PHP:
 function make_active_email() { 
echo 
"<a href='mailto:__'>Send Email to ___</a>";



(בכוונה שמתי קווים, כי כרגע זה רק מה שאנחנו רוצים לעשות).

וכעת, אחרי שהגדרנו מה אנחנו רוצים לעשות,
אנחנו צריכים משהו אחד (שיבוא ממקום אחר), להפוך לאחר.
אז אנחנו מגדירים לנו משתנה שיקבל את הנתונים ממקום אחר,

קוד PHP:
 function make_active_email($the_email) { 
echo 
"<a href='mailto:__'>Send Email to ___</a>";



ואז מה שצריך עוד זה רק לשלוח את הנתונים ולבצע את הפונקצייה,

קוד PHP:
 make_active_email(name@domain.com); 


וכעת הפונקצייה תקבל במשתנה $the_email את המידע שלנו name@domain.com,
ועכשיו נישאר לנו רק לבקש ממנו להפוך את זה,
אז נוסיף את שם המשתנה בתוך הפעולה של ההדפסה

קוד PHP:
 function make_active_email($the_email) { 
echo 
"<a href='mailto:$the_email'>Send Email to $the_email</a>";



וברגע שנקרא לפונקצייה
קוד PHP:
 make_active_email(name@domain.com); 

יודפס לנו הקישור:
קוד:
Send Email to name@domain.com


מה בעצם עשינו בכך?
במקום להעתיק 2 שורות לאלף מקומות,
יצרנו פונקצייה שקוראים לה בשורה אחת, עם הנתון שאנחנו רוצים,
והפונקצייה המלאה, עושה מה שצריך, ומחזירה לנו רק את מה שאנחנו רוצים,
בלי כל הדרך הארוכה (במקרה שלנו 2 שורות קוד) !


כעת אחרי שהבנו את זה, אפשר להמשיך לשאלה הראשונה,

למה השתמשו גם ב$txt ולא רק ב<BR> כדי לעבור שורה?
לפי דעתי רצו רק להבהיר מה פונקצייה עושה,
אחרת אפשר היה גם לעשות בלי פונקצייה
קוד:
echo "<BR>"

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


והשאלה האחרונה,
למה משמש \n?
\n מציין מעבר שורה בקוד מקור,
כך שבד"כ נוהגים לרשום אותו מיד אחרי <BR> ואז הוא מסדר את הקוד ומציג אותו לפי השורות,
יש מי שכותב אותו, ויש מי שלא.
(אחרים ירחיבו על זה יותר )


בהצלחה !
מקווה שעזרתי.
מתן.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 08-08-2007, 15:05
  Xpein Xpein אינו מחובר  
 
חבר מתאריך: 21.01.06
הודעות: 813
בתגובה להודעה מספר 1 שנכתבה על ידי Xpein שמתחילה ב "מתחיל בphp - צריך עזרה בנושא הפונקציות"

כתבתי תגובה עם תגובה על מה שאמרת ושאלות ובטעות עשיתי רענן=\ אני אנסה לשחזר את זה.

קודם כל תודה רבה!!!!!!!!!!!!!!!!!!!! על העזרה וההשקעה מזמנך לעזור לי.

בקשר לשאלה ראשונה, אני חושב שלא ממש הבנת למה שהתכוונתי,
מדוע יש להשתמש במשתנה $txt בסוגריים ולא מספיק את זה:
קוד PHP:
 function printBR()
{
print (
"<br>");



כדי שתצא אותה תוצאה, כי הרי לפי מה שהבנתי, הצבתי לפונקציה printBR
את print <br> וזה אמור להדפיס את אותה תוצאה לא? אז למה צריך את המשתנה $txt
אם בסופו של דבר אני לא משתמש בו (במקרה הזה).

בקשר לשאלה השנייה, אני חושב שהבנתי למה אתה מתכוון שזה "מקצר תהליכים". כל המשתנים שנמצאים בסוגריים מקבלים את הערך של הפונקציה, וככה חוסכים עבודה של העתקת הערך לכל משתנה בפני עצמו. אבל לפי מה שקראתי בספר, המשתנים שמשתמשים בהם בפונקציות "לא קיימים" מחוץ לפונקציות, ככה שאי אפשר להשתמש בהם? או שאני מתבלבל במשהו?

בקיצור תוכל להגיד לי איך זה מקצר, זאת אומרת הבנתי שכל המשתנים בסוגריים מקבלים בו זמנית ערך שנמצא בפונקציה, אבל הרי אי אפשר להשתמש בהם מחוץ לה? האמנם?

ושוב תודה רבה!
_____________________________________
--- ! Area Close ! ---

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 08-08-2007, 16:01
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 5 שנכתבה על ידי Xpein שמתחילה ב "כתבתי תגובה עם תגובה על מה..."

טוב,

עכשיו אפשר ללכת לפי הסדר

בקשר לשאלתך הראשונה,
כפי שציינתי למעלה, ספר הלימוד שלך הביא דוגמא קצת טיפשית לעניין הפונקציות,
כמו שאמרתי, ואתה גם חזרת על דבריי, אם תכתוב

קוד PHP:
 print "Text..Text.."
print 
"<BR>"


ואם תכתוב

קוד PHP:
 printBR("text...text..."


התוצאה תהיה דומה.

שוב, למה?
כי הדוגמא טיפשית, ולא רצינית.
פשוט תשכח אותה
(ובקשר, אם אפשר לרשום רק <BR> בתוך הפונקצייה עצמה בלי $txt, כן אתה יכול)

עכשיו נעבור לשאלתך השניה,
אתה צודק במה שציינת, שמשתנים שפעילים בפונקציות עצמן, לא פעילים מחוצה להן,
אך אם הספר שלך דיבר על זה כבר, הוא היה צריך לציין, שניתן להשתמש בglobal כדי להפוך את המשתנים לגלובאליים, ובreturn כדי להחזיר את הערכים.

לכן, אם תסתכל בהרבה מערכות,
אתה תראה ככה

קוד PHP:
 function any_function() { 
global 
$name;
 
return;



ברגע שאתה משתמש בglobal, אתה יכול לקבל את הערכים של המשתנים מהפונקצייה, גם מחוצה לה.

קצת קשה להסביר את זה בצורה כזאת בלי המחשה,
אבל ברגע שתגיע לנושא המתאים לספר, ויביאו הסברים, אתה תבין טוב יותר
(תחפש באיזור הפונקציות על global)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 08-08-2007, 16:39
  Xpein Xpein אינו מחובר  
 
חבר מתאריך: 21.01.06
הודעות: 813
בתגובה להודעה מספר 1 שנכתבה על ידי Xpein שמתחילה ב "מתחיל בphp - צריך עזרה בנושא הפונקציות"

כן אני בדיוק הגעתי לglobal וstatic =]
וכמובן שיש לי כמה שאלות=]

אז ככה:
למה static שימושית? לפי מה שהבנתי היא קובעת משתנה בתוך הפונקציה
שיהיה שם קבוע בתוך הפונקציה, אבל אפשר לקבוע משתנה בתוך הפונקציה שהיה קבוע בפונקציה
גם בלי static לא?

בקשר לglobal, הבנתי גם את הנושא הזה, השאלה שלי אם אפשר גם הפוך -
להשתמש במשתנה שנמצא בתוך הפונקציה, אל מחוצה לה, כי לפי מה שראיתי בחוברת
לא מצויין על זה אלה יש רק דוגמאות שמשתמשים במשתנה מבחוץ אל תוך הפונקציה.

בכל מקרה גם היה כתוב שם שרצוי להשתמש כמה שפחות בglobal כי היא לא "אלגנטית"
זאת אומרת כדי לגשת אל המשתנה שהכנסנו לפונקציה בglobal צריך למצוא אותו מבחוץ.

הייתה דוגמה של retrun אבל היא לא הייתה קשורה לglobal. לפי מה
שהבנתי מהretrun היא עוצרת את פעולת הפונקציה ומחזירה את הערכים שהשתנו חזרה
לסוגריים של הפונקציה.. זאת אומרת שאם עושים
קוד PHP:
 function something($a$b

ואז מחברים אותם באמצעות retrun
קוד PHP:
 retrun ($a $b); 

הארגומנטים בפונקציה משתנים לחיבור של a + b
איך עושים את אותו הדבר עם retrun על global?


ועוד שאלה קטנה בקשר לזאת שלמעלה=]
אם אני סתם מגדיר פונקציה ובתוכנה שני ארגומנטים
קוד PHP:
 function something($a$b

ואז אני מציב ערך
קוד PHP:
 something"hello"); 

הערך חל גם על $a וגם על $b או רק על $a ?


ושוב תודה!
_____________________________________
--- ! Area Close ! ---


נערך לאחרונה ע"י Xpein בתאריך 08-08-2007 בשעה 16:42.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 08-08-2007, 16:52
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 7 שנכתבה על ידי Xpein שמתחילה ב "כן אני בדיוק הגעתי לglobal..."

טוב,

הגענו לנושאי םקצת יותר מבלבלים :\
ואני כבר מודיע שאני בעצמי לא מכיר הכל ולכן אני אענה רק על חלק מהדברים.

נתחיל מהפשוט ביותר,

אם אתה מגדיר פונקציה עם 2 משתנים, וקורא לפונקצייה רק עם ערך 1,

קוד PHP:
 function name($a$b) { 
 
}
 
name("Matan"); 


הערך יוכנס למשתנים לפי הסדר, במקרה הזה, רק ל $a,
ולרוב תוצג גם הודעת שגיאה שלא מילאת את כל המשתנים הנחוצים לפונקצייה,
ואז תצטרך לעשות אחד מהדברים הבאים

קוד PHP:
 function name($a$b="Xpein") { 
 
}
 
name("Matan"); 

להגדיר ערך ברירת מחדל ל$b וכך, ניתן לתת ערך רק ל$a וכל עוד לא משנים את $b הוא יהיה Xpein

או:

קוד PHP:
 function name($a$b) { 
 
}
 
name("Matan","Xpein"); 

לתת ערך גם ל$b .

--
בקשר לstatic (אישית, אין לי מושג מה זה, אבל לפי ההסבר שלך ניראה לי הבנתי חחח),
זה מזכיר לי שאלה שעלתה לא מזמן,

למה להשתמש בdefine אם אפשר להשתמש במשתנה בלי לשנות אותו (אם אין לך מושג על מה אני מדבר, תתעלם !!)

והתשובה פשוטה,
לכל דבר יש יתרון/חיסרון על פני אחרים,
אתה לא רוצה להשתמש בstatic? אתה לא חייב,
אם אתה מכיר את המאפיינים שלו טוב, ויודע אם שווה לך להשתמש בו או לא אז תבחר
אם אתה חושב שזה סתם לזכור עוד משהו, אז אל תשתמש.
אם אתה רוצה לזכור את זה, במקום משהו אחר, אז תשתמש רק בו.
הכל זה לבחירתך כמתכנת


--

בנוגע לreturn
כפי שציינת, return מפסיקה את הפונקצייה (ואם רוצים, מחזירה ערכים על ידי כתיבת המשתנים),
אם שמים אותה בסוף הפונקצייה (כמו שהצגתי באחת התגובות), היא רק תסיים את הפונקציה (מה שהיה קורה ממילא),
בקשר להחזרת הערכים,
כידוע לי,
אתה רשאי לעשות גם כך

קוד PHP:
 function name() { 
global 
$matan;
..
..
..
return 
$matan;
}
 
name();
echo 
$matan

(אתה יכול גם לבדוק אם זה יעבוד)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 08-08-2007, 17:21
  Xpein Xpein אינו מחובר  
 
חבר מתאריך: 21.01.06
הודעות: 813
בתגובה להודעה מספר 8 שנכתבה על ידי MatiM שמתחילה ב "טוב, הגענו לנושאי םקצת יותר..."

אוקי בקשר לתשובה הראשונה שלך הבנתי לגבי הסדר, זה גם היה הניחוש שלי אבל זה שוב מעלה לי את השאלה, מה מקצר בזה? הריי צריך לכתוב ערך לכל משתנה שמגדירים בפונקציה..

בקשר לstatic, כן זה כמו define, להגדיר משתנה קבוע אבל בstatic זה שיהיה קבוע בתוך הפונקציה
והבנתי את התשובה, תודה.

בקשר להחזרת ערכים - לא כל כך הבנתי על מה אתה מדבר בקוד
קוד PHP:
 function name() { 
global 
$matan;
..
..
..
return 
$matan;
}
 
name();
echo 
$matan


מה שניסית להראות לי שהglobal יכול להביא משתנה מבחוץ לבפנים ולהדפיס אותו?
לפי מה שהבנתי, השתמשת ב- name(); כדי להפעיל את הפונקציה, ולהחזיר את הערך
$matan, אבל לא הבנתי מה זה עוזר אם עושים retrun למשתנים, זה מחזיר אותם לצורת המקור בה הם התחילו? או שזה מפסיק אותם בנקודה שאליה הגיעו (שבמקרה הזה נשאר אותו הדבר).

ושוב תודה!
_____________________________________
--- ! Area Close ! ---

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 08-08-2007, 18:09
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 9 שנכתבה על ידי Xpein שמתחילה ב "אוקי בקשר לתשובה הראשונה שלך..."

שוב שלום
חחחח

לגבי שאלתך הראשונה, על "איך שימוש בפונקצייה מקצר את התהליך",
אז זה שאתה שם ערכים, לא גורם לכך שזה יהיה ארוך יותר,

אני אשאל אותך 2 שאלות של מחשבה עצמית (סוג של ניסוי וטעייה - השיטה הטובה ביותר ללמוד),

1- אם אתה רוצה לתכנת מערכת, אבל לא מגדיר לה איך לפעול, האם היא תצליח לפעול?
2- נניח ואתה רוצה לעשות מספר פעולות זהות מוגדרות מראש, ולשנות רק איבר אחד מתוך כל הפעולות, ושהפעולות יתבצעו עם/בלי תיאום של האיבר הזה שמשתנה,
מה יהיה קצר יותר,
אפשרות ראשונה - לכתוב כל פעם מחדש את כל הפעולות, ולהתאים אותם כל פעם מחדש?
אפשרות שניה - לכתוב פעם אחת את כל מה שרוצים לעשות, ולבצע את אותה פעולה שוב ושוב ושוב?

עכשיו תשובות והסברים, (והקשר לנושא)

1- כל מערכת, דורשת בסיס, אתה לא יכול לכתוב start והמערכת תתחיל לעבוד, אתה צריך לתת לה את הבסיס שלפיה היא תעבוד.
אותו דבר הטענה שלך, אתה לא יכול לקרוא לפונקצייה, שלא יודעת מה לעשות.
בעצם יודעת, אבל אין לה מספיק נתונים לעשות מה שצריך.
(נניח מהדוגמאות, לקחת אימייל, ולשנות אותו לקישור פעיל -- אם אין אימייל, את מה תהפוכנה הפונקצייה?)

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

לסיכום,
הקיצור הוא בזה שאתה לא צריך לעשות דברים יותר מפעם אחת, על ידי שימוש בפונקצייה,
ובכך שאתה משנה את הדברים הבסיסיים ביותר, זה לא הופך משהו לתהליך ארוך ולא שווה לביצוע


---

עכשיו בקשר לreturn,
אני חושב שיהיה הכי טוב להשתמש בניסוי וטעייה, ולא רק בדיבור תיאורתי
תיצור קובץ php שבו:
פונקציה אחת, עם global וreturn
פונקצייה שניה, עם global בלי return
פונקצייה שלישית, בלי global עם return
ורביעית בלי אף אחת.

בכל הפונקציות תשנה את המשתנים,
ואז תדפיס את הפונקציות ותבדוק מה קורה
בשיטה הזאת אתה תדע מתי להשתמש בכל אפשרות (מה4 שאתה מנסה).

אתה צודק,
אין צורך תמיד להשתמש בglobal,
אם לדוגמא ישר מהפונקצייה אתה מדפיס משהו קבוע, בלי שהוא נזקק למשהו אחר,
לדוגמא:

קוד PHP:
 function do_br() { 
echo 
"<BR>";


(סתם דוגמא !)
הפונקצייה הזאת תפסיק !

לעיתים גם אין צורך בreturn אלא אם רוצים להפסיק את פעולת הפונקצייה באמצע הדברים,

וכו'

מהשאלות קצת קשה להסביר מתי לעשות מה,
צריך להביא דברים מעשיים, ואז עליהם לשאול את השאלות


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

ושוב בהצלחה

אני פתוח לעוד שאלות.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 08-08-2007, 19:45
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
בתגובה להודעה מספר 9 שנכתבה על ידי Xpein שמתחילה ב "אוקי בקשר לתשובה הראשונה שלך..."

השימוש ב- global, הוא לא אלגנטי, ורצוי להימנע ממנו כמה שיותר, משתמשים ב- global רק כשאין ברירה, ויש מקרים מעטים מאוד שבהם חייבים להשתמש ב- global (לא יצא לי להיתקל באחד).

ולגבי ה- return, אתה פשוט לא משתמש ב- return, בדוגמא הזאת:
קוד PHP:
 function name() { 
global 
$matan;
..
..
..
return 
$matan;
}
 
name();
echo 
$matan

אין צורך ב- global! אז מה נעשה במקום? נשתמש ב- return, ככה:
קוד PHP:
 function name() 

    return 
"A text..";
}
echo 
name(); 

הדוגמא הזאת תדפיס למסך את המחרוזת:
A text..

למה זה קורא? הפונקציה מחזירה את הערך A text(בגלל השימוש ב- return).. ובגלל שכתבנו echo לפני אז זה ידפיס את את הערך שהוחזר ע"י הפונקציה, באותה מידה, אתה יכול להחזיר את הערך לתוך משתנה, ככה:
קוד PHP:
 function name() 

    return 
"A text..";
}
$var=name(); 

והערך של המשתנה var יהיה- A text..
_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 08-08-2007, 21:37
  Xpein Xpein אינו מחובר  
 
חבר מתאריך: 21.01.06
הודעות: 813
בתגובה להודעה מספר 12 שנכתבה על ידי MatiM שמתחילה ב "אני לא מבין, מה הקטע של "לא..."

ציטוט:
במקור נכתב על ידי MatiM
אני לא מבין, מה הקטע של "לא אלגנטי"? יענו, לא יעיל?

כי קצת קשה לי להבין למה לא כדאי להשתמש בזה,

לדוגמא עשיתי require לקובץ נתונים עם פרטים למסד,

קוד PHP:
 $matan_db['user'] = 'name'
$matan_db['pass'] = 'pass' 


ואני רוצה בפונקצייה להשתמש בנתונים, נגיד כדי ליצור פונקציה שמתחברת למסד,

אני בסה"כ אעשה

קוד PHP:
 global $matan_db


ויהיו לי הנתונים,
מה לא אלגנטי פה? זה כולה מקבל את הערכים של המשתנה, אחרת לא תהיה דרך להעביר את הערכים לתוך הפונקצייה.



הכוונה "לא אלגנטי" שזה ציטוט מהחוברת, אומר שזה לא ממשק נוח זאת אומרת
אם יש לך פרוייקט גדול והשתמשת בglobal של משתנה שנמצא איפשהו בדף, כדי לשנות משהו
אתה צריך לגשת עד המשתנה ורק אז לשנות, בעזרת static אתה יכול לעשות את זה מיידי בתוך הפונקציה.
_____________________________________
--- ! Area Close ! ---

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 09-08-2007, 22:06
צלמית המשתמש של tnadav1
  משתמש זכר tnadav1 tnadav1 אינו מחובר  
 
חבר מתאריך: 02.10.05
הודעות: 2,355
שלח הודעה דרך MSN אל tnadav1
בתגובה להודעה מספר 12 שנכתבה על ידי MatiM שמתחילה ב "אני לא מבין, מה הקטע של "לא..."

אתה מסכים איתי שפונקציה טובה היא פונקציה שלא תלויה בשום דברים חיצונים?
יש לך פונקציה, אתה יכול עכשיו איפה שאתה רוצה להגדיר את הפונקציה, ולקרוא לה, בלי שטויות, פשוט קורא לפונקציה.

זה שהפונקציה תלויה בשום דבר חוץ מעצמה, חשוב בגלל שנניח שבנית פעם פונקציה ואתה רוצה להשתמש בה למשהו אחר, אתה יכול בקלות לקחת את הפונקציה, להדביק, ובום, הכל פועל.

כאשר אתה משתמש במשתנים גלובאלים, אתה בעצם נותן לך אפשרות לשחק אם דברים של הפונקציה, מבחוץ והפוך, שזה בסדר, חוץ מזה שזה נוגד את העיקרון שפונקציה טובה צריכה להיות לא תלויה בשום דבר, ולכן מומלץ להימנע להשתמש במשתנים גלובאלים, סה"כ רק יעשה לך כאב ראש.
_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 10-08-2007, 19:25
  משתמש זכר דָן דָן אינו מחובר  
 
חבר מתאריך: 29.03.07
הודעות: 316
שלח הודעה דרך MSN אל דָן
בדיוק.
בתגובה להודעה מספר 14 שנכתבה על ידי tnadav1 שמתחילה ב "אתה מסכים איתי שפונקציה טובה..."

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

ז"א, אמנם הפונקציות קשורות למשתנים חיצוניים, אך הפונקציות נמצאות המחלקה - יחד עם המשתנים - ובכך בעצם הפונקציות והמשתנים הנחוצים נודדים יחד.
מה שבסופו של דבר - מקנה את אותה הניידות שבפונקציה שאינה משתמשת במשתנים חיצוניים.

בנוסף ל'אלגנטיות', ישנו גם אלמנט בטיחות כשמדובר ב global. המלצה שלי (ולא רק שלי), כמה שיותר להמנע בלהשתמש במשתנים גלובאליים.
_____________________________________
בברכה,

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #18  
ישן 08-08-2007, 18:38
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 7 שנכתבה על ידי Xpein שמתחילה ב "כן אני בדיוק הגעתי לglobal..."

בעזרת static אתה שומר את הערך של המשתנה לאחר סיום ריצת הפונקציה.

כלומר שאם אתה קורא לפונקציה פעם ראשונה, וערך המשתנה הישתנה, אז כשתקרא לפונקציה פעם שניה, ערכו של המשתנה יהיה הערך שלו לאחר סיום ריצת הפונקציה הראשונה.


לדוגמא, אם יש לי את הפונקציה:

קוד PHP:
 function chng($y)
{
 static 
$x 0;
// ...
$x $x $y;



אז לאחר שאני כותב:

קוד PHP:
 chng(5); 


הערך של המשתנה $x בפונקציה יהיה 5.
ולאחר שאני כותב עוד הפעם את הפונקציה, אך מכניס בה ערך אחר בפרמטר:

קוד PHP:
 chng(3); 


אז הערך של $x בתוך הפונקציה יהיה 8, כיוון שהערך של המשתנה $x נישמר מריצת הפונקציה הראשונה.

לפרטים נוספים:
http://www.php.net/static

ד"א, חשוב שתבין שאם לא היית קובע את המשתנה $x כמשתנה סטטי, ערכו כל פעם היה מתאפס ל-0 בכל הריצות של הפונקציה.

בנוסף, זה תקין לכתוב:

קוד PHP:
 static $x 0

וגם:
קוד PHP:
 static $x


אבל זה לא תקין לכתוב:

קוד PHP:
 static $x $t

נערך לאחרונה ע"י DCD בתאריך 08-08-2007 בשעה 18:43.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #19  
ישן 11-08-2007, 20:34
  mikiller mikiller אינו מחובר  
 
חבר מתאריך: 24.05.07
הודעות: 1,602
אמממ אם הבנתי נכון מרפרוף
בתגובה להודעה מספר 1 שנכתבה על ידי Xpein שמתחילה ב "מתחיל בphp - צריך עזרה בנושא הפונקציות"

נכון שלפונקציה יש חשיבות רבה.
ניתן להשתמש בהם למערכות שונות ומשונות בלי קשר לקוד פשוט העתק הדבק וקריאה לפונקציה .
חשוב לציין ששימוש בפונקציות לדעתי לפחות זה רמה ממש ממש גבוה .
נכון שזה לא מסובך מידי אבל שאתה בונה קוד אתה לרוב לא חושב על זה .

גם קשה למצוא פונקציות שאתה אומר הייתי לוקח אותם לכמעט כל מערכת שאני יבנה ..
אני רוצה לשמוע אם למשהו יש פונקציה כזו שימושית כל כך ???

אני באמצע בנייה של של אינדקס אתרים בניתי כבר את המערכת חיפוש דירוגים הוספה למונה וכו'.
ולבנתים לא השתמשתי בפונקציה אחת אולי בעתיד שאני יסיים תמערכת ..
כדי לשדרג וליעל אותה אני ישתמש בפונקציות ..

אפשר לדעתי לעשות שרושור בפורם כה לא כל כך קשור לפונקציות/או כל מיני דברים מענים שאנחנו חברי הפורום והקהילה מכינים שנוכל לעזר בהם ולעזור לאנשים איתם ..
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #22  
ישן 13-08-2007, 16:59
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 21 שנכתבה על ידי mikiller שמתחילה ב "כן אתה צודק .."

איזו הרחבה?

אם אתה מתכוון פירוט מה אפשר לעשות,
אז,

אתה יכול נניח ליצור פונקציות לבדיקת הערכים שמוזנים בטופס, אם זה שדה לאימייל, לבדוק שהאימייל תקין

text@domain

ולוודא שהאימייל אכן פעיל..

הנה מדריך,

http://www.themador.org/view-page-pagenumber-135.htm

(כל הבדיקות והכל יהיו בפונקצייה, והפונקצייה תחזיר אם האימייל תקין או לא )

--

או.. פונקצייה קצת סתמית אבל פונקצייה שתוודא שאין תווים אסורים,
ואז (בהתאם למה שאתה רוצה), תסיר אותם,
או תשנה אותם לקודים שלהם &...;
וכדומה..

~~~~~~~~


ואם התכוונת לפירוט יותר של קודים וכו',
אז בהתחלה הבאתי לך קישור, שיש בו כמה מדריכים גם לאבטחת מידע,
http://www.themador.org/view-page-pagenumber-144.htm

וכו' וכו' וכו'
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 03:28

הדף נוצר ב 0.09 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר