1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [תחביר PHP] 2 00:00:02,400 --> 00:00:04,400 [טומי MacWilliam] [אוניברסיטת הרווארד] 3 00:00:04,400 --> 00:00:07,400 [זה CS50.] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> בסרטון הזה, אנחנו מציגים PHP - 5 00:00:10,080 --> 00:00:12,820 אחת השפות שאנחנו משתמשים בCS50 6 00:00:12,820 --> 00:00:15,480 כפי שאנו מעבר לפיתוח אינטרנט. 7 00:00:15,480 --> 00:00:19,250 PHP הוא קיצור של PHP Hypertext מעבד, 8 00:00:19,250 --> 00:00:23,440 או PHP Hypertext מעבד Hypertext מעבד, 9 00:00:23,440 --> 00:00:24,880 ואני אפסיק כאן. 10 00:00:24,880 --> 00:00:29,280 PHP היא ראשי תיבות רקורסיבית, שבו אני חושב שהוא באמת מדהים. 11 00:00:29,280 --> 00:00:32,020 >> אז, בואו נכתוב "שלום עולם" ב-PHP, 12 00:00:32,020 --> 00:00:37,240 שיהיה קצת שונה מאשר "שלום העולם" ב-C שאנחנו כבר למדנו להכיר ולאהוב. 13 00:00:37,240 --> 00:00:40,330 במקום ליצור קובץ בשם hello.c, 14 00:00:40,330 --> 00:00:42,990 ניצור hello.php. 15 00:00:42,990 --> 00:00:52,430 כל קוד PHP שלנו יהיה כלול בין . 16 00:00:52,430 --> 00:00:56,160 אם יש לנו כל קוד PHP שממוקם 17 00:00:56,160 --> 00:00:59,140 מחוץ למפרידים האלה, הוא לא יבצע. 18 00:00:59,140 --> 00:01:01,740 אנחנו יכולים להיות כמו רבים מלוקי PHP אלה 19 00:01:01,740 --> 00:01:05,090 כמו שאנחנו רוצים בתוך קובץ PHP אחד. 20 00:01:05,090 --> 00:01:09,000 ב-PHP אין צורך בפונקציה העיקרית. 21 00:01:09,000 --> 00:01:15,540 במקום זאת, קוד PHP שלנו ינוהל לפי הסדר שמופיע בקובץ PHP שלנו. 22 00:01:15,540 --> 00:01:20,970 גם C ו PHP יש פונקציה 'printf' לפלט נתונים. 23 00:01:20,970 --> 00:01:27,270 אבל ב-PHP, אנחנו לא צריכים # לכלול קבצי כותרת כמו כל standardIO.h. 24 00:01:27,270 --> 00:01:31,830 זה בגלל בPHP לא נהיה הידור הקוד שלנו. 25 00:01:31,830 --> 00:01:35,560 כשכתבנו קוד C העבודה שלנו נטתה להיפתח 26 00:01:35,560 --> 00:01:39,560 אחד או יותר. ג או. קבצי H, לשנות אותם, באיסופם, 27 00:01:39,560 --> 00:01:41,980 וכתוצאה מכך פועל בינארי. 28 00:01:41,980 --> 00:01:45,800 בדקו את וידאו קומפיילרים למידע נוסף על תהליך זה. 29 00:01:45,800 --> 00:01:51,480 >> שלא כמו C, PHP היא לפרש - שפה - ולא הידור. 30 00:01:51,480 --> 00:01:54,080 זה אומר שקוד PHP שאנחנו כותבים 31 00:01:54,080 --> 00:01:57,360 יהיה להפעיל באמצעות תכנית מיוחדת הנקראת מתורגמן, 32 00:01:57,360 --> 00:02:00,440 אשר בתורו לבצע הקוד שלנו. 33 00:02:00,440 --> 00:02:03,020 כדי להפעיל קוד PHP שלנו, 34 00:02:03,020 --> 00:02:07,860 אנחנו נשלח אותו יחד למתורגמן PHP אשר יטפל בביצועו, 35 00:02:07,860 --> 00:02:11,260 ולא להרכיב אותו לקוד מכונה. 36 00:02:11,260 --> 00:02:13,450 בואו לראות את המתורגמן בפעולה. 37 00:02:13,450 --> 00:02:17,010 אנחנו פותחים את הטרמינל והרצתי את פקודת PHP 38 00:02:17,010 --> 00:02:21,130 ואחריו הנתיב לקובץ PHP שהיינו רוצה לרוץ. 39 00:02:21,130 --> 00:02:25,690 אנחנו נגיד, "PHP hello.php '. 40 00:02:25,690 --> 00:02:30,200 ושם אנחנו הולכים. יש את הפלט של תכנית PHP שלנו. 41 00:02:30,200 --> 00:02:33,460 אנחנו לא צריכים לקמפל קובץ PHP שלנו בכלל. 42 00:02:33,460 --> 00:02:37,280 במקום זאת, הייתה לנו תכנית אחרת - מתורגמן PHP - 43 00:02:37,280 --> 00:02:40,070 לבצע sourcecode שאנחנו כתבנו. 44 00:02:40,070 --> 00:02:43,280 >> PHP יכול לעשות הרבה יותר מאשר פשוט printf. 45 00:02:43,280 --> 00:02:46,490 בואו לכתוב כמה תוכניות PHP מורכבות יותר. 46 00:02:46,490 --> 00:02:52,240 תחביר של מבנים - כמו אם, אחר, ואילו, ל, ומתג - 47 00:02:52,240 --> 00:02:55,440 הוא אותו ב-PHP ו-C 48 00:02:55,440 --> 00:03:01,180 בדיוק כמו C, כל אחד מהמושגים הללו משתמש בסוגריים מסולסלים לתחום את הגוף שלהם, 49 00:03:01,180 --> 00:03:04,420 ובדיוק כמו ב-C, כל שורה שאנחנו כותבים 50 00:03:04,420 --> 00:03:06,830 חייבים להסתיים בנקודת פסיק; 51 00:03:06,830 --> 00:03:10,700 עם זאת, משתני מטופלות קצת אחר ב-PHP. 52 00:03:10,700 --> 00:03:15,630 ראשית, כל המשתנים בPHP חייבים להתחיל בסימן הדולר. 53 00:03:15,630 --> 00:03:18,700 זה נראה קצת מוזר בהתחלה, אבל אתה מתרגל לזה. 54 00:03:18,700 --> 00:03:22,150 שנית, PHP היא שפה באופן רופף-מוקלדת 55 00:03:22,150 --> 00:03:24,570 מה שאומר שאתה לא צריך לרשום באופן מפורש 56 00:03:24,570 --> 00:03:27,640 הסוג של משתנה כאשר אתה יוצר אותו. 57 00:03:27,640 --> 00:03:33,430 איפה ב-C שהיית צריך לומר int x = 5; 58 00:03:33,430 --> 00:03:38,650 או char y = ""; 59 00:03:39,250 --> 00:03:44,790 ב-PHP שאנחנו יכולים פשוט להגיד x $ = 5; 60 00:03:44,790 --> 00:03:48,930 ו$ y = '";. 61 00:03:48,930 --> 00:03:52,360 אותו הדבר חל על פונקציות. 62 00:03:52,360 --> 00:04:01,290 במקום לומר F int () {הגוף של הפונקציה שלנו}, 63 00:04:01,290 --> 00:04:12,160 ב-PHP שאנחנו הולכים להגיד פונקצית f () {הגוף של הפונקציה שלנו}. 64 00:04:12,160 --> 00:04:17,579 אנחנו לא צריכים לציין את סוג ההחזרה של פונקצית f שלנו באופן מפורש. 65 00:04:17,579 --> 00:04:22,070 פונקציות ב-PHP גם לא צריכים להחזיר אותו הסוג 66 00:04:22,070 --> 00:04:23,840 בכל פעם שהן מבוצעות. 67 00:04:23,840 --> 00:04:27,940 לדוגמה, אנו יכולים לכתוב פונקציה שמחזירה כוזב על שגיאה 68 00:04:27,940 --> 00:04:29,750 וסוג אחר אם זה מצליח. 69 00:04:29,750 --> 00:04:33,060 >> זה יכול גם לעזור לנו לכתוב פונקציות גנריות יותר. 70 00:04:33,060 --> 00:04:35,710 לדוגמה, אנו יכולים לכתוב פונקצית תוספת יחידה 71 00:04:35,710 --> 00:04:39,200 שיכול להחזיר מספר שלם אם מקבלים 2 מספרים שלמים 72 00:04:39,200 --> 00:04:41,250 או לצוף אם 2 צף מקבלים. 73 00:04:41,250 --> 00:04:45,530 ב-C, היינו צריכים לכתוב 2 פונקציות נפרדות לעשות את זה. 74 00:04:45,530 --> 00:04:49,230 בעוד ב-C אנחנו משתמשים במצביעים להעלאה במשכורת ומחרוזות, 75 00:04:49,230 --> 00:04:52,170 אנחנו לא יהיו מסוגלים להשתמש במצביעים ב-PHP. 76 00:04:52,170 --> 00:04:58,030 במקום זאת, שני מערכים ומחרוזות הם מובנים בסוגים ב-PHP. 77 00:04:58,030 --> 00:04:59,660 הם נבנו ישר לתוך השפה. 78 00:04:59,660 --> 00:05:02,270 כדי ליצור מערך ב-PHP שאנחנו יכולים לומר, 79 00:05:02,270 --> 00:05:11,280 $ מערך = (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 או יותר פשוט $ = [1, 2, 3];. 81 00:05:19,400 --> 00:05:24,990 אנחנו יכולים מדד למערך זה תוך שימוש באותו התחביר שאנחנו רגילים אליו מג 82 00:05:24,990 --> 00:05:31,780 כדי לקבל את האלמנט הראשון שנגיד, $ [0];. 83 00:05:31,780 --> 00:05:36,290 PHP גם יש תמיכה מובנית עבור מערכים אסוציאטיביים. 84 00:05:36,290 --> 00:05:41,460 מערכים אסוציאטיביים הם בדיוק כמו מבנה נתונים שולחן החשיש כבר ראו - 85 00:05:41,460 --> 00:05:44,060 הם ימפו מפתח לערך. 86 00:05:44,060 --> 00:05:46,070 >> בואו נסתכל על דוגמה. 87 00:05:46,070 --> 00:06:14,740 אנחנו יכולים לומר, צוות $ = ["מדריך" => "דוד", "TF" => "טומי"];. 88 00:06:14,740 --> 00:06:21,020 הנה, יש לי מערך אסוציאטיבי עם 2 מפתחות - מדריך וTF. 89 00:06:21,020 --> 00:06:24,910 החץ כפול, או שווה, גדול מ, 90 00:06:24,910 --> 00:06:29,660 משמש כדי להפריד מפתח וערך המתאים לו. 91 00:06:29,660 --> 00:06:41,830 לכן, הערך של צוות $ ["TF"] הוא המחרוזת "טומי". 92 00:06:41,830 --> 00:06:44,430 את הערכים של מערך אסוציאטיבי - 93 00:06:44,430 --> 00:06:47,540 כמו כל מערך אחר - יכול להיות מכל סוג. 94 00:06:47,540 --> 00:07:23,370 לדוגמה, אנו יכולים לומר, צוות $ = ["מדריך" => "דוד", "TFS" => ["טומי", "לשדוד"]];. 95 00:07:23,370 --> 00:07:27,810 עכשיו את הערך של 'TFS' הוא מערך. 96 00:07:27,810 --> 00:07:33,030 זה אומר שהערכים בתוך מערך אסוציאטיבי אחד יכולים להיות מסוגים שונים. 97 00:07:33,030 --> 00:07:36,750 >> מערכי PHP גם לא צריכים אורך קבוע, 98 00:07:36,750 --> 00:07:40,200 כדי שנוכל להוסיף או להסיר רכיבים ממערך. 99 00:07:40,200 --> 00:07:49,130 בואו נגיד שיש לנו מערך פשוט כמו $ = [1, 2, 3];. 100 00:07:49,130 --> 00:07:51,860 כדי להוסיף אלמנט חדש למערך זה, 101 00:07:51,860 --> 00:07:57,160 אנחנו יכולים לומר, $ [] = 4;. 102 00:07:57,160 --> 00:08:03,630 עכשיו המערך שלנו מורכב מארבעה יסודות - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 נזכיר כי אם אנחנו רוצים לעשות משהו כזה ב-C, 104 00:08:06,980 --> 00:08:09,610 היינו צריכים להקצות מערך חדש לגמרי, 105 00:08:09,610 --> 00:08:12,400 להעתיק את התוכן של המערך הראשון שלנו לתוכו, 106 00:08:12,400 --> 00:08:15,870 ולאחר מכן להגדיר את הרכיב האחרון של המערך החדש לערך החדש שלנו. 107 00:08:15,870 --> 00:08:18,390 זה הרבה יותר קל ב-PHP. 108 00:08:18,390 --> 00:08:21,230 אם המערך שלנו הוא מערך אסוציאטיבי, 109 00:08:21,230 --> 00:08:24,810 אנחנו יכולים פשוט להגדיר את מפתח חדש כדי ליצור אלמנט 110 00:08:24,810 --> 00:08:26,250 אם זה עדיין לא קיים. 111 00:08:26,250 --> 00:08:30,010 אם יש לנו המערך שלנו מוקדם יותר - $ צוות - 112 00:08:30,010 --> 00:08:38,679 אנו יכולים לומר $ צוות ["סך הכל"] = 3;. 113 00:08:38,679 --> 00:08:43,330 עכשיו יש לנו מפתח חדש עם הערך של 3. 114 00:08:43,330 --> 00:08:46,460 >> כדי לקבל את מספר האלמנטים במערך, 115 00:08:46,460 --> 00:08:48,230 אנחנו יכולים להשתמש בפונקציה 'הספירה'. 116 00:08:48,230 --> 00:08:56,100 אם אנחנו אומרים, לספור ($);, כי יהיה לי ערך של 4. 117 00:08:56,100 --> 00:09:01,930 ב-PHP, אנחנו יכולים ליצור מחרוזות שימוש במרכאות כפולות או בודדים, 118 00:09:01,930 --> 00:09:04,470 כך גם במשתנים אלה הם מחרוזות. 119 00:09:04,470 --> 00:09:21,780 S1 $ = "מחרוזת"; $ s2 = 'מחרוזת אחרת ";. 120 00:09:21,780 --> 00:09:23,920 מה ההבדל בין שני אלה? 121 00:09:23,920 --> 00:09:26,950 ובכן, זה די נפוץ ברצונך לכלול 122 00:09:26,950 --> 00:09:29,600 ערך של משתנה בתוך של מחרוזת. 123 00:09:29,600 --> 00:09:34,390 דרך אחת לעשות זאת תהיה להשתמש מפעיל הנקודה של PHP, 124 00:09:34,390 --> 00:09:36,630 ששרשור מחרוזות. 125 00:09:36,630 --> 00:09:38,680 אנחנו יכולים לעשות משהו כזה - 126 00:09:38,680 --> 00:09:53,800 $ n = 5; $ S = n 'הוא' $ n.;. 127 00:09:53,800 --> 00:09:57,430 כאן משתנה n שלנו הוא מספר שלם. 128 00:09:57,430 --> 00:10:00,020 אבל כאשר אנחנו לשרשר אותו עם חוט, 129 00:10:00,020 --> 00:10:04,110 PHP באופן אוטומטי להמיר אותו למחרוזת עבורנו. 130 00:10:04,110 --> 00:10:09,090 או שאנחנו יכולים פשוט להשתמש במרכאות כפולות לשים את המשתנה למחרוזת עצמה. 131 00:10:09,090 --> 00:10:19,290 אנחנו יכולים לומר, של $ = "n הוא $ n";. 132 00:10:19,290 --> 00:10:24,040 עכשיו את הערך של $ s יהיה 'n הוא 5 ". 133 00:10:24,040 --> 00:10:34,250 אם אנו משתמשים במרכאות בודדות במקום, כמו ב$ s = 'n הוא n $'; 134 00:10:34,250 --> 00:10:39,670 הערך של S יהיה 'n הוא n $';. 135 00:10:39,670 --> 00:10:43,720 הערך של n לא יוחלף אם אנחנו משתמשים במרכאות בודדות, 136 00:10:43,720 --> 00:10:47,150 אבל זה יהיה אם אנו משתמשים במרכאות כפולות. 137 00:10:47,150 --> 00:10:51,800 אם אנחנו רוצים להשתמש במרכאות כפולות כדי לכלול את הערך של מערך במחרוזת, 138 00:10:51,800 --> 00:10:55,060 אנחנו נצטרך לכלול סוגריים מסולסלים סביב המערך, כמו זה - 139 00:10:55,060 --> 00:11:14,470 S $ = "{$ צוות ['סך הכל']}";. 140 00:11:14,470 --> 00:11:20,350 >> עכשיו בואו נסתכל על קטע קטן ב-C ולתרגם אותו ל-PHP. 141 00:11:20,350 --> 00:11:25,410 כאן, אנו יוצרים פונקציה שמדפיסה את האותיות של מחרוזת, 142 00:11:25,410 --> 00:11:27,310 תו אחד בכל שורה. 143 00:11:27,310 --> 00:11:32,250 בואו נעשה את אותו הדבר ב-PHP. 144 00:11:32,250 --> 00:11:36,530 ראשית, אנחנו נצטרך מפרידי PHP שלנו. 145 00:11:36,530 --> 00:11:39,000 כאשר אנו יוצרים הפונקציה שלנו, 146 00:11:39,000 --> 00:11:42,740 אנחנו לא צריכים לציין סוג החזרתה או הסוג של הטיעון שלו. 147 00:11:42,740 --> 00:11:46,890 המשתנה שלנו גם צריכה להתחיל עם סימן דולר. 148 00:11:46,890 --> 00:11:51,590 הפונקציה של PHP strlen נותנת לנו את אורכו של חוט, 149 00:11:51,590 --> 00:11:55,660 בדיוק כמו C strlen של נותן לנו את אורכו של חוט. 150 00:11:55,660 --> 00:11:59,060 מתחת למכסה המנוע אם כי, פונקציות אלה הן למעשה קצת שונות 151 00:11:59,060 --> 00:12:03,010 מאז מחרוזת היא סוג מובנה ב-PHP. 152 00:12:03,010 --> 00:12:06,930 התחביר שלנו 'עבור' לולאה הוא אותו הדבר. 153 00:12:06,930 --> 00:12:13,530 >> ב-PHP, אנחנו יכולים גם להשתמש בסימון מערך לגשת לתווים של מחרוזת. 154 00:12:13,530 --> 00:12:19,350 כעת אנו יכולים להשתמש בפונקצית ההדפסה כדי להדפיס את כל אות של המחרוזת. 155 00:12:19,350 --> 00:12:23,080 עם פונקצית ההדפסה של PHP, אנחנו לא צריכים לדאוג למצייני מיקום - 156 00:12:23,080 --> 00:12:28,200 כמו% ג ד או% - כאשר אנו רוצים להדפיס את משתנה שאינה מחרוזת. 157 00:12:28,200 --> 00:12:33,590 במקום זאת, אנחנו יכולים פשוט להעביר משתנים מסוג כלשהו לפונקצית ההדפסה, 158 00:12:33,590 --> 00:12:36,810 וזה יומר למחרוזת ומוצג. 159 00:12:36,810 --> 00:12:43,430 וזהו זה! בואו עכשיו להפעיל הקובץ שלנו עם 'PHP print.php'. 160 00:12:43,430 --> 00:12:48,160 ויש את הפלט שראינו מהתכנית C שלנו. 161 00:12:48,160 --> 00:12:52,120 >> PHP תומך גם במבנה שנקרא הלולאה "foreach '. 162 00:12:52,120 --> 00:12:54,800 הלולאה "foreach 'היא בדיוק כמו' עבור 'לולאה, 163 00:12:54,800 --> 00:12:59,080 אבל זה מוסיף קצת סוכר תחבירי לעשות דברים קריאים יותר. 164 00:12:59,080 --> 00:13:03,690 כאן, אנו יוצרים מערך חדש בשם '$ מערך'. 165 00:13:03,690 --> 00:13:10,090 עכשיו אנחנו יכולים לומר, foreach ($ מערך כ$ מספר), 166 00:13:10,090 --> 00:13:12,390 ואנחנו יכולים להדפיס את מספר $. 167 00:13:12,390 --> 00:13:20,650 כאשר אנו נתקלים בקובץ זה - PHP foreach.php-אנחנו יכולים לראות כל מספר בשורה הנפרדת. 168 00:13:20,650 --> 00:13:26,700 >> כשכתבנו קוד C, זה היה לעתים קרובות שימושי כדי לארגן את הקוד שלנו לקבצים נפרדים. 169 00:13:26,700 --> 00:13:29,170 ב-PHP, אנחנו יכולים לעשות את אותו הדבר. 170 00:13:29,170 --> 00:13:33,870 בואו נגיד שיש לנו כמה פונקציות בקובץ שנקרא math.php. 171 00:13:33,870 --> 00:13:38,900 אם אני רוצה להשתמש בפונקציות הללו בקובץ PHP אחר, כמו calculator.php, 172 00:13:38,900 --> 00:13:44,110 אני יכול להשתמש בrequire_once של PHP () function. 173 00:13:44,110 --> 00:13:47,110 Require_once הוא בדיוק כמו # כולל. 174 00:13:47,110 --> 00:13:52,050 כאשר ניתנו נתיב לקובץ, זה יהיה בעצם להעתיק ולהדביק את התוכן 175 00:13:52,050 --> 00:13:54,930 קובץ שלתוך הקובץ הנוכחי. 176 00:13:54,930 --> 00:14:00,150 Require_once מבטיח כי כל קובץ כלול בקובץ הנוכחי פעם אחת בלבד, 177 00:14:00,150 --> 00:14:05,680 אשר יכול להיות מועיל אם יש לך אוסף גדול של קבצי PHP הדורשים אחד את השני. 178 00:14:05,680 --> 00:14:07,750 בואו נסתכל על דוגמה. 179 00:14:07,750 --> 00:14:12,620 כאן יש לנו אוסף של פונקציות שאני רוצה להשתמש בקובץ אחר. 180 00:14:12,620 --> 00:14:14,990 בואו נסתכל על איך אנחנו יכולים להשתמש בם. 181 00:14:14,990 --> 00:14:20,700 בשורת 3, אנו דורשים math.php. 182 00:14:20,700 --> 00:14:27,170 "__DIR__ 'הוא קבוע מיוחד המייצג את הספרייה הנוכחית 183 00:14:27,170 --> 00:14:33,440 מאז math.php וcalculator.php נמצאים באותה הספרייה. 184 00:14:33,440 --> 00:14:38,010 אחרי שאנחנו דורשים math.php, אנו יכולים להשתמש בפונקציות 185 00:14:38,010 --> 00:14:41,690  כאילו אנחנו כבר הגדרנו אותם בcalculator.php. 186 00:14:41,690 --> 00:14:47,440 בואו נריץ את זה עם 'PHP calculator.php'. גדול! 187 00:14:47,440 --> 00:14:50,880 >> זהו זה למבוא שלנו לתחביר של PHP. 188 00:14:50,880 --> 00:14:53,700 כדי לברר פרטים נוספים, לבדוק את PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP יש הרבה פונקציות מוכללות, ולמרבה המזל התיעוד שלה הוא באמת גדול. 190 00:14:59,470 --> 00:15:02,680 השם שלי הוא טומי, וזה CS50. 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> סוגר ..., אני יוצא מחדר. לעזאזל! זהו הווידאו האחרון שבו אני משתמש במילים גדולות בקוד.