1 00:00:00,000 --> 00:00:02,150 >> [סמינר] [קוהנה: קל משקל PHP Framework] 2 00:00:02,150 --> 00:00:04,000 [ברנדון ליו] [אוניברסיטת הרווארד] 3 00:00:04,000 --> 00:00:07,270 [זה CS50.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> שלום לכולם. השם שלי הוא ברנדון. 5 00:00:09,130 --> 00:00:11,000 אני זוטר כאן במדעי מחשב במכללה עושה, והיום אנחנו הולכים לדבר על 6 00:00:11,000 --> 00:00:14,460 קוהנה, שהוא במסגרת פיתוח PHP אינטרנט. 7 00:00:14,460 --> 00:00:17,260 היום הולך להיות סמינר קידוד חי, 8 00:00:17,260 --> 00:00:21,000 אז אני בעצם הולך לבלות 5-10 דקות להסביר מה היא קוהנה, 9 00:00:21,000 --> 00:00:25,000 ואז אני ממש הולך לבנות בלוג פשוט סופר 10 00:00:25,000 --> 00:00:28,570 בשבילך ממש כאן ממש מהתחלה. 11 00:00:28,570 --> 00:00:32,229 אנחנו הולכים להוריד את הקוד מאתר קוהנה, 12 00:00:32,229 --> 00:00:35,000 ואנחנו הולכים להתחיל בבניית בלוג, ואני מקווה שזה אהיה מאוד מאלפת, 13 00:00:35,000 --> 00:00:37,000 בגלל שאתה תראה אולי אולי אני לעשות כמה טעויות, 14 00:00:37,000 --> 00:00:39,000 ותראה לי להתאושש מהם, 15 00:00:39,000 --> 00:00:42,040 או שאתה תראה את תהליך המחשבה שלי כפי שאני לבנות באמצעות הבלוג הזה, 16 00:00:42,040 --> 00:00:44,000 ובינתיים, תוכל גם להכיר את המסגרת עצמה. 17 00:00:44,000 --> 00:00:48,000 אני מקווה שזה אהיה תרגיל מאוד מאלף. 18 00:00:48,000 --> 00:00:51,370 >> ראשית, מה בדיוק היא מסגרת? 19 00:00:51,370 --> 00:00:54,000 אם אתה כבר לוקח CS50 עד כה, שלא באמת עבד עם כל 20 00:00:54,000 --> 00:00:56,000 מסגרות עדיין, והדבר הוא זה. 21 00:00:56,000 --> 00:01:00,000 אתה כנראה עשית pset התפתחות האינטרנט 1 כבר, 22 00:01:00,000 --> 00:01:03,000 ונניח שאתה ממשיך לבנות אתרי אינטרנט ולשמור על אתרי בנייה. 23 00:01:03,000 --> 00:01:05,000 אתה מתחיל לשים לב לכמה דברים. 24 00:01:05,000 --> 00:01:07,000 הדבר הראשון שתבחין הוא שאתה כנראה עושה את אותם דברים 25 00:01:07,000 --> 00:01:09,150 שוב ושוב כל הזמן, 26 00:01:09,150 --> 00:01:13,000 דברים כמו ניקוי נתוני קלט משתמש, 27 00:01:13,000 --> 00:01:17,250 דברים כמו ארגון הקבצים שלך בצורה מסוימת. 28 00:01:17,250 --> 00:01:19,000 הדבר השני שאתה גם בטח שם הלב הוא שהקוד שלך 29 00:01:19,000 --> 00:01:21,000 אולי מתחיל להיות מאוד מאוד מבולגן, 30 00:01:21,000 --> 00:01:24,000 ואתה יכול להשאיר אותו מבולגן ופשוט יש לי קשה מאוד לשמור עליו, 31 00:01:24,000 --> 00:01:26,000 או שאתה יכול להתחיל לבנות את הקוד שלך ולהפוך אותו מודולרי 32 00:01:26,000 --> 00:01:28,510 בדרכים מסוימות כדי לעשות את זה יותר לתחזוקה. 33 00:01:28,510 --> 00:01:31,020 >> זה מקום שבי מסגרות אינטרנט הגיעו בעצם פנימה 34 00:01:31,020 --> 00:01:33,680 אנשים אלה שבנו הרבה אתרי אינטרנט, הם אמרו, 35 00:01:33,680 --> 00:01:35,820 "אנחנו לא צריכים לעשות שוב את זה בכל פעם שאנו בונים אתר אינטרנט." 36 00:01:35,820 --> 00:01:39,050 "למה שלא פשוט לעשות את חבילה שעושה את כל הדברים האלה בשבילך 37 00:01:39,050 --> 00:01:41,250 כל פעם שאתה רוצה לבנות אתר? " 38 00:01:41,250 --> 00:01:43,030 וכך שכאשר אתה להפוך את אתר אינטרנט חדש, 39 00:01:43,030 --> 00:01:45,880 אתה פשוט להתמקד במה הוא בדיוק האתר המסוים הזה עליו. 40 00:01:45,880 --> 00:01:48,630 אתה לא צריך לחזור על כל התצורה השונות 41 00:01:48,630 --> 00:01:53,070 והפרדה של קודים וקוד שכתוב 42 00:01:53,070 --> 00:01:56,180 כי לעתים קרובות אתה צריך לעשות כשאתה עושה אתרי אינטרנט. 43 00:01:56,180 --> 00:01:59,410 הרעיון הוא שמסגרת מאפשרת לך לכתוב קוד ברמה גבוהה יותר 44 00:01:59,410 --> 00:02:01,030 מבלי לדאוג לפרטים ברמה נמוכה יותר. 45 00:02:01,030 --> 00:02:03,670 פירוט ברמה נמוכה יותר יכול להיות משהו כמו 46 00:02:03,670 --> 00:02:07,250 התמודדות עם ניקוי נתוני קלט משתמש. 47 00:02:07,250 --> 00:02:09,320 זה משהו שאתה לא צריך באמת צריך לדאוג. 48 00:02:09,320 --> 00:02:12,370 אתה צריך להתמקד במה שהקצאת האינטרנט שלך היא בעצם עליו. 49 00:02:12,370 --> 00:02:14,790 זה מבטל הרבה קוד מוכן מראש. 50 00:02:14,790 --> 00:02:16,640 זה אדריכלות לפרויקט שלך. 51 00:02:16,640 --> 00:02:18,680 >> אחד הפופולריים ביותר יהיה Model-View-Controller, 52 00:02:18,680 --> 00:02:20,380 שאני הולך לדבר על בשנייה. 53 00:02:20,380 --> 00:02:22,790 והרבה פעמים מסגרות אלו מגלמות קבוצה של נהלים, 54 00:02:22,790 --> 00:02:25,750 כללים ושיטות עבודה מומלצות כדי שתוכלו להשתמש 55 00:02:25,750 --> 00:02:28,190 כך שכאשר אתה מאמץ את מסגרת האינטרנט 56 00:02:28,190 --> 00:02:30,050 אתה צריך לכתוב את הקוד שלך בצורה מסוימת, 57 00:02:30,050 --> 00:02:32,430 וזה בדרך כלל מוסכם סדרה של עקרונות 58 00:02:32,430 --> 00:02:34,290 על ידי הקהילה שמקובלת בדרך כלל להיות 59 00:02:34,290 --> 00:02:36,230 דרך טובה של כתיבת קוד. 60 00:02:36,230 --> 00:02:38,260 זה הופך את הקוד שלך יותר לתחזוקה, שימושי יותר, 61 00:02:38,260 --> 00:02:40,030 כן הלאה וכן הלאה. 62 00:02:40,030 --> 00:02:42,740 ולבסוף, הדבר שאני רוצה להדגיש על מסגרות 63 00:02:42,740 --> 00:02:45,980 לעומת ספריות הוא הרעיון הזה על היפוך של שליטה, והדבר הוא זה. 64 00:02:45,980 --> 00:02:48,430 ההבדל בין ספרייה ומסגרת הוא שעם ספרייה 65 00:02:48,430 --> 00:02:51,990 אתה עדיין כותב את התכנית הראשית, 66 00:02:51,990 --> 00:02:54,460 ואתה סוג של פנייה לספרייה 67 00:02:54,460 --> 00:02:56,810 וקורא לספרייה כדי לעשות משהו בשבילך. 68 00:02:56,810 --> 00:02:58,180 ההבדל בין ספרייה ומסגרת 69 00:02:58,180 --> 00:03:01,620 הוא שהמסגרת מתחילה עם השליטה, 70 00:03:01,620 --> 00:03:03,260 וזה מעורר את הקוד שלך, 71 00:03:03,260 --> 00:03:06,190 כך שאתה יכול לחשוב על זה כ-- זו הסיבה שקוראה לזה מסגרת - 72 00:03:06,190 --> 00:03:09,700 המסגרת מספקת מסגרת זו ומבנה לקוד שלך, 73 00:03:09,700 --> 00:03:11,320 ולמלא את החורים, 74 00:03:11,320 --> 00:03:13,990 וזה יהיה לעין יותר בשנייה 75 00:03:13,990 --> 00:03:16,670 כשאתה רואה אותי להתחיל לכתוב קוד בהקשר של המסגרת. 76 00:03:16,670 --> 00:03:19,130 אתה רואה שאני ממלא את הפערים, 77 00:03:19,130 --> 00:03:22,450 והמסגרת היא סוג של שליטה בכל החלקים הנעים, 78 00:03:22,450 --> 00:03:27,420 ואני צריך לשים את החתיכות במקומות הנכונים. 79 00:03:27,420 --> 00:03:29,360 >> היום אנחנו הולכים לדבר על קוהנה, 80 00:03:29,360 --> 00:03:31,610 שהיא אחת ממסגרות PHP רבות. 81 00:03:31,610 --> 00:03:34,550 ישנן מסגרות באינטרנט, ויש כאלה כמעט בכל שפה, 82 00:03:34,550 --> 00:03:38,330 ואני אוסף קוהנה בגלל קוהנה היא לטעון 83 00:03:38,330 --> 00:03:43,250 ומוכר בדרך כלל כמסגרת PHP הכי הקלה להרים. 84 00:03:43,250 --> 00:03:45,940 זה קל ביותר. 85 00:03:45,940 --> 00:03:48,470 ישנן האחרים שם בחוץ שמגיעים עם הרבה, הרבה יותר תכונות, 86 00:03:48,470 --> 00:03:51,590 אבל הם נוטים להיות יותר קשים להרים. 87 00:03:51,590 --> 00:03:54,920 ולבסוף, קוהנה משתמשת בארכיטקטורת MVC. 88 00:03:54,920 --> 00:03:57,780 זה קל מספיק שאנחנו ממש יכולים לבנות פרויקט 89 00:03:57,780 --> 00:03:59,620 ממש כאן ממש מול העיניים שלך, ואתה יכול פחות או יותר 90 00:03:59,620 --> 00:04:02,780 פעל יחד די בקלות. 91 00:04:02,780 --> 00:04:04,420 >> מהי ארכיטקטורת MVC? 92 00:04:04,420 --> 00:04:06,540 מייצג Model-View-Controller זה, 93 00:04:06,540 --> 00:04:09,560 ואולי אם אתה חושב על הקוד שאתה כבר כותב עד כה 94 00:04:09,560 --> 00:04:11,280 עבור חלק מpsets פיתוח האינטרנט שלך 95 00:04:11,280 --> 00:04:14,710 ייתכן שתוכל לראות חלק מזה, אבל בדרך כלל כשאתה מתחיל בכתיבה 96 00:04:14,710 --> 00:04:16,500 יישום אינטרנט מורכב יותר, 97 00:04:16,500 --> 00:04:21,209 החלוקה בין 3 מגזרים אלה הופכת להיות יותר ויותר ברורים. 98 00:04:21,209 --> 00:04:26,740 הנחתי את MVC כאן כערימת סוג של, 99 00:04:26,740 --> 00:04:29,920 ולעתים קרובות אתה שומע אנשים מדברים על ערימות בפיתוח אינטרנט, 100 00:04:29,920 --> 00:04:33,760 וזה כדי להמחיש את הרעיון כי 101 00:04:33,760 --> 00:04:37,510 כל שכבה, כל רכיב באמת מנסה לתקשר רק 102 00:04:37,510 --> 00:04:40,750 בין 2 רכיבים אחרים. 103 00:04:40,750 --> 00:04:44,550 מישהו ניגש לאתר שלך כלקוח או דפדפן. 104 00:04:44,550 --> 00:04:48,870 האינטראקציה שלהם עם התכנית שלך באמצעות קוד התצוגה. 105 00:04:48,870 --> 00:04:50,500 קוד תצוגת אינטראקציה עם הבקר. 106 00:04:50,500 --> 00:04:52,400 בקר אינטראקציה עם המודל, 107 00:04:52,400 --> 00:04:55,090 ומודל אינטראקציה עם מסד נתונים SQL. 108 00:04:55,090 --> 00:04:59,670 ואין מקפץ בין אם אתה כותב את הקוד שלך כמו שצריך. 109 00:04:59,670 --> 00:05:01,670 >> מה הדברים האלה עושים? 110 00:05:01,670 --> 00:05:06,020 המודל במהותו הוא פיסת הקוד העוסקת בנתונים שלך. 111 00:05:06,020 --> 00:05:09,100 כל דבר שעוסק במסד הנתונים שלך, עם החפצים שאתם מאחסנים, 112 00:05:09,100 --> 00:05:11,280 או אחזור אלה אובייקטים במסד הנתונים, 113 00:05:11,280 --> 00:05:13,450 שכל מטופלים על ידי המודל. 114 00:05:13,450 --> 00:05:15,290 אולי יש לך אובייקטים במסד הנתונים שלך. 115 00:05:15,290 --> 00:05:17,700 אנחנו הולכים ליצור מודל שקשור להודעות, 116 00:05:17,700 --> 00:05:19,760 כך הודעה יכולה להיות כמה תכונות אליו. 117 00:05:19,760 --> 00:05:23,900 ייתכן שיש לך פונקציות סביב אחסון הודעות אלה או אחזור הודעות 118 00:05:23,900 --> 00:05:26,270 או סינון ההודעות וכן הלאה וכן הלאה, 119 00:05:26,270 --> 00:05:28,880 וזה כל הקוד שמטופל על ידי המודל. 120 00:05:28,880 --> 00:05:31,780 בקר הוא סוג של היגיון היישום, 121 00:05:31,780 --> 00:05:37,910 והרבה דברים שונים יכול ללכת בהיגיון היישום. 122 00:05:37,910 --> 00:05:39,790 אם אתה מדבר עם ה-API שונה, 123 00:05:39,790 --> 00:05:42,310 שעשוי להיות עם היגיון היישום שבו אתה מתעסק. 124 00:05:42,310 --> 00:05:47,990 אם אתה מנסה צריך להביא נתונים ממודלים שונים מרובים 125 00:05:47,990 --> 00:05:51,540 וצריך לשלב אותם בדרך כלשהי, כי לעתים קרובות יכולה להיות מטופלים על ידי הבקר. 126 00:05:51,540 --> 00:05:53,820 לדוגמא, בפייסבוק, אם מישהו שאתה חבר, 127 00:05:53,820 --> 00:05:58,500 אז אולי מעשה זה של הקמת מערכת יחסים ש 128 00:05:58,500 --> 00:06:00,490 ניתן לעשות זאת על ידי בקר. 129 00:06:00,490 --> 00:06:04,350 >> ולבסוף, את הנוף הוא הקוד שהניב את מה שאתה באמת רואה. 130 00:06:04,350 --> 00:06:07,410 הרבה פעמים אני חושב בpsets CS50 131 00:06:07,410 --> 00:06:10,050 הם לא ממש ממליצים לך החבר 'ה כדי להפריד 3 הדברים האלה. 132 00:06:10,050 --> 00:06:12,430 בטח יש לך קובץ הגדול, הארוך הזה שבו בחלק העליון 133 00:06:12,430 --> 00:06:15,130 שלך לעשות קצת שאילתת SQL ואולי לעשות קצת עיבוד 134 00:06:15,130 --> 00:06:17,020 על הנתונים שנאספו מבסיס הנתונים, 135 00:06:17,020 --> 00:06:19,370 ואז יש לך את כל HTML שלך בתחתית. 136 00:06:19,370 --> 00:06:22,840 ואתה עשוי לגלות כי כמו שאתה יוצר יותר ויותר דפים 137 00:06:22,840 --> 00:06:25,790 כי אתה הולך לקבל קצת חזרה קוד, וגם, 138 00:06:25,790 --> 00:06:29,600 העניין הוא הקובץ שלך מקבל באמת גדול וארוך 139 00:06:29,600 --> 00:06:32,370 והופך להיות מסורבל לניהול. 140 00:06:32,370 --> 00:06:34,500 הסיבה MVC הוא כל כך נחשב גם 141 00:06:34,500 --> 00:06:36,120 הוא עבור מספר הסיבות. 142 00:06:36,120 --> 00:06:38,110 הדבר הראשון שנקרא משהו הפרדת חששות של 143 00:06:38,110 --> 00:06:40,370 המהווה את הרעיון שכאשר יש לך - 144 00:06:40,370 --> 00:06:43,520 באופן אידיאלי פיסת הקוד 1 צריכה לעשות את הדבר 1 ועושה את זה ממש טוב, 145 00:06:43,520 --> 00:06:47,210 ואתה לא צריך לשלב את פיסות קוד שעושות דברים שונים. 146 00:06:47,210 --> 00:06:49,230 לדוגמא, להציג את קוד ואת קוד דגם, 147 00:06:49,230 --> 00:06:51,040 הם לא באמת צריכים להיות קשורים. 148 00:06:51,040 --> 00:06:53,290 הם לא חייבים להיות באותם קבצים, ולכן כאשר אתה יכול, להפריד אותם 149 00:06:53,290 --> 00:06:55,300 כך שזה קל לתחזוקה. 150 00:06:55,300 --> 00:06:57,130 >> הדבר השני הוא שימוש חוזר בקוד. 151 00:06:57,130 --> 00:06:59,770 אתה עלול למצוא את עצמך כותב את אותה שאילתת SQL או עושה 152 00:06:59,770 --> 00:07:03,060 שאילתות דומות שיכול להיות מפוזרת לפונקציה 1, 153 00:07:03,060 --> 00:07:05,440 וזה הרעיון שעומד מאחורי מודלים ובקרים, 154 00:07:05,440 --> 00:07:09,690 יש את זה בפונקציה נפרדת, כי אתה יכול לעשות שימוש חוזר במקומות שונים בפרוייקט. 155 00:07:09,690 --> 00:07:12,420 ולבסוף, זה קשור לייבוש את הקוד שלך, 156 00:07:12,420 --> 00:07:14,700 או לא לחזור על עצמך, לא לחזור על עצמך. 157 00:07:14,700 --> 00:07:18,090 זה מאוד מובן בפיתוח. 158 00:07:18,090 --> 00:07:20,110 כל פעם שאתה יכול, אתה לא רוצה לחזור על עצמך, כי אם אתה חוזר על עצמך, 159 00:07:20,760 --> 00:07:23,400  זה הרבה יותר יקר לתחזוקה. 160 00:07:23,400 --> 00:07:26,040 אם ברצונך לשנות דבר 1, אתה צריך לשנות את זה בכל מקום, 161 00:07:26,040 --> 00:07:30,230 ושמוביל לבאגים, וזה נורא. 162 00:07:30,230 --> 00:07:32,010 >> בסדר. 163 00:07:32,010 --> 00:07:37,270 כל שאלות עד כה על קוהנה בבת? 164 00:07:37,270 --> 00:07:39,200 גדול. 165 00:07:39,200 --> 00:07:42,300 עכשיו אנחנו הולכים לצלול לתוך מושב הקידוד החי, 166 00:07:42,300 --> 00:07:48,050 ואנו מקווים שהכל ילך כשורה. 167 00:07:57,200 --> 00:08:00,050 אני הולך בעצם לבנות את אתר האינטרנט הזה 168 00:08:00,050 --> 00:08:03,910 על אחד מהשרתים המרוחקים שלי, וככה גם אתם יכולים 169 00:08:03,910 --> 00:08:06,310 לראות את האתר ולהיכנס לאתר, 170 00:08:06,310 --> 00:08:10,990 וגם הסביבה היא טוב יותר מוגדרת מאשר המחשב המרוחק שלי, 171 00:08:10,990 --> 00:08:14,580 כי זה מפעיל לינוקס במקום OS X. 172 00:08:14,580 --> 00:08:16,260 אנחנו ממש הולכים להתחיל. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 אני הולך להוריד את הקוד מאתר. 175 00:08:21,350 --> 00:08:24,610 אני הולך להעתיק את כתובת הקישור, 176 00:08:24,610 --> 00:08:29,770 ללכת לשרת שלי, להוריד אותו, 177 00:08:29,770 --> 00:08:33,000 ואני הולך לחלץ אותו. 178 00:08:38,330 --> 00:08:45,710 >> [סטודנטים] מה הגדול ביותר שאתה יכול להפוך את הטקסט? 179 00:08:45,710 --> 00:08:47,330 [ברנדון ליו] האם זה טוב יותר? 180 00:08:47,330 --> 00:08:50,070 [סטודנטים] האם זה אפשרי? >> [ברנדון ליו] כן, זה בסדר. 181 00:08:50,070 --> 00:08:54,500 אני הורדתי קובץ ZIP ופתחתי את הרוכסן שלתוך ספרייה בשם קוהנה, 182 00:08:54,500 --> 00:08:58,820 ואנחנו הולכים לשנות את השם שCS50-קוהנה, 183 00:08:58,820 --> 00:09:01,140 ובואו נלך פנימה 184 00:09:01,140 --> 00:09:03,610 מדהים. 185 00:09:03,610 --> 00:09:06,870 כאן אתה רואה חבורה של קבצים שונים. 186 00:09:06,870 --> 00:09:10,140 רובכם יכול להתעלם - אנחנו גוף לא הולך לעבור כל קובץ שהוא בכאן 187 00:09:10,140 --> 00:09:13,130 בגלל אילוצי הזמן שלנו, 188 00:09:13,130 --> 00:09:16,310 אבל בדרך כלל בעת התקנת קוהנה, הדבר הראשון שאתה עושה 189 00:09:16,310 --> 00:09:23,210 הוא שאתה הולך לספרייה, 190 00:09:23,210 --> 00:09:26,050 ואתה בעצם לעשות כמה בדיקות סביבה ומה לא 191 00:09:26,050 --> 00:09:28,640 כדי לוודא שהסביבה שלך מוגדרת כראוי לרוץ קוהנה 192 00:09:28,640 --> 00:09:31,450 ולוודא שהכל בסדר. 193 00:09:31,450 --> 00:09:35,510 אתה יכול לראות את רוב הדברים העבירו, אבל בדרך כלל אתה תמיד נתקל בבעית 1 194 00:09:35,510 --> 00:09:38,180 שבו הוא מתלונן על כך שחלק מהספרייה אינה ניתן לכתיבה, 195 00:09:38,180 --> 00:09:40,410 וזה בגלל כמה הרשאות. 196 00:09:40,410 --> 00:09:43,080 אני לא יודע עד כמה אתם חבר 'ה שלמדו על הרשאות קבצים בCS50, 197 00:09:43,080 --> 00:09:47,920 אבל אם אתה עושה את פיתוח אינטרנט, אתה הולך להיתקל בנושא זה הרבה. 198 00:09:47,920 --> 00:09:58,340 אני הולך לעשות את זה לצריבה 199 00:09:58,340 --> 00:10:03,390 ואני חושב שיש לי גם - שם אנחנו הולכים. 200 00:10:03,390 --> 00:10:07,040 >> אוקיי, אז עכשיו אתה יכול לראות כל מה שעברת, 201 00:10:07,040 --> 00:10:10,000 ועכשיו הוא יגיד לך לשנות את שם קובץ install.php. 202 00:10:10,000 --> 00:10:15,630 אני הולך להעביר את קובץ install.php לinstalled.php, 203 00:10:15,630 --> 00:10:19,610 ועכשיו אם אני לרענן, 204 00:10:19,610 --> 00:10:22,810 זה נותן לי איזו שגיאה, וזה מקום שבי הניפוי נכנס 205 00:10:22,810 --> 00:10:25,610 זה מקום שבו אתה יכול לראות מה באמת הולך לקרות. 206 00:10:25,610 --> 00:10:28,460 העניין הוא, כברירת מחדל, קוהנה מניחה כי 207 00:10:28,460 --> 00:10:31,480 הפרויקט שלך הוא בספריית השורש של התחום שלך, 208 00:10:31,480 --> 00:10:35,920 כך שמצפה לך להיות בdemo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 אנחנו צריכים להגיד לו שזה בעצם בתיקיית משנה. 210 00:10:37,540 --> 00:10:39,820 שהוא בתיקיית משנה בשם CS50 קוהנה. 211 00:10:39,820 --> 00:10:42,640 העניין הוא, שזה פרשנות שגוי CS50-קוהנה 212 00:10:42,640 --> 00:10:45,680 כמו משהו אחר, שאני אסביר לך בשנייה. 213 00:10:45,680 --> 00:10:49,910 אבל אני צריך להגיד לך שזה משהו שזה היה צפוי. 214 00:10:49,910 --> 00:10:53,700 מה שאנחנו הולכים לעשות הוא שאנחנו הולכים להיכנס לתיקייה זו נקראת bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 שהיא תיקיית התצורה שבו הרבה דברים שונים מוגדרות. 216 00:10:59,260 --> 00:11:01,570 אני פותח את זה. 217 00:11:01,570 --> 00:11:09,790 אז אולי אחד הדברים הראשונים שאעשה הוא לשנות את אזור הזמן. 218 00:11:09,790 --> 00:11:13,910 >> ואז בואו נראה. 219 00:11:13,910 --> 00:11:15,180 אהה! ממש כאן. 220 00:11:15,180 --> 00:11:18,690 יש חבורה של אמרות תצורה שונות בפה, 221 00:11:18,690 --> 00:11:21,700 אבל אחד שאני מחפש הוא הדבר הזה שנקרא URL בסיס, 222 00:11:21,700 --> 00:11:24,570 וברירת המחדל אני מקבל את זה שנקבע לקוהנה, 223 00:11:24,570 --> 00:11:29,020 אבל אני הולך לשנות את זה לCS50-קוהנה, 224 00:11:29,020 --> 00:11:32,880 ואני חושב שצריך לתקן את זה. 225 00:11:32,880 --> 00:11:34,150 כן, גדול. 226 00:11:34,150 --> 00:11:39,530 כברירת מחדל, כדי לראות שזה עובד, הוא אומר, "שלום העולם". 227 00:11:39,530 --> 00:11:42,930 מאיפה זה בא? איך הגעתי לשלום העולם? 228 00:11:42,930 --> 00:11:47,640 איפה בדיוק נמצא הקוד שבעצם כתב את זה? 229 00:11:47,640 --> 00:11:50,240 כדי להבין את זה, אני אציג את המושג הזה שנקרא ניתוב. 230 00:11:50,240 --> 00:11:52,590 פחות או יותר כל מסגרות אינטרנט המושג שנקרא ניתוב, 231 00:11:52,590 --> 00:11:57,230 אשר היא פיסת התוכנה שתמפה URL מסוימת 232 00:11:57,230 --> 00:12:01,550 לפיסה מסוימת של קוד במסגרת שלך. 233 00:12:01,550 --> 00:12:07,510 לדוגמא, אם יש לך כמה כתובות URL ואתה הולך לחלק כתובת אתר כמו foo.com / בלוג / כל 234 00:12:07,510 --> 00:12:11,170 אז מה המסגרת הוא הולכת לעשות - או לפחות מה קוהנה הוא הולכת לעשות - 235 00:12:11,170 --> 00:12:15,540 הוא שזה הולך למצוא בכיתה קראה את הבלוג של בקר, 236 00:12:15,540 --> 00:12:18,720 וזה הולך להפעיל את פעולת פונקציה בשם כולם. 237 00:12:18,720 --> 00:12:20,160 אני יודע על כיתה ופונקציות אני מדבר, 238 00:12:20,160 --> 00:12:23,860 ואני יודע שאתם לא מכוסים שיעורים ואירועים 239 00:12:23,860 --> 00:12:26,470 בCS50 עדיין, אך לעת עתה, 240 00:12:26,470 --> 00:12:29,800 אתה יכול לחשוב על שיעורים כמו סתם קבוצה של פונקציות, 241 00:12:29,800 --> 00:12:32,900 דרך של קיבוץ פונקציות ביחד. 242 00:12:32,900 --> 00:12:37,690 זה באמת כל מה שאתה צריך לדעת. 243 00:12:37,690 --> 00:12:43,120 >> עכשיו, אם אנחנו מסתכלים על מבנה התיקיות שלנו, 244 00:12:43,120 --> 00:12:47,110 בתוך תיקיית היישום יש תיקייה נוספת בשם כיתות, 245 00:12:47,110 --> 00:12:49,200 והתיקיות האחרות נקראות בקר ודגם. 246 00:12:49,200 --> 00:12:52,530 אם תסתכל בתוך תיקיית בקר, 247 00:12:52,530 --> 00:12:56,330 אנו רואים שיש קובץ שנקרא ברוך הבא, 248 00:12:56,330 --> 00:13:00,370 ואתם יכולים לראות כאן הוא מחלקה בשם ברוך הבא בקר, 249 00:13:00,370 --> 00:13:02,340 ויש פונקציה שנקראת פעולה מדד 250 00:13:02,340 --> 00:13:06,360 ומה שהיא עושה זה מגדיר את הגוף של התגובה שלך לשלום העולם. 251 00:13:06,360 --> 00:13:08,730 זה מקום שבי הקוד הוא להיות בכתב. 252 00:13:08,730 --> 00:13:11,610 השאלה אחרת הוא, טובה, אני לא הלכתי ל 253 00:13:11,610 --> 00:13:13,680 בלה, בלה, בלה, / בברכה / מדד. 254 00:13:13,680 --> 00:13:16,250 איך בכלל הגעתי לכאן? 255 00:13:16,250 --> 00:13:20,410 ובכן, זה פשוט כי 256 00:13:20,410 --> 00:13:22,410 כאן בחלק התחתון של קובץ bootstrap שלנו 257 00:13:22,410 --> 00:13:24,550 שבו אנו קובעים מסלולים שלנו 258 00:13:24,550 --> 00:13:26,570 אתה יכול לראות שהם להגדיר כמה ברירות מחדל עבורך. 259 00:13:26,570 --> 00:13:28,990 בקר ברירת המחדל הוא ברוך הבא. פעולת ברירת המחדל היא מדד. 260 00:13:28,990 --> 00:13:31,600 זו הסיבה שכאשר אנחנו שמים שום דבר שם זה באופן אוטומטי נכנס לבקר ברוך הבא 261 00:13:31,600 --> 00:13:33,940 ופעולת המדד. 262 00:13:33,940 --> 00:13:37,460 >> כל מה שהגיוני עד כה? 263 00:13:37,460 --> 00:13:40,850 עכשיו, אתה יכול לעשות יותר מאשר רק ללכת לפיקוח 264 00:13:40,850 --> 00:13:43,670 ופעולה ספציפית. 265 00:13:43,670 --> 00:13:48,480 אתה יכול גם לעבור בפרמטרים אל הבקר. 266 00:13:48,480 --> 00:13:56,390 רק כדוגמא, 267 00:13:56,390 --> 00:14:04,070 אני הולך להוסיף עוד פעולה לבקר זה כדי להראות לך. 268 00:14:04,070 --> 00:14:09,130 בואו לקרוא את הפעולה הזו אקו, כי זה הולך לספר לכם כל מה שאתה נותן לו, 269 00:14:09,130 --> 00:14:17,510 ואז אני בעצם הולך לתפוס 270 00:14:17,510 --> 00:14:20,960 פרמטר זה הולך להישלח דרכי לתכנית הניתוב, 271 00:14:20,960 --> 00:14:24,440 וכמו שאתה יכול לראות כאן, 272 00:14:24,440 --> 00:14:28,440 קו זה ממש כאן, אתה יכול לראות את זה 273 00:14:28,440 --> 00:14:31,270 זה בעצם אומר שיש לך בקר, ויש לך /, 274 00:14:31,270 --> 00:14:33,480 ויש לך פעולה, ויש לך / אחר, 275 00:14:33,480 --> 00:14:39,140 וזה הולך להיות פרמטרים, ובגלל שיש לנו את זה שם זיהוי 276 00:14:39,140 --> 00:14:42,450 בתוך סוגריים משולשים, זה אומר שאנחנו מזהה שמות בפרמטר זה. 277 00:14:42,450 --> 00:14:45,490 מאוחר יותר בקוד הבקר שלי, אם אני רוצה לתפוס אחיזה של פרמטר זה, 278 00:14:45,490 --> 00:14:51,790 אני יכול להשתמש בקוד שכתבתי, למצוא את הפרמטר בשם זהות. 279 00:14:51,790 --> 00:14:59,290 זה מה שעשיתי כאן, ואני הולך לחזור ולומר, 280 00:14:59,290 --> 00:15:07,090 "אתה אמר" את זה. 281 00:15:07,090 --> 00:15:10,760 ואז עכשיו אם אני הולך לאתר שלנו, 282 00:15:10,760 --> 00:15:19,550 אני הולך לcs50-kohana/welcome/echo/Helloooo-- 283 00:15:19,550 --> 00:15:21,420 אה, זה נכון. 284 00:15:21,420 --> 00:15:23,930 יש שלב 1 שאני נשאר בחוץ. 285 00:15:23,930 --> 00:15:27,020 זהו חלק מרעיון קידוד בשידור חי. 286 00:15:27,020 --> 00:15:36,100 >> הנה דבר 1. בואו נראה. 287 00:15:36,100 --> 00:15:38,870 אז בדרך כלל כברירת מחדל עם הרבה יישומי אינטרנט אלה 288 00:15:38,870 --> 00:15:42,820 אתה צריך לכלול דבר index.php זו בכתובת האתר שלך, 289 00:15:42,820 --> 00:15:46,410 כי הרעיון הוא index.php הוא סוג של נקודת הכניסה 290 00:15:46,410 --> 00:15:48,250 הבקשה שלך, אבל כמובן, 291 00:15:48,250 --> 00:15:50,110 זה סוג של מעצבן שיש. 292 00:15:50,110 --> 00:15:53,790 אתה לא רוצה שתהיה לי index.php יופיע בכתובת האתר שלך, 293 00:15:53,790 --> 00:15:56,080 ופחות או יותר בכל מסגרת אינטרנט מחוץ לקופסה 294 00:15:56,080 --> 00:15:58,440 יש בעיה index.php זה, 295 00:15:58,440 --> 00:16:03,370 ולכן אתה צריך לקחת כמה צעדים כדי להיות מסוגל להסיר את זה. 296 00:16:03,370 --> 00:16:07,540 ולכן במקרה זה, 297 00:16:07,540 --> 00:16:11,450 מה שאנחנו הולכים לעשות הוא שאנחנו הולכים להשתמש בקובץ שנקרא. htaccess, 298 00:16:11,450 --> 00:16:13,900 וזה משהו שהוא ייחודי לשרת האינטרנט Apache, 299 00:16:13,900 --> 00:16:16,290 והוא יכול לעשות דברים כמו שכתוב כתובות 300 00:16:16,290 --> 00:16:19,350 ולהפנות את כתובות אתרים וכן הלאה וכן הלאה, 301 00:16:19,350 --> 00:16:24,280 וקוהנה היא נחמדה מספיק כדי לספק קובץ htaccess תבנית. שאנחנו יכולים להשתמש. 302 00:16:24,280 --> 00:16:28,300 >> כפי שאתה יכול לראות, יש קובץ בשם 'example.htaccess, 303 00:16:28,300 --> 00:16:33,410 ואנחנו הולכים להעתיק את זה ל. htaccess. 304 00:16:33,410 --> 00:16:36,950 אני הולך לפתוח את זה ולערוך אותו, 305 00:16:36,950 --> 00:16:40,840 ובעצם זה עושה חבורה של דברים שונים. 306 00:16:40,840 --> 00:16:45,320 שורת המפתח ייתכן שתרצו להסתכל על זה ממש כאן. 307 00:16:45,320 --> 00:16:49,840 הרעיון הוא שזה מגדיר את כלל שאומר, 308 00:16:49,840 --> 00:16:56,400 "אוקיי, מה שאתה מקליד, index.php צרף בתחילת שורה לזה". 309 00:16:56,400 --> 00:16:58,710 אתה יכול לראות את זה. 310 00:16:58,710 --> 00:17:00,370 . * עומד לכל דבר, להתאים כל דבר, 311 00:17:00,370 --> 00:17:03,300 ולאחר מכן החלק השני הוא index.php / 0 $, 312 00:17:03,300 --> 00:17:07,410 ו$ 0 מתייחס לכל מה שהתאים בעבר. 313 00:17:07,410 --> 00:17:09,500 האם זה הגיוני? 314 00:17:09,500 --> 00:17:12,190 אבל הדבר באמת המפתח אני רוצה לשנות הוא לשנות את בסיס שכתוב זה, 315 00:17:12,190 --> 00:17:14,300 המהווה את בסיס כתובת האתר. 316 00:17:14,300 --> 00:17:17,780 זה סוג של ההנחה שבו אתה עובד. 317 00:17:17,780 --> 00:17:22,560 אני הולך להוסיף CS50 קוהנה לזה, 318 00:17:22,560 --> 00:17:26,530 וככה עכשיו אם אני מסיר index.php, 319 00:17:26,530 --> 00:17:32,110 זה אמור לעבוד, ואני הולך להוסיף קצת מספרים 320 00:17:32,110 --> 00:17:36,380 כדי להראות לך שהוא אכן עשה את העבודה. 321 00:17:36,380 --> 00:17:38,130 נשמע טוב. 322 00:17:38,130 --> 00:17:40,260 >> כל שאלות עד כה? 323 00:17:40,260 --> 00:17:42,300 [סטודנטים] איך זה לדעת לעשות 123? 324 00:17:42,300 --> 00:17:44,120 האם זה טיעון? 325 00:17:44,120 --> 00:17:46,560 בדיוק. אתה יכול לחשוב על זה בדיוק כמו ויכוח. 326 00:17:46,560 --> 00:17:52,410 אבל הדבר המוזר, אם כי, הוא כי דרך קוהנה עושה את זה 327 00:17:52,410 --> 00:17:54,910 הוא שהם לא עושים את זה בדיוק כמו ויכוח. 328 00:17:54,910 --> 00:17:56,930 אתה צריך לתפוס את זה ככה. 329 00:17:56,930 --> 00:18:01,030 אתה צריך לתפוס את אובייקט הבקשה ולבקש את הפרמטר שנקרא תעודת זהות, 330 00:18:01,030 --> 00:18:03,240 וכי שם זיהוי מגיע מאותו קובץ bootstrap 331 00:18:03,240 --> 00:18:06,990 שהראיתי קודם לכן, ושם היה מזהה בסוגריים זוויתיים אלה, 332 00:18:06,990 --> 00:18:11,580 וככה אתה תופס פרמטרים אלה. 333 00:18:11,580 --> 00:18:14,010 מדהים. 334 00:18:14,010 --> 00:18:17,550 יש עוד שאלות? 335 00:18:17,550 --> 00:18:20,500 כמו שאמרתי, בקרים, הם מטפלים בלוגיקת יישום, 336 00:18:20,500 --> 00:18:22,980 אז זה דוגמא 1 שבו אתה יכול לראות זהו זה - 337 00:18:22,980 --> 00:18:24,830 זה מאוד בסיסי, אבל זה עדיין היגיון יישום, 338 00:18:24,830 --> 00:18:27,980 הרעיון תופס את הפרמטר ויצירת מחרוזת חדשה 339 00:18:27,980 --> 00:18:31,920 שאומר, "אתה אמר בלה," ולאחר מכן יורק שיחזרו אליך. 340 00:18:31,920 --> 00:18:34,030 ובאופן כללי מה שאתה עושה הוא שאתה יוצר בקרים שונים. 341 00:18:34,030 --> 00:18:36,450 אתה יוצר בקרים נפרדים לחלקים שונים של האתר שלך. 342 00:18:36,450 --> 00:18:38,160 >> היום אנחנו הולכים לעשות אתר מאוד פשוט, 343 00:18:38,160 --> 00:18:40,420 וזה הולך להיות בלוג מאוד בסיסי. 344 00:18:40,420 --> 00:18:43,780 אנחנו הולכים להפוך את הבקר חדש רק להודעות בבלוג. 345 00:18:43,780 --> 00:18:47,060 אבל אז אם אני היה גם להוסיף הערות לפוסט בבלוג, 346 00:18:47,060 --> 00:18:50,140 אז בטח הייתי רוצה לעשות הבקר חדש להערות אלה. 347 00:18:50,140 --> 00:18:53,380 אם אני רוצה להוסיף משתמשים, הייתי כנראה להוסיף בקר חדש עבור משתמשים אלה, 348 00:18:53,380 --> 00:18:57,000 ובאופן כללי, הרעיון הוא שכל פעם שיש לך מודל חדש, 349 00:18:57,000 --> 00:18:59,630 אובייקט נתונים חדש עם שיש לך עסק, 350 00:18:59,630 --> 00:19:02,970 יש לך בקר אחד שלאובייקט נתונים. 351 00:19:02,970 --> 00:19:04,370 היום אנחנו הולכים לעבודה עם אובייקט נתונים 1 בלבד, 352 00:19:04,370 --> 00:19:06,250 וזה הולך להיות הודעות, 353 00:19:06,250 --> 00:19:08,710 ואתה יכול גם לחשוב על אובייקטי נתונים כמקבילים לשולחנות. 354 00:19:08,710 --> 00:19:12,160 באופן כללי כל שולחן מתאים לסוג 1 של אובייקט נתונים, 355 00:19:12,160 --> 00:19:15,160 כך בהודעה השולחן יהיה לי הודעה מודל 1, 356 00:19:15,160 --> 00:19:18,230 שיהיה לי הודעה בקר 1 המתאים לכך, 357 00:19:18,230 --> 00:19:22,190 ואותו דבר להערות, אותו עבור משתמשים, וכן הלאה וכן הלאה. 358 00:19:22,190 --> 00:19:24,070 וזה כלל אצבע. 359 00:19:24,070 --> 00:19:27,460 יש הולכים להיות מקרים מיוחדים שבו אתה יכול להיות שונה מזה, 360 00:19:27,460 --> 00:19:29,300 אבל 90% מהזמן זה מה שאתה הולך לעשות, 361 00:19:29,300 --> 00:19:32,810 ואני אראה לך שזה מה שאנחנו הולכים לעשות היום. 362 00:19:32,810 --> 00:19:35,490 1 יותר מושג לפני שאנחנו צוללים בחזרה לתוך הקוד, 363 00:19:35,490 --> 00:19:37,710 הרעיון הזה של מיפוי יחסי אובייקט. 364 00:19:37,710 --> 00:19:41,200 >> כבר אתם עשיתם pset פיתוח אינטרנט, 365 00:19:41,200 --> 00:19:43,820 ואתה ראית שאתה מבצע שאילתת SQL, 366 00:19:43,820 --> 00:19:46,510 ומה שזה מחזיר לך הן שורות. 367 00:19:46,510 --> 00:19:50,040 אתה מקבל שורות אלה, ומדד לך אותם על ידי כמה שם, 368 00:19:50,040 --> 00:19:55,480 שמו של הטור והשולחן, 369 00:19:55,480 --> 00:19:57,630 וככה אתה עובד עם זה, 370 00:19:57,630 --> 00:19:59,290 וזה יכול להיות קצת מסורבל. 371 00:19:59,290 --> 00:20:01,810 אבל יתר על כן, אם יש לך קשרים בתוך מסד הנתונים שלך, 372 00:20:01,810 --> 00:20:05,280 כמו למשל אם יש לי הערות והודעות, 373 00:20:05,280 --> 00:20:11,240 אז אולי אני רוצה לתפוס את ההודעה האם של תגובה. 374 00:20:11,240 --> 00:20:14,350 אם אני משתמש רק בשורות SQL, ואז כל מה שאני יכול לקבל הוא מזהה 375 00:20:14,350 --> 00:20:19,310 ולא בהודעה בפועל של ההודעה ההורה עצמו. 376 00:20:19,310 --> 00:20:21,680 אבל כאשר אנחנו קידוד, מה שאנחנו באמת רוצים הוא לתפוס בפועל 377 00:20:21,680 --> 00:20:23,550  ההורה לפרסם את עצמו לפעמים. 378 00:20:23,550 --> 00:20:25,730 מה אובייקט מיפוי יחסי עושה הוא 379 00:20:25,730 --> 00:20:29,480 זה לוקח את התוצאות של שאילתת מסד נתונים 380 00:20:29,480 --> 00:20:32,420 ומכניס אותו לתוך אובייקטים בשבילך, שהם הרבה יותר נחמדים לעבוד עם זה 381 00:20:32,420 --> 00:20:34,770 ממערכים ושורות רגילים. 382 00:20:34,770 --> 00:20:37,550 >> לדוגמא, עכשיו כאשר יש לי הערה אולי, 383 00:20:37,550 --> 00:20:40,900 ואני רוצה לתפוס את ההודעה האם שלה, 384 00:20:40,900 --> 00:20:43,440 ואני אולי אין להגיב הודעה חץ, 385 00:20:43,440 --> 00:20:45,230 אז זה בעצם ייתן לי את ההודעה אובייקט 386 00:20:45,230 --> 00:20:47,940 מתאים לתפקיד ההורה בפועל, ולא רק כמה זהות, 387 00:20:47,940 --> 00:20:52,210 שבו אני אחר היה צריך להשתמש ולעשות שאילתת SQL אחרת כדי לתפוס את ההודעה, 388 00:20:52,210 --> 00:20:57,430 שהוא מסורבל ומיותר. 389 00:20:57,430 --> 00:21:01,840 יתר על כן, על ידי מיפוי כל שורות נתונים אלה לאובייקטים, 390 00:21:01,840 --> 00:21:03,760 גם אתה יכול לצרף עוד פונקציות לאובייקטים, 391 00:21:03,760 --> 00:21:09,700 כך למשל, דיברתי על איך שיעורים הם בעצם קבוצות של פונקציות. 392 00:21:09,700 --> 00:21:11,620 אתה יכול לחשוב על זה ככה. 393 00:21:11,620 --> 00:21:15,290 לדוגמא, אולי יש לי הודעה האובייקט הזה, 394 00:21:15,290 --> 00:21:17,830 ואולי הייתי רוצה לקבל קצת סוג של פונקציה קשורה אליו 395 00:21:17,830 --> 00:21:20,300 שבעצם אומר לי שזה פורסם לאחרונה? 396 00:21:20,300 --> 00:21:23,570 היה זה פורסם בשבוע שעבר, אמת או שקר? 397 00:21:23,570 --> 00:21:27,320 וזה פונקציה שאני יכול לצרף אל אובייקט ש, 398 00:21:27,320 --> 00:21:31,300 וזה ממש נוח לו באותו המקום, 399 00:21:31,300 --> 00:21:33,820 ויש שורה של פונקציות שונות שתוכל ליצור 400 00:21:33,820 --> 00:21:37,990 לחפצים הללו, וזה ממש נחמד להיות מסוגל לצרף אותו לכיתה, 401 00:21:37,990 --> 00:21:41,700 לאובייקט, ואילו אם רק היו שורות המגיעות מבסיס הנתונים שלך, 402 00:21:41,700 --> 00:21:43,790 אז אתה באמת לא יכול לצרף כל הפונקציונליות לזה. 403 00:21:43,790 --> 00:21:47,850 זה ממש פשוט נתונים. 404 00:21:47,850 --> 00:21:50,550 כל שאלות על זה בכלל? 405 00:21:50,550 --> 00:21:52,710 ORMs הוא התפתחות אינטרנט נפוצה מאוד, 406 00:21:52,710 --> 00:21:56,330 ויש הרבה סוגים שונים של ORMs של, 407 00:21:56,330 --> 00:21:58,450 וקוהנה יש ORM משלו. 408 00:21:58,450 --> 00:22:05,050 זה מאוד בסיסי, אבל תוכל לקבל טעימה ממה שזה נראה. 409 00:22:05,050 --> 00:22:08,780 >> בואו ליצור מודל שנכתב בבלוג שלנו, 410 00:22:08,780 --> 00:22:12,350 והדבר הראשון שאנחנו כמובן צריכים לעשות הוא ליצור שולחן בפועל 411 00:22:12,350 --> 00:22:16,680 בתוך מסד הנתונים שלנו כדי לאחסן למעשה הנתונים שלנו להודעות אלה. 412 00:22:16,680 --> 00:22:19,260 הדבר הראשון שאני הולך לעשות זה ללכת לphpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 האם אתם משמשים phpMyAdmin לפני? 414 00:22:21,410 --> 00:22:23,400 אוקיי, מגניב, אז אתם כבר יודעים מה זה, 415 00:22:23,400 --> 00:22:32,200 ואני הולך ליצור טבלה חדשה בשם הודעות קוהנה, 416 00:22:32,200 --> 00:22:37,820 וזה הולך להיות ממש פשוט. 417 00:22:37,820 --> 00:22:40,190 אני אצטרך להיכנס שוב פנימה 418 00:23:02,620 --> 00:23:04,640 כל מה שאנחנו הולכים לעשות היום הוא שיש לי מחבר וגוף, 419 00:23:04,640 --> 00:23:11,930 פשוט לשמור את זה פשוט. 420 00:23:11,930 --> 00:23:15,620 אני הולך ליצור טבלה, 421 00:23:15,620 --> 00:23:19,620 ועכשיו פשוט יש לנו טבלה המייצגת את ההודעות שלנו 422 00:23:19,620 --> 00:23:23,370 עם 2 שדות לסופר שלנו והגוף שלנו. 423 00:23:23,370 --> 00:23:26,290 הדבר השני שאני הולך לעשות עכשיו הוא 424 00:23:26,290 --> 00:23:29,820 להגדיר את יישום האינטרנט שלי, כך שהוא יודע איך להתחבר למסד הנתונים, 425 00:23:29,820 --> 00:23:31,950 וזה, שוב, זה משהו שאתה תצטרך לעשות עם כל יישומי האינטרנט. 426 00:23:31,950 --> 00:23:34,790 אתה צריך להגיד לו את השם המשתמש ואת הסיסמה 427 00:23:34,790 --> 00:23:36,990 ואת שמו של מסד הנתונים וכן הלאה וכן הלאה 428 00:23:36,990 --> 00:23:40,000 כדי להבין איך בעצם להתחבר למסד הנתונים שלך. 429 00:23:40,000 --> 00:23:58,710 >> בקוהנה, יש לנו משהו שנקרא מודול בסיס הנתונים, 430 00:23:58,710 --> 00:24:02,690 ובתיקיית התצורה יש לנו תיקייה בשם מסד נתונים, 431 00:24:02,690 --> 00:24:07,330 וכמו שאתה יכול לראות, יש חבורה של הגדרות שאתה צריך להגדיר כאן 432 00:24:07,330 --> 00:24:09,860 לספר לו מה שם המשתמש והסיסמה 433 00:24:09,860 --> 00:24:13,110 עבור מסד הנתונים, כך שאני ממש יכול להתחבר אליו. 434 00:24:13,110 --> 00:24:15,010 ומכיוון שאני לא רוצה שהחבר 'ה יודע בעצם 435 00:24:15,010 --> 00:24:17,190 שם המשתמש וסיסמא של מסד הנתונים שלי, 436 00:24:17,190 --> 00:24:23,840 יש לי קובץ שבו אני כבר להגדיר את כל זה, ואני הולך להעתיק ולהדביק אותו מעל. 437 00:24:33,080 --> 00:24:36,870 מדהים. 438 00:24:36,870 --> 00:24:39,880 אוקיי. אני חושב שזה כל התצורה שאני צריך לעשות, 439 00:24:39,880 --> 00:24:41,070 אבל בואו נראה. 440 00:24:41,070 --> 00:24:43,720 אנחנו נמשיך לעבוד בזה, ואם משהו מתרסק, 441 00:24:43,720 --> 00:24:47,490 אז אנחנו נתקן את זה. 442 00:24:47,490 --> 00:24:51,830 עכשיו מה שאני הולך לעשות הוא שאני הולך ליצור בקר חדש. 443 00:24:51,830 --> 00:24:53,190 או בעצם, סליחה. 444 00:24:53,190 --> 00:24:55,080 קודם כל אני חייב ליצור מודל חדש. 445 00:24:55,080 --> 00:25:01,620 אני ליצור מודל חדש בשם Post.php, 446 00:25:01,620 --> 00:25:12,440 ומה שאנחנו הולכים לעשות הוא שאנחנו הולכים לקרוא לזה Model_Post כיתה. 447 00:25:12,440 --> 00:25:15,390 קבל כמה הדגשת תחביר ב, 448 00:25:15,390 --> 00:25:19,750 ולכן כאשר אני אומר, "מרחיב ORM," זה בעצם 449 00:25:19,750 --> 00:25:21,210 עוד קצת תכנות מונחה עצמים, 450 00:25:21,210 --> 00:25:23,340 שלמרבה הצער לא חבר 'ה למדה בCS50 עדיין, 451 00:25:23,340 --> 00:25:25,290 אבל זה די קל להרים. 452 00:25:25,290 --> 00:25:27,950 זה נותן לי את כל הפונקציונליות נוספת הזה שמגיע בחבילת ORM זה, 453 00:25:27,950 --> 00:25:31,120 ואז אני מקבל חבורה של פונקציות ומה לא בחינם נוספים, 454 00:25:31,120 --> 00:25:34,810 שתראה קצת בשנייה. 455 00:25:34,810 --> 00:25:37,670 >> נכון לעכשיו בעצם כל מה שאני צריך לעשות הוא ליצור המעמד הזה. 456 00:25:37,670 --> 00:25:39,160 אני אפילו לא צריך לעשות כל תפקיד או כל דבר, 457 00:25:39,160 --> 00:25:41,770 אבל אני כבר יצרתי מעמד שמייצג את הטבלה, 458 00:25:41,770 --> 00:25:44,140 ומכיוון שאני כבר הארכתי בכיתה ORM זה, 459 00:25:44,140 --> 00:25:51,080 אני מקבל המון דברים בחינם, אז עכשיו אתה לא צריך להגדיר יותר על שום דבר. 460 00:25:51,080 --> 00:25:53,530 ועכשיו מה שאני הולך לעשות הוא שאני הולך ליצור בקר חדש, 461 00:25:53,530 --> 00:25:58,480 שאני הולך לשם blog.php, 462 00:25:58,480 --> 00:26:04,350 ואני הולך להעתיק את הבקר ברוך הבא 463 00:26:04,350 --> 00:26:11,950 אז אני לא צריך להקליד מחדש כמה דברים, 464 00:26:11,950 --> 00:26:20,720 ועכשיו אני צריך לשנות את השם הזה. 465 00:26:20,720 --> 00:26:24,710 עכשיו מה שאני הולך לעשות כדי לבדוק כדי לוודא שהכל מסתדר, 466 00:26:24,710 --> 00:26:27,820 אני הולך לתפוס את ההודעה הראשונה ממאגר הנתונים שלי 467 00:26:27,820 --> 00:26:32,680 ולהדפיס את הגוף של ההודעה על המסך. 468 00:26:32,680 --> 00:26:37,920 כדי לעשות את זה מה שאני הולך לעשות הוא ראשון שאני הולך לשמור את ההודעות 469 00:26:37,920 --> 00:26:48,770 למשתנה אז מה שאנחנו הולכים לעשות הוא - 470 00:26:48,770 --> 00:26:52,090 בקוהנה מה שאתה עושה הוא לתפוס את ההודעה האובייקט 471 00:26:52,090 --> 00:26:55,380 זה סוג של מסורבל, אבל אתה צריך לעשות את הדבר הזה שנקרא ORM :: מפעל, 472 00:26:55,380 --> 00:26:57,750 ואז אתה עובר בשמו של המודל שאתה רוצה, 473 00:26:57,750 --> 00:27:00,490 וזה מחזיר את אובייקט ORM שמייצג את המודל הזה. 474 00:27:00,490 --> 00:27:04,860 ואז, כמו שאמרתי, כאשר אנו מרחיבים את אובייקט ORM, 475 00:27:04,860 --> 00:27:07,320 אנחנו מקבלים את כל השיטות הללו בחינם, כך לדוגמא, 476 00:27:07,320 --> 00:27:09,200 אנחנו מקבלים הפונקציה החדשה הזה שנקרא "למצוא את כל" 477 00:27:09,200 --> 00:27:12,160 אשר באופן אוטומטי חוזר בכל הודעה במסד הנתונים, 478 00:27:12,160 --> 00:27:14,850 וזה די נוח. 479 00:27:14,850 --> 00:27:17,480 >> ועכשיו בגוף אני הולך לחזור 480 00:27:17,480 --> 00:27:24,860 בהודעה הראשונה ולהחזיר את הגוף שלה. 481 00:27:24,860 --> 00:27:27,930 וכמובן, אני צריך ליצור הודעה, 482 00:27:27,930 --> 00:27:31,880 אז בואו להוסיף הודעה חדשה. 483 00:27:31,880 --> 00:27:37,870 אני אומר, "ברנדון, ההודעה הראשונה שלי." 484 00:27:37,870 --> 00:27:40,010 מדהים. 485 00:27:40,010 --> 00:27:45,910 ועכשיו אנחנו הולכים לבלוגים 486 00:27:45,910 --> 00:27:50,960 ואם כל מה שעובד היטב - הו, זה משהו רשות קובץ מטומטם אחר שוב. 487 00:27:50,960 --> 00:27:56,090 חכה שני 1. זה סוג של האבסורד. 488 00:28:06,700 --> 00:28:08,490 הנה. אוקיי. 489 00:28:08,490 --> 00:28:10,040 אני תקנתי את הבעיה שרשותו. 490 00:28:10,040 --> 00:28:12,040 הוא מנסה ליצור כמה קבצים וכמה יומן, 491 00:28:12,040 --> 00:28:15,400 וההרשאות, שוב, לא היו מוגדרות כהלכה, אז עשיתי את זה 492 00:28:15,400 --> 00:28:18,320 כך הקבצים אלה היו לצריבה והפעלה 493 00:28:18,320 --> 00:28:21,090 כך שזה באמת יכול להיכנס לדברים. 494 00:28:21,090 --> 00:28:24,220 עכשיו זה נותן לי עוד לומר יוצא מן הכלל, "ORM הכיתה לא נמצא," 495 00:28:24,220 --> 00:28:26,960 וזה בגלל ששכחתי את צעד נוסף. 496 00:28:26,960 --> 00:28:37,010 זה חבל מאוד. 497 00:28:37,010 --> 00:28:40,270 בקובץ תיקיית אתחול, יש מודולים אלה כאן, 498 00:28:40,270 --> 00:28:42,480 שבו אתה יכול לבחור להפעיל או לבטל. 499 00:28:42,480 --> 00:28:44,340 אלה הם חבורה של תכונות שונות, כי אתה יכול לבחור להשתמש 500 00:28:44,340 --> 00:28:46,180 בתוך קוהנה, שהיא סוג של נחמד. 501 00:28:46,180 --> 00:28:49,090 >> לדוגמא, יש להם מודול אימות 502 00:28:49,090 --> 00:28:51,170 שבו אתה יכול להשתמש לאימות משתמשים. 503 00:28:51,170 --> 00:28:53,390 יש להם מודול מטמון אם אתה רוצה ליישם 504 00:28:53,390 --> 00:28:57,870 איזה מטמון הסוף חזרה לעשות את עבודת היישום מהירה יותר ומה לא. 505 00:28:57,870 --> 00:29:02,140 אנחנו צריכים לאפשר את מסד הנתונים ואת מודול ORM, 506 00:29:02,140 --> 00:29:04,280 כי כמו שאמרתי, אנחנו משתמשים במסד הנתונים, כמובן, 507 00:29:04,280 --> 00:29:08,200 ואנחנו גם צריכים לאפשר את המודול ORM, 508 00:29:08,200 --> 00:29:12,220 כי אנחנו רוצים להיות פונקציונליות נוספים, וזה נחמד שיש. 509 00:29:12,220 --> 00:29:14,240 כל מה שאני צריך לעשות זה uncomment 2 הקווים האלה, 510 00:29:14,240 --> 00:29:18,760 ועכשיו אם אני לרענן, זה נתן לי שגיאה אחרת. 511 00:29:18,760 --> 00:29:22,100 הוא אומר, "כיתת Model_Post לא נמצא." 512 00:29:22,100 --> 00:29:30,210 עכשיו מדובר בבעיה טובה שיש. 513 00:29:30,210 --> 00:29:37,660 בואו נראה. 514 00:29:37,660 --> 00:29:42,200 להפוך אותו לציבורי. 515 00:29:42,200 --> 00:29:46,450 מס 'חכה. 516 00:30:11,610 --> 00:30:13,160 הו, יקירים. 517 00:30:13,160 --> 00:30:18,590 אני לא יודע למה זה לא הצליח למצוא את זה. 518 00:30:18,590 --> 00:30:21,030 זה באמת מוזר. 519 00:30:21,030 --> 00:30:23,820 יש לי בכיתה זה ממש כאן. 520 00:30:23,820 --> 00:30:28,650 אני מניח שאולי יש לך - הו. 521 00:30:28,650 --> 00:30:32,010 אני כל כך מטומטם. שכחתי להוסיף תג PHP. 522 00:30:32,010 --> 00:30:34,670 זה למה. 523 00:30:34,670 --> 00:30:41,260 עכשיו אני צריך לבטל, כי השינוי של 1 אני פשוט עשיתי. 524 00:30:41,260 --> 00:30:44,270 >> אוקיי. הנה. 525 00:30:44,270 --> 00:30:47,500 זה היה ממש טיפשי. לא היו לי תג PHP פתיחה. 526 00:30:47,500 --> 00:30:49,900 אבל כפי שאתה יכול לראות, עכשיו זה עובד כמו שצריך, נכון? 527 00:30:49,900 --> 00:30:51,240 יש לנו הודעה 1. 528 00:30:51,240 --> 00:30:54,730 אנחנו תפסתי את ההודעה הראשונה, ועכשיו אנחנו הדפסנו הגוף שלה. 529 00:30:54,730 --> 00:30:58,010 גדול. פנטסטי. 530 00:30:58,010 --> 00:31:01,470 כל שאלות עד כה? 531 00:31:01,470 --> 00:31:04,100 לא ולא? כל שאלה? 532 00:31:04,100 --> 00:31:08,340 אוקיי, אז אנחנו פשוט יצרנו את פרסום המודל, מאוד בסיסיות, 533 00:31:08,340 --> 00:31:10,930 ואנחנו הולכים להוסיף כמה פונקציות בהמשך. 534 00:31:10,930 --> 00:31:13,600 אנחנו יכולים להוסיף אימותים וסינון. 535 00:31:13,600 --> 00:31:15,650 אימותים הן אחד הדברים 536 00:31:15,650 --> 00:31:18,150 שמסגרות לפתור בשבילך ממש ממש טובה, 537 00:31:18,150 --> 00:31:21,310 ואני לא חושב שהיה לך חבר 'ה לעשות את זה בשביל pset CS50 שלך, 538 00:31:21,310 --> 00:31:24,000 אבל אם אתה עושה את פיתוח אינטרנט במסגרת פרויקט הגמר שלך, 539 00:31:24,000 --> 00:31:26,280 אתה כנראה הולך רוצה לעשות איזשהו אימות, 540 00:31:26,280 --> 00:31:28,290 כמו שלא שמות משתמש ריקים, 541 00:31:28,290 --> 00:31:31,950 אולי יש לו את הסיסמה עם לפחות כמה אורך, דברים כאלה. 542 00:31:31,950 --> 00:31:34,750 וזה באמת מסורבל כדי ליישם את הדברים האלה בעצמנו, 543 00:31:34,750 --> 00:31:37,390 ופחות או יותר כל אחד ואינטרנט מסגרת עושה את זה בשבילך 544 00:31:37,390 --> 00:31:41,140 ומאפשר לך לעשות את זה בצורה מאוד נקייה. 545 00:31:41,140 --> 00:31:44,340 והמודל שבו אתה בדרך כלל להביע את כללי אימות אלה, 546 00:31:44,340 --> 00:31:48,790 כי זה מאמת אם מודל הוא תקף או לא. 547 00:31:48,790 --> 00:31:51,350 >> אבל לעת עתה, אנחנו הולכים לשים את זה למועד מאוחר יותר, 548 00:31:51,350 --> 00:31:53,520 ועכשיו אנחנו הולכים לעבוד על חלק אחר, 549 00:31:53,520 --> 00:31:55,400 ואנחנו הולכים לנסות ולעשות תצוגה חדשה 550 00:31:55,400 --> 00:31:59,580 המפרט את כל ההודעות. 551 00:31:59,580 --> 00:32:02,490 השלבים כרוכים בביצוע פעולה חדשה לרשימה של כל ההודעות 552 00:32:02,490 --> 00:32:04,810 הוא לתפוס רשימה של כל ההודעות 553 00:32:04,810 --> 00:32:11,990 ולאחר מכן להפוך את הרשימה של כל ההודעות שנכתבו על דרך נוף. 554 00:32:11,990 --> 00:32:16,420 כאן, למרבה המזל מספיק, אנחנו כבר תפסו את כל ההודעות 555 00:32:16,420 --> 00:32:20,310 שימוש בקו ראשון, למצוא את כל הפונקציה, 556 00:32:20,310 --> 00:32:22,520 ועכשיו מה שאנחנו הולכים לעשות הוא כל כך רחוק 557 00:32:22,520 --> 00:32:25,350 אני כבר הכנתי את הגוף של התגובה ישירה 558 00:32:25,350 --> 00:32:29,090 על ידי העברת החוט, אבל עכשיו אני רוצה להשתמש בתצוגה, 559 00:32:29,090 --> 00:32:31,870 ואת ההבדל בין מבט ופשוט עושה את זה 560 00:32:31,870 --> 00:32:35,330 הוא עם נוף שאני יכול לקבל תבנית יפה, גדולה ב-HTML, 561 00:32:35,330 --> 00:32:37,710 ומה אני יכול לעשות הוא להעביר אותו משתנים מסוימים 562 00:32:37,710 --> 00:32:42,200 ולאחר מכן יש את התצוגה באופן אוטומטי לאכלס תבניתה 563 00:32:42,200 --> 00:32:44,690 שימוש במשתנים אלה. 564 00:32:44,690 --> 00:32:50,780 מה אני אעשה הוא אני ליצור תצוגה חדשה, 565 00:32:50,780 --> 00:32:55,940 ואני שם את תצוגת משהו כמו "בלוג / מדד" 566 00:32:55,940 --> 00:33:08,480 ואני הולך בעצם להיקשר זה - אוי, מה אני כותב? 567 00:33:08,480 --> 00:33:12,910 המוח שלי הוא במקום אחר. 568 00:33:12,910 --> 00:33:16,600 אני הולך לקשור את ההודעות משתנים לתצוגה, 569 00:33:16,600 --> 00:33:19,950 כך שהדרך יש הנוף לגישה להודעה משתנה זה. 570 00:33:19,950 --> 00:33:26,140 >> ואז עכשיו אני צריך ליצור השקפה זו, 571 00:33:26,140 --> 00:33:28,500 אז הנה יש לנו תיקייה זו נקראת "צפיות" 572 00:33:28,500 --> 00:33:32,150 וראשון, אני הולך ליצור תיקייה חדשה תחת שנקרא "בלוג". 573 00:33:32,150 --> 00:33:35,810 זה נחמד. בדרך זו אנחנו יכולים להיות היררכיה נחמדה לדעותינו. 574 00:33:35,810 --> 00:33:43,910 ולאחר מכן אני הולך ליצור קובץ אחר שביש בשם "index.php". 575 00:33:43,910 --> 00:33:45,780 מדהים. 576 00:33:45,780 --> 00:33:52,930 בעצם, בואו נעיף את שניהם כאן. 577 00:33:52,930 --> 00:33:56,760 מה שהופך את קובץ תצוגה הוא כנראה החלק הפשוט ביותר של כל זה, 578 00:33:56,760 --> 00:33:59,090 ואלה הם ככל הנראה דברים שאתה כבר מכיר. 579 00:33:59,090 --> 00:34:01,240 אנחנו הולכים לעשות משהו ממש פשוט, 580 00:34:01,240 --> 00:34:05,360 תתחיל לומר, "רשימה שנכתב בבלוג שלי." 581 00:34:05,360 --> 00:34:14,860 אז אנחנו יכולים לעבור, 582 00:34:14,860 --> 00:34:17,920 ואנחנו יכולים לחזר דרך מערך הודעות, 583 00:34:17,920 --> 00:34:21,760 לתפוס כל הודעה ואומר משהו כמו - 584 00:34:21,760 --> 00:34:25,290 אולי להוסיף קו 585 00:34:25,290 --> 00:34:42,460 ולאחר מכן להדפיס את המחבר ואת הגוף. 586 00:34:42,460 --> 00:34:44,480 זה הגיוני עד כה? 587 00:34:44,480 --> 00:34:50,870 ובואו נראה אם ​​זה עובד. 588 00:34:50,870 --> 00:34:53,489 שום דבר לא קרה. 589 00:34:53,489 --> 00:34:55,090 אני תוהה למה. 590 00:34:55,090 --> 00:34:58,760 אוי, התגעגעתי שלב 1. מאוד טיפשי שלי. 591 00:34:58,760 --> 00:35:01,640 אני יצרתי את נוף, אבל לא להגדיר את התצוגה כתגובה, 592 00:35:01,640 --> 00:35:03,190 כך שאתה צריך לעשות 1 עוד דבר. 593 00:35:03,190 --> 00:35:12,610 אתה צריך לעשות "גוף תגובה זו" ולהגדיר אותו כתצוגה. 594 00:35:12,610 --> 00:35:14,760 הנה. 595 00:35:14,760 --> 00:35:17,200 יש לנו הכותרת שלנו, ואז יש לנו הודעה, 596 00:35:17,200 --> 00:35:20,500 וסתם בשביל הכיף, בואו יוסיפו עוד לכתוב 597 00:35:20,500 --> 00:35:23,390 כדי שנוכל לראות את רשימה. 598 00:35:31,800 --> 00:35:36,650 והכנס את 2 ההודעות הללו, 599 00:35:36,650 --> 00:35:39,500 ועכשיו אם אני לרענן את הדף, 600 00:35:39,500 --> 00:35:42,060 אנו רואים את כל ההודעות האלה כאן. 601 00:35:42,060 --> 00:35:44,250 >> האם זה הגיוני עד כה? 602 00:35:44,250 --> 00:35:46,400 כן, שאלה? אה, בסדר. 603 00:35:46,400 --> 00:35:51,440 כפי שניתן לראות, שהצלחנו להפריד את כל הקודים האלה החוצה 604 00:35:51,440 --> 00:35:53,920 למקטעים שונים, ואז אתה יכול לראות את זה ברור ביותר עם קוד התצוגה. 605 00:35:53,920 --> 00:35:57,810 קובץ זה כאן, המייצג את הנוף, 606 00:35:57,810 --> 00:36:01,220 זה רק דואג לייצוג נתונים, הצגת נתונים. 607 00:36:01,220 --> 00:36:04,310 שזה יעבור איזה נתונים, וכל שהיא עושה היא פשוט מראה לך את זה. 608 00:36:04,310 --> 00:36:07,660 בכל החלקים האחרים של הקוד שלך, אתה לא צריך לדאוג כל כך, 609 00:36:07,660 --> 00:36:10,480 ובאופן דומה, קוד המבט שלך לא צריך לדאוג שום דבר על 610 00:36:10,480 --> 00:36:13,390 איך לגשת אל מסד הנתונים וכן הלאה וכן הלאה, 611 00:36:13,390 --> 00:36:19,950 וזה באמת טוב ועושה את הקוד שלך הרבה יותר לתחזוקה. 612 00:36:19,950 --> 00:36:23,390 כמו שאמרתי, תצוגות, הם דינמיים שב 613 00:36:23,390 --> 00:36:27,080 זה קובץ 1, אבל זה היה ליצור תצוגות שונות 614 00:36:27,080 --> 00:36:29,940 המבוסס על המשתנים שאתה בעצם עובר ב, 615 00:36:29,940 --> 00:36:32,370 ויתר על כן, יש הרבה פונקציות עזר שונות 616 00:36:32,370 --> 00:36:34,230 כי אתה יכול להשתמש בו כדי לעזור לך לכתוב את הקוד שלך מהר יותר, 617 00:36:34,230 --> 00:36:36,320 שאני אראה לך בדיוק שני. 618 00:36:36,320 --> 00:36:38,050 כן. 619 00:36:38,050 --> 00:36:42,490 >> [סטודנטים] אז 0 $ הוא בקר, נכון? 620 00:36:42,490 --> 00:36:44,000 זה דבר שני. 621 00:36:44,000 --> 00:36:46,090 השאלה היא היא 0 $ הבקר? 622 00:36:46,090 --> 00:36:48,610 0 $ הוא משתנה שיצרתי כאן. 623 00:36:48,610 --> 00:36:51,320 אני יצרתי את תצוגה ראשונה. אני הטלתי אותו לכמה משתנה. 624 00:36:51,320 --> 00:36:54,960 ואז העברתי אותו לתפקיד הזה, להגדיר אותו כגוף של התגובה. 625 00:36:54,960 --> 00:36:57,260 האם זה הגיוני? 626 00:36:57,260 --> 00:37:02,200 [סטודנטים] אז דעה :: מפעל, היא תצוגה כמו בכיתה 627 00:37:02,200 --> 00:37:06,610 או פונקצית מפעל [לא ברור] בספרייה? 628 00:37:06,610 --> 00:37:10,640 השאלה היא על פונקצית תצוגה :: מפעל, 629 00:37:10,640 --> 00:37:14,020 ובעצם זה הוא חלק תכנות מונחה עצמים יותר במהותו. 630 00:37:14,020 --> 00:37:18,000 צפה בהוא ברמת התצוגה, ויש לה שיטה הנקראת "מפעל" 631 00:37:18,000 --> 00:37:24,170 וזה דרך כדי לתפוס את האובייקט ששם "בלוג / אינדקס." 632 00:37:24,170 --> 00:37:27,140 וזה עוד כמה דברים בתכנות מונחה עצמים 633 00:37:27,140 --> 00:37:33,010 שאני לא הולך להיכנס לכאן יותר מדי. 634 00:37:33,010 --> 00:37:36,400 עכשיו ברור, אנחנו רוצים ליצור הודעות חדשות, 635 00:37:36,400 --> 00:37:38,790 אבל אנחנו לא רוצים לעשות את זה דרך מסד נתונים, 636 00:37:38,790 --> 00:37:41,280 כך אנחנו הולכים ליצור פעולה חדשה ליצירת הודעה חדשה, 637 00:37:41,280 --> 00:37:43,050 ויש הרבה דברים שאנחנו צריכים לעשות. 638 00:37:43,050 --> 00:37:45,910 >> הדבר הראשון שאנחנו הולכים לעשות - בואו להתמודד עם הדברים האלה אחד אחד. 639 00:37:45,910 --> 00:37:48,320 הדבר הראשון שנעשינו הוא שיש לנו כדי ליצור טופס 640 00:37:48,320 --> 00:37:54,460 להוספת הודעה חדשה, 641 00:37:54,460 --> 00:37:57,360 אבל אני גם הולך להוסיף פעולה חדשה ראשונה, 642 00:37:57,360 --> 00:38:01,050 לכן הוספת פעולה חדשה היא פשוט קלה כמו 643 00:38:01,050 --> 00:38:03,490 הוספת פונקציה חדשה עם בקר שלך, 644 00:38:03,490 --> 00:38:13,710 ועכשיו אני הולך לעשות משהו מאוד בסיסי, 645 00:38:13,710 --> 00:38:20,850 פשוט לתפוס את ההשקפה זו ולפרסם אותו, רק להציג את זה בשבילך. 646 00:38:20,850 --> 00:38:26,220 ואז עכשיו אני הולך ליצור קובץ תצוגה חדש, 647 00:38:26,220 --> 00:38:33,690 ואני הולך להתחיל לכתוב כמה דברים. 648 00:38:33,690 --> 00:38:36,540 מה שיפה קוהנה הוא שהם מספקים הרבה פונקציות עזר שונות 649 00:38:36,540 --> 00:38:38,790 לך לכתוב קוד תצוגה בקלות רבה יותר, 650 00:38:38,790 --> 00:38:41,970 ו1 של פונקציות עזר אלו או מודולים עוזר 651 00:38:41,970 --> 00:38:45,860 הוא סביב כתיבת טפסים. 652 00:38:45,860 --> 00:38:49,460 לכתיבת טפסים, אני לא באמת צריך לכתוב ישירות כל ה-HTML בעצמי. 653 00:38:49,460 --> 00:38:51,100 אתם כתבו טפסי HTML. 654 00:38:51,100 --> 00:38:54,850 אתה יודע איך זה יכול להיות ממש ממש כואב ומסורבל לכתוב טפסים. 655 00:38:54,850 --> 00:38:59,970 זה לא כיף, אז למרבה המזל, 656 00:38:59,970 --> 00:39:04,860 אנחנו יכולים בעצם לכתוב טופס באמצעות קוהנה של 657 00:39:04,860 --> 00:39:11,190 ליצור פונקציות עוזר לעשות את זה בשבילנו. 658 00:39:11,190 --> 00:39:17,340 אנחנו הולכים להיות בעצם שדות לכל דבר ודבר שיש לנו, 659 00:39:17,340 --> 00:39:23,160 כל כך אחד למחברים ואחד לגופים. 660 00:39:23,160 --> 00:39:27,090 אנחנו הולכים יש תווית, ואנחנו הולכים להיות קלט. 661 00:39:37,450 --> 00:39:41,360 >> ולבסוף, אנחנו הולכים להיות הגשה. 662 00:39:49,350 --> 00:39:52,230 וכמו שאתה יכול לראות, זה הרבה יותר נקי לכתוב 663 00:39:52,230 --> 00:39:58,150 יותר מכל, כי ה-HTML המבולגן, שהוא סוג של נחמד. 664 00:39:58,150 --> 00:40:00,930 אמנם, יש אינטרנט במסגרות אחרות שיש להם את זה אפילו נקי יותר מזה, 665 00:40:00,930 --> 00:40:04,440 אבל לפחות זה יותר טוב מאשר לכתוב את ה-HTML בעצמך. 666 00:40:09,400 --> 00:40:11,130 מדהים, אז זה מה שאתה רואה. 667 00:40:11,130 --> 00:40:13,530 זה סוג של מבולגן, 668 00:40:13,530 --> 00:40:19,720 אז אני הולך להוסיף מעבר שורה יש 669 00:40:19,720 --> 00:40:21,180 כדי לגרום לזה להיראות קצת יותר נחמד. 670 00:40:21,180 --> 00:40:23,330 ובכן, כמובן, זה עדיין נראה ממש, ממש רע, אבל אנחנו פשוט התמקדנו 671 00:40:23,330 --> 00:40:26,050 על פונקציונלי לחברה ולא על האסתטיקה. 672 00:40:26,050 --> 00:40:28,010 אין זמן לעשות הכל. 673 00:40:28,010 --> 00:40:30,600 וכפי שאתם יכולים לראות, עכשיו יש לנו צורת סופר בסיסית, 674 00:40:30,600 --> 00:40:32,080 שהוא סוג של נחמד. 675 00:40:32,080 --> 00:40:36,730 קוד זה הייתי אומר שהוא נקי יותר ממנסה לכתוב HTML יוצר בעצמך, 676 00:40:36,730 --> 00:40:40,290 אז זה נחמד. 677 00:40:40,290 --> 00:40:42,030 מה הלאה? 678 00:40:42,030 --> 00:40:49,260 עכשיו אנחנו צריכים לעשות דברים בפעולה. 679 00:40:49,260 --> 00:40:51,240 בדרך כלל כשאתה כותב טפסים ב-HTML, 680 00:40:51,240 --> 00:40:54,070 אתה צריך להגיד לו לאן זה הולך לשלוח את הטופס ל. 681 00:40:54,070 --> 00:40:56,050 כברירת מחדל ברוב מסגרות אינטרנט, 682 00:40:56,050 --> 00:40:58,200 היא מגישה לאת הכתובת המדויקת, ולכן הדבר הוא, 683 00:40:58,200 --> 00:41:01,310 אם אתה שולח בקשה לגט / בלוג / חדש, 684 00:41:01,310 --> 00:41:03,240 זה אמור להציג לך את הצורה, 685 00:41:03,240 --> 00:41:06,810 אבל אם אתה שולח הודעה בקשה ל/ בלוג / חדש עם נתונים, 686 00:41:06,810 --> 00:41:10,000 זה בעצם צריך לנסות להציל את ההודעה כי 687 00:41:10,000 --> 00:41:13,300 ולעשות עם זה משהו. 688 00:41:20,630 --> 00:41:22,180 >> מה שאנחנו הולכים לעשות הוא 689 00:41:22,180 --> 00:41:25,320 בעצם כל מה שאנחנו צריכים לעשות כדי לבדוק אם זה פוסט בקשה או בקשת גט 690 00:41:25,320 --> 00:41:29,350 הוא לבדוק מה הם משתני ההודעה אתה יכול להגדיר. 691 00:41:29,350 --> 00:41:34,560 ואם ההודעה משתנה מוגדר, אז אנחנו הולכים לנסות וליצור הודעה חדשה. 692 00:41:34,560 --> 00:41:38,440 שוב, אנחנו פשוט עושים את זה, 693 00:41:38,440 --> 00:41:41,090 ושיוצר הודעה חדשה, ואנחנו ממש הולכים 694 00:41:41,090 --> 00:41:51,150 להגדיר שדות שלו כמו זה, 695 00:41:51,150 --> 00:41:55,640 ואז אנחנו הולכים לשמור אותו. 696 00:41:55,640 --> 00:41:59,200 ולאחר מכן אני הולך להפנות 697 00:41:59,200 --> 00:42:07,660 לדף האינדקס, כך שניתן לראות הרשימה של הודעות שלנו שוב. 698 00:42:07,660 --> 00:42:09,620 בואו ננסה את זה. 699 00:42:09,620 --> 00:42:15,160 אני אומר, "ברנדון," 700 00:42:15,160 --> 00:42:18,140 ולאחר מכן להגיש את ההודעה, ואם הכל ילך כשורה, 701 00:42:18,140 --> 00:42:21,390 כפי שאתה יכול לראות, זה מנותב אותי לדף האינדקס, 702 00:42:21,390 --> 00:42:24,140 ואם אני לגלול לתחתית, יש לנו הודעה חדשה שנוספה. 703 00:42:24,140 --> 00:42:26,430 יש! 704 00:42:26,430 --> 00:42:28,430 כן, שאלה. 705 00:42:28,430 --> 00:42:31,760 >> [סטודנטים] מה אם אתה נכנס בדיוק אותו דבר 706 00:42:31,760 --> 00:42:33,380 אתה נכנס קודם? 707 00:42:33,380 --> 00:42:36,950 האם זה לבדוק כדי לוודא שאתה לא תשוכפל 708 00:42:36,950 --> 00:42:38,810 באותה ההגשה? 709 00:42:38,810 --> 00:42:41,660 להיות ברירת מחדל, לא, כי כברירת מחדל - 710 00:42:41,660 --> 00:42:46,470 מצטער, השאלה היא אם אתה נכנסת בדיוק באותם נתונים בצורה 711 00:42:46,470 --> 00:42:50,180 ולהגיש את זה, האם זה יאפשר לך להוסיף אובייקט כפול, 712 00:42:50,180 --> 00:42:52,550 לשכפל כניסה, בעצם? 713 00:42:52,550 --> 00:42:54,070 נכון לעכשיו, כן, זה יאפשר לך לעשות את זה, 714 00:42:54,070 --> 00:42:58,860 כי במסדי נתונים זה חוקי לחלוטין שיש שורות כפולות לחלוטין, 715 00:42:58,860 --> 00:43:02,260 אבל אם זה חשש, אז אתה יכול להוסיף אימותים, למשל, 716 00:43:02,260 --> 00:43:06,430 כדי לוודא שאם זה בדיוק אותו הדבר כמו משהו שכבר קיים, 717 00:43:06,430 --> 00:43:08,720 אז אומר שזה אובייקט לא חוקי, 718 00:43:08,720 --> 00:43:11,200 ואז אתה יכול גם לציין את הודעת השגיאה שלך 719 00:43:11,200 --> 00:43:14,390 ואומר, "לא חוקי משום שזה כבר קיים", או משהו כזה. 720 00:43:14,390 --> 00:43:22,420 אבל במקרה הזה, אני יכול רק ליצור משהו כפול. 721 00:43:22,420 --> 00:43:26,010 עכשיו בואו ננסה ולהוסיף כמה אימותים. 722 00:43:26,010 --> 00:43:30,400 הבעיה עם זה כרגע היא ש 723 00:43:30,400 --> 00:43:34,220 פשוטו כמשמעו, אני יכול להגיש הודעה ריקה לחלוטין. 724 00:43:34,220 --> 00:43:37,500 אני יכול ללחוץ על הכפתור הזה עכשיו, ושם אנחנו הולכים. 725 00:43:37,500 --> 00:43:40,290 אתה לא באמת יכול לראות את זה, אבל קו נוסף זה כאן 726 00:43:40,290 --> 00:43:43,830 מציין כי אני ממש צריך הודעה חדשה. 727 00:43:43,830 --> 00:43:46,050 זה פשוט יש לו מחבר ריק וגוף ריק, 728 00:43:46,050 --> 00:43:48,630 ואנחנו לא רוצים לאפשר לאנשים לעשות את זה. 729 00:43:48,630 --> 00:43:52,550 זה מקום שבי האימות נכנס 730 00:43:52,550 --> 00:43:57,540 >> אני יכול ללכת לאובייקט המודל שלי, 731 00:43:57,540 --> 00:43:59,530 ועכשיו אני יכול להוסיף פונקציה חדשה המציינת 732 00:43:59,530 --> 00:44:02,000 מה אימות כללים אני צריך להוסיף למודל זה 733 00:44:02,000 --> 00:44:06,840 כדי לוודא שזה חוקי או כדי לציין מה זה אומר להיות הודעה ברה תוקף? 734 00:44:06,840 --> 00:44:10,210 ואני רוצה להגיד שזה רק הודעה ברה תוקף אם שני הסופר וגוף 735 00:44:10,210 --> 00:44:15,150 אינם ריקים, וזה איך אתה עושה את זה בקוהנה. 736 00:44:15,150 --> 00:44:18,750 אתה יוצר פונקציה חדשה בשם "חוקים" 737 00:44:18,750 --> 00:44:20,210 ואז אתה בעצם להחזיר מערך אסוציאטיבי 738 00:44:20,210 --> 00:44:24,230 המגדיר את כללי אימות עבור אובייקט זה. 739 00:44:24,230 --> 00:44:27,530 אנחנו הולכים כדי להחזיר את המערך, ואז מה שאנחנו הולכים לעשות הוא 740 00:44:27,530 --> 00:44:32,820 לומר "מחבר," זה הולך למערך, 741 00:44:32,820 --> 00:44:37,720 אשר הולך למערך נוסף בשם "לא ריק". 742 00:44:37,720 --> 00:44:41,480 ולאחר מכן אני הולך לומר "גוף". 743 00:44:50,980 --> 00:44:54,120 אוקיי, ותחביר לזו ומבנה לכך 744 00:44:54,120 --> 00:44:56,530 אולי נראה קצת מסורבל וקצת מסובך. 745 00:44:56,530 --> 00:44:59,330 אם תקראו את התיעוד, זה די פשוט להבין, 746 00:44:59,330 --> 00:45:02,500 אבל בעצם זה מה שאתה צריך לעשות כדי לציין 747 00:45:02,500 --> 00:45:04,130 כמה כללי אימות, ויש הרבה חוקים השונים 748 00:45:04,130 --> 00:45:06,810 שקוהנה תיתן לך בחינם, כמו שאתה יכול להוסיף כללים לומר 749 00:45:06,810 --> 00:45:08,410 זה חייב להיות לפחות באורך הזה. 750 00:45:08,410 --> 00:45:11,800 אולי זה צריך להיות מספרי. אולי זה צריך להיות אלפא נומרי. 751 00:45:11,800 --> 00:45:14,410 אולי זה צריך להיות לכל היותר באורך זה, וכך הלאה וכך הלאה. 752 00:45:14,410 --> 00:45:17,730 ישנם הרבה כללים שונים שקוהנה מספקת בשבילך, 753 00:45:17,730 --> 00:45:19,610 ואתה יכול ללכת על אתר האינטרנט שלהם, מסתכל על התיעוד, 754 00:45:19,610 --> 00:45:23,150 ואתה יכול לראות את כל דברים השונים שאתה יכול לעשות. 755 00:45:23,150 --> 00:45:25,650 >> אבל זה כל מה שאני צריך לעשות, 756 00:45:25,650 --> 00:45:30,490 ועכשיו בואו נראה מה קורה 757 00:45:30,490 --> 00:45:34,060 אם אני מגיש את הודעה ריקה. 758 00:45:34,060 --> 00:45:36,960 מה הולך לקרות? הו, לא, אני מקבל הודעת שגיאה. 759 00:45:36,960 --> 00:45:39,440 אני מקבל חריג אימות. 760 00:45:39,440 --> 00:45:41,070 ובכן, זה טוב. 761 00:45:41,070 --> 00:45:43,200 זה אמר לי שהמודל שלי הוא לא חוקי, 762 00:45:43,200 --> 00:45:45,780 אבל אני לא רוצה להציג את יוצא מן הכלל 763 00:45:45,780 --> 00:45:48,720 למשתמשים שלי כשהם מנסים להגיש משהו לא חוקי, נכון? 764 00:45:48,720 --> 00:45:51,560 אני רוצה לתת להם איזה הודעת שגיאה ידידותית יותר 765 00:45:51,560 --> 00:45:53,610 כאשר משהו משתבש. 766 00:45:53,610 --> 00:46:01,830 מה שאנחנו הולכים לעשות הוא שאנחנו הולכים 767 00:46:01,830 --> 00:46:04,490 לעטוף את הכל בלולאה לתפוס לנסות. 768 00:46:04,490 --> 00:46:06,750 למעשה, אני חושב שזה גם משהו שאתה לא למדת עדיין 769 00:46:06,750 --> 00:46:10,820 בCS50, כי C, שפת תכנות C, 770 00:46:10,820 --> 00:46:14,000 אין יוצאים מן הכלל, אבל כמעט כל שפה אחרת 771 00:46:14,000 --> 00:46:16,700 יש יוצאים מן הכלל, כך שבאמת, באמת בקצרה, 772 00:46:16,700 --> 00:46:19,430 יוצא מן הכלל הוא משהו שפיסת הקוד יכולה 773 00:46:19,430 --> 00:46:21,430 לזרוק חריג כאשר משהו משתבש, 774 00:46:21,430 --> 00:46:23,410 אבל אז אולי קצת פיסת הקוד אחרת גבוהה יותר 775 00:46:23,410 --> 00:46:25,810 יכול לתפוס את החריג ושלעשות עם זה משהו. 776 00:46:25,810 --> 00:46:27,710 >> לדוגמא, במקרה זה, 777 00:46:27,710 --> 00:46:29,940 קטע קוד שמנסה להציל את מודל, 778 00:46:29,940 --> 00:46:33,170 זה מאמת את המודל, ואם הוא אומר, "אוקיי, מודל זה הוא לא חוקי", 779 00:46:33,170 --> 00:46:36,150 זה הולך לזרוק את היוצא מן הכלל, וזה סוג של שווה ערך ל 780 00:46:36,150 --> 00:46:39,870 ב-C אתה יכול להחזיר -1 או משהו כזה. 781 00:46:39,870 --> 00:46:42,320 ולאחר מכן בשבילי, בפונקציה זו, הקוד שלי 782 00:46:42,320 --> 00:46:46,310 ברמה גבוהה יותר, אני יכול לנסות ולתפוס את החריג ש 783 00:46:46,310 --> 00:46:49,330 ובעצם אומר, "בסדר, אם אני תופס את היוצא מן הכלל, מה אני הולך לעשות?" 784 00:46:49,330 --> 00:46:51,570 או שאני יכול לבחור שלא נתפוס את החריג ושלתת למישהו גבוה יותר 785 00:46:51,570 --> 00:46:54,400 לתפוס את היוצא מן הכלל, או אם אף אחד לא תופס אותו, 786 00:46:54,400 --> 00:46:56,820 אז כל תכנית קורסת ואומרת, 787 00:46:56,820 --> 00:46:59,170 "משהו השתבש, ואני לא יכול להתמודד עם זה." 788 00:46:59,170 --> 00:47:04,490 >> אבל מה שאנחנו עושים הוא שאתה עוטף את פיסת הקוד בבלוק try, 789 00:47:04,490 --> 00:47:09,030 ואז אתה גם להוסיף משהו שנקרא לתפוס לחסום, 790 00:47:09,030 --> 00:47:17,300 שהוא הסוג של קוד שינסה לתפוס את החריגים שעלולים להתרחש. 791 00:47:17,300 --> 00:47:20,430 ולכן אם אני תופס את החריג המסוים הזה 792 00:47:20,430 --> 00:47:23,110 או חריג פסילה, אז מה אני הולך לעשות הוא 793 00:47:23,110 --> 00:47:31,210 אני הולך להגדיר את הטעויות - אני חושב שזה איך אני עושה את זה - 794 00:47:31,210 --> 00:47:35,370 ואני הולך להגדיר את השגיאות לאובייקט כלשהו. 795 00:47:35,370 --> 00:47:40,920 ואז מה שאני הולך לעשות הוא אם הוא פוגע חריג זה, 796 00:47:40,920 --> 00:47:43,090 זה לא הולך לניתוב מחדש, ואם זה לא להפנות, 797 00:47:43,090 --> 00:47:46,160 זה הולך לצאת מאם הבלוג 798 00:47:46,160 --> 00:47:49,920 והכה את הבלוג הזה / חדש, שרוצה שאני רוצה לעשות. 799 00:47:49,920 --> 00:47:53,190 אם יש שגיאה, אז אני רוצה לחזור לטופס 800 00:47:53,190 --> 00:47:55,100 ולהציג שגיאות אלו. 801 00:47:55,100 --> 00:48:00,780 עכשיו מה שאני רוצה לעשות הוא שאני רוצה לעבור לשגיאות אלה 802 00:48:00,780 --> 00:48:07,010 לתצוגה. 803 00:48:07,010 --> 00:48:10,360 אוקיי, אני חושב שיש לי את הנוף כאן, 804 00:48:10,360 --> 00:48:14,660 ובעצם אני רוצה להציג השגיאות האלה אם הם קיימים. 805 00:48:14,660 --> 00:48:19,740 לפני שאני כותב את ה-HTML בשביל זה, אני הולך באמת למהירות 806 00:48:19,740 --> 00:48:21,720 להראות לך מה המבנה של זה שגיאות מבטים משתנים אוהבים, 807 00:48:21,720 --> 00:48:23,080 וזה תרגול טוב באופן כללי. 808 00:48:23,080 --> 00:48:25,070 הרבה פעמים אתה מקבל משהו בחזרה מכל שיטה, 809 00:48:25,070 --> 00:48:27,250 כמה פונקציה במסגרת האינטרנט, 810 00:48:27,250 --> 00:48:29,410 ואתה לא יודע מה שנראה כמו משתנה, 811 00:48:29,410 --> 00:48:31,210 אז אתה לא יודע איך לעבוד עם זה. 812 00:48:31,210 --> 00:48:37,790 אני הולך להשתמש בשיטת r הדפסה בעצם להדפיס אותו. 813 00:48:37,790 --> 00:48:41,100 >> וכמו שאתה יכול לראות, זה אומר לי שזה מערך לקשר, 814 00:48:41,100 --> 00:48:44,880 ויש לך מפתח, מחבר, נקודות למחרוזת זו, 815 00:48:44,880 --> 00:48:47,050 המחבר אינו יכול להיות ריק, ועוד מפתח, גוף, 816 00:48:47,050 --> 00:48:49,680 נקודות לעוד מחרוזת, גוף אינו יכולות להיות ריקות. 817 00:48:49,680 --> 00:48:52,130 אני, כאילו, בסדר, מגניב. 818 00:48:52,130 --> 00:48:56,230 אז אני יכול לחזר באמצעות המערך ולהדפיס את כל הודעה בודדת. 819 00:48:56,230 --> 00:49:02,150 זה בעצם כמו מערך אסוציאטיבי עם חבורה של הודעות. 820 00:49:02,150 --> 00:49:13,500 מה שאני הולך לעשות הוא "אם שגיאות," 821 00:49:13,500 --> 00:49:17,140 ואני הולך ליצור רשימה לא מסודרת, 822 00:49:17,140 --> 00:49:20,860 ואני הולך לחזר דרך כל השגיאות. 823 00:49:33,730 --> 00:49:38,710 ואת זה, ועכשיו אני הולך לנסות לשלוח את זה שוב, 824 00:49:38,710 --> 00:49:41,200 ובואו נראה מה שאנחנו מקבלים. 825 00:49:41,200 --> 00:49:45,370 עכשיו אנחנו מקבלים רשימה נחמדה של טעויות, 826 00:49:45,370 --> 00:49:48,630 וזה עדיין די מכוער, אבל זה כמובן יכול להיות מעוצב כדי להיראות יפה, 827 00:49:48,630 --> 00:49:51,620 אבל הרעיון הבסיסי הוא פשוט בכמה שורות של קוד, 828 00:49:51,620 --> 00:49:53,720 היינו יכול לאמת את המודל שלנו, 829 00:49:53,720 --> 00:49:56,510 לוודא שתחומים מסוימים לא היו ריקים, 830 00:49:56,510 --> 00:49:59,740 ואם משהו ישתבש, ואז לחזור איזה הודעת שגיאה 831 00:49:59,740 --> 00:50:01,760 אז אני יכול להציג בחזרה למשתמש. 832 00:50:01,760 --> 00:50:03,910 ניתן גם להתאים אישית האימות שלך 833 00:50:03,910 --> 00:50:07,590 כך שאתה יכול למעשה יש הודעת שגיאה 834 00:50:07,590 --> 00:50:09,620 כי הוא יותר ספציפי ליישום או משהו כזה שלך. 835 00:50:09,620 --> 00:50:14,600 כל מה שהוא בדרך כלל להתאמה אישית. 836 00:50:14,600 --> 00:50:17,150 >> לרוע המזל, אנחנו הולכים ואוזל זמן, 837 00:50:17,150 --> 00:50:20,040 אז אני הולך לצריך לנתק את מושב הקידוד לחיות כאן. 838 00:50:20,040 --> 00:50:22,980 יש חבורה של תכונות אחרות שאני רוצה להראות לך 839 00:50:22,980 --> 00:50:25,650 בדוגמא זו. 840 00:50:25,650 --> 00:50:27,620 לדוגמא, אתה יכול להוסיף תבניות לאתר שלך, 841 00:50:27,620 --> 00:50:31,110 אז אולי יש איזה סוג של קוד ה-HTML שברצונך להחיל 842 00:50:31,110 --> 00:50:35,190 לכל דף באתר שלך, ובמקום שהדבקה 843 00:50:35,190 --> 00:50:40,630 בכל קובץ תצוגה יש לך, שללא ספק יהיה מנהג רע, 844 00:50:40,630 --> 00:50:43,020 בעצם אתה יכול להגדיר תבניות אלה, 845 00:50:43,020 --> 00:50:46,660 ולאחר מכן בבקר שלך אומר, "אוקיי, אני משתמש בתבנית זו." 846 00:50:46,660 --> 00:50:50,130 "האם כל דעותיי להשתמש בתבנית זו." 847 00:50:50,130 --> 00:50:52,470 והדבר האחרון שאני רוצה להראות לך גם כן 848 00:50:52,470 --> 00:50:57,800 כי אין לנו זמן להוא Scripting בין האתרים, 849 00:50:57,800 --> 00:51:01,430 ובעצם אני חושב שחבר 'ה שראה כנראה בCS50 - 850 00:51:01,430 --> 00:51:03,770 אני חושב שהדוד מלאן כנראה דיבר על איך אתה בדרך כלל יכול להזריק 851 00:51:03,770 --> 00:51:08,040 קוד JavaScript ל-- יש לך דיבר על זה? 852 00:51:08,040 --> 00:51:10,220 אולי? אולי לא? 853 00:51:10,220 --> 00:51:12,670 >> אבל הרבה פעמים אתה יכול להזריק קוד JavaScript זדוני 854 00:51:12,670 --> 00:51:15,630 לתוך מסד הנתונים של מישהו, ואם הם לא לברוח כמו שצריכים, 855 00:51:15,630 --> 00:51:18,280 לאחר מכן, כאשר הם מציגים נתונים שבחזרה למשתמש, 856 00:51:18,280 --> 00:51:21,310 אז זה יכול להפעיל איזשהו קוד JavaScript האקראי אתה לא רוצה שקורה, 857 00:51:21,310 --> 00:51:23,050 ואני הולך להפגין איך אתה הייתי עושה את זה בתוך קוהנה. 858 00:51:23,050 --> 00:51:25,380 זה בעצם ממש ממש קל. 859 00:51:25,380 --> 00:51:31,920 אני יכול לעשות את זה עכשיו ב2 שניות, פשוטו כמשמעו. 860 00:51:31,920 --> 00:51:34,560 כל מה שאתה צריך לעשות זה בעצם לעטוף את הדברים האלה 861 00:51:34,560 --> 00:51:46,920 בדבר הזה שנקרא ישויות HTML. 862 00:51:46,920 --> 00:51:51,180 וזה יהיה באופן אוטומטי לברוח כל הדמויות כראוי 863 00:51:51,180 --> 00:51:54,730 וודא שאתה לא מקבל את הבעיה הזו. 864 00:51:54,730 --> 00:51:57,220 [סטודנטים] אתה כוסמין המבחן הראשון באופן שגוי. 865 00:51:57,220 --> 00:52:01,030 [ברנדון ליו] אה, אופס. 866 00:52:01,030 --> 00:52:06,420 >> אוקיי, זה כל מה שהיה לי לחלוק איתכם להיום. 867 00:52:06,420 --> 00:52:09,930 שקופיות אלה הולכים להתפרסם, אבל אלה הם בדרך כלל 868 00:52:09,930 --> 00:52:13,900 המשאבים היחידים שאתה צריך באמת צריך כדי להתחיל עם קוהנה. 869 00:52:13,900 --> 00:52:16,770 אתה יכול ללכת לאתר האינטרנט. יש להם מדריך למשתמש, ויש להם גם חוקר ה-API. 870 00:52:16,770 --> 00:52:20,630 אנחנו יכולים לחקור את כל הפונקציות שונות ופונקציות עזר יש להם בשבילך. 871 00:52:20,630 --> 00:52:22,070 בדרך כלל יש להם מספיק מידע באתר 872 00:52:22,070 --> 00:52:25,310 כי אתה יכול להשתמש בו כדי להתחיל ולקבל הולך עם קוהנה. 873 00:52:25,310 --> 00:52:30,840 אין הדרכות כי רבות, אני חושב, לקוהנה, מחוץ 874 00:52:30,840 --> 00:52:33,880 מה יש להם באתר כאן, אז זה כנראה ההימור הטוב ביותר שלך. 875 00:52:33,880 --> 00:52:35,600 אבל אם אתה רוצה ללכת למסגרת האינטרנט 876 00:52:35,600 --> 00:52:37,120 ואתה לא רוצה צריך להרים את שפה חדשה, 877 00:52:37,120 --> 00:52:39,780 ואתה רוצה משהו שהוא יחסית קל משקל ויש לו עקומה למידה קלה, 878 00:52:39,780 --> 00:52:41,570 אני בהחלט הייתי מציע קוהנה. 879 00:52:41,570 --> 00:52:44,040 זאת כנראה ההצעה הטובה ביותר לכך. 880 00:52:44,040 --> 00:52:46,830 הדבר המצחיק, אם כי, הוא אם אנחנו היו באמצעות Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 היינו יכול לשכפל את מה שאנחנו פשוט עשו 882 00:52:48,550 --> 00:52:51,430 וכנראה יותר בתחת 3 דקות. 883 00:52:51,430 --> 00:52:54,710 לא בדיחה, אבל לומד Ruby on Rails לוקחת הרבה יותר זמן 884 00:52:54,710 --> 00:52:56,780 ממה שהוא היה לוקח ללמוד קוהנה. 885 00:52:56,780 --> 00:52:58,840 זה בעצם הבחירה שלך על מה שאתה רוצה לבחור ללמוד, 886 00:52:58,840 --> 00:53:01,260 אבל אם אתה רוצה להתחיל לעבוד במהירות, 887 00:53:01,260 --> 00:53:03,870 קוהנה היא בהחלט בחירה טובה מאוד. 888 00:53:03,870 --> 00:53:06,730 >> כל שאלות האחרונות לפני שנסיים? כן. 889 00:53:06,730 --> 00:53:08,020 [סטודנטים] איך היינו לשלב כי 890 00:53:08,020 --> 00:53:13,120 במסגרת CSS כמו שהיית באמצעות כשהיית מורה? 891 00:53:13,120 --> 00:53:16,700 השאלה היא איך היינו לשלב את זה עם מסגרת CSS? 892 00:53:16,700 --> 00:53:18,740 מה שאנחנו כנראה עושים זה כנראה יכלול 893 00:53:18,740 --> 00:53:21,090 תיקייה חדשה שבו היינו לזרוק את כל קבצי CSS שלנו, 894 00:53:21,090 --> 00:53:23,010 ואז היינו גם להוסיף תבנית חדשה. 895 00:53:23,010 --> 00:53:26,090 בתבנית שהיינו כולל קבצי CSS אלה 896 00:53:26,090 --> 00:53:28,410 כדי לוודא שהם מפנה בכל עמוד אחד, 897 00:53:28,410 --> 00:53:32,220 ולאחר מכן כאשר אתה בעצם כותב HTML, 898 00:53:32,220 --> 00:53:34,010 אתה פשוט להוסיף כיתות ומה לא מתאימות, 899 00:53:34,010 --> 00:53:36,100 ולדוגמה, כאשר אתה משתמש במשהו כמו הטופס 900 00:53:36,100 --> 00:53:40,710 פונקציה עוזר, אתה יכול להוסיף עוד פרמטרים אחר כך 901 00:53:40,710 --> 00:53:42,830 כדי לציין מה שיעורים אתה רוצה להיות מחובר לדברים שונים 902 00:53:42,830 --> 00:53:47,820 כדי שנוכל לעצב אותו כמו שצריך, וזה בעצם איך היית הולך. 903 00:53:47,820 --> 00:53:50,100 >> יש עוד שאלות? 904 00:53:50,100 --> 00:53:52,090 מדהים. 905 00:53:52,090 --> 00:53:58,540 תודה לך על הזמן שלך, ותודה שבאת. 906 00:53:58,540 --> 00:54:05,170 אני לא הולך להוסיף הרבה מאוד אחר, 907 00:54:05,170 --> 00:54:08,560 אבל 1 דבר ממש מהיר הוא שאין לנו קישור 908 00:54:08,560 --> 00:54:12,590 לטופס. 909 00:54:12,590 --> 00:54:14,310 באמת מטומטם. 910 00:54:14,310 --> 00:54:20,110 בואו נוסיף - למעשה בתצוגה, בלוג, אינדקס, 911 00:54:20,110 --> 00:54:23,890 בואו באמת במהירות להוסיף קישור שהולך לדף החדש, 912 00:54:23,890 --> 00:54:26,770 הדף שבו אנחנו יכולים להוסיף הודעה חדשה. 913 00:54:26,770 --> 00:54:29,950 אנחנו הולכים לעשות את זה. 914 00:54:29,950 --> 00:54:34,020 מה שיפה הוא שיש קבוצה שלמה של פונקציות עוזר HTML 915 00:54:34,020 --> 00:54:37,090 שעושים דברים שונים עבורך, כך שאתה כבר ראית את הגופים 916 00:54:37,090 --> 00:54:41,980 לתפקד כאן, אבל יש להם גם פונקציה שנקראת "עוגן" 917 00:54:41,980 --> 00:54:45,400 שבו אתה יכול להקליד בבלוג / חדש 918 00:54:45,400 --> 00:54:49,550 ואומר, "פוסט בבלוג חדש". 919 00:54:49,550 --> 00:54:51,850 וזה יהיה ליצור קישור זה בשבילך, 920 00:54:51,850 --> 00:54:54,120 וזה נראה באמת טריוויאלי לעשות, אבל זה נחמד, 921 00:54:54,120 --> 00:54:58,720 כי נניח שאתה מעביר את האתר שלך מתחום של 1 למשנו. 922 00:54:58,720 --> 00:55:01,390 ואם אתה רק כתבתי את כתובות האתר בעצמך, 923 00:55:01,390 --> 00:55:04,350 אז היית צריך לשנות את כל כתובות האתרים. 924 00:55:04,350 --> 00:55:06,850 או שאולי אתה עבר אותו מתיקיית המשנה 1 למשנה אחרת. 925 00:55:06,850 --> 00:55:08,790 היית צריך לשנות את כל כתובות אתרים אלה בעצמך, 926 00:55:08,790 --> 00:55:12,180 וזה לא כיף. 927 00:55:12,180 --> 00:55:14,510 אתה יכול להשתמש בעוגן זה ממש כאן, 928 00:55:14,510 --> 00:55:18,950 ואתה יכול לשנות את התחום או את קידומת תיקיית משנה 929 00:55:18,950 --> 00:55:20,640 בקובץ התצורה פעם אחת, 930 00:55:20,640 --> 00:55:22,980 ואז זה יהיה להחיל את זה בכל מקום, וזה, שוב, 931 00:55:22,980 --> 00:55:26,930 דוגמה מצוינת לא לחזור על עצמך, ייבוש הקוד שלך החוצה. 932 00:55:26,930 --> 00:55:30,370 בכל מקום שאתה חוזר על עצמך, לנסות ולחלץ בסוג כלשהו של קובץ תצורה 933 00:55:30,370 --> 00:55:34,160 או לתפקיד שונה ויש לו להתמודד עם זה בשבילך. 934 00:55:34,160 --> 00:55:42,930 >> והדבר האחרון שאני רוצה להראות לך היה 935 00:55:42,930 --> 00:55:50,250 מניח שחזרנו בפוסט הזה, ואני הלחנתי כמה מאמר באמת ארוך, 936 00:55:50,250 --> 00:55:52,670 אבל שכחתי לכלול המחבר שלי. 937 00:55:52,670 --> 00:55:55,210 כעת, כאשר אני לוחץ על "שלח הודעה" 938 00:55:55,210 --> 00:55:57,270 אני פשוט איבדתי את הכל. 939 00:55:57,270 --> 00:56:00,000 לא! באמת עצוב. 940 00:56:00,000 --> 00:56:03,870 אז איך אתם מתמודדים עם זה? 941 00:56:03,870 --> 00:56:06,070 זה מה שאנחנו עושים. 942 00:56:06,070 --> 00:56:09,340 מה שאנחנו עושים כאן לפונקציות אזור טקסט קלט ואלה, 943 00:56:09,340 --> 00:56:12,700 אם תכללו את פרמטר שני, ולאחר מכן ערך שהפרמטר השני 944 00:56:12,700 --> 00:56:16,620 הולך להיות מה שהתחום הולך להיות מאוכלס בתחילה. 945 00:56:16,620 --> 00:56:23,570 מה שאנחנו יכולים לעשות הוא בבקר בבלוג שלנו, 946 00:56:23,570 --> 00:56:25,360 אנחנו יכולים להיקשר משתנה אחרת. 947 00:56:25,360 --> 00:56:27,050 קורא לזה "ערכים" אולי. 948 00:56:27,050 --> 00:56:30,620 ולהעביר בהודעת המערך, פשוטו כמשמעו. 949 00:56:30,620 --> 00:56:32,620 זה אומר שאם האימות נכשלה, 950 00:56:32,620 --> 00:56:36,570 עובר לי בהודעה המערך שהגשתי מהבקשה האחרונה, 951 00:56:36,570 --> 00:56:38,420 וככה אני יכול להשתמש בערכים מההגשה האחרונה שלי 952 00:56:38,420 --> 00:56:44,540 כדי לאכלס מחדש את השדות. 953 00:56:44,540 --> 00:56:49,600 עכשיו אני יכול לעשות משהו כזה מחבר ערכים 954 00:56:49,600 --> 00:56:55,180 וערכים בגוף, וככה עכשיו אם אני עושה כמה דברים אקראיים 955 00:56:55,180 --> 00:57:01,490 ולחץ על "שלח הודעה", ואז הוא נשאר שם. 956 00:57:01,490 --> 00:57:03,830 אבל אנחנו הולכים לרוץ לתוך בעיה נוספת. 957 00:57:03,830 --> 00:57:07,670 זה עובד, אבל אם אני הולך לדף בפעם הראשונה, 958 00:57:07,670 --> 00:57:09,720 זה הולך לקרוס, וזה בגלל שהפעם הראשונה 959 00:57:09,720 --> 00:57:13,730 אנחנו הולכים לדף, הודעה משתנה זה לא הוגדר עדיין. 960 00:57:13,730 --> 00:57:18,170 זה ריק. זה לא קיים. 961 00:57:18,170 --> 00:57:21,630 >> ומה שאנחנו רוצים לומר הוא שאם המפתח הזה קיים, 962 00:57:21,630 --> 00:57:27,750 לאחר מכן להחזיר את הערך של מערך זה, 963 00:57:27,750 --> 00:57:30,450 אבל אם המפתח אינו קיים, ולאחר מכן להחזיר מחרוזת ריקה. 964 00:57:30,450 --> 00:57:32,150 זה פונקציונלי שאנחנו רוצים כאן. 965 00:57:32,150 --> 00:57:34,690 אנחנו רוצים לבדוק אם המפתח קיים לפני שאתה מנסה לגשת למערך, 966 00:57:34,690 --> 00:57:36,580 ולמרבה המזל מספיק, 967 00:57:36,580 --> 00:57:38,570 קוהנה גם נותנת לנו פונקציה עוזר לכך. 968 00:57:38,570 --> 00:57:41,040 יש להם חבילה שלמה של פונקציות 969 00:57:41,040 --> 00:57:43,660 תחת השם ARR, קיצור של מערך, 970 00:57:43,660 --> 00:57:45,800 ויש להם פונקציה 1 בשם "מקבל", 971 00:57:45,800 --> 00:57:48,690 ואתה יכול לעבור במערך, 972 00:57:48,690 --> 00:57:50,740 ואתה יכול להעביר בשמו של המפתח. 973 00:57:50,740 --> 00:57:54,330 אז בעצם מה זה יעשה זה ינסה להשיג את המפתח הזה, 974 00:57:54,330 --> 00:57:56,470 אבל אם מפתח שאינו קיים במערך, 975 00:57:56,470 --> 00:58:00,900 לאחר מכן הוא יחזור ריק, או שאנחנו יכולים גם לציין ברירת מחדל, אני מאמין, 976 00:58:00,900 --> 00:58:03,500 וזה נחמד. 977 00:58:09,740 --> 00:58:13,150 עכשיו, אם אנחנו עושים את אותו הדבר שוב, 978 00:58:13,150 --> 00:58:15,970 אז אתה רואה עכשיו זה עובד בפעם הראשונה, 979 00:58:15,970 --> 00:58:18,080 ושוב, אם אנחנו מקלידים כמה דברים אקראיים 980 00:58:18,080 --> 00:58:23,210 ולנסות ולהגיש, אז הוא נשאר שם. 981 00:58:23,210 --> 00:58:31,640 >> ואני מניח שאני יכול גם להראות לך כיצד להוסיף תבנית ממש מהר. 982 00:58:31,640 --> 00:58:36,140 מה אנחנו יכולים לעשות ראשון הוא שאנחנו יכולים להוסיף תצוגה חדשה בשם "template.php" 983 00:58:36,140 --> 00:58:38,890 בתוך תיקיית צפיות, 984 00:58:38,890 --> 00:58:44,730 ומה שאני הולך לעשות הוא אני הולך להדפיס משהו שנקרא "תוכן" 985 00:58:44,730 --> 00:58:49,130 שהוא הולך להיות התוכן העיקרי שלי. 986 00:58:49,130 --> 00:58:51,380 ואולי בתחתית מאוד אני הולך להוסיף, למשל, 987 00:58:51,380 --> 00:58:53,340 זכויות יוצרים. 988 00:58:53,340 --> 00:58:56,150 [שאלת תלמיד לא נשמעה] 989 00:58:56,150 --> 00:58:58,050 [ברנדון ליו] אולי זו תבנית העל בסיסית אני רוצה להשתמש. 990 00:58:58,050 --> 00:59:02,840 אני רוצה שתהיה תיקייה עם זכויות היוצרים שלי על כל דף, 991 00:59:02,840 --> 00:59:05,560 ועכשיו מה שאני הולך לעשות בבקר שלי 992 00:59:05,560 --> 00:59:07,740 עכשיו במקום לומר, "מרחיב בקר" 993 00:59:07,740 --> 00:59:11,870 אני הולך לומר, "מרחיב Controller_Template" 994 00:59:11,870 --> 00:59:15,890 ועכשיו במקום לומר, "גוף תגובה שווה להשקפה זו," 995 00:59:15,890 --> 00:59:24,110 אני הולך לומר, "תוכן תבנית זו הוא -" 996 00:59:24,110 --> 00:59:27,690 ואני חושב - אני יכול לשים סימן שוויון? 997 00:59:27,690 --> 00:59:32,710 אני שוכח. כן, כך חשבתי. 998 00:59:32,710 --> 00:59:37,710 ועכשיו אני מגדיר שמשתנה תוכן שווה את הנוף. 999 00:59:37,710 --> 00:59:40,960 אני יכול לעשות את אותו הדבר כאן. 1000 00:59:49,620 --> 00:59:57,170 ועכשיו אם אני לרענן, אתה יכול לראות עכשיו זכויות יוצרים זה מתווסף לשם, 1001 00:59:57,170 --> 01:00:00,350 ופשוט לעשות קצת פוסט אקראי, 1002 01:00:00,350 --> 01:00:06,760 ואז, שוב, אתה צריך לראות שזכויות היוצרים היא בתחתית הדף. 1003 01:00:06,760 --> 01:00:10,730 >> גדול. זה כל מה שרציתי להראות לכם חבר 'ה. 1004 01:00:10,730 --> 01:00:14,970 [מחיאות כפיים] 1005 01:00:14,970 --> 01:00:18,950 כל שאלה? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]