-
@ליבל
המבנה של הפרוייקט שלי הוא:
קובץ Login מתחבר לשרת של ימות.
קובץ ראשי שמבצע את כל הפעולות, אך הוא מוגדר עם משתנים ללא ערכים כלומר: אין לן ערכים מוחלטים משל עצמו.
ואז הקבצים האחרים בעצם מבצעים קריאה ל Login, מתחברים, ולקבצים האלה יש ערכים למשנים שבקובץ הראשי, ואז הם מבצעים קריאה לקובץ הראשי שבעצם מקבל את הערכים למשנים שלו מהקבצים האחרים.
הסיבה שזה עובד כך זה משום שיש לי צורך לבצע את אותו הסקריפט עם שינויים שונים. (שכל שינוי אמור לפעול בזמן שונה).
כשאנ מבצע קריאה ל Login בעצם הוא תפוס לקובץ אחד ואז השני לא יכול לבצע קריאה.מקווה שהצלחתי להסביר..
-
@ass אמר בשגיאת Login.php כבר בשימוש:
קובץ ראשי שמבצע את כל הפעולות, אך הוא מוגדר עם משתנים ללא ערכים כלומר: אין לן ערכים מוחלטים משל עצמו.
יפה אבל אם כך השאלה איך הקובץ login עובד הגדרת אותו כפונקציה?
@ass אמר בשגיאת Login.php כבר בשימוש:
כשאנ מבצע קריאה ל Login בעצם הוא תפוס לקובץ אחד ואז השני לא יכול לבצע קריאה.
אתה יודע מה זה "תיכנות מונחה עצמים" ?
-
@ass אמר בשגיאת Login.php כבר בשימוש:
ואז הקבצים האחרים בעצם מבצעים קריאה ל Login,
אם אתה קורא לקובץ כדי להריץ את הקוד בתוכו שוב עם משתנים אחרים ב include זה לא נכון בשום צורה.
אתה.רוצה לעשות משהוא שירוץ כל פעם בצורה דומה - תכתוב פונקציה.
אפשר גם לכתוב class, אבל לא תמיד יש צורך. -
@שמואל4
כל מה שאני עושה את include זה בעיקר בגלל הקובץ הראשי שיש שם סקריפט מאוד ארוך,
מאחר והרבה דפים צריכים להשתמש באותו סקריפט אז אני מעדיף שיהיה קובץ אחד ראשי שכולם ישתמשו בו, ואם אני ירצה לשנות משהו בסקריפט הראשי אני יעשה את זה באחד ולא בכמה עשרות... -
@ass אמר בשגיאת Login.php כבר בשימוש:
@שמואל4
כל מה שאני עושה את include זה בעיקר בגלל הקובץ הראשי שיש שם סקריפט מאוד ארוך,
מאחר והרבה דפים צריכים להשתמש באותו סקריפט אז אני מעדיף שיהיה קובץ אחד ראשי שכולם ישתמשו בו, ואם אני ירצה לשנות משהו בסקריפט הראשי אני יעשה את זה באחד ולא בכמה עשרות...בשביל זה אתה תכניס את זה בפונקציה ותפנה אילה כל פעם, בשביל זה זה מיועד.
שכותבים פונקציה לוקחים את החלקים ה'משתנים' בפעולה ומשרשרים אותה לפונקציה.
למשל: פונקציה שמעלה קובץ tts למערכת תקבל כל פעם:
טוקן,
נתיב,
תוכן קובץ.ואז תקרא אילה כל פעם:
uploadTtsFileToYempt("hdbfirJdifvi", "ivr2:/1/943.tts", "Hello Api");
אז בא נראה איזה חלק אתה צריך להפוך לפונקציה:
מה הקובץ הראשי עושה? -
@ass אמר בשגיאת Login.php כבר בשימוש:
@שמואל4
נניח הקובץ PHP שבו הפונקציה נמצאת הוא A אם אני יקרא ל בקובץ B היא תעבוד?כן, במידה שיהיה include לקובץ A.
אבל עושים אותו בראש הקובץ B פעם אחת וזהו ולא בכל מקום שאתה רוצה לקרוא לה. אחרי שיש include לקובץ אתה פשוט קורא לפונקציה ולא שוב include -
@ass אמר בשגיאת Login.php כבר בשימוש:
@שמואל4
זה בדיוק הבעיה שלי!
כי אם נגיד שהפונקציה נמצאת בקובץ A ועכשיו גם קובץ B וגם C יבצעו include ואז קריאה, אם אני מריץ את B ו C ביחד אני יקבל את השגיאה ש A כבר בשימוש של B, וC לא יכול להשתשמש...א. אתה יכול להשתמש במקרה הזה עם מה שנכתב לעיל - אבל זה לא תקין.
ב. למה שיקרא דבר כזה? תן לי סיטואציה שבה יקרה דבר כזה.אם קובץ A הוא קובץ שמכיל פונקציות גלובליות בכל תהליך אתה עושה לו פעם אחת include. למה הפרוייקט כתוב בצורה שזה לא ככה? איך יקרה דבר כזה?
-
@שמואל4
בגלל שאם קובץ B אחראי להעלות תקייה מסויימת של קבצים לימות ביום א'.
וקובץ D אחראי להעלות ביום ב'.
אז אני מתזמן אותם כל קובץ לפי היום שלו.
אבל אם נגיד הייתה בשרת תקלה של חיבור לאינטרנט וכו' אז בסופ"ש אני מריץ קובץ שבעצם מריץ גם את B וגם את C. -
@ass אמר בשגיאת Login.php כבר בשימוש:
אז אני מתזמן אותם כל קובץ לפי היום שלו.
אוקי, אז בכל קובץ יהיה include אחד בודד לקובץ של הפונקציות.
@ass אמר בשגיאת Login.php כבר בשימוש:
אבל אם נגיד הייתה בשרת תקלה של חיבור לאינטרנט וכו' אז בסופ"ש אני מריץ קובץ שבעצם מריץ גם את B וגם את C.
אז מה יקרה?
אני מקווה שאתה מבין השגיאה בביצוע include שני היא שגיאה ברמת התהליך php הנוכחי, כלומר אם בו זמנית רצים 2 תהליכי php נפרדים שעושים include לאותו הקובץ אין שום בעיה, אבל אתה לא יכול באותו תהליך ריצה לעשות פעמיים include לאותו הקובץ.
-
@שמואל4
קובץ A נראה כך.include 'C:\wamp64\www\my_php/Login.php'; // הגדרת שלוחה בימות $path = "ivr2:4/1"; // הגדרת שם תקייה $Program_name = "שלום"; // פתיחת קובץ ראשי include 'C:\wamp64\www\my_php/main.php';
וקובץ B נראה כך:
include 'C:\wamp64\www\my_php/Login.php'; // הגדרת שלוחה בימות $path = "ivr2:4/2"; // הגדרת שם תקייה $Program_name = "עולם"; // פתיחת קובץ ראשי include 'C:\wamp64\www\my_php/main.php';
ואז אני מריץ כל אחד בשעה שלו.
אבל אם אני רוצה להריץ את שניהם, אז יש לי קובץ אחד בשם Master שהוא מריץ את שניהם בצורה כזו:include 'C:\wamp64\www\my_php/A.php'; include 'C:\wamp64\www\my_php/B.php';
ובכל זאת מתקבלת שגיאה