כותב |
|
_Ran_ משתמש פעיל
הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת הודעות: 80
|
נשלח בתאריך: 01 December 2007 בשעה 13:30 | | IP רשוּם
|
|
|
|
בע הregister עדיין לא עובד :\
אני לא רוצה לפתוח דיון חדש בשביל זה, אבל יש לי שאלה קטנה בPHP: הרבה פעמים,
רציתי רק להבין, מתי מופעל die - מה שהבנתי זה שכאשר הפעולה הראשונה נכשלת, זה נכון?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 01 December 2007 בשעה 13:54 | | IP רשוּם
|
|
|
|
יופי, תראה איך זה הגיע לנושא חדש (:
הפעולה or מבוצעת ב-php/perl באופן עצל, אם הביטוי השמאלי אמת אז מוחזר אמת,
רק אם לא אז נבדק הביטוי הימני.
נהוג שמתודות מסוימות יחזירו אמת או משהו שאינו שקר/null/0 אם הצליחו ומשהו
שכן שקר אם נכשלו.
ואז אם נכשלו תקרא die ותוצג שגיאה פתאלית ותסתיים הריצה של הדף, אם הצליחו
יוצב הערך המתאים במשתנה (במקרה שהבאת).
|
חזרה לתחילת העמוד |
|
|
_Ran_ משתמש פעיל
הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת הודעות: 80
|
נשלח בתאריך: 01 December 2007 בשעה 14:14 | | IP רשוּם
|
|
|
|
תודה רבה שושן :) היה לי בערך משהו כזה בראש, אבל זה היה קצת מבולגן... הסברת ממש טוב וסידרת לי את בראש, חחח קיצר הבנתי תודה ^^
|
חזרה לתחילת העמוד |
|
|
decimal משתמש פעיל
הצטרף / הצטרפה: 08 November 2007
משתמש: מנותק/ת הודעות: 118
|
נשלח בתאריך: 01 December 2007 בשעה 21:13 | | IP רשוּם
|
|
|
|
אז מה ההדבל בין זה ובין ELSE ?
|
חזרה לתחילת העמוד |
|
|
_Ran_ משתמש פעיל
הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת הודעות: 80
|
נשלח בתאריך: 01 December 2007 בשעה 22:27 | | IP רשוּם
|
|
|
|
לפי מה שהבנתי אין כל כך הבדל: זה שתי דרכים לכתוב משהו, פשוט כל דרך יותר נוחה לכתיבת דברים אחרים. למשל - אני רוצה לפתוח קובץ, ואם הקובץ לא קיים אז אני רוצה שתופיע הודעת שגיאהף אז הרבה יותר קצר ונוח להשתמש בor :
קוד:
$var=fopen("file.txt", "r") or die("error message here")
|
|
|
הייתי יכול באותה צורה לכתוב:
קוד:
if(!fopen("file.txt", "r")) die("error message here") else $var=fopen("file.txt", "r")
|
|
|
או שאפילו עוד יותר קצר:
קוד:
if(!$var=fopen("file.txt", "r")) die("error message here")
|
|
|
תקנו אותי אם אני טועה
|
חזרה לתחילת העמוד |
|
|
decimal משתמש פעיל
הצטרף / הצטרפה: 08 November 2007
משתמש: מנותק/ת הודעות: 118
|
נשלח בתאריך: 02 December 2007 בשעה 00:43 | | IP רשוּם
|
|
|
|
לא ממש מצאתי הגיון בזה , נדמה שאתה עושה פעולה פעמיים לא ?
|
חזרה לתחילת העמוד |
|
|
_Ran_ משתמש פעיל
הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת הודעות: 80
|
נשלח בתאריך: 02 December 2007 בשעה 01:36 | | IP רשוּם
|
|
|
|
מה זאת אומרת? יש כאן 3 דרכים לעשות את אותה פעולה. איפה אני עושה פעולה פעמיים? תסביר את עצמך לא הבנתי
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 02 December 2007 בשעה 01:55 | | IP רשוּם
|
|
|
|
_Ran_ כתב:
קוד:
if(!fopen("file.txt", "r")) die("error message here") else $var=fopen("file.txt", "r")
|
|
|
|
|
|
כאן.
|
חזרה לתחילת העמוד |
|
|
decimal משתמש פעיל
הצטרף / הצטרפה: 08 November 2007
משתמש: מנותק/ת הודעות: 118
|
נשלח בתאריך: 02 December 2007 בשעה 02:16 | | IP רשוּם
|
|
|
|
כן את מזמין את FOPEN פעמיים אולי מישהו יכול להגיד פשוא מתי משתמשים ב DIE , ומתי ב ELSE ומה ההבדל ביניהם ?
|
חזרה לתחילת העמוד |
|
|
_Ran_ משתמש פעיל
הצטרף / הצטרפה: 29 October 2007
משתמש: מנותק/ת הודעות: 80
|
נשלח בתאריך: 02 December 2007 בשעה 02:29 | | IP רשוּם
|
|
|
|
חחחח כן שם הכפלתי את עצמי, הדוגמא השלישית יותר נכונה אבל גם השנייה עובדת. בעיקרון, fopen מחזיר משאב (resource), ורק ברגע יצירת המשאב אפשר להציב לו משתנה שייצג את המשתנה ($var הוא הדרך היחידה לייצג את הקובץ ולעשות איתו פקודות אחרות כמו feof(), הוא Pointer לresource). בדרך השלישית אני ישר נותן pointer לקובץ שאני פותח, ובאותה הזדמנות מציב תנאי. בדרך השנייה שדיברתם עליה, שהיא פחות נכונה, אני קודם מציב את התנאי (אם הקובץ לא קיים יוחזר false והתנאי יתקיים - תוצג הודעת שגיאה והתוכנית תיפסק עקב die, אם הקובץ קיים התנאי לא מתקיים ואז אני בעצם מציב Pointer לresource כדי שאני אוכל לבצע עליו פעולות בעתיד (שזה בעצם סתם מסורבל אם אפשר לעשות את זה כמו בדרך השלישית, אבל אפילו עוד יותר קצר להשתמש בדרך הראשונה עם or).
decimal שושן הסביר יפה מאוד מה זה, ואני הסברתי מה ההבדל. כשכותבים:
קוד:
$var=fopen("file.txt", "r") or die("error message here")
|
|
|
בעצם קורה התהליך הבא: יש ניסיון לפתוח קובץ בשם file.txt עם הרשאת "r". אם הקובץ קיים ומוחזר ערך משאב (שזה בעצם כמו ערך true, העיקר שזה ערך שהוא לא false/0/null), אז במשתנה $var יוצב ערך המשאב, הוא יהווה מצביע (pointer) אליו, ובאמצעות $var נוכל לבצע כל מיני פעולות על הקובץ. אם הקובץ שניסינו לפתוח לא קיים, אז מוחזר ערך false , ואז ה or עובד והוא מבצע את הפקודה שכתובה אחרי or , שהיא die. פקודה זו מסיימת את התוכנית, ובסוגריים ניתן לכתוב את הודעת השגיאה.
די חזרתי על עצמי פה, מקווה שהבנת :)
והנה עריכה - עוד תוספת, כדי לענות לך על כל השאלות: משתמשים בor בדרך כלל עם die (ברוב המקרים), כשאתה רוצה לבצע פעולה מסויימת שאתה יודע שעלולה להיכשל, ואם היא נכשלת אתה רוצה לחתוך את ביצוע הקוד ולהציג הודעת שגיאה. כמו למשל: פתיחת קובץ, התחברות לבסיס נתונים וכו'. תסתכל בכל מיני אתרים ללימוד php איזה שימוש הם עושים בזה... ראיתי אינספור דוגמאות באתר php של ישראל, ובW3SCHOOLS. תסתכל שם ותבין
|
חזרה לתחילת העמוד |
|
|