====== התחלת עבודה עם PHP ======
== ברק בלוך ==
^ היסטוריית גירסאות ^^^
^ גירסה 1.0 ^ 15-04-2007 ^ **כתריאל טראום** ^
| הומר לפורמט ויקי |||
^ גירסה 1.0 ^ 10-02-2003 ^ **ברק בלוך** ^
| גירסה ראשונה |||
==== זכויות יוצרים ורשיון ====
כל הזכויות שמורות (c) 2007, **ברק בלוך**, הרשות ניתנת להעתיק, לשנות ולהפיץ מדריך זה תחת התנאים של רשיון ה-GFDL \\
Linux הוא סימן מסחרי רשום של Linus Torvalds.
==== הסרת אחריות ====
הכותב אינו נושא באחריות עבור שימוש ברעיונות, דוגמאות ומידע שבמדריך. השימוש הוא באחריות הקורא בלבד. המדריך עשוי להחיל טעויות ופרטים לא נכונים, שהשימוש בהם עשוי להיות מזיק למחשבך. למרות הסבירות הנמוכה, הכותב אינו לוקח כל אחריות
==== מבוא ====
מדריך זה נועד לשמש כמבוא לשימוש ב PHP. לא נדרשת היכרות עם PHP, אך היכרות עם שפות סקריפט / תכנות אחרות, רצויה בהחלט. \\
כמו כן ידע סביר ב HTML היכרחי.
===== לפני הכל =====
=== מטרת המדריך ===
מדריך זה, ינסה לעזור לך, להכנס לעולם של PHP בקלות ובמהירות. \\
המדריך לא מתיימר להיות מדריך מעמיק לנושא של PHP אלא רק לשמש כמבוא, ולתת לך לטעום משפת סקריפט טובה זאת, כדי שתוכל להחליט במהירות האם שפה זאת רלוונטית עבורך. \\
המדריך יכסה בקצרה את מכלול הנושאים, כולל שלבי ההתקנה, כשביסומו אני מאמין שיהיו בידך ידע שימושי בהחלט ב PHP !
=== מה זה PHP ? ===
PHP היא שפת סקריפט. ר"ת של המונח PHP הם: PHP Hypertext Preprocessor \\
התחביר של PHP מבוסס על c / java / perl והוא קל מאוד לשימוש ולימוד. השפה היא שפה המשולבת בעמודי HTML (דומה מאוד ל ASP ו JSP) ולכן היא נוחה מאוד לשימוש בעמודי WEB ליצירת אתרי אינטרנט דינמיים. כשאנחנו אומרים ש PHP מתאימה לבניית עמודי אינטרנט דינמיים, אנחנו מתכוונים לכך שהשימוש ב PHP נעשה בצד השרת, כלומר בשרת המארח יש מערכת PHP) ובעזרת PHP אפשר להוסיף לעמודי ה HTML שלנו יכולות מגוונות, כגון:
* פניה והוספת תכנים היישר ממסד הנתונים
* בניית מערכת ניהול תוכן שלמה
* הוספת מונים
* הרצת יישומים על השרת בעזרת PHP ועוד דברים מגוונים רבים אחרים, כשהכל נעשה בצד השרת.
הלקוח מקבל את העמוד HTML אחרי ש PHP עיבדה אותו (לעיתים השרת ייצור בעזרת PHP גם תמונות, למשל גרפים, או עמודי PDF וכו', הכל בזמן אמת, לפי דרישת הלקוח ובצורה דינמית). \\
לסיכום: אתר אינטרנט רציני, בד"כ ידרש לשפה כלשהי שתעבד את העמודים עוד בצד השרת, כדי להתאים את התכנים בהתאם לגולש, ולאפשר לו אינטראקטיביות (השארת תגובות למשל), ובמקרים כאלה, PHP היא אפשרות מאוד מעניינת. עוד נציין כי ל PHP יכולות מעולות גם בתחום של שפת סקריפט ב SHELL (מונח שמוכר בעיקר לאנשי היוניקס שביננו).
אם נרצה להסביר את זה יותר לעומק, נאמר שיש ל PHP חיים גם מחוץ ל server וניתן להריץ באמצעותה סקריפטים שימושיים מאוד (להתקנת תוכנות, לקינפוג מערכות ולכל מטרה אחרת שדורשת סקריפט).
=== קניית / השגת PHP ===
PHP אינה עולה כסף ! \\
זה נראה מוזר לעיתים, שמוצר איכותי, שנמצא במיליוני מחשבים בעולם, ובשימוש חברות מסחריות מובילות, אינו עולה כסף. אבל PHP בדומה למוצרים אחרים שקשורים בקשר הדוק לעולם היוניקס (ובעיקר בעולם הלינוקס), זמינה בחינם, כולל קוד המקור (שזה בד"כ סוד שמור של חברות רבות בעולם הקוד הסגור).
כדי להבין את הסיבות לכך, יש להכנס לתחומים שהם מחוץ למסגרת מדריך זה, רק נאמר שבכללית מודל הקוד הפתוח מאפשר לתת ללקוח את החופש (לשנות ולצפות בקוד המקור) ולחברה המפתחת את היכולת לקבל פיתוח מהיר, כשאלפי עיניים בוחנות ומסייעות בשיפור הקוד, בעלויות נמוכות יחסית. כדי שפרוייקטים כמו PHP גם ישתלמו כלכלית, במקרים רבים במקביל אליהם, ישנם פרוייקטים מסחריים, כדוגמאת ZEND הישראלית, שהיא חברה מסחרית בבעלות של שני ישראלים אשר משמשים גם כמפתחים הראשיים של פרוייקט PHP. כדי לדעת יותר על תנאי הרשיון של PHP אפשר להכנס לכתובת http://php.net/license
כדי להשיג את PHP צריך להוריד את קוד המקור, או את החבילות הבינאריות (המוכנות לשימוש, צריך לבחור בחבילה המתאימה למערכת ההפעלה שברשותינו) מהאתר של PHP, הכתובת הישירה לעמוד ההורדות היא http://www.php.net/downloads.php
**זכור**: שימוש בקוד המקור ידרוש ממך קצת יותר עבודה, וכן דורש שיהיו ברשותך הכלים המתאימים (קומפיילר עם הספריות הדרושות להידור PHP) אבל יאפשר לך גמישות רבה יותר בשימוש. לעומת זאת שימוש בבינאריים המוכנים יאפשר לך להתקין את PHP בקלות רבה יותר, במהירות רבה. אנחנו ממליצים להשתמש במכונת יוניקס/לינוקס לשימוש ב PHP, שכן שפה זו נועדה במקור ליוניקס לסוגיו.
אם ברשותך מערכת לינוקס, בהפצות רבות (למשל [[http://www.red-hat.com|ראד האט]] / [[http://www.linux-mandrake.com|מנדריבה]] / סלאקוואר) יש חבילות מוכנות עם ההפצה לשימוש ב PHP כמודול בשרת ה WEB אפצ'י וכן לשימוש ב PHP כ "מפרש פקודות" עצמאי (שאינו תלוי בשרת זה או אחר).
=== מודול או כ CGI ? ===
PHP זמינה הן כמודול לשרת ואין כמפרש פקודות עצמאי. \\
במילים אחרות, אפשר להתקין את PHP כחלק מהשרת WEB (בתור מודול של השרת) או כמפרש פקודות עצמאי (למי שמכיר, אז השימוש דומה לשימוש בשפות סקריפט מסוגן של פייטון / פרל וכו'). השימוש כמודול בשרת ה WEB אמור להבטיח ביצועים טובים יותר, ואינטגרציה טובה עם שרת ה WEB. מצד שני יש מקרים שבהם רוצים להשתמש ב PHP כשפת SHELL רגילה, או שהשרת אינו תומך ב PHP, ובמקרים אלו ניתן להשתמש בה בצורה עצמאית, כלומר להפעיל אותה עצמאית. כשנרצה לפנות אליה בשרת, נפעיל את עמודי ה PHP כ cgi.
==== PHP מול המתחרים ===
נהוג להשוות בין PHP לבין ASP אבל למעשה יש עוד מספר אפשרויות, כגון JSP. \\
ל PHP מספר ייתרונות, למשל היותה חינמית וחופשית (קוד פתוח), מה שמבטיח את כל היתרונות של עולם הקוד הפתוח. כמו כן יתרון גדול נוסף של PHP היא היותה מערכת "Cross platform" או בעברית פשוטה, מערכת שרצה על מגוון נרחב של פלטפורמות (שרתי יוניקס, לינוקס, mac, חלונות על גרסאותיה וכו'). ייתרון זה הוא מהותי, שכן אם נשווה ל ASP שרץ בצורה טבעית רק על חלונות, נבין מה היתרון הגדול: אין מכריחים את המשתמש לעבוד עם פלטפורמה מסויימת.
אם נבנה אתר גדול ב ASP ומחר נרצה לעבור לפלטפורמת יוניקס, מסיבות כאלה ואחרות (עלות, אבטחה או סיבות אחרות), נהיה בבעיה, ומהעבר יהיה "כואב". לו בחרנו ב PHP אנחנו איננו כבולים לפלטפורמה זו או אחרת. עוד יתרונות שיש ל PHP היא הקהילה הגדולה והמגובשת, של המשתמשים, ואפשר למצוא בשפע אתרים בנושא, קודים של כל דבר שרק נרצה - מערכות פורום שלמות, מערכות שלמות לניהול פורטלים וכו', והכל בסוגי רישוי שונים, רק לבחור מה רוצים ולהמשיך הלאה.
כמובן שהיותה של PHP בקוד פתוח, מאפשר לנו, להתאים את קוד המקור לדרישתנו (במידה ויש לנו את הידע הטכני הדרוש, בתכנות בשפת C שהיא השפה בא כתובה PHP). כמובן שישנם גם חסרונות, אם למשל ברשותנו שרת IIS אז ה ASP כבר בפנים, לעומת זאת, את PHP נאלץ להתקין (לא מסובך מדי בכל מקרה...). ל JSP את היתרונות שלה (יש מבחנים שמדברים על ביצועים טובים יותר יחסית למתחרים), אלא שההתקנה והשימוש מסובכים יחסית (מדובר בשפת java אם זה לא ברור). כמו כן אסור לשכוח שבשוק עדיין נהוג להשתמש לעיתים ב CGI תוך שימוש בשפות סקריפט מהסוג של פרל, מדובר באפשרות סבירה, אך בעיות הביצועים של CGI בנוסף לסירבול היחסי, גורמים ל CGI אט אט להעלם מהשטח, ולפנות את מקומו למודולים שרצים בשרת, בדומה ל PHP שהם נוחות יותר לפיתוח ובעלות ביצועים טובים יותר.
=== התקנת PHP בלינוקס ===
ישנן מספר דרכים להתקין את PHP במערכת הלינוקס. הדרך הפשוטה והמהירה ביותר, ואשר קיימת בהפצות המיינסטרים, מסוגן של [[http://www.red-hat.com|ראד האט]] , היא שימוש ב rpm / חבילה בינארית מוכנה. בד"כ, PHP כבר מותקן במערכת. כדי לבדוק את זה, במערכת [[http://www.red-hat.com|ראד האט]] או [[http://www.linux-mandrake.com|מנדריבה]] ניתן להריץ:
[barak@localhost barak]$ rpm -qa | grep php
php-4.1.2-7
[barak@localhost barak]$
בדוגמא אצלי, php מותקן (ישנן עוד חבילות שניתן להתקין, כדי לספק תמיכה בדברים אחרים, שעליהם ידובר בהמשך המדריך). במידה ולא היה מותקן אצלי php הייתי רוצה לבדוק אם מותקן בכלל שרת ה web אפצ'י:
[barak@localhost barak]$ rpm -qa | grep apache
apache-1.3.23-14
[barak@localhost barak]$
כמובן שאצלי השרת מותקן. במידה ואצלכם המצב שונה, זה הזמן להכניס את דיסק ההתקנה, ולהתקין את php ואת apache, מה rpm. אחרי ההתקנה, כל מה שנותר זה להשתמש במערכת. ראשית, יש להפעיל את שרת ה web:
su -
service httpd start
בדוגמא הנחתי שאתם משתמשים במשתמש רגיל (ולא root) . נכנסים כ root ומפעילים את אפצ'י. יש אפשרות לגרום ל אפצ'י לעלות עם המערכת לאחר האיתחול (כשירות). אפשר לנסות את :
ntsysv
שוב, כמשתמש root, ולסמן שם את httpd. אחרי שהאפצ'י עובד, צריך להכניס את עמודי ה php לשרת ה web. בד"כ המסמכים יישבו תחת
/var/www/html
והסיומת שלהם תהיה php . משתמשי מערכת הג'נטו גנו/לינוקס יכולים להתקין את PHP באופן הבא:
emerge mod_php
אם זה לא ברור, המערכת תתקין את PHP כמודול של שרת ה WEB (אפצ'י) ותפתור תלויות במידת הצורך. אם בחרנו להתקין מקוד המקור, נצטרך לקמפל הן את האפצ'י והן את php ביחד. זו פעולה ארוכה והיא חורגת ממסגרת המדריך הזה. לעוד מידע, ניתן להציץ בקובץ INSTALL שבא עם קוד המקור של PHP.
כמו כן מידע על התקנה על שרתים שונים (במערכות הפעלה שונות, כולל לינוקס / יוניקס) אפשר לקבל בכתובת http://www.php.net/manual/en/installation.php
** הערה:** ברוב ההפצות מחלקים את php לכמה חבילות, כשישנן חבילות שנועדו לספק תמיכה בדברים מיוחדים, למשל תמיכה ב gd (ספריה גרפית ליצירת תמונות דינמיות, פיצ'ר מאוד מדליק אגב, בעזרת ה API הרלוונטי של php בנושא). כמו כן, לעיתים ה php מחולק לחבילה אחת של המודול וחבילה נפרדת להרצה של PHP כ"מפרש פקודות עצמי". היות ואנחנו רוצים להריץ את PHP דרך שרת ה WEB, הביצועים המייטבים הם בעזרת שימוש ב PHP כמודול של השרת, ולפיכך, נבחר בהתקנה של mod-php או איך שההפצה שלנו קוראת לחבילה של המודלים... (במקרים אחרים ישנה חבילה אחת בשם php שכוללת גם את המודול לשרת וגם את קובץ ההרצה העצמאי).
=== התקנת PHP בחלונות ===
"כבר שנים" שלא ייצא לי לבצע את התהליך הזה, אז רק אפנה אתכם למקורות רלוונטים: http://www.tldp.org/HOWTO/PHP-HOWTO-3.html#ss3.1 \\
וכמובן באתר הרשמי של PHP: http://www.php.net/manual/en/installation.php
אבל תעשו לעצמכם טובה, גלו את האור, עברו ללינוקס, החיים שלכם יהיו קלים בהרבה. אין מה לעשות לינוקס קלה ונוחה יותר לשימוש, לפחות כמשדובר בתחום של שרתים (בעיקר שרתי WEB)
==== שימוש ראשוני ב PHP ====
=== איך אני בודק שה php עובד ? ===
היות ומדריך זה מתמקד ב PHP כשפת תכנות לצד השרת (ולא כשפת SHELL) נבצע בדיקה בעזרת השרת ש PHP עובד כראוי. נבנה עמוד בשם test.php ובתוכו נכניס את הערכים הבאים:
את הקובץ, נשים בשרת, למשל ב apache במערכות לינוקס, זה בד"כ תחת: /var/www/html. \\
ניגש לעמוד בעזרת הדפדפן. מה שעמוד זה עושה הוא פלט על המסך של המון מידע על השרת, על גרסאת ה PHP וכו'... השורה המעניינת היא שורה מס' 2 : שבה רשום phpinfo() . לכל מי שתיכנת בעבר בשפות כמו c יזהה שמדובר בהפעלת פונקציה בשם phpinfo. פונקציה כהגדרה, היא קטע שקוד שמבצע מטלות כלשהן, כפי שמוגדר בגוף הפונקציה.
במקרה שלנו, ביצענו **קריאה ** לפונקציה בשם phpinfo. פונקציה זו, ** מוגדרת** (כלומר אופן פעולתה מוגדר) בתוך php עצמה (בקוד מקור של php כפונקציה שמוציאה על המסך פלט של נתונים רבים אודות השרת. אם על המסך נקבל פלט פשוט מהסוג:
phpinfo()
ברור שהשרת לא ידע לפנות לעמוד כעמוד php ויש לבדוק בהגדרות של השרת, שמוגדר לו לעבוד עם php בעמודים עם סיומת .php אם נקבל על המסך שגיאה מסוג 500 או הודעת שגיאה אחרת, יש לבדוק ש PHP הותקן כהלכה.
**הערה: ** למי שלא יודע לעבוד עם השרת - הכניסה לעמודים של השרת מתבצעת על ידי כניסה לכתובת של השרת (בד"כ IP של השרת כשעושים בדיקה במערכת בייתית ממוצעת). אם למשל שמנו את test.php בתקיית ה ServerRoot של האפצ'י, בד"כ כמו שאמרתי /var/www/html אז כדי לבדוק את הסקריפט, מהמחשב המקומי ניתן להקליד ב URL של הדפדפן:
127.0.0.1/test.php
ה IP שמספרו 127.0.0.1 מתאר את localhost או השרת המקומי בעברית פשוטה. אם עובדים עם מחשב אחר ברשת מקומית / או ברשת אחרת, פשוט להקליד את ה IP או הכתובת דומיין שמוקצאת לשרת.
** הערה 2:** אם רוצים לבדוק שהשרת עובד, רוב השרתים נותנים הודעה שמבשרת שהשרת עובד, בעמוד הראשי של המערכת, כלומר בתגובה לכניסה אל הדומיין / IP של השרת. לצורך העניין, אם נקליד בשורת URL של הדפדפדן:
127.0.0.1
מהמחשב המקומי שבו מריצים שרת WEB כלשהו, אנחנו אמורים לקבל את עמוד ברירת המחדל של השרת, בד"כ הודעה שאומרת שהמחשב מריץ שרת מסוג א', שהשרת הותקן בהצלחה, ואף הפניה לתיעוד של השרת... אם לא מקבלים את העמוד של השרת, יש לבדוק שהשרת מאזין לפורט 80 (בד"כ זה המצב הרצוי) ושהוא רץ (במערכות לינוקס, האפצ'י שולח לוגים אל syslog.d, ככה שאפשר להציץ שם אם יש בעיות).
=== התוכנית הראשונה השימושית שלי ===
במדריך זה נדלג על התוכנית המסורתית של "שלום עולם" ובמקום זה, בגלל ש php כל כך פשוטה, נבנה תוכנית קצרה וחביבה, שכל מטרתה, לסייע לנו להפוך עברית. אנחנו נשתמש בפונקציה hebrevc המובנית ב PHP למטרה זו, ונכתבה על ידי זאב סורסקי. פונקציה זו נועדה לאפשר לבנות עמודים בעברית ויזואלית בצורה דינמית נוחה. בתוכנית זאת לא נתעכב על כל הפרטים, התוכנית נועדה לתת לנו תחושה על "איך עובדים עם PHP" אם לא הבנת פרטים מסויימים, אין טעם להתייאש ! \\
התוכנית הדגמה שלנו תראה ככה::
// This is our first progrem: all we do is reverse the Hebrew
?>
Log-->Visual
$text=$_POST["text"];
echo hebrevc($text,20);
?>
הרץ את הדוגמא הנ"ל, ושחק מעט עם הפלט. עכשיו נסביר בקצרה מה קורה כאן (הדגש יהיה על צורת העבודה עם PHP כשפה משולבת HTML ולא הצורך להבין במדוייק את כלל התוכנית הקצרצרה הזו). ראשית, נסביר שה PHP בנויה כשפה משולבת ה HTML מה שאומר שאנחנו מכניסים קטעי PHP בתוך מסמך HTML רגיל. המודול של PHP יבצע עיבוד לקטעים שנמצאים בין ?> ויתעלם מהשאר, ולכן , כל מה שמחוץ לתגיות הנ"ל, יישלח לדפדפן כמו שהוא. במקרה שלנו, השורות הראשונות הן:
// This is our first progrem: all we do is reverse the Hebrew
?>
כלומר כבר בשורה הראשונה ה PHP מקבל הוראה לפרש את מה שכתוב, בשורה 2 ישנה הערה (בסגנון C++). המפרש של php מזהה שזו הערה על פי צמד התווים "//" שכשהם באים ברציפות מורים שהחל מהם ועד לסוף השורה, כל מה שיהיה זו הערה. הערה זהו קטע קוד שנועד לסייע למתכנת, או למישהו אחר שמציץ בקוד, להבין את הקוד, מעבר לזה אין לו שום משמעות, ומפרש הפקודות ממשיך הלאה בלי לעשות איתו כלום. שורה שלישית אומרת ל PHP להפסיק לפרש (ביינתים) את התוכן בהמשך. בשלב, זה מפרש הפקודות של PHP יתעלם מההמשך, אבל "יחכה" למפגש הבא עם , עד אז שרת ה WEB ישלח את תוכן ה HTML כמו שהוא, לדפדפן. הקטע הבא שמעניין אותנו הוא:
$text=$_POST["text"];
echo hebrevc($text,20);
?>
שוב, PHP מקבל את התגית שמורה לו לבדוק ולפרש את המשך התוכנית, שורה לאחר מכן אנחנו יוצרים משתנה בשם text$ שמקבל לתוכו את הערך של
$_POST["text"]
אנחנו לא נתעמק בשלב זה בהסבר רק נאמר שאנחנו למעשה מכניסים לתוך טקסט את הערך של משתנה מסוג post (זה סוג אחד מתוך שניים של משתנים שאפשר לקבל מתוך קלט של FORM (טופס HTML). שורה לאחר מכן אנחנו מציגים, בעזרת הפקודה echo את:
hebrevc($text,20)
מה שעשינו כאן זה השתמשתנו בפונקציה hebrevc כדי להפוך את הטקסט שהוכנס לתוך text$ . כמו כן, הפרמטר השני שהעברנו, 20, משמש אותנו כדי לשבור את השורות אחרי כל 20 אותיות. שבירת השורות היא א' ב' ב שימוש בעברית ויזואלית (אם לא נשבור את השורות, והם יישברו בגלל שנגמר המקום להצגתן בטבלה / בדפדפן, הם ייראה הפוכות). במקרה שלנו מדובר ב 20 תווים (במקרים רבים נותנים ערך גדול בהרבה). עוד שורה מעניינת היא השורה הבאה:
בשורה הנ"ל יש חלק של PHP ו 2 חלקים ב HTML רגיל. ראשית מדובר בהצגה על המסך של textarea שהוא למעשה שדה טקסט רגיל בhtml. כידוע לנו, מה שבא בין התגיות:
הוא הטקסט שיופיע בתוך התיבת טקסט. היות ולעיתים נרצה לשפר את התוכן של הטקסט, שכבר הפכנו, למשל להוסיף עוד אות או פחות אות (כדי למשל לבדוק את האיכות של hebrevc בהיפוך העברית) הוספנו את קטע ה php הבא:
קטע זה פשוט מציג את $text שערכו לא השתנה מאז שהוא קיבל את : $HTTP_POST_VARS["text"]. יש לשים לב גם ל:
name=text
זה אומר שהמשתנה שיועבר אחרי submit של הטופס, הוא משתנה ששמו text. אם היה שם הערך hebrew נניח, אז:
$text=$_POST["text"];
לא היה עושה את העבודה, והיינו צריכים לרשום במקום::
$text=$_POST["hebrew"];
זה כל ה php שיש בתוכנית הבסיסית הזאת. בפרק הבא נדון בהרחבה בנושאים כמו: "מהם משתנים ב php" וכו', לעת עתה חשוב שהבנו את העיקרון, ואת הפשטות של שפת PHP. שום דבר מסעיר מדיי בתוכנית זאת, אבל בהחלט נקודת מוצא טובה, להבין את השפה, ואת הפשטות שלה.
**הערה: ** אנחנו דנים בזה בהרחבה בהמשך, אבל מי שנבהל מהסימן ' $ ' אין מה להבהל. כל משתנה ב PHP מתחיל בתו הזה. מעבר לזה, אני בטוח שלא לכולם הכל ברור בשלב זה, זה בסדר, בהמשך הדברים יובהרו. התוכנית רק נועדה לתת קצת טעם של PHP !
==== תחביר משתנים ומה שמסביב ====
=== מה בפרק זה? ===
בפרק זה לא נדון בכתיבת תוכניות כלשהן בפועל, אלא רק בתחביר של השפה, והשימוש המעשי בו. \\ פרק זה אמור לתת את כל הכלים הדרושים על מנת להתחיל לתכנת לבד ככל העולה על רוחך בשפת PHP (תוך העזרות במדריך הרשמי, שבו יש רשימה מסודת של הפונקציות ב php ואיך משתמשים בהן, או בלשון העגה המקצועית, תיעוד של ה API של PHP). \\ \\ \\
=== התחביר הבסיסי של השפה ===
כמו שכבר הוסבר בפרק הקודם, השימוש ב - PHP מתבסס על השימוש בתגיות:
?>
כלומר כל מה שבין תגיות אלו, הוא PHP וכל מה שמחוצה להן, מועבר לדפדפן (לקוח) מבלי שמפרש הפקודות של PHP מתערב. במקרים מסויימים, נרצה שהתגיות של PHP יהיו תגיות סטייל ASP כלומר:
<% %>
במקרה כזה נאפשר את אופציה זאת ב php.ini. מה שצריך לעשות זה לשנות את השורה:
asp_tags = Off
ל:
asp_tags = on
הקובץ php.ini יושב בלינוקס בד"כ תחת הספריה etc/. אנחנו נחזור ונדבר קצת יותר על php.ini בהמשך המדריך.
חשוב להכיר מאפיין נוסף, שאפשר להתקל בו לעיתים בקוד מקור, והוא השימוש ב = להצגת מידע על המסך, למשל:
<;?=$text?>;
הדוגמא הנ"ל מבצע את אותה פעולה בדיוק כמו:
;
רק צורת הרישום בדוגמאות הנ"ל מעט שונה, למעשה זו דרך מקוצרת לרישום. כל אחד יכול לבחור בדרך שנוחה לו, לדעתי שימוש ב echo קריא ונעים יותר, אבל כל אחד כמובן מתכנת כמו שנוח לו.
=== משתנים ב PHP ===
כמו בשפות סקריפט רבות אחרות בעולם היוניקס, גם ב PHP שמות המשתנים מתחילות בתו '$'. משתנה הוא למעשה תו או רצף של תווים חוקיים (מה חוקי ומה לא בהמשך) שבאים בעקבות התו '$' ואשר מאכסנים בתוכם מספרים / תווים / מילים או כל תוכן אחר רצוי, כפי שנלמד בהמשך. \\
לא כל שם הינו חוקי, כשאפשר לאמר בכללי אצבע, שאין מגבלה (בפועל) של מספר התווים שירכיבו משתנה, זה יכול להיות משתנה בתו אחד, למשל: Z$ ועד עשרות תווים ויותר (אין טעם לתת שמות ארוכים מדי, מטעמי אסטטיקה של הקוד). המשתנה חייב להתחיל באות לועזית (קטנה או גדולה, זה לא משנה). כמו כן רק תווים לועזיים או מספרים יכולים להיות חלק מהתו (כל תו אחר, למשל אותיות עבריות, איו חוקי). ניתן דוגמאות למשתנים חוקיים:
$A $a $a23 $A2 $A3s $TEXT $Hebrew_text $Hebrw_Text_For_Reverse $hebrewText
אלו היו דוגמאות לשמות חוקיים, לעומת זאת השמות הבאים אינם מותרים:
$1 $44f $_44 $4.4 $.4 $.f $*4 $^4 $d $d* $@ $rרf $()
במדריך הרשמי של PHP הגדילו לעשות ונתנו את תבנית ה regular expression לתיאור התווים החוקיים (הנושא של "ביטויים רגולריים" חורג ממסגרת הדיון של מדריך זה). לאילו מאיתנו שיודעים את הנושא (ואני בטוח שיש מעטים כאלה בין הקוראים) הנה הסט:
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
לא משהו שחייבים להבין כמובן.ולהמשך ההסבר: לתוך המשתנים, אנחנו מאתחלים ערכים, למשל:
$Hebrew="טקסט כלשהו בעברית";
בדוגמא, הנ"ל הכנסנו לתוך המשתנה Hebrew$ את התוכן 'טקסט כלשהו בעברית". לו נרצה להציג אותו על המסך, נשתמש ב:
echo $Hebrew;
למשתנים ב php אין "טיפוס", ולא צריך להכריז עליהם. כל מי שבא מעולם c/c++ למשל, יודע שכדי ליצור משתנה כלשהו, לערכי מספר שלם חיובי למשל, יש צורך קודם להכריז על המשתנה:
int num;
היה מכריז על משתנה בשם num מסוג int (מספר שלם חיובי). \\
ב PHP אין צורך בזה. אנחנו יכולים להשתמש בכל משתנה שאנחנו רוצים, בלי להכריז עליו, ואף אין אנו צריכים להכריז על סוג המשתנה, המפרש פקודות "מנחש" בשבילנו מהו סוג המשתנה (לעיתים נוכל לקבוע ידנית סוגי משתנים, או לבצע cast (המרת סוג משתנה) ידנית, אבל זה קורה במקרים יחסית נדירים). כלומר, אם נרצה למשל משתנה מספרי, למניה של מספר כניסות לאתר, נוכל להשתמש במשתנה, כלשהו, נניח בשם $count בלי להכריז עליו כלל.
ברגע שנגדיל את ערכו ב 1 (לצורך העניין בגלל שמדובר במונה, אנו נדרשים להגדיל ב 1 עם כל כניסה חדשה), בעזרת ++count$ (צורת תחביר ידועה להגדלת ערך ב 1) php "תנחש" שמדובר במס', ותגדיל את ערכו ב 1. בהקשר של משתנים יש לציין את משתני הסביבה של המערכת. משתנים אלו הם משתנים ש php מגדירה, ובהם יש נתונים מעניינים שונים, כגון גרסאת php, גרסאת שרת וכו'. ניתן להפעילם כמו כל משתנה אחר, למשל:
$_SERVER["SERVER_PORT"];
יחזיר את הפורט של השרת. במקרה שלנו, אם נריץ בתוך עמוד php:
echo $_SERVER["SERVER_PORT"];
על המסך יוצג מס' הפורט של שרת ה web, במקרה שלי (וככה זה בד"כ) הפורט הוא פורט 80 וזה הערך שיהיה על המסך. בעבר היה נהוג להשתמש ב:
$HTTP_SERVER_VARS
כדי לקבל את ערכי משתנה הסביבה של השרת, אבל השימוש ב $_SERVER מסורבל פחות, ולכן אישית, אני מעדיף אותו. משתנים נוספים שעלינו להכיר הם משתנים מסוג GET ומשנים מסוג POST. משתני GET הם משתנים שמועברים על ידי ה url, כלומר שורת הכתובת בדפדפן. אם יש לנו עמוד בשם index.php בשרת המקומי שלנו, ונכנסנו אליו על ידי הקלדה ב url של:
http://127.0.0.1/index.php?var=barak&var2=bloch
העברנו שני משתנים, הראשון בשם var וערכו barak והשני בשם var2 וערכו bloch. בשיטה זו, אם זה לא ברור, אחרי שם הקובץ, יש לרשום את שם המשתנה וערכו, ובמקרה ויש עוד משתנה להעביר, מפרידים בין המשתנים בעזרת "&". כדי לגשת למשתנה מסוג get יש להשמש ב:
$some_var_name=$_GET["var"];
כשבמקרה שלנו, some_var_name$ קיבל את הערך של var שהוא barak. ישנו עוד סוג משתנה בשם POST שהוא נוצר, כמעט תמיד בעזרת טפסים של html. הגישה לסוג משתנה כזה היא על ידי:
$some_var_name=$_POST["var"];
טפסים יודעים להעביר הן משתנים מסוג POST והן משתנים מסוג GET. הסוג הנבחר נקבע על ידי התגית