[Powered by Google Translate] [תחביר PHP] [טומי MacWilliam] [אוניברסיטת הרווארד] [זה CS50.] [CS50.TV] בסרטון הזה, אנחנו מציגים PHP - אחת השפות שאנחנו משתמשים בCS50 כפי שאנו מעבר לפיתוח אינטרנט. PHP הוא קיצור של PHP Hypertext מעבד, או PHP Hypertext מעבד Hypertext מעבד, ואני אפסיק כאן. PHP היא ראשי תיבות רקורסיבית, שבו אני חושב שהוא באמת מדהים. אז, בואו נכתוב "שלום עולם" ב-PHP, שיהיה קצת שונה מאשר "שלום העולם" ב-C שאנחנו כבר למדנו להכיר ולאהוב. במקום ליצור קובץ בשם hello.c, ניצור hello.php. כל קוד PHP שלנו יהיה כלול בין . אם יש לנו כל קוד PHP שממוקם מחוץ למפרידים האלה, הוא לא יבצע. אנחנו יכולים להיות כמו רבים מלוקי PHP אלה כמו שאנחנו רוצים בתוך קובץ PHP אחד. ב-PHP אין צורך בפונקציה העיקרית. במקום זאת, קוד PHP שלנו ינוהל לפי הסדר שמופיע בקובץ PHP שלנו. גם C ו PHP יש פונקציה 'printf' לפלט נתונים. אבל ב-PHP, אנחנו לא צריכים # לכלול קבצי כותרת כמו כל standardIO.h. זה בגלל בPHP לא נהיה הידור הקוד שלנו. כשכתבנו קוד C העבודה שלנו נטתה להיפתח אחד או יותר. ג או. קבצי H, לשנות אותם, באיסופם, וכתוצאה מכך פועל בינארי. בדקו את וידאו קומפיילרים למידע נוסף על תהליך זה. שלא כמו C, PHP היא לפרש - שפה - ולא הידור. זה אומר שקוד PHP שאנחנו כותבים יהיה להפעיל באמצעות תכנית מיוחדת הנקראת מתורגמן, אשר בתורו לבצע הקוד שלנו. כדי להפעיל קוד PHP שלנו, אנחנו נשלח אותו יחד למתורגמן PHP אשר יטפל בביצועו, ולא להרכיב אותו לקוד מכונה. בואו לראות את המתורגמן בפעולה. אנחנו פותחים את הטרמינל והרצתי את פקודת PHP ואחריו הנתיב לקובץ PHP שהיינו רוצה לרוץ. אנחנו נגיד, "PHP hello.php '. ושם אנחנו הולכים. יש את הפלט של תכנית PHP שלנו. אנחנו לא צריכים לקמפל קובץ PHP שלנו בכלל. במקום זאת, הייתה לנו תכנית אחרת - מתורגמן PHP - לבצע sourcecode שאנחנו כתבנו. PHP יכול לעשות הרבה יותר מאשר פשוט printf. בואו לכתוב כמה תוכניות PHP מורכבות יותר. תחביר של מבנים - כמו אם, אחר, ואילו, ל, ומתג - הוא אותו ב-PHP ו-C בדיוק כמו C, כל אחד מהמושגים הללו משתמש בסוגריים מסולסלים לתחום את הגוף שלהם, ובדיוק כמו ב-C, כל שורה שאנחנו כותבים חייבים להסתיים בנקודת פסיק; עם זאת, משתני מטופלות קצת אחר ב-PHP. ראשית, כל המשתנים בPHP חייבים להתחיל בסימן הדולר. זה נראה קצת מוזר בהתחלה, אבל אתה מתרגל לזה. שנית, PHP היא שפה באופן רופף-מוקלדת מה שאומר שאתה לא צריך לרשום באופן מפורש הסוג של משתנה כאשר אתה יוצר אותו. איפה ב-C שהיית צריך לומר int x = 5; או char y = ""; ב-PHP שאנחנו יכולים פשוט להגיד x $ = 5; ו$ y = '";. אותו הדבר חל על פונקציות. במקום לומר F int () {הגוף של הפונקציה שלנו}, ב-PHP שאנחנו הולכים להגיד פונקצית f () {הגוף של הפונקציה שלנו}. אנחנו לא צריכים לציין את סוג ההחזרה של פונקצית f שלנו באופן מפורש. פונקציות ב-PHP גם לא צריכים להחזיר אותו הסוג בכל פעם שהן מבוצעות. לדוגמה, אנו יכולים לכתוב פונקציה שמחזירה כוזב על שגיאה וסוג אחר אם זה מצליח. זה יכול גם לעזור לנו לכתוב פונקציות גנריות יותר. לדוגמה, אנו יכולים לכתוב פונקצית תוספת יחידה שיכול להחזיר מספר שלם אם מקבלים 2 מספרים שלמים או לצוף אם 2 צף מקבלים. ב-C, היינו צריכים לכתוב 2 פונקציות נפרדות לעשות את זה. בעוד ב-C אנחנו משתמשים במצביעים להעלאה במשכורת ומחרוזות, אנחנו לא יהיו מסוגלים להשתמש במצביעים ב-PHP. במקום זאת, שני מערכים ומחרוזות הם מובנים בסוגים ב-PHP. הם נבנו ישר לתוך השפה. כדי ליצור מערך ב-PHP שאנחנו יכולים לומר, $ מערך = (1, 2, 3); או יותר פשוט $ = [1, 2, 3];. אנחנו יכולים מדד למערך זה תוך שימוש באותו התחביר שאנחנו רגילים אליו מג כדי לקבל את האלמנט הראשון שנגיד, $ [0];. PHP גם יש תמיכה מובנית עבור מערכים אסוציאטיביים. מערכים אסוציאטיביים הם בדיוק כמו מבנה נתונים שולחן החשיש כבר ראו - הם ימפו מפתח לערך. בואו נסתכל על דוגמה. אנחנו יכולים לומר, צוות $ = ["מדריך" => "דוד", "TF" => "טומי"];. הנה, יש לי מערך אסוציאטיבי עם 2 מפתחות - מדריך וTF. החץ כפול, או שווה, גדול מ, משמש כדי להפריד מפתח וערך המתאים לו. לכן, הערך של צוות $ ["TF"] הוא המחרוזת "טומי". את הערכים של מערך אסוציאטיבי - כמו כל מערך אחר - יכול להיות מכל סוג. לדוגמה, אנו יכולים לומר, צוות $ = ["מדריך" => "דוד", "TFS" => ["טומי", "לשדוד"]];. עכשיו את הערך של 'TFS' הוא מערך. זה אומר שהערכים בתוך מערך אסוציאטיבי אחד יכולים להיות מסוגים שונים. מערכי PHP גם לא צריכים אורך קבוע, כדי שנוכל להוסיף או להסיר רכיבים ממערך. בואו נגיד שיש לנו מערך פשוט כמו $ = [1, 2, 3];. כדי להוסיף אלמנט חדש למערך זה, אנחנו יכולים לומר, $ [] = 4;. עכשיו המערך שלנו מורכב מארבעה יסודות - [1, 2, 3, 4]. נזכיר כי אם אנחנו רוצים לעשות משהו כזה ב-C, היינו צריכים להקצות מערך חדש לגמרי, להעתיק את התוכן של המערך הראשון שלנו לתוכו, ולאחר מכן להגדיר את הרכיב האחרון של המערך החדש לערך החדש שלנו. זה הרבה יותר קל ב-PHP. אם המערך שלנו הוא מערך אסוציאטיבי, אנחנו יכולים פשוט להגדיר את מפתח חדש כדי ליצור אלמנט אם זה עדיין לא קיים. אם יש לנו המערך שלנו מוקדם יותר - $ צוות - אנו יכולים לומר $ צוות ["סך הכל"] = 3;. עכשיו יש לנו מפתח חדש עם הערך של 3. כדי לקבל את מספר האלמנטים במערך, אנחנו יכולים להשתמש בפונקציה 'הספירה'. אם אנחנו אומרים, לספור ($);, כי יהיה לי ערך של 4. ב-PHP, אנחנו יכולים ליצור מחרוזות שימוש במרכאות כפולות או בודדים, כך גם במשתנים אלה הם מחרוזות. S1 $ = "מחרוזת"; $ s2 = 'מחרוזת אחרת ";. מה ההבדל בין שני אלה? ובכן, זה די נפוץ ברצונך לכלול ערך של משתנה בתוך של מחרוזת. דרך אחת לעשות זאת תהיה להשתמש מפעיל הנקודה של PHP, ששרשור מחרוזות. אנחנו יכולים לעשות משהו כזה - $ n = 5; $ S = n 'הוא' $ n.;. כאן משתנה n שלנו הוא מספר שלם. אבל כאשר אנחנו לשרשר אותו עם חוט, PHP באופן אוטומטי להמיר אותו למחרוזת עבורנו. או שאנחנו יכולים פשוט להשתמש במרכאות כפולות לשים את המשתנה למחרוזת עצמה. אנחנו יכולים לומר, של $ = "n הוא $ n";. עכשיו את הערך של $ s יהיה 'n הוא 5 ". אם אנו משתמשים במרכאות בודדות במקום, כמו ב$ s = 'n הוא n $'; הערך של S יהיה 'n הוא n $';. הערך של n לא יוחלף אם אנחנו משתמשים במרכאות בודדות, אבל זה יהיה אם אנו משתמשים במרכאות כפולות. אם אנחנו רוצים להשתמש במרכאות כפולות כדי לכלול את הערך של מערך במחרוזת, אנחנו נצטרך לכלול סוגריים מסולסלים סביב המערך, כמו זה - S $ = "{$ צוות ['סך הכל']}";. עכשיו בואו נסתכל על קטע קטן ב-C ולתרגם אותו ל-PHP. כאן, אנו יוצרים פונקציה שמדפיסה את האותיות של מחרוזת, תו אחד בכל שורה. בואו נעשה את אותו הדבר ב-PHP. ראשית, אנחנו נצטרך מפרידי PHP שלנו. כאשר אנו יוצרים הפונקציה שלנו, אנחנו לא צריכים לציין סוג החזרתה או הסוג של הטיעון שלו. המשתנה שלנו גם צריכה להתחיל עם סימן דולר. הפונקציה של PHP strlen נותנת לנו את אורכו של חוט, בדיוק כמו C strlen של נותן לנו את אורכו של חוט. מתחת למכסה המנוע אם כי, פונקציות אלה הן למעשה קצת שונות מאז מחרוזת היא סוג מובנה ב-PHP. התחביר שלנו 'עבור' לולאה הוא אותו הדבר. ב-PHP, אנחנו יכולים גם להשתמש בסימון מערך לגשת לתווים של מחרוזת. כעת אנו יכולים להשתמש בפונקצית ההדפסה כדי להדפיס את כל אות של המחרוזת. עם פונקצית ההדפסה של PHP, אנחנו לא צריכים לדאוג למצייני מיקום - כמו% ג ד או% - כאשר אנו רוצים להדפיס את משתנה שאינה מחרוזת. במקום זאת, אנחנו יכולים פשוט להעביר משתנים מסוג כלשהו לפונקצית ההדפסה, וזה יומר למחרוזת ומוצג. וזהו זה! בואו עכשיו להפעיל הקובץ שלנו עם 'PHP print.php'. ויש את הפלט שראינו מהתכנית C שלנו. PHP תומך גם במבנה שנקרא הלולאה "foreach '. הלולאה "foreach 'היא בדיוק כמו' עבור 'לולאה, אבל זה מוסיף קצת סוכר תחבירי לעשות דברים קריאים יותר. כאן, אנו יוצרים מערך חדש בשם '$ מערך'. עכשיו אנחנו יכולים לומר, foreach ($ מערך כ$ מספר), ואנחנו יכולים להדפיס את מספר $. כאשר אנו נתקלים בקובץ זה - PHP foreach.php-אנחנו יכולים לראות כל מספר בשורה הנפרדת. כשכתבנו קוד C, זה היה לעתים קרובות שימושי כדי לארגן את הקוד שלנו לקבצים נפרדים. ב-PHP, אנחנו יכולים לעשות את אותו הדבר. בואו נגיד שיש לנו כמה פונקציות בקובץ שנקרא math.php. אם אני רוצה להשתמש בפונקציות הללו בקובץ PHP אחר, כמו calculator.php, אני יכול להשתמש בrequire_once של PHP () function. Require_once הוא בדיוק כמו # כולל. כאשר ניתנו נתיב לקובץ, זה יהיה בעצם להעתיק ולהדביק את התוכן קובץ שלתוך הקובץ הנוכחי. Require_once מבטיח כי כל קובץ כלול בקובץ הנוכחי פעם אחת בלבד, אשר יכול להיות מועיל אם יש לך אוסף גדול של קבצי PHP הדורשים אחד את השני. בואו נסתכל על דוגמה. כאן יש לנו אוסף של פונקציות שאני רוצה להשתמש בקובץ אחר. בואו נסתכל על איך אנחנו יכולים להשתמש בם. בשורת 3, אנו דורשים math.php. "__DIR__ 'הוא קבוע מיוחד המייצג את הספרייה הנוכחית מאז math.php וcalculator.php נמצאים באותה הספרייה. אחרי שאנחנו דורשים math.php, אנו יכולים להשתמש בפונקציות  כאילו אנחנו כבר הגדרנו אותם בcalculator.php. בואו נריץ את זה עם 'PHP calculator.php'. גדול! זהו זה למבוא שלנו לתחביר של PHP. כדי לברר פרטים נוספים, לבדוק את PHP.net. PHP יש הרבה פונקציות מוכללות, ולמרבה המזל התיעוד שלה הוא באמת גדול. השם שלי הוא טומי, וזה CS50. [CS50.TV] סוגר ..., אני יוצא מחדר. לעזאזל! זהו הווידאו האחרון שבו אני משתמש במילים גדולות בקוד.