מדריך PHP: קבועים ופונקצית date
קבועים
עד כה אנחנו הכנסנו מידע למשתנים, אבל ניתן גם להשתמש בקבועים. הקבועים יכילו מידע שאמור לא להשתנות כלל ואסור לו להשתנות. משתמשים בהם בדרך כלל על מנת להמנע מ-Hard Code, כלומר מספרים או מחרוזות טקסט שמופיעות בתוך הקוד. אם אנו משתמשים בקבועים כדי לעשות את זה, הקוד שלנו יהיה מאד קריא וקל לשינויים. הנה דוגמא טובה לשימוש בקבועים:
<?php define('SECRET_PASSWORD','mellon'); print SECRET_PASSWORD;
מה שיודפס על המסך כמובן הוא 'mellon'.
בנוגע לשם הקבועים. למרות שלא חייבים, מקובל מאד (אבל מאד!) לכתוב את שם הקבוע באותיות גדולות. ברגע שהגדרנו את הקבוע, אפשר להשתמש בו בדיוק כמו משתנה, רק בלי ה-$. את הקבועים מקובל מאד (אבל מאד!) להגדיר בתחילת המסמך.
כפי שציינתי מקובל מאד להשתמש בקבועים בכל פעם שיש שימוש במחרוזות טקסט או במספרים על מנת שכל הנתונים האלו יהיו מרוכזים בתחילת הדף ויהיה קל ופשוט לשנות אותם.
פונקציות תאריך ושעה
לתאריכים יש חשיבות קריטים בכל שפת תכנות. אנו משתמשים בזמן על מנת למדוד פעילות, לבדוק מתי משתמש ביצע פעילות מסוימת, נכנס למערכת וכו'.
time
המחשב מודד את הזמן בשניות, זה גם הדבר הקל ביותר בשבילנו למדוד, כאשר אנו מדברים על זמן מחשב ב-PHP אנו מדברים על מספר השניות שעברו מ-1.1.1970 זמן שמצויין כ-epoch time, הזמן שבו הופעלה מערכת היוניקס הראשונה. את מספר השניות הזה אנו מקבלים באמצעות פונקציות time:
<?php print time();
הפונקציה הזו מדפיסה את כל השניות שעברו ברגע שהרצתי אותה מהראשון לינואר 1970. הנה דוגמא לפלט:
(עכשיו תוכלו לדעת מתי הכנתי את המדריך! בדיוק 1293392975 שניות מה-1.1.1970.
date
או קיי, זה יכול להיות שימושי, אם אנו עוסקים בתאריכי מחשב. אבל הרבה פעמים אנו עוסקים בתאריכים של בני אדם. בדיוק בשביל זה יש לי את פונקצית date. בפונקצית date אני צריך לפרט את הפורמט שאני רוצה, האם אני רוצה לקבל רק את היום? רק את השבוע? רק את החודש? קומבינציה?
זה נעשה באמצעות פונקצית date, פונקצית date מקבלת מחרוזת טקסט שבה יש ייצוג של התאריכים. D למשל מייצגת יום מקוצר (Sun,Mon,Tue וכך הלאה), j מייצגת את מספר היום (1-31), d מייצגת את מספר היום אבל עם 0 לפני מספרים יחידים (01-31), l מייצגת שם יום מלא (Sunday, Monday וכך הלאה). אם אני רוצה להדפיס איזה יום היום, אני יכול לכתוב את הדבר הזה:
<?php print date('D');
מה יודפס? הדבר הבא:
עכשיו אתם יודעים שהכנתי את המדריך הזה ביום ראשון.
אני לא חייב להסתפק רק באות אחת אלא יכול לשלב כמה אותיות ואפילו עם סימנים בינהן, כך למשל אשתמש באות d לייצוג יום, m לייצוג חודש ו-Y לייצוג שנה (4 ספרות). אני רוצה שיהיה סלאש (/) ביניהם:
<?php print date('d/m/Y');
וזו התוצאה:
עכשיו תוכלו לדעת מה התאריך המדויק שבו הכנתי את המדריך! הבעיה היא ששיחקתי עם התאריך של המחשב…
הרשימה המלאה של כל המשתנים שבהם אני יכול להשתמש נמצאת בדוקומנטציה של PHP על פונקצית date.
במידה ואני לא מספק ארגומנט, פונקצית date נותנת לי את התאריך של היום. אם אני רוצה תאריך אחר, אני צריך להוסיף timestamp כארגומנט השני של פונקצית date.
שימוש ב-timestamp
הכל טוב ויפה, אבל כל הדברים האלו נותנים לי את התאריך של היום, ואם אני רוצה את התאריך של לפני שבוע? או עוד חודש? מה אז?
הדבר הקל ביותר לעשות הוא לקחת את ה-time, להפחית (או להוסיף) את מספר השניות ולהכניס את הכל כארגומנט השני בפונקצית date.
<?php $time_stamp = time() + 7*24*60*60; print date('d/m/Y', $time_stamp);
מה עשיתי? לקחתי את התאריך של היום והוספתי לו שבעה ימים, כפול 24 שעות, כפול שישים דקות כפול שישים שניות – כלומר את מספר השניות של שבוע שלם. מה שאקבל זה את התאריך של היום בעוד שבוע בפורמט שקבענו.
אני יכול להוסיף, להפחית ולהמשיך ולהתפרע.
תגובות בפייסבוק