מדריך PHP

מדריך PHP: קבועים ופונקצית date

‏ • Internet Israel

קבועים

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

<?php
define('SECRET_PASSWORD','mellon');

print SECRET_PASSWORD;

מה שיודפס על המסך כמובן הוא 'mellon'.

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

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

פונקציות תאריך ושעה

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

time

המחשב מודד את הזמן בשניות, זה גם הדבר הקל ביותר בשבילנו למדוד, כאשר אנו מדברים על זמן מחשב ב-PHP אנו מדברים על מספר השניות שעברו מ-1.1.1970 זמן שמצויין כ-epoch time, הזמן שבו הופעלה מערכת היוניקס הראשונה. את מספר השניות הזה אנו מקבלים באמצעות פונקציות time:

<?php
print time();

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

Number of seconds from PHP ecpoch time

(עכשיו תוכלו לדעת מתי הכנתי את המדריך! בדיוק 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');

מה יודפס? הדבר הבא:

date example in PHP

עכשיו אתם יודעים שהכנתי את המדריך הזה ביום ראשון.

אני לא חייב להסתפק רק באות אחת אלא יכול לשלב כמה אותיות ואפילו עם סימנים בינהן, כך למשל אשתמש באות d לייצוג יום, m לייצוג חודש ו-Y לייצוג שנה (4 ספרות). אני רוצה שיהיה סלאש (/) ביניהם:

<?php
print date('d/m/Y');

וזו התוצאה:

complex PHP date function example

עכשיו תוכלו לדעת מה התאריך המדויק שבו הכנתי את המדריך! הבעיה היא ששיחקתי עם התאריך של המחשב…

הרשימה המלאה של כל המשתנים שבהם אני יכול להשתמש נמצאת בדוקומנטציה של PHP על פונקצית date.

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

שימוש ב-timestamp

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

הדבר הקל ביותר לעשות הוא לקחת את ה-time, להפחית (או להוסיף) את מספר השניות ולהכניס את הכל כארגומנט השני בפונקצית date.

<?php
$time_stamp = time() + 7*24*60*60;
print date('d/m/Y', $time_stamp);

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

אני יכול להוסיף, להפחית ולהמשיך ולהתפרע.

תגיות: , , ,

רן בר-זיק

מתכנת PHP מנוסה ובעל ידע רב בפיתוח לאינטרנט על בסיס LAMP. מומחה במערכות דרופל, ג'ומלה ו-וורדפרס. שולט היטב בכל מה שקשור לפרונט אנד: JavaScript: jQuery ו-MooTools,ActionScript 2/3 וכמובן HTML 5 + CSS 3.אינטרנט ישראל: www.internet-israel.com

תגובות בפייסבוק