[סעמינאַר] [קאָהאַנאַ: אַ לייטווייט פפּ פראַמעוואָרק] [בראַנדאָן ליו] [האַרוואַרד אוניווערסיטעט] [דאס איז קס50.] [CS50.TV] הי אַלעמען. מיין נאָמען איז בראַנדאָן. איך בין אַ יינגער דאָ בייַ די קאָלעגע טאן קאָמפּיוטער וויסנשאַפֿט, און הייַנט מיר ניטאָ געגאנגען צו רעדן וועגן קאָהאַנאַ, וואָס איז אַ פפּ וועב אַנטוויקלונג פריימווערק. הייַנט איז געגאנגען צו זיין אַ לעבן קאָודינג סעמינאַר, אַזוי איך בין בייסיקלי געגאנגען צו פאַרברענגען 5-10 מינוט יקספּליינינג וואָס קאָהאַנאַ איז, און דעריבער איך בין ממש געגאנגען צו בויען אַ יבער פּשוט בלאָג פֿאַר איר רעכט דאָ ממש פון קראַץ. מיר ניטאָ געגאנגען צו אָפּלאָדירן די קאָד פון די קאָהאַנאַ וועבזייַטל, און מיר ניטאָ געגאנגען צו אָנהייב בנין אַ בלאָג, און אַלעווייַ עס וועט זיין זייער ינסטראַקטיוו, ווייַל איר וועט זען טאָמער אפֿשר איך וועט מאַכן עטלעכע מיסטייקס, און איר וועט זען מיר צוריקקריגן פון זיי, אָדער איר וועט זען מיין געדאַנק פּראָצעס ווי איך בויען דורך דעם בלאָג, און דערווייַל, איר וועט אויך באַקומען באַקאַנט מיט די פריימווערק זיך. אַלעווייַ עס וועט זיין אַ זייער ינסטראַקטיוו געניטונג. ערשטער, וואָס פּונקט איז אַ פריימווערק? אויב איר 'ווע שוין גענומען קס50 אַזוי ווייַט, איר האָבן ניט טאַקע געארבעט מיט קיין פראַמעוואָרקס נאָך, און די זאַך איז דעם. איר 'ווע מיסטאָמע געטאן 1 וועב אַנטוויקלונג פּסעט שוין, און לאָזן ס זאָגן איר פאָרזעצן צו בויען וועבסיטעס און האַלטן בנין וועבסיטעס. איר וועט אָנהייבן צו באַמערקן אַ ביסל זאכן. דער ערשטער זאַך איר וועט באַמערקן איז אַז איר ניטאָ מיסטאָמע טאן דער זעלביקער זאכן איבער און איבער ווידער אַלע די צייַט, זאכן ווי רייניקונג באַניצער אַרייַנשרייַב דאַטן, זאכן ווי אָרגאַנייזינג אייער טעקעס אין אַ זיכער וועג. די אנדערע זאַך איר וועט אויך מיסטאָמע באַמערקן איז אַז אייער קאָד זאל אָנהייבן צו ווערן זייער, זייער מעסי, און איר זאלט ​​לאָזן עס מעסי און נאָר האָבן אַ זייער שווער צייַט מיינטיינינג עס, אָדער איר זאל אָנהייבן צו ביניען דיין קאָד און מאכן עס מאַדזשאַלער אין זיכער וועגן צו מאַכן עס מער מאַינטאַינאַבלע. דעם איז ווו וועב פראַמעוואָרקס בייסיקלי געקומען ין די מענטשן וואס האט געבויט אַ פּלאַץ פון וועבסיטעס, זיי געזאגט, "מיר טאָן ניט דאַרפֿן צו רעדאָ דעם יעדער איין צייַט מיר בויען אַ וועבזייַטל." "פארוואס טאָן ניט מיר נאָר מאַכן אַ פּעקל וואָס טוט אַלע די זאכן פֿאַר איר יעדער איין צייַט איר ווילן צו בויען אַ וועבזייַטל? " און אַזוי אַז ווען איר מאַכן אַ נייַ וועבזייַטל, איר נאָר פאָקוס אויף וואָס פּונקט דעם באַזונדער וועבזייַטל איז וועגן. איר טאָן ניט דאַרפֿן צו איבערחזרן אַלע די פאַרשידן קאַנפיגיעריישאַן און צעשיידונג פון קאָודז און רירייטינג קאָוד אַז איר אָפֿט האָבן צו טאָן ווען איר ניטאָ געמאכט וועבסיטעס. דער געדאַנק איז אַז אַ פריימווערק אַלאַוז איר צו שרייַבן אַ העכער-מדרגה קאָד אָן בעת ​​צו זאָרג וועגן נידעריקער-מדרגה פרטים. אַ נידעריקער-מדרגה דעטאַל זאל זיין עפּעס ווי דילינג מיט רייניקונג באַניצער אַרייַנשרייַב דאַטן. אַז ס עפּעס אַז איר זאָל ניט טאַקע דאַרפֿן צו זאָרג וועגן. איר זאָל פאָקוס אויף וואָס אייער וועב אַלאַקיישאַן איז פאקטיש וועגן. עס ילימאַנייץ אַ פּלאַץ פון בוילערפּלייט קאָד. עס איז אַ אַרקאַטעקטשער פֿאַר דיין פּרויעקט. די מערסט פאָלקס איינער וואָלט זיין מאָדעל-View-קאָנטראָללער, וואָס איך בין געגאנגען צו רעדן וועגן אין אַ רגע. און אַ פּלאַץ פון מאל די פראַמעוואָרקס ימבאַדי אַ סכום פון פּראָוסידזשערז, כּללים, און בעסטער פּראַקטיסיז פֿאַר איר צו נוצן אַזוי אַז ווען איר אַדאַפּט די וועב פריימווערק איר האָבן צו שרייַבן דיין קאָד אין אַ זיכער וועג, און עס ס בכלל אַ אפגעמאכט אויף גאַנג פון פּרינציפּן דורך די קהל אַז איז בכלל אנגענומען צו זיין אַ גוט וועג פון שרייבן קאָד. עס מאכט אייער קאָד מער מאַינטאַינאַבלע, מער ניצלעך, אַזוי אויף און אַזוי אַרויס. און לעסאָף, די זאַך איך ווילן צו ונטערשטרייַכן וועגן פראַמעוואָרקס קעגן ליבראַריעס איז דעם געדאַנק וועגן ינווערזשאַן פון קאָנטראָל, און די זאַך איז דעם. דער חילוק צווישן אַ ביבליאָטעק און אַ פריימווערק איז אַז מיט אַ ביבליאָטעק איר זענען נאָך שרייבט די הויפּט פּראָגראַם, און איר ניטאָ סאָרט פון ינוואָקינג דער ביבליאָטעק און פאַך אויף די ביבליאָטעק צו טאָן עפּעס פֿאַר איר. דער חילוק צווישן אַ ביבליאָטעק און אַ פריימווערק איז אַז די פריימווערק סטאַרץ אויס מיט די קאָנטראָל, און עס ינוואָוקס דיין קאָד, אַזוי איר קענען טראַכטן פון עס ווי - דעם איז וואָס עס ס גערופן אַ פריימווערק - די פריימווערק גיט דעם ראַם און ביניען פֿאַר דיין קאָד, און איר פּלאָמבירן אין די האָלעס, און דעם וועט ווערן מער קלאָר אין אַ רגע ווען איר זען מיר אָנהייבן צו שרייַבן קאָד ין דעם קאָנטעקסט פון די פריימווערק. איר וועט זען אַז איך בין פילונג אין די גאַפּס, און די פריימווערק איז מין פון קאַנטראָולינג אַלע די מאָווינג ברעקלעך, און איך האָבן צו שטעלן די ברעקלעך אין די רעכט ערטער. הייַנט מיר ניטאָ געגאנגען צו רעדן וועגן קאָהאַנאַ, וואָס איז איינער פון פילע פפּ פראַמעוואָרקס. עס זענען וועב פראַמעוואָרקס, און עס זענען אָנעס אין כמעט יעדער איין שפּראַך, און איך בין פּיקינג קאָהאַנאַ ווייַל קאָהאַנאַ איז אַרגיואַבלי און בכלל אנערקענט ווי די יזיאַסט פפּ פריימווערק צו קלייַבן אַרויף. עס ס די מערסט לייטווייט. עס זענען אנדערע אָנעס אויס עס אַז קומען מיט פילע, פילע מער פֿעיִקייטן, אָבער זיי טענד צו זיין מער שווער צו קלייַבן אַרויף. און לעסאָף, קאָהאַנאַ ניצט די מווק אַרקאַטעקטשער. עס ס לייטווייט גענוג אַז מיר קענען ממש בויען אַ פּרויעקט רעכט דאָ רעכט אין פאָרנט פון דיין אויגן, און איר קענען שיין פיל נאָכפאָלגן צוזאמען שיין לייכט. וואָס איז די מווק אַרקאַטעקטשער? עס שטייט פֿאַר מאָדעל-View-קאָנטראָללער, און אפֿשר אויב איר טראַכטן וועגן די קאָד איר 'ווע געווען שרייבן אַזוי ווייַט פֿאַר עטלעכע פון ​​אייער וועב אַנטוויקלונג פּסעץ איר זאלט ​​קענען צו זען עטלעכע פון ​​דעם, אָבער יוזשאַוואַלי ווען איר אָנהייב שרייבט אַ מער קאָמפּליצירט וועב אַפּלאַקיישאַן, די אָפּטייל צווישן די 3 סעגמאַנץ ווערט מער און מער קענטיק. איך געלייגט אויס די מווק דאָ סאָרט פון ווי אַ אָנלייגן, און אָפֿט איר וועט הערן מענטשן רעדן וועגן סטאַקס אין וועב אַנטוויקלונג, און דעם איז צו אילוסטרירן די געדאַנק אַז יעדער שיכטע, יעדער קאָמפּאָנענט טאַקע פרוווט צו בלויז יבערגעבן צווישן 2 אנדערע קאַמפּאָונאַנץ. עמעצער אַקסעססעס דיין וועבזייַטל ווי אַ קליענט אָדער אַ בלעטערער. זיי ינטעראַקט מיט אייער פּראָגראַם דורך די מיינונג קאָד. די מיינונג קאָד ינטעראַקץ מיט די קאַנטראָולער. די קאַנטראָולער ינטעראַקץ מיט די מאָדעל, און די מאָדעל ינטעראַקץ מיט די סקל דאַטאַבאַסע. און עס איז ניט כאַפּינג אין צווישן אויב איר שרייַבן דיין קאָד רעכט. וואָס טוט די זאכן טאָן? די מאָדעל יסענשאַלי איז די שטיק פון קאָד אַז דילז מיט אייער דאַטע. עפּעס אַז דילז מיט דיין דייטאַבייס, מיט די אַבדזשעקס אַז איר קראָם, אָדער ריטריווינג די אַבדזשעקס אין די דאַטאַבאַסע, אַז ס אַלע כאַנדאַלד דורך די מאָדעל. אפֿשר איר האָבן אַבדזשעקס אין דיין דאַטאַבאַסע. מיר ניטאָ געגאנגען צו שאַפֿן אַ מאָדעל ווייל צו טאָן מיט הודעות, אַזוי אַ פּאָסטן זאל האָבן עטלעכע אַטריביוץ צו עס. איר זאלט ​​האָבן פאַנגקשאַנז אַרום סטאָרינג די הודעות אָדער ריטריווינג הודעות אָדער פֿילטריר די הודעות און אַזוי אויף און אַזוי אַרויס, און אַז ס אַלע די קאָד אַז ס כאַנדאַלד דורך די מאָדעל. די קאַנטראָולער איז סאָרט פון די אַפּלאַקיישאַן לאָגיק, און אַ פּלאַץ פון פאַרשידענע זאכן קענען גיין אין די אַפּלאַקיישאַן לאָגיק. אויב איר ניטאָ גערעדט צו אַ אַנדערש אַפּי, אַז קען זיין ווו איר ניטאָ דילינג מיט די אַפּלאַקיישאַן לאָגיק. אויב איר 'רע טריינג צו האָבן צו ברענגען אין דאַטן פון קייפל פאַרשידענע מאָדעלס און האָבן צו פאַרבינדן זיי אין עטלעכע וועג, אַז אָפֿט זאל זיין כאַנדאַלד דורך די קאַנטראָולער. פֿאַר בייַשפּיל, אויף פאַסעבאָאָק, אויב איר פרייַנד עמעצער, דעמאָלט טאָמער אַז אַקט פון גרינדן אַז שייכות קען זיין געטאן דורך די קאַנטראָולער. און ענדלעך, די מיינונג איז די קאָד אַז ס דזשענערייטינג וואָס איר פאקטיש זען. א פּלאַץ פון מאל איך טראַכטן אין די קס50 פּסעץ זיי טאָן ניט טאַקע מוטיקן איר גייז צו צעטיילן די 3 זאכן. איר וועט מיסטאָמע האָבן דעם גרויס, לאַנג טעקע ווו בייַ דער שפּיץ איר מאַכן עטלעכע סקל אָנפֿרעג און אפֿשר טאָן עטלעכע פּראַסעסינג אויף די דאַטן איר ריטריווד פון די דאַטאַבאַסע, און דעמאָלט איר האָבן אַלע דיין HTML בייַ די דנאָ. און איר זאלט ​​געפינען אַז ווי איר מאַכן מער און מער בלעטער אַז איר ניטאָ געגאנגען צו האָבן עטלעכע קאָד יבערכאַזערונג, און אויך, די זאַך איז דיין טעקע געץ טאַקע גרויס און לאַנג און ווערט אַנווילדי צו פירן. די סיבה וואָס מווק איז אַזוי געזונט געקוקט איז פֿאַר אַ נומער פון סיבות. דער ערשטער זאַך איז עפּעס גערופן צעשיידונג פון קאַנסערנז וואָס איז די געדאַנק אַז ווען איר האָבן - יידילי 1 שטיק פון קאָד זאָל טאָן 1 זאַך און טאָן עס טאַקע גוט, און איר זאָל ניט פאַרבינדן ברעקלעך פון קאָד אַז טאָן דיספּעריט זאכן. פֿאַר בייַשפּיל, קוק קאָד און מאָדעל קאָד, זיי טאָן ניט טאַקע האָבן צו זיין שייַכות. זיי טאָן ניט האָבן צו זיין אין דער זעלביקער טעקעס, אַזוי ווען איר קענען, צעטיילן זיי אויס אַזוי עס ס גרינג צו טייַנען. די אנדערע זאַך איז קאָוד רייוס. איר קען געפינען זיך שרייבט דער זעלביקער סקל אָנפֿרעג אָדער טאן ענלעך קוויריז אַז קען זיין פאַרטראָגן אין 1 פֿונקציע, און אַז ס די געדאַנק הינטער מאָדעלס און קאַנטראָולערז, בעת עס אין אַ באַזונדער פונקציאָנירן אַז איר קענען רייוס אין פאַרשידענע ערטער אין אייער פראיעקט. און לעסאָף, אַז ס טייד צו דרייינג דיין קאָד, אָדער ניט ריפּיטינג זיך, טאָן ניט איבערחזרן זיך. דעם איז זייער קאַמפּריכענסאַבאַל אין אַנטוויקלונג. ווען איר קענען, איר טאָן ניט ווילן צו איבערחזרן זיך, ווייַל אויב איר איבערחזרן זיך,  עס ס פיל מער טייַער צו טייַנען. אויב איר ווילן צו טוישן 1 זאַך, איר האָבן צו טוישן עס אומעטום, און אַז פירט צו באַגז, און עס ס שרעקלעך. אַלע רעכט. קיין שאלות אַזוי ווייַט וועגן קאָהאַנאַ בייַ אַלע? גרויס. איצט מיר ניטאָ געגאנגען צו ונטערטוקנ זיך אין די לעבן קאָודינג סעסיע, און אַלעווייַ אַלץ גייט געזונט. איך בין געגאנגען צו בייסיקלי בויען דעם וועבזייַטל אויף איינער פון מיין ווייַט סערווערס, און אַז וועג איר גייז קענען אויך זען דעם וועבזייַטל און צוטריט דעם וועבזייַטל, און אויך די סוויווע איז בעסער קאַנפיגיערד ווי מיין ווייַט מאַשין, ווייַל עס ס פליסנדיק לינוקס אַנשטאָט פון אַס אַקס מיר ניטאָ ממש געגאנגען צו אָנהייב. KohanaFramework.org. איך בין געגאנגען צו אָפּלאָדירן די קאָד פון די וועבזייַטל. איך בין געגאנגען צו נאָכמאַכן די לינק אַדרעס, גיין צו מיין סערווירער, אָפּלאָדירן עס, און איך בין געגאנגען צו עקסטראַקט עס. [תּלמיד] וואָס ס די גרעסטע איר קענען מאַכן די טעקסט? [בראַנדאָן ליו] איז אַז בעסער? [תּלמיד] איז אַז דואַבאַל? [בראַנדאָן ליו] יאָ, אַז ס פייַן. איך דאַונלאָודיד אַ פאַרשלעסלען טעקע און אַנזיפּט אַז אין אַ וועגווייַזער גערופן קאָהאַנאַ, און מיר ניטאָ געגאנגען צו רענאַמע אַז קס50-קאָהאַנאַ, און לאָזן ס גיין ין אָסאַם. דאָ איר זען אַ בינטל פון פאַרשידענע טעקעס. רובֿ פון איר קענען איגנאָרירן - ווער ניט געגאנגען צו גיין דורך יעדער איין טעקע אַז ס אין דאָ ווייַל פון אונדזער צייַט קאַנסטריינץ, אָבער בכלל ווען איר ינסטאַלירן קאָהאַנאַ, דער ערשטער זאַך איר טאָן איז איר גיין צו די וועגווייַזער, און איר וועט בייסיקלי טאָן עטלעכע סוויווע טעסץ און וואַטנאַט צו מאַכן זיכער אייער סוויווע איז רעכט שטעלן צו לויפן קאָהאַנאַ און מאַכן זיכער אַז אַלץ איז אַלע רעכט. איר קענען זען רובֿ זאכן פארביי, אָבער בכלל איר שטענדיק לויפן אין דעם 1 פּראָבלעם ווו עס קאַמפּליינז אַז עטלעכע וועגווייַזער איז ניט ווריטאַבלע, און אַז ס ווייַל פון עטלעכע פּערמישאַנז. איך טאָן ניט וויסן ווי פיל איר גויס האָבן געלערנט וועגן טעקע פּערמישאַנז אין קס50, אָבער אויב איר טאָן וועב אַנטוויקלונג, איר ניטאָ געגאנגען צו לויפן אין דעם אַרויסגעבן אַ פּלאַץ. איך בין געגאנגען צו מאַכן עס ווריטאַבלע און איך טראַכטן איך אויך האָבן צו - עס מיר גיין. אָוקיי, אַזוי איצט איר קענען זען אַלץ פארביי, און איצט עס וועט זאָגן איר צו רענאַמע די ינסטאַלל.פפּ טעקע. איך בין געגאנגען צו רירן די ינסטאַלל.פפּ טעקע צו ינסטאַללעד.פפּ, און איצט אויב איך דערפרישן, עס גיט מיר עטלעכע טעות, און דעם איז ווו די דיבאַגינג קומט ין דעם איז ווו איר קענען זען וואָס ס פאקטיש געגאנגען צו פּאַסירן. די זאַך איז, דורך פעליקייַט, קאָהאַנאַ אַסומז אַז דיין פּרויעקט איז בייַ די שורש וועגווייַזער פון דיין פעלד, אַזוי עס ס יקספּעקטינג איר צו זיין בייַ demo.brandonkliu.com. מיר האָבן צו זאָגן עס אַז עס ס אַקטשאַוואַלי אין אַ סובפאָלדער. עס ס אין אַ סובפאָלדער גערופן קס50 קאָהאַנאַ. די זאַך איז, עס ס מיסינטערפּרעטינג קס50-קאָהאַנאַ ווי עפּעס אַנדערש, וואָס איך וועט דערקלערן צו איר אין אַ רגע. אָבער איך זאָל דערציילן איר אַז ס עפּעס אַז ס צו זיין געריכט. וואָס מיר 'רע געגאנגען צו טאָן איז מיר ניטאָ געגאנגען צו גיין אין דעם טעקע גערופן באָאָצטראַפּ.פפּ, וואָס איז די קאַנפיגיעריישאַן טעקע ווו אַ פּלאַץ פון פאַרשידענע זאכן זענען שטעלן אַרויף. איך עפענען אַז אַרויף. דעמאָלט אפֿשר איינער פון די ערשטער דאס איך וועט טאָן איז טוישן די צייַט זאָנע. און דעריבער לאָזן ס זען. אַהאַ! רעכט דאָ. עס זענען אַ בינטל פון פאַרשידענע קאַנפיגיעריישאַן רייד אין דאָ, אָבער דער איינער איך בין איר זוכט פֿאַר איז דעם זאַך גערופן באַזע URL, און דורך פעליקייַט איך באַקומען עס שטעלן צו קאָהאַנאַ, אָבער איך בין געגאנגען צו טוישן אַז צו קס50-קאָהאַנאַ, און איך טראַכטן אַז זאָל פאַרריכטן עס. יא, גרויס. דורך פעליקייַט, צו זען אַז עס ס ארבעטן, עס זאגט, "העלא וועלט." ווו האט אַז קומען פון? ווי האט מיר באַקומען צו העלא וועלט? ווו פּונקט איז די קאָד אַז אַקטשאַוואַלי געשריבן אַז? צו פֿאַרשטיין אַז, איך וועט פאָרשטעלן דעם באַגריף גערופן רוטינג. שיין פיל אַלע וועב פראַמעוואָרקס האָבן די באַגריף גערופן רוטינג, וואָס איז די שטיק פון די סאָפטווער וואס וועט מאַפּע אַ זיכער URL צו אַ זיכער שטיק פון קאָד ין דיין פריימווערק. למשל, אויב איר האָבן עטלעכע URL און איר גיין צו עטלעכע URL ווי foo.com / בלאָג / אַלע דעמאָלט וואָס די פריימווערק איז געגאנגען צו טאָן - אָדער בייַ מינדסטער וואָס קאָהאַנאַ איז געגאנגען צו טאָן - איז עס ס געגאנגען צו געפינען אַ סאָרט גערופן קאַנטראָולער בלאָג, און עס ס געגאנגען צו לויפן די פֿונקציע געהייסן קאַמף אַלע. איך וויסן איך בין גערעדט וועגן קלאַס און פאַנגקשאַנז, און איך וויסן איר גייז האָבן ניט באדעקט קלאסן און פאַנגקשאַנז אין קס50 נאָך, אָבער פֿאַר איצט, איר קענען טראַכטן פון קלאסן ווי נאָר אַ גרופּע פון ​​פאַנגקשאַנז, אַ וועג פון גרופּינג פאַנגקשאַנז צוזאַמען. אַז ס טאַקע אַלע איר דאַרפֿן צו וויסן. איצט אויב מיר קוקן אין אונדזער טעקע ביניען, ין דער אַפּלאַקיישאַן טעקע עס איז אן אנדער טעקע גערופן קלאסן, און די אנדערע פאָלדערס זענען גערופן קאָנטראָללער און מאָדעל. אויב איר קוקן ין דער קאָנטראָללער טעקע, מיר זען אַז עס איז אַ טעקע גערופן באַגריסן, און איר קענען זען דאָ איז אַ סאָרט גערופן קאָנטראָללער באַגריסן, און עס איז אַ פֿונקציע גערופן קאַמף אינדעקס, און וואָס עס טוט איז עס שטעלט דעם גוף פון דיין ענטפער צו העלא וועלט. אַז ס ווו די קאָד איז זייַענדיק געשריבן. די אנדערע קשיא איז, נו, איך האט ניט גיין צו בלאַ, בלאַ, בלאַ, / באַגריסן / אינדעקס. ווי האט איך סוף אַרויף דאָ? גוט, אַז ס פשוט ווייַל דאָ בייַ די דנאָ פון אונדזער באָאָצטראַפּ טעקע ווו מיר שטעלן אונדזער רוץ איר קענען זען אַז זיי שטעלן עטלעכע דיפאָלץ פֿאַר איר. די פעליקייַט קאַנטראָולער איז באַגריסן. די פעליקייַט אַקציע איז ינדעקס. אַז ס וואָס ווען מיר שטעלן גאָרנישט אין עס עס אויטאָמאַטיש געגאנגען צו די באַגריסונג קאַנטראָולער און די אינדעקס קאַמף. אלץ מאַכן זינען אַזוי ווייַט? איצט, איר קענען טאָן מער ווי נאָר גיין צו קאָנטראָללער און אַ ספּעציפיש קאַמף. איר קענען אויך פאָרן אין פּאַראַמעטערס צו די קאַנטראָולער. פּונקט ווי אַ בייַשפּיל, איך בין געגאנגען צו לייגן אנדערן קאַמף צו דעם קאַנטראָולער צו ווייַזן איר. זאל ס רופן דעם קאַמף עקאָו, ווייַל עס ס געגאנגען צו דערציילן איר וועלכער איר געבן עס, און אַזוי איך בין בייסיקלי געגאנגען צו כאַפּן אַ פּאַראַמעטער אַז ס געגאנגען צו זיין געשיקט דורך מיר צו די רוטינג פּראָגראַם, און ווי איר קענען זען דאָ, דעם שורה רעכט דאָ, איר קענען זען אַז דעם בייסיקלי מיטל איר האָבן קאַנטראָולער, און איר האָבן אַ /, און איר האָבן אַקציע, און איר האָבן אן אנדער /, און אַז ס געגאנגען צו זיין פּאַראַמעטערס, און ווייַל מיר האָבן דעם נאָמען שייַן ין ווינקל בראַקאַץ, אַז מיטל אַז מיר ניטאָ נאַמינג דעם פּאַראַמעטער שייַן. שפּעטער אין מיין קאַנטראָולער קאָד אויב איך ווילן צו כאַפּן אַ האַלטן פון אַז פּאַראַמעטער, איך קענען נוצן די קאָד איך געשריבן, געפינען די פּאַראַמעטער געהייסן שייַן. אַז ס וואָס איך האט דאָ, און איך בין געגאנגען צו קריק און זאָגן, "איר געזאגט" אַז. און אַזוי איצט אויב איך גיין צו אונדזער וועבזייַטל, איך גיין צו קס50-קאָהאַנאַ/וועלקאָמע/עטשאָ/העללאָאָאָאָ-- טאַקע, אַז ס רעכט. עס איז 1 שריט איך לינק אויס. דעם איז טייל פון די לעבן קאָודינג געדאַנק. דאָ ס 1 זאַך. זאל ס זען. אַזוי נאָרמאַלי דורך פעליקייַט מיט אַ פּלאַץ פון די וועב פּראָגראַמען איר האָבן צו אַרייַננעמען דעם ינדעקס.פפּ זאַך אין אייער URL, ווייַל דער געדאַנק איז ינדעקס.פפּ איז סאָרט פון די פּאָזיציע פונט פון דיין אַפּלאַקיישאַן, אָבער פון קורס, אַז ס סאָרט פון אַנויינג צו האָבן. איר טאָן ניט ווילן צו האָבן ינדעקס.פפּ דערשייַנען אין אייער URL, און שיין פיל יעדער וועב פריימווערק אויס פון די קעסטל האט דעם ינדעקס.פפּ פּראָבלעם, און אַזוי איר האָבן צו נעמען עטלעכע מיטלען צו קענען צו באַזייַטיקן אַז. און אַזוי אין דעם פאַל, וואָס מיר 'רע געגאנגען צו טאָן איז מיר ניטאָ געגאנגען צו נוצן אַ טעקע גערופן. הטאַקסעסס, און דעם איז עפּעס אַז ס ספּעציפיש צו די אַפּאַטשי וועב סערווירער, און עס קענען טאָן זאכן ווי רירייט URL ס און רידערעקט URL ס און אַזוי אויף און אַזוי אַרויס, און קאָהאַנאַ איז פייַן גענוג צו צושטעלן אַ מוסטער. הטאַקסעסס טעקע אַז מיר קענען נוצן. ווי איר קענען זען, עס איז אַ טעקע עס גערופן עקסאַמפּלע.הטאַקסעסס, און מיר ניטאָ געגאנגען צו צייכענען אַז צו. הטאַקסעסס. איך בין געגאנגען צו עפענען דעם און רעדאַגירן עס, און בייסיקלי עס טוט אַ בינטל פון פאַרשידענע זאכן. דער שליסל שורה איר זאל וועלן צו קוקן בייַ איז רעכט דאָ. דער געדאַנק איז אַז דעם שטעלט אַרויף אַ הערשן אַז זאגט, "אָוקיי, וועלכער איר דרוקן אין, פּרעפּענד ינדעקס.פפּ צו אַז." איר קענען זען אַז. די. * שטייט פֿאַר עפּעס, גלייַכן עפּעס, און דעריבער די רגע טייל איז ינדעקס.פפּ / $ 0, און $ 0 רעפערס צו וועלכער איז מאַטשט פריער. טוט וואָס מאַכן זינען? אבער די טאַקע שליסל זאַך איך ווילן צו טוישן איז טוישן דעם רירייט באַזע, וואָס איז די URL באַזע. עס סאָרט פון אַסומז ווו איר ניטאָ ארבעטן פון. איך בין געגאנגען צו לייגן קס50 קאָהאַנאַ צו אַז, און אַז וועג איצט אויב איך אַראָפּנעמען דעם ינדעקס.פפּ, עס זאָל אַרבעט, און איך בין געגאנגען צו שטעלן עטלעכע נומערן צו ווייַזן איר אַז עס טאַקע האט ווערק. סאָונדס גוט. קיין שאלות אַזוי ווייַט? [תּלמיד] ווי האט עס וויסן צו מאַכן די 123? איז אַז אַ אַרגומענט? פּונקט. איר קענען טראַכטן פון עס פּונקט ווי אַן אַרגומענט. אבער די טשודנע זאַך, כאָטש, איז אַז די וועג קאָהאַנאַ טוט עס איז זיי טאָן ניט טאָן עס פּונקט ווי אַ אַרגומענט. איר האָבן צו כאַפּן עס ווי דעם. איר האָבן צו כאַפּן די בעטן כייפעץ און פרעגן פֿאַר די פּאַראַמעטער אַז ס געהייסן שייַן, און אַז נאָמען שייַן קומט פון אַז באָאָצטראַפּ טעקע אַז איך געוויזן פריער, און דער נאָמען שייַן איז געווען אין די ווינקל בראַקאַץ, און אַז ס ווי איר כאַפּן די פּאַראַמעטערס. אָסאַם. קיין אנדערע שאלות? ווי איך געזאגט, קאַנטראָולערז, זיי שעפּן אַפּלאַקיישאַן לאָגיק, אַזוי אַז ס 1 בייַשפּיל ווו איר קענען זען דאַץ - עס ס זייער יקערדיק, אָבער עס ס נאָך אַפּלאַקיישאַן לאָגיק, דער געדאַנק פון גראַבינג די פּאַראַמעטער און שאפן אַ נייַ שטריקל אַז זאגט, "איר האט בלאַ," און דעריבער ספּיטינג אַז צוריק צו איר. און בכלל וואָס איר טאָן איז איר מאַכן פאַרשידענע קאַנטראָולערז. איר מאַכן באַזונדער קאַנטראָולערז פֿאַר פאַרשידענע פּאַרץ פון דיין וועבזייַטל. הייַנט מיר ניטאָ געגאנגען צו מאַכן אַ זייער פּשוט וועבזייַטל, און עס ס געגאנגען צו זיין אַ זייער יקערדיק בלאָג. מיר ניטאָ געגאנגען צו מאַכן אַ נייַ קאָנטראָללער נאָר פֿאַר די הודעות אין אַ בלאָג. אבער דעמאָלט אויב איך געווען צו אויך לייגן באַמערקונגען צו דעם בלאָג פּאָסטן, דעמאָלט איך וואָלט מיסטאָמע ווילן צו מאַכן אַ נייַ קאָנטראָללער פֿאַר די באַמערקונגען. אויב איך געוואלט צו לייגן וסערס, איך וואָלט מיסטאָמע לייגן אַ נייַ קאָנטראָללער פֿאַר די וסערס, און אין אַלגעמיין, דעם געדאַנק איז אַז ווען איר האָבן אַ נייַ מאָדעל, אַ נייַ דאַטן כייפעץ אַז איר ניטאָ דילינג מיט, איר האָבן אַ איין קאַנטראָולער פֿאַר אַז דאַטן כייפעץ. הייַנט מיר ניטאָ בלויז געגאנגען צו אַרבעטן מיט 1 דאַטן כייפעץ, און אַז ס געגאנגען צו זיין הודעות, און אויך איר קענען טראַכטן פון דאַטן אַבדזשעקס ווי קאָראַספּאַנדינג צו טישן. בכלל יעדער טיש קאָראַספּאַנדז צו 1 טיפּ פון דאַטן כייפעץ, אַזוי דעם פּאָסטן טיש וועט האָבן 1 פּאָסטן מאָדעל, וואָס וועט האָבן 1 פּאָסטן קאַנטראָולער קאָראַספּאַנדינג צו אַז, און די זעלבע פֿאַר באַמערקונגען, דער זעלביקער פֿאַר וסערס, און אַזוי אויף און אַזוי אַרויס. און אַז ס אַ גענעראַל הערשן פון גראָבער פינגער. עס זענען געגאנגען צו זיין ספּעציעל קאַסעס ווו איר קען אַנדערש פון אַז, אָבער 90% פון די צייַט אַז ס וואָס איר ניטאָ געגאנגען צו זיין טאן, און איך וועט ווייַזן איר אַז ס וואָס מיר ניטאָ געגאנגען צו זיין טאן הייַנט. 1 מער באַגריף איידער מיר ונטערטוקנ זיך צוריק אין די קאָד, דעם געדאַנק פון כייפעץ ריליישאַנאַל מאַפּינג. איר גייז האָבן שוין געטאן אַ וועב אַנטוויקלונג פּסעט, און איר 'ווע געזען אַז איר מאַכן אַ סקל אָנפֿרעג, און וועלכער עס קערט צו איר זענען ראָוז. איר באַקומען די ראָוז, און איר אינדעקס זיי דורך עטלעכע נאָמען, די נאָמען פון די זייַל און די טיש, און אַז ס ווי איר אַרבעט מיט עס, און עס קענען זיין אַ ביסל קאַמבערסאַם. אָבער דערצו, אויב איר האָבן באציונגען ין דיין דייטאַבייס, ווי למשל אויב איך האָבן באַמערקונגען און הודעות, דעמאָלט אפֿשר איך ווילן צו כאַפּן די פאָטער פּאָסטן פון אַ באַמערקונג. אויב איך נוצן נאָר ראָוז אין סקל, דעמאָלט אַלע איך קענען באַקומען איז די שייַן פון די פאָטער פּאָסטן און ניט די פאַקטיש פּאָסטן זיך. אָבער ווען מיר ניטאָ קאָודינג, וואָס מיר פאקטיש ווילן איז צו פאקטיש כאַפּן  דער פאָטער פּאָסטן זיך מאל. וואָס כייפעץ ריליישאַנאַל מאַפּינג טוט איז עס נעמט די רעזולטאַטן פון די דאַטאַבאַסע אָנפֿרעג און לייגט עס אין אַבדזשעקס פֿאַר איר, וואָס זענען פיל ניסער צו אַרבעטן מיט ווי קלאָר ערייז און ראָוז. למשל, איצט ווען איך האָבן אַ באַמערקונג טאָמער, און איך ווילן צו כאַפּן זייַן פאָטער פּאָסטן, און איך טאָן אפֿשר באַמערקונג פייַל פּאָסטן, דעמאָלט עס וועט פאקטיש געבן מיר דעם פּאָסטן כייפעץ קאָראַספּאַנדינג צו די פאַקטיש פאָטער פּאָסטן, ניט נאָר עטלעכע שייַן, וואָס איך וואָלט אַנדערש האָבן צו נוצן און מאַכן אנדערן סקל אָנפֿרעג צו כאַפּן דעם פּאָסטן, וואָס איז קאַמבערסאַם און ומנייטיק. און דערצו, דורך מאַפּינג אַלע די דאַטע ראָוז אין אַבדזשעקס, איר קענען אויך צוטשעפּען מער פאַנגקשאַנז צו אַבדזשעקס, אַזוי פֿאַר בייַשפּיל, איך גערעדט וועגן ווי קלאסן זענען יסענשאַלי גרופּינגז פון פאַנגקשאַנז. איר קענען טראַכטן פון עס ווי אַז. למשל, אפֿשר איך האָבן דעם פּאָסטן כייפעץ, און אפֿשר איך 'ד ווי צו האָבן עטלעכע סאָרט פון פונקציאָנירן אַטאַטשט צו עס אַז בייסיקלי דערציילט מיר איז עס לעצטנס אַרייַנגעשיקט? איז עס אַרייַנגעשיקט ין די לעצטע וואָך, אמת אָדער פאַלש? און אַז ס אַ פֿונקציע איך קענען צוטשעפּען אַנטו אַז כייפעץ, און עס ס טאַקע באַקוועם צו האָבן עס אין דער זעלביקער אָרט, און עס זענען אַ באַלעבאָס פון פאַרשידענע פאַנגקשאַנז איר קענען מאַכן פֿאַר די אַבדזשעקס, און עס ס טאַקע פייַן צו קענען צו צוטשעפּען עס צו אַ קלאַס, צו אַ כייפעץ, כוועראַז אויב איר נאָר האט ראָוז קומען פון דיין דאַטאַבאַסע, דעמאָלט איר קענען ניט טאַקע צוטשעפּען קיין פאַנגקשאַנאַליטי צו אַז. עס ס ממש נאָר דאַטן. קיין שאלות וועגן אַז בייַ אַלע? אָרמס זענען זייער פּראָסט וועב אַנטוויקלונג, און עס זענען אַ פּלאַץ פון פאַרשידענע טייפּס פון אָרמס, און קאָהאַנאַ האט זייַן אייגן אָרם. עס ס זייער יקערדיק, אָבער איר וועט באַקומען אַ טעם פון וואָס עס קוקט ווי. זאל ס שאַפֿן אַ מאָדעל פֿאַר אונדזער בלאָג הודעות, און דער ערשטער זאַך מיר דאָך דאַרפֿן צו טאָן איז צו מאַכן אַ פאַקטיש טיש ין אונדזער דייטאַבייס צו פאקטיש קראָם אונדזער דאַטע פֿאַר די הודעות. דער ערשטער זאַך איך בין געגאנגען צו טאָן איז גיין צו פפּמיאַדמין. האָבן איר גייז געניצט פפּמיאַדמין איידער? אָוקיי, אָסאַם, אַזוי איר גייז שוין וויסן וואָס אַז איז, און איך בין געגאנגען צו שאַפֿן אַ נייַ טיש גערופן קאָהאַנאַ הודעות, און עס ס געגאנגען צו זיין טאַקע פּשוט. איך וועט האָבן צו קלאָץ צוריק ין אַלע מיר ניטאָ געגאנגען צו טאָן הייַנט איז האָבן אַ מחבר און אַ גוף, נאָר האַלטן עס פּשוט. איך בין געגאנגען צו מאַכן אַז טיש, און איצט מיר נאָר האָבן אַ טיש רעפּריזענטינג אונדזער הודעות מיט 2 פעלדער פֿאַר אונדזער מחבר און אונדזער גוף. די אנדערע זאַך איך בין געגאנגען צו טאָן איצט איז קאַנפיגיער מיין וועב אַפּלאַקיישאַן אַזוי עס ווייסט ווי צו פאַרבינדן צו די דאַטאַבאַסע, און דעם, ווידער, איז עפּעס אַז איר וועט האָבן צו טאָן מיט אַלע וועב פּראָגראַמען. איר האָבן צו זאָגן עס די באַניצער נאָמען און די פּאַראָל און דער נאָמען פון די דייטאַבייס און אַזוי אויף און אַזוי אַרויס צו רעכענען אויס ווי צו פאקטיש פאַרבינדן צו דיין דייטאַבייס. אין קאָהאַנאַ, מיר האָבן עפּעס גערופן אַ דאַטאַבאַסע מאָדולע, און אין די קאַנפיגיעריישאַן טעקע מיר האָבן דעם טעקע גערופן דאַטאַבאַסע, און ווי איר קענען זען, עס זענען אַ בינטל פון סעטטינגס איר האָבן צו שטעלן דאָ צו זאָגן עס וואָס ס דער באַניצער נאָמען און די פּאַראָל פֿאַר די דאַטאַבאַסע אַזוי איך קענען פאקטיש פאַרבינדן צו עס. און זינט איך טאָן ניט וועלן איר גויס צו פאקטיש וויסן דער באַניצער נאָמען און פּאַראָל פון מיין דאַטאַבאַסע, איך האָבן אַ טעקע ווו איך שוין שטעלן עס אַלע אַרויף, און איך בין געגאנגען צו צייכענען און פּאַפּ עס איבער. אָסאַם. אָוקיי. איך טראַכטן אַז ס אַלע די קאַנפיגיעריישאַן איך דאַרפֿן צו טאָן, אָבער לאָזן ס זען. מיר וועט האַלטן ארבעטן אין עס, און אויב עפּעס קראַשיז, דעמאָלט מיר וועט פאַרריכטן עס. איצט וואָס איך בין געגאנגען צו טאָן איז איך בין געגאנגען צו שאַפֿן אַ נייַ קאָנטראָללער. אָדער פאקטיש, נעבעכדיק. ערשטער איך האָבן צו שאַפֿן אַ נייַ מאָדעל. איך וועט מאַכן אַ נייַ מאָדעל גערופן פּאָסט.פפּ, און וואָס מיר ניטאָ געגאנגען צו טאָן איז מיר ניטאָ געגאנגען צו רופן עס סאָרט מאָדעל_פּאָסט. באַקומען עטלעכע סינטאַקס כיילייטינג אויף, און אַזוי ווען איך זאָגן, "יקסטענדז אָרם," אַז ס בייסיקלי עטלעכע מער כייפעץ-אָריענטיד פּראָגראַממינג, וואָס ליידער איר גייז האָבן ניט געלערנט אין קס50 נאָך, אָבער עס ס שיין גרינג צו קלייַבן אַרויף. עס גיט מיר אַלע דעם עקסטרע פאַנגקשאַנאַליטי וואָס קומט אין דעם אָרם פּעקל, און אַזוי איך באַקומען אַ בינטל פון עקסטרע פאַנגקשאַנז און וואַטנאַט פֿאַר פֿרייַ, וואָס איר וועט זען אַ ביסל פון אין אַ רגע. רעכט איצט פאקטיש אַלע איך דאַרפֿן צו טאָן איז מאַכן דעם קלאַס. איך טאָן ניט אפילו דאַרפֿן צו מאַכן קיין פונקציאָנירן אָדער עפּעס, אָבער איך 'ווע באשאפן אַ סאָרט אַז רעפּראַזענץ די טיש, און ווייַל איך 'ווע עקסטענדעד דעם אָרם קלאַס, איך באַקומען אַ בינטל פון זאכן פֿאַר פֿרייַ, אַזוי פֿאַר איצט איר טאָן ניט האָבן צו שטעלן עפּעס מער אַרויף. און איצט וואָס איך בין געגאנגען צו טאָן איז איך בין געגאנגען צו שאַפֿן אַ נייַ קאַנטראָולער, וואָס איך בין געגאנגען צו נעמען בלאָג.פפּ, און איך בין געגאנגען צו צייכענען איבער די באַגריסונג קאַנטראָולער אַזוי איך טאָן ניט האָבן צו רעטיפּע עטלעכע שטאָפּן, און איצט איך האָבן צו רענאַמע דעם. איצט וואָס איך בין געגאנגען צו טאָן צו פּרובירן צו מאַכן זיכער אַלץ איז ארבעטן אויס, איך בין געגאנגען צו כאַפּן דער ערשטער פּאָסטן פון מיין דאַטאַבאַסע און דרוקן דעם גוף פון דעם פּאָסטן אויף דעם עקראַן. צו טאָן אַז וואָס איך בין געגאנגען צו טאָן ערשטער איז איך בין געגאנגען צו ראַטעווען די הודעות צו אַ בייַטעוודיק אַזוי וואָס מיר ניטאָ געגאנגען צו טאָן איז - אין קאָהאַנאַ וואָס איר טאָן איז צו כאַפּן די פּאָסטן כייפעץ עס ס מין פון קאַמבערסאַם, אָבער איר האָבן צו טאָן דעם זאַך גערופן אָרם :: פאַבריק, און דעמאָלט איר פאָרן אין די נאָמען פון די מאָדעל איר ווילן, און עס קערט די אָרם כייפעץ אַז רעפּראַזענץ אַז מאָדעל. און דעמאָלט, ווי איך געזאגט, ווען מיר פאַרברייטערן די אָרם כייפעץ, מיר באַקומען אַלע די מעטהאָדס פֿאַר פֿרייַ, אַזוי פֿאַר בייַשפּיל, מיר באַקומען דעם נייַ פונקציאָנירן גערופן "געפינען אַלע," וואָס אויטאָמאַטיש קערט יעדער איין פּאָסטן אין די דאַטאַבאַסע, וואָס איז שיין באַקוועם. און איצט אין די גוף איך בין געגאנגען צו צוריקקומען דער ערשטער פּאָסטן און צוריקקומען זייַן גוף. און פון קורס, איך דאַרפֿן צו שאַפֿן אַ פּאָסטן, אַזוי לאָזן ס טאָן אַ נייַ פּאָסטן. איך וועט זאָגן, "בראַנדאָן, מיין זייער ערשטער פּאָסטן." אָסאַם. און איצט מיר ניטאָ געגאנגען צו גיין צו בלאָגס און אויב אַלע אַרבעט געזונט - טאַקע, דעם איז עטלעכע אנדערע שטום טעקע דערלויבעניש זאַך ווידער. האַלטן אויף 1 רגע. עס ס מין פון ווילד. עס מיר גיין. אָוקיי. איך פאַרפעסטיקט אַז דערלויבעניש פּראָבלעם. עס איז געווען טריינג צו מאַכן עטלעכע טעקעס און עטלעכע קלאָץ, און די פּערמישאַנז, ווידער, זענען ניט רעכט שטעלן, אַזוי איך געמאכט עס אַזוי די טעקעס זענען ווריטאַבלע און עקסעקוטאַבלע אַזוי עס קען אַקטשאַוואַלי קלאָץ צו זאכן. איצט עס ס געבן מיר אן אנדער ויסנעם געזאגט, "סאָרט אָרם ניט געפונען," און אַז ס ווייַל איך פארגעסן אנדערן שריט. אַז ס אויך שלעכט. אין די בוצטראַפּ טעקע טעקע, עס זענען די מאַדזשולז דאָ, וואָס איר קענען קלייַבן צו געבן אָדער דיסייבאַל. דאס זענען אַ בינטל פון פאַרשידענע פֿעיִקייטן אַז איר קענען קלייַבן צו נוצן ין קאָהאַנאַ, וואָס איז סאָרט פון פייַן. למשל, זיי האָבן אַ אָטענטאַקיישאַן מאָדולע וואָס איר קענען נוצן פֿאַר אַוטהענטיקאַטינג ניצערס. זיי האָבן אַ קאַטשינג מאָדולע אויב איר ווילן צו מאַכשער עטלעכע סאָרט פון קאַטשינג צוריק סוף צו מאַכן די אַפּלאַקיישאַן אַרבעט פאַסטער און וואַטנאַט. מיר דאַרפֿן צו געבן די דייטאַבייס און די אָרם מאָדולע, ווייַל ווי איך געזאגט, מיר ניטאָ ניצן די דאַטאַבאַסע, דאָך, און מיר אויך דאַרפֿן צו געבן די אָרם מאָדולע, ווייַל מיר 'ד ווי צו האָבן די עקסטרע פאַנגקשאַנאַליטי, וואָס איז ליב צו האָבן. אַלע איך האָבן צו טאָן איז ונקאָממענט די 2 שורות, און איצט אויב איך דערפרישן, עס האט מיר אנדערן טעות. עס זאגט, "קלאַס מאָדעל_פּאָסט ניט געפונען." איצט דעם איז אַ גוט פּראָבלעם צו האָבן. זאל ס זען. מאַכן עס ציבור. נומ האַלטן אויף. טאַקע, ליב. איך טאָן ניט וויסן וואָס עס ס ניט קענען צו געפינען אַז. אַז ס טאַקע מאָדנע. איך האָבן דעם קלאַס רעכט דאָ. איך טרעפן איך זאל האָבן צו - טאַקע. איך בין אַזוי נאַריש. איך פארגעסן צו לייגן אַ פפּ קוויטל. אַז ס וואָס. איצט איך האָבן צו ופמאַכן אַז 1 טוישן איך נאָר האבן. אָוקיי. עס מיר גיין. אַז איז טאַקע נאַריש. איך האט ניט האָבן אַ עפן פפּ קוויטל. אבער ווי איר קענען זען, איצט עס ס ארבעטן רעכט, רעכט? מיר האָבן 1 פּאָסטן. מיר גראַבד דער ערשטער פּאָסטן, און איצט מיר געדרוקט אויס זייַן גוף. גרויס. פאַנטאַסטיש. קיין שאלות אַזוי ווייַט? נאָופּ? קיין שאלות? אָוקיי, אַזוי מיר נאָר באשאפן דעם פּאָסטן מאָדעל, זייער יקערדיק, און מיר ניטאָ געגאנגען צו שטעלן עטלעכע פאַנגקשאַנז שפּעטער אויף. מיר קענען לייגן וואַלידאַטיאָנס און פֿילטריר. וואַלידאַטיאָנס זענען איינער פון די זאכן אַז פראַמעוואָרקס סאָלווע פֿאַר איר טאַקע, טאַקע געזונט, און איך טאָן ניט טראַכטן איר גויס האט צו טאָן דעם פֿאַר דיין קס50 פּסעט, אָבער אויב איר טאָן וועב אַנטוויקלונג פֿאַר דיין לעצט פּרויעקט, איר ניטאָ מסתּמא געגאנגען צו ווילן צו טאָן עטלעכע סאָרט פון וואַלאַדיישאַן, ווי ניט געהאט ליידיק באַניצער נעמען, אפֿשר בעת אַ פּאַראָל מיט לפּחות עטלעכע לענג, זאכן ווי אַז. און עס ס טאַקע קאַמבערסאַם צו מאַכשער די זאכן דורך זיך, און שיין פיל יעדער איין וועב פריימווערק טוט עס פֿאַר איר און אַלאַוז איר צו טאָן עס אין אַ זייער ריין וועג. און די מאָדעל איז ווו איר בכלל אויסדריקן די וואַלאַדיישאַן כּללים, ווייַל עס ס וואַלאַדייטינג צי אַ מאָדעל איז גילטיק אָדער ניט. אבער פֿאַר איצט, מיר 'רע געגאנגען צו לייגן אַז ביז שפּעטער, און פֿאַר איצט מיר ניטאָ געגאנגען צו אַרבעטן אויף אנדערן טייל, און מיר ניטאָ געגאנגען צו פּרובירן און מאַכן אַ נייַ מיינונג אַז רשימות אַלע די הודעות. די טריט ינוואַלווד אין געמאכט אַ נייַ קאַמף פֿאַר ליסטינג אַלע די הודעות איז צו כאַפּן אַ רשימה פון אַלע די הודעות און דעריבער ופפירן דער רשימה פון אַלע די הודעות דורך אַ מיינונג. רעכט דאָ, גליק גענוג, מיר שוין גראַבד אַלע די הודעות ניצן דעם ערשטער שורה, די געפינען אַלע פֿונקציע, און איצט וואָס מיר 'רע געגאנגען צו טאָן איז אַזוי ווייַט איך 'ווע געווארן גלייַך באַשטעטיקן דעם גוף פון דעם ענטפער דורך גייט פארביי די שטריקל, אָבער איצט איך ווילן צו נוצן אַ מיינונג, און די חילוק צווישן אַ מיינונג און פּונקט טאן דעם איז מיט אַ מיינונג איך קענען האָבן אַ פייַן, גרויס HTML טעמפּלאַטע, און וואָס איך קענען טאָן איז פאָרן עס זיכער וועריאַבאַלז און דעריבער האָבן די מיינונג אויטאָמאַטיש באַפעלקערן זייַן מוסטער ניצן די וועריאַבאַלז. וואָס איך וועט טאָן איז איך וועט שאַפֿן אַ נייַ מיינונג, און איך וועט נעמען די מיינונג עפּעס ווי "בלאָג / אינדעקס," און איך בין געגאנגען צו בייסיקלי בינדן דעם - טאַקע, וואָס בין איך שרייבן? מיין מאַרך איז ערגעץ אַנדערש. איך בין געגאנגען צו בינדן די הודעות בייַטעוודיק צו די מיינונג, אַזוי אַז וועג די מיינונג האט צוטריט צו דעם פּאָסטן בייַטעוודיק. און אַזוי איצט איך דאַרפֿן צו מאַכן דעם מיינונג, אַזוי דאָ מיר האָבן דעם טעקע גערופן "קוקן," און ערשטער, איך בין געגאנגען צו שאַפֿן אַ נייַ טעקע אונטער אַז גערופן "בלאָג." דעם איז פייַן. אַז וועג מיר קענען האָבן אַ פייַן כייעראַרקי פֿאַר אונדזער קוקן. און דעמאָלט איך בין געגאנגען צו שאַפֿן אנדערן טעקע אין עס גערופן "ינדעקס.פפּ." אָסאַם. פאקטיש, לאָזן ס האָבן זיי ביידע דאָ. געמאכט אַ מיינונג טעקע איז מיסטאָמע די סימפּלאַסט טייל פון אַלע דעם, און די זענען מיסטאָמע זאכן איר ניטאָ שוין באַקאַנט מיט. מיר ניטאָ געגאנגען צו טאָן עפּעס טאַקע פּשוט, אָנהייב געזאגט, "מייַן רשימה פון בלאָג הודעות." דעמאָלט מיר קענען גיין דורך, און מיר קענען יטעראַטע דורך די הודעות מענגע, כאַפּן יעדער איין פּאָסטן און זאָגן עפּעס ווי - אפֿשר לייגן אַ שורה און דעריבער דרוקן אויס דער מחבר און דעם גוף. אַז מאַכן חוש אַזוי ווייַט? און לאָזן ס זען אויב עס אַרבעט. גאָרנישט געטראפן. איך ווונדער וואָס. טאַקע, איך מיסט 1 שריט. זייער נאַריש פון מיר. איך באשאפן אַ מיינונג, אָבער איך האט ניט שטעלן די מיינונג ווי די ענטפער, אַזוי איר האָבן צו טאָן 1 מער זאַך. איר האָבן צו טאָן "דעם ענטפער גוף" און שטעלן עס צו זיין די מיינונג. עס מיר גיין. מיר האָבן אונדזער כעדינג, און דעמאָלט מיר האָבן אַ פּאָסטן, און נאָר פֿאַר קיקס, לאָזן ס טאָן אנדערן פּאָסטן אַזוי מיר קענען זען אַ רשימה. און אַרייַנלייגן די 2 הודעות, און איצט אויב איך דערפרישן די בלאַט, מיר זען אַלע די הודעות דאָ. טוט וואָס מאַכן זינען אַזוי ווייַט? יאָ, אַ קשיא? טאַקע, אָוקיי. ווי איר קענען זען, מיר 'ווע שוין קענען צו באַזונדער אַלע די קאָודז אויס אין פאַרשידענע סעקשאַנז, און דעמאָלט איר קענען זען עס ס מערסט קלאָר מיט די מיינונג קאָד. דעם טעקע דאָ אַז רעפּראַזענץ די מיינונג, עס נאָר דאגות וועגן רעפּריזענטינג דאַטן, ווייַזנדיק דאַטן. עס געץ פארביי עטלעכע סאָרט פון דאַטן, און אַלע עס טוט איז נאָר ווייַזן עס צו איר. אין אַלע אנדערע פּאַרץ פון דיין קאָד, איר וועט ניט האָבן צו זאָרג וועגן קיין פון אַז, און סימאַלערלי, דיין מיינונג קאָוד טוט ניט האָבן צו זאָרג עפּעס וועגן ווי צו צוטריט די דייטאַבייס און אַזוי אויף און אַזוי אַרויס, וואָס איז טאַקע גוט און מאכט אייער קאָד אַ פּלאַץ מער מאַינטאַינאַבלע. ווי איך געזאגט, קוקן, זיי ניטאָ דינאַמיש אין אַז עס ס 1 טעקע, אָבער עס וואָלט דזשענערייט אַנדערש קוקן באזירט אויף די וועריאַבאַלז איר פאקטיש פאָרן אין, און דערצו, עס זענען אַ פּלאַץ פון פאַרשידענע העלפּער פאַנגקשאַנז אַז איר קענען נוצן צו העלפן איר שרייַבן דיין קאָד פאַסטער, וואָס איך וועט ווייַזן איר אין נאָר אַ רגע. יאָ. [תּלמיד] אזוי $ 0 איז אַ קאַנטראָולער, רעכט? אַז רגע זאַך. די קשיא איז איז $ 0 אַ קאַנטראָולער? $ 0 איז אַ בייַטעוודיק איך באשאפן רעכט דאָ. איך באשאפן אַ מיינונג ערשטער. איך אַסיינד עס צו עטלעכע בייַטעוודיק. דעמאָלט איך פארביי עס אין דעם פֿונקציע, שטעלן עס ווי דעם גוף פון דעם ענטפער. טוט וואָס מאַכן זינען? [תּלמיד] אזוי איז View :: פאַבריק, איז View ווי אַ סאָרט אָדער אַ ביבליאָטעק [ינאָדאַבאַל] פאַבריק פונקציאָנירן? די קשיא איז וועגן די מיינונג :: פאַבריק פֿונקציע, און בייסיקלי דעם איז עטלעכע מער כייפעץ-אָריענטיד פּראָגראַממינג יסענשאַלי. מיינונג איז די מיינונג קלאַס, און עס האט אַ מיטל גערופן "פאַקטאָרי," און אַז ס אַ וועג צו כאַפּן די כייפעץ אַז ס געהייסן "בלאָג / אינדעקס." און אַז ס עטלעכע מער כייפעץ-אָריענטיד פּראָגראַממינג שטאָפּן אַז איך בין ניט געגאנגען צו גיין אין דאָ אויך פיל. איצט דאָך, מיר ווילן צו שאַפֿן נייַ הודעות, אָבער מיר טאָן ניט וועלן צו האָבן צו טאָן עס דורך אַ דאַטאַבאַסע, אַזוי מיר ניטאָ געגאנגען צו שאַפֿן אַ נייַ קאַמף פֿאַר שאפן אַ נייַ פּאָסטן, און עס איז אַ פּלאַץ פון שטאָפּן מיר האָבן צו טאָן. דער ערשטער זאַך מיר ניטאָ געגאנגען צו טאָן - לאָזן ס מאַכנ די זאכן איינער דורך איינער. דער ערשטער זאַך מיר וועט טאָן איז מיר 'ווע גאַט צו שאַפֿן אַ פאָרעם פֿאַר ינסערטינג אַ נייַ פּאָסטן, אָבער איך בין אויך געגאנגען צו לייגן אַ נייַ קאַמף ערשטער, אַזוי אַדינג אַ נייַ קאַמף איז פּונקט ווי גרינג ווי אַדינג אַ נייַ פונקציאָנירן מיט אייער קאַנטראָולער, און פֿאַר איצט איך בין געגאנגען צו טאָן עפּעס זייער יקערדיק, נאָר כאַפּן דעם מיינונג און פּאָסטן עס, נאָר אַרויסווייַזן עס פֿאַר איר. און דעמאָלט איצט איך בין געגאנגען צו שאַפֿן אַ נייַ מיינונג טעקע, און איך בין געגאנגען צו אָנהייבן שרייבן עטלעכע שטאָפּן. וואָס ס פייַן וועגן קאָהאַנאַ איז אַז זיי צושטעלן אַ פּלאַץ פון פאַרשידענע העלפּער פאַנגקשאַנז פֿאַר איר צו שרייַבן View קאָד מער לייכט, און 1 פון די העלפּער פאַנגקשאַנז אָדער העלפּער מאַדזשולז איז אַרום שרייבט פארמען. פֿאַר שרייבן פארמען, איך טאָן ניט טאַקע האָבן צו גלייַך שרייַבן קיין HTML אליין. איר גייז האָבן געשריבן HTML פארמען. איר וויסן ווי עס קענען זיין טאַקע, טאַקע ווייטיקדיק און קאַמבערסאַם צו שרייַבן פארמען. עס ס ניט שפּאַס, אַזוי גליק, מיר קענען בייסיקלי שרייַבן אַ פאָרעם ניצן קאָהאַנאַ ס פאָרעם העלפּער פאַנגקשאַנז צו טאָן עס פֿאַר אונדז. מיר ניטאָ געגאנגען צו בייסיקלי האָבן פעלדער פֿאַר יעדער איין זאַך מיר האָבן, אַזוי איינער פֿאַר מחברים און איינער פֿאַר די ללבער. מיר ניטאָ געגאנגען צו האָבן אַ פירמע, און מיר ניטאָ גיי צו האָבן אַ אַרייַנשרייַב. און דעמאָלט לעסאָף, מיר ניטאָ געגאנגען צו האָבן אַ סאַבמישאַן. און ווי איר קענען זען, דעם איז פיל רייניקונג צו שרייַבן ווי אַלע אַז מעסי HTML, וואָס איז מין פון פייַן. געגעבן, עס זענען אנדערע וועב פראַמעוואָרקס וואָס האָבן עס אפילו רייניקונג ווי אַז, אָבער בייַ מינדסטער דעם איז בעסער ווי שרייבט די HTML זיך. אָסאַם, אַזוי דעם איז וואָס איר זען. אַז ס מין פון מעסי, אַזוי איך בין געגאנגען צו לייגן אַ שורה ברעכן עס צו מאַכן אַז קוק אַ קליין ניסער. נו, פון קורס, עס נאָך קוקט טאַקע, טאַקע שלעכט, אָבער מיר ניטאָ פּונקט פאָוקיסט אויף די פאַנגקשאַנאַליטי פֿאַר איצט און ניט אויף די עסטעטיק. קיין צייַט צו טאָן אַלץ. און ווי איר קענען זען, איצט מיר האָבן אַ יבער יקערדיק פאָרעם, וואָס איז מין פון פייַן. דעם קאָד איך וואָלט זאָגן איז רייניקונג ווי טריינג צו שרייַבן אַ HTML פאָרעם זיך, אַזוי אַז ס פייַן. וואָס ס ווייַטער? איצט מיר דאַרפֿן צו טאָן זאכן מיט די קאַמף. נאָרמאַללי ווען איר שרייַבן HTML פארמען, איר האָבן צו זאָגן עס ווו עס ס געגאנגען צו פאָרלייגן די פאָרעם צו. דורך פעליקייַט אין רובֿ וועב פראַמעוואָרקס, עס סאַבמיץ צו די פּינטלעך זעלביקער URL, אַזוי די זאַך איז, אויב איר שיקן אַ באַקומען בעטן צו / בלאָג / ניו, עס זאָל אַרויסווייַזן איר די פאָרעם, אָבער אויב איר שיקן אַ פּאָסטן בקשה צו / בלאָג / ניו מיט די דאַטן, עס זאָל פאקטיש פּרובירן צו ראַטעווען אַז פּאָסטן און טאָן עפּעס מיט עס. וואָס מיר ניטאָ געגאנגען צו טאָן איז בייסיקלי אַלע מיר האָבן צו טאָן צו קאָנטראָלירן צי עס ס אַ פּאָסטן בעטן אָדער אַ באַקומען בעטן איז צו קאָנטראָלירן וואָס זענען די פּאָסטן וועריאַבאַלז איר קענען שטעלן. און אויב דעם פּאָסטן בייַטעוודיק איז באַשטימט, דעמאָלט מיר ניטאָ געגאנגען צו פּרובירן און מאַכן אַ נייַ פּאָסטן. ווידער, מיר נאָר טאָן דעם, און אַז קריייץ אַ נייַ פּאָסטן, און מיר ניטאָ ממש געגאנגען צו שטעלן זייַן פעלדער ווי דעם, און דעריבער מיר ניטאָ געגאנגען צו ראַטעווען עס. און דעמאָלט איך בין געגאנגען צו רידערעקט צו די אינדעקס בלאַט אַזוי זיי קענען זען אונדזער רשימה פון הודעות ווידער. זאל ס פּרובירן אַז. איך וועט זאָגן, "בראַנדאָן," און דעריבער פאָרלייגן דעם פּאָסטן, און אויב אַלע גייט געזונט, ווי איר קענען זען, עס רידערעקטיד מיר צו די אינדעקס בלאַט, און אויב איך מעגילע צו די דנאָ, מיר האָבן אַ ניי ינסערטאַד פּאָסטן. ייי! יאָ, קשיא. [תּלמיד] וואָס אויב איר האט אריין די פּינטלעך זעלביקער זאַך איר אריין פאר? טוט עס טשעק צו מאַכן זיכער איר האָבן ניט דופּליקייטיד דער זעלביקער סאַבמישאַן? זיין פעליקייַט, ניט, ווייַל דורך פעליקייַט - נעבעכדיק, די קשיא איז אויב איר אַרייַן אין די פּינטלעך זעלביקער דאַטע אין דער פאָרעם און פאָרלייגן אַז, וועט עס לאָזן איר צו טאָן אַ דופּליקאַט כייפעץ, אַ דופּליקאַט פּאָזיציע, יסענשאַלי? רעכט איצט, יאָ, עס וועט לאָזן איר צו טאָן אַז, ווייַל אין דייטאַבייסיז עס ס בישליימעס גילטיק צו האָבן גאָר דופּליקאַט ראָוז, אָבער אויב אַז איז אַ דייַגע, דעמאָלט איר קענען לייגן וואַלידאַטיאָנס, למשל, צו מאַכן זיכער אַז אויב דאָס איז פּונקט דער זעלביקער ווי עפּעס אַז שוין יגזיסץ, דעמאָלט זאָגן אַז עס ס אַ פאַרקריפּלט כייפעץ, און דעמאָלט איר קענען אפילו ספּעציפיצירן דיין טעות אָנזאָג און זאָגן, "פאַרקריפּלט ווייַל דעם שוין יגזיסס" אָדער עפּעס ווי אַז. אבער אין דעם פאַל, איך קען נאָר שאַפֿן עפּעס דופּליקאַט. איצט לאָזן ס פּרובירן און שטעלן עטלעכע וואַלידאַטיאָנס. די פּראָבלעם מיט דעם רעכט איצט איז אַז איך קען ממש פאָרלייגן אַ גאָר ליידיק פּאָסטן. איך קענען גיט דעם קנעפּל רעכט איצט, און עס מיר גיין. איר קענען ניט טאַקע זען עס, אָבער דעם עקסטרע שורה דאָ ינדיקייץ אַז איך ממש האָבן אַ נייַ פּאָסטן. עס נאָר האט אַ ליידיק מחבר און אַ פּוסט גוף, און מיר טאָן ניט וועלן צו לאָזן מענטשן צו טאָן אַז. דעם איז ווו וואַלאַדיישאַן קומט ין איך קענען גיין צו מיין מאָדעל כייפעץ, און איצט איך קענען לייגן אַ נייַ פונקציאָנירן אַז ספּעסאַפייז וואָס וואַלאַדיישאַן כּללים איך זאָל לייגן צו דעם מאָדעל צו מאַכן זיכער אַז עס איז גילטיק אָדער צו ספּעציפיצירן וואָס טוט עס מיינען צו זיין אַ גילטיק פּאָסטן? און איך ווילן צו זאָגן עס ס נאָר אַ גילטיק פּאָסטן אויב ביידע די מחבר און גוף זענען ניט ליידיק, און דעם איז ווי איר טאָן עס אין קאָהאַנאַ. איר מאַכן אַ נייַ פונקציאָנירן גערופן "כּללים," און דעמאָלט איר בייסיקלי צוריקקומען אַ אַססאָסיאַטיווע מענגע אַז דיפיינז די וואַלאַדיישאַן כּללים פֿאַר דעם כייפעץ. מיר ניטאָ געגאנגען צו קריק די מענגע, און דעמאָלט וואָס מיר 'רע געגאנגען צו טאָן איז זאָגן "מחבר," עס גייט צו אַ מענגע, וואָס גייט צו אנדערן מענגע גערופן "ניט ליידיק." און דעמאָלט איך בין געגאנגען צו זאָגן "גוף." אָוקיי, און די סינטאַקס פֿאַר דעם און ביניען פֿאַר דעם זאל קוקן אַ ביסל קאַמבערסאַם און אַ ביסל קאָמפּליצירט. אויב איר לייענען די דאַקיומענטיישאַן, עס ס שיין סטרייטפאָרווערד צו רעכענען אויס, אָבער יסענשאַלי דעם איז וואָס איר דאַרפֿן צו טאָן צו ספּעציפיצירן עטלעכע וואַלאַדיישאַן כּללים, און עס זענען אַ פּלאַץ פון פאַרשידענע כּללים אַז קאָהאַנאַ וועט געבן איר פֿאַר פֿרייַ, ווי איר קענען לייגן כּללים צו זאָגן עס מוזן זיין לפּחות דעם לענג. אפֿשר עס האט צו זיין נומעריק. אפֿשר עס האט צו זיין אַלף נומעריק. אפֿשר עס האט צו זיין בייַ רובֿ דעם לענג, אַזוי אויף און אַזוי אַרויס. עס זענען אַ פּלאַץ פון פאַרשידענע כּללים אַז קאָהאַנאַ גיט פֿאַר איר, און איר קענען גיין אויף זייער וועבזייַטל, קוק בייַ די דאַקיומענטיישאַן, און איר קענען זען אַלע די פאַרשידענע זאכן אַז איר קענען טאָן. אבער דעם איז אַלע איך האָבן צו טאָן, און איצט לאָזן ס זען וואָס כאַפּאַנז אויב איך פאָרלייגן אַ ליידיק פּאָסטן. וואָס ס גיי צו פּאַסירן? טאַקע, ניט, איך באַקומען אַ טעות. איך באַקומען אַ וואַלאַדיישאַן ויסנעם. נו, עס ס גוט. עס דערציילט מיר אַז מיין מאָדעל איז פאַרקריפּלט, אָבער איך טאָן ניט ווילן צו אַרויסווייַזן אַ ויסנעם צו מיין וסערס ווען זיי פּרובירן צו פאָרלייגן עפּעס פאַרקריפּלט, רעכט? איך ווילן צו געבן זיי עטלעכע סאָרט פון פרענדליער טעות אָנזאָג ווען עפּעס גייט אומרעכט. וואָס מיר 'רע געגאנגען צו טאָן איז מיר ניטאָ געגאנגען צו ייַנוויקלען אַלץ אין אַ פּרובירן כאַפּן שלייף. פאקטיש, איך טראַכטן דעם איז אויך עפּעס איר האָבן ניט געלערנט נאָך אין קס50, ווייַל C, די פּראָגראַממינג שפּראַך C, טוט ניט האָבן אויסנעמען, אָבער כּמעט יעדער איין אנדערע שפּראַך האט אויסנעמען, אַזוי טאַקע, טאַקע בעקיצער, אַ ויסנעם איז עפּעס אַז אַ שטיק פון קאָד קענען וואַרפן אַ ויסנעם ווען עפּעס גייט אומרעכט, אָבער דעמאָלט אפֿשר עטלעכע אנדערע שטיק פון קאָד העכער אַרויף קענען כאַפּן אַז ויסנעם און טאָן עפּעס מיט עס. למשל, אין דעם פאַל, די שטיק פון קאָד אַז ס טריינג צו ראַטעווען אַ מאָדעל, עס וואַלידאַטעס די מאָדעל, און אויב עס זאגט, "אָוקיי, דעם מאָדעל איז פאַרקריפּלט," עס ס געגאנגען צו וואַרפן אַ ויסנעם, און דעם איז מין פון עקוויוואַלענט צו אין C איר זאל צוריקקומען אַ -1 אָדער עפּעס ווי אַז. און דעמאָלט פֿאַר מיר, דעם פֿונקציע, מיין קאָוד בייַ אַ העכער מדרגה, איך קענען פּרובירן און כאַפּן אַז ויסנעם און בייסיקלי זאָגן, "אָוקיי, אויב איך כאַפּן די ויסנעם, וואָס בין איך געגאנגען צו טאָן?" אָדער איך קען קלייַבן ניט צו כאַפּן אַז ויסנעם און לאָזן עמעצער העכער אַרויף כאַפּן די ויסנעם, אָדער אויב קיינער קאַטשאַז עס, דעמאָלט דער גאנצער פּראָגראַם קראַשיז און זאגט, "עפּעס איז פאַלש, און איך קען ניט שעפּן עס." אבער וואָס מיר טאָן איז איר ייַנוויקלען אַ שטיק פון קאָד אין אַ פּרובירן בלאָק, און דעמאָלט איר אויך לייגן עפּעס גערופן אַ כאַפּן בלאָק, וואָס איז די סאָרט פון קאָד וואָס וועט פּרובירן און כאַפּן אויסנעמען אַז קען פּאַסירן. און אַזוי אויב איך כאַפּן דעם באַזונדער ויסנעם אָדער ינוואַלאַדיישאַן ויסנעם, דעמאָלט וואָס איך בין געגאנגען צו טאָן איז איך בין געגאנגען צו שטעלן די ערראָרס - איך טראַכטן אַז ס ווי איך טאָן עס - און איך בין געגאנגען צו שטעלן די ערראָרס צו עטלעכע כייפעץ. און דעמאָלט וואָס איך בין געגאנגען צו טאָן איז אויב עס היץ דעם ויסנעם, עס ס ניט געגאנגען צו רידערעקט, און אויב עס טוט ניט רידערעקט, עס ס געגאנגען צו קומען אויס פון די אויב בלאָג און שלאָגן דעם בלאָג / ניו, וואָס איז ווילן איך ווילן צו טאָן. אויב עס איז אַ טעות, דעמאָלט איך ווילן צו גיין צוריק צו די פאָרעם און אַרויסווייַזן די ערראָרס. איצט וואָס איך ווילן צו טאָן איז איך ווילן צו פאָרן אין די ערראָרס צו די מיינונג. אָוקיי, איך טראַכטן איך האָבן די מיינונג רעכט דאָ, און בייסיקלי איך ווילן צו אַרויסווייַזן די ערראָרס אויב זיי עקסיסטירן. איידער איך שרייַבן די HTML פֿאַר אַז, איך בין געגאנגען צו טאַקע געשווינד ווייַזן איר וואָס די ביניען פון דעם ערראָרס בייַטעוודיק קוקט ווי, און דעם איז אַ גוט פיר אין אַלגעמיין. א פּלאַץ פון מאל איר באַקומען עפּעס צוריק פון עטלעכע אופֿן, עטלעכע פונקציאָנירן אין די וועב פריימווערק, און איר טאָן ניט וויסן וואָס די בייַטעוודיק קוקט ווי, אַזוי איר טאָן ניט וויסן ווי צו אַרבעטן מיט אים. איך בין געגאנגען צו נוצן אַ דרוקן ר מיטל צו בייסיקלי דרוקן עס אויס. און ווי איר קענען זען, עס דערציילט מיר עס ס אַ מיטאַרבעטער מענגע, און איר האָבן אַ שליסל, מחבר, פונקטן צו דעם שטריקל, מחבר מוזן נישט זיין ליידיק, און אנדערן שליסל, גוף, פונקטן צו אנדערן שטריקל, גוף מוזן נישט זיין ליידיק. איך בין ווי, אָוקיי, קיל. דעמאָלט איך קענען יטעראַטע דורך די מענגע און דרוקן אויס יעדער איין אָנזאָג. עס ס בייסיקלי ווי אַ אַססאָסיאַטיווע מענגע מיט אַ בינטל פון אַרטיקלען. וואָס איך בין געגאנגען צו טאָן איז "אויב ערראָרס," און איך בין געגאנגען צו שאַפֿן אַ ונאָרדערעד רשימה, און איך בין געגאנגען צו יטעראַטע דורך אַלע די ערראָרס. און דעם, און איצט איך בין געגאנגען צו פּרובירן סאַבמיטינג דעם ווידער, און לאָזן ס זען וואָס מיר באַקומען. איצט מיר באַקומען דעם פייַן רשימה פון ערראָרס, און דעם איז נאָך שיין מיעס, אָבער דעם דאָך קענען זיין פאָרמאַטטעד צו קוקן פייַן, אָבער די גרונט געדאַנק איז נאָר אין אַ ביסל שורות פון קאָד, מיר זענען קענען צו וואַלאַדייט אונדזער מאָדעל, מאַכן זיכער אַז זיכער פעלדער זענען ניט ליידיק, און אויב עפּעס זענען פאַלש, דעמאָלט צוריקקומען עטלעכע סאָרט פון טעות אָנזאָג איך קען דעריבער פאָרשטעלן צוריק צו דער באַניצער. איר קענען אויך קאַסטאַמייז אייער וואַלאַדיישאַן אַזוי אַז איר קענען פאקטיש האָבן אַ טעות אָנזאָג אַז איז מער ספּעציפיש צו אייער אַפּלאַקיישאַן אָדער עפּעס ווי אַז. אַלע וואס איז בכלל קוסטאָמיזאַבלע. צום באַדויערן, מיר ניטאָ פליסנדיק אויס פון צייַט, אַזוי איך בין געגאנגען צו האָבן צו שנייַדן אַוועק די לעבן קאָודינג סעסיע דאָ. עס זענען אַ בינטל פון אנדערע פֿעיִקייטן אַז איך ווילן צו באַווייַזן פֿאַר איר אין דעם בייַשפּיל. למשל, איר קענען לייגן טעמפּלאַטעס צו דיין פּלאַץ, אַזוי אפֿשר עס איז עטלעכע סאָרט פון HTML קאָד אַז איר ווילן צו צולייגן צו יעדער איין בלאַט אין אייער פּלאַץ, און אָנשטאָט פון פּאַסטינג אַז אין יעדער איין View טעקע איר האָבן, וואָס דאָך וואָלט זיין אַ שלעכט פיר, איר קענען בייסיקלי דעפֿינירן די טעמפּלאַטעס, און דעריבער אין אייער קאַנטראָולער זאָגן, "אָוקיי, איך בין ניצן דעם מוסטער." "האָבן אַלע מיין קוקן נוצן דעם מוסטער." און דער איינער לעצטע זאַך איך ווילן צו באַווייַזן צו איר ווי געזונט אַז מיר טאָן ניט האָבן צייַט פֿאַר איז קרייַז-פּלאַץ סקריפּטינג, און בייסיקלי איך טראַכטן איר גויס האָבן מיסטאָמע געזען אין קס50 - איך טראַכטן דוד מאַלאַן מיסטאָמע גערעדט וועגן ווי איר קענען יוזשאַוואַלי אַרייַנשפּריצן דזשאַוואַסקריפּט קאָד אין - האָבן איר גערעדט וועגן דעם? אפֿשר? אפֿשר נישט? אבער אַ פּלאַץ פון מאל איר קענען אַרייַנשפּריצן מאַלישאַס דזשאַוואַסקריפּט קאָד אין עמעצער ס דאַטאַבאַסע, און אויב זיי טאָן ניט אַנטלויפן אַז רעכט, דעמאָלט ווען זיי פאָרשטעלן אַז דאַטן צוריק צו דער באַניצער, דעמאָלט עס זאל לויפן עטלעכע סאָרט פון טראַפ - דזשאַוואַסקריפּט קאָד איר טאָן ניט ווילן צו פּאַסירן, און איך איז געגאנגען צו באַווייַזן ווי איר 'ד טאָן אַז ין קאָהאַנאַ. עס ס פאקטיש טאַקע, טאַקע גרינג. איך קען טאָן עס רעכט איצט אין 2 סעקונדעס ממש. אַלע איר האָבן צו טאָן איז בייסיקלי ייַנוויקלען די זאכן אין דעם זאַך גערופן HTML ענטיטיז. און אַז וועט אויטאָמאַטיש אַנטלויפן אַלע די אותיות רעכט און מאַכן זיכער איר טאָן ניט באַקומען דעם פּראָבלעם. [תּלמיד] איר געשריבן דער ערשטער פּרובירן ינקערעקטלי. [בראַנדאָן ליו] טאַקע, אָאָפּס. אָוקיי, אַז ס אַלע איך האט צו טיילן מיט איר פֿאַר הייַנט. די סליידז זענען געגאנגען צו זיין אַרייַנגעשיקט, אָבער די זענען בכלל דער בלויז רעסורסן איר זאָל טאַקע דאַרפֿן צו באַקומען סטאַרטעד מיט קאָהאַנאַ. איר קענען גיין צו דעם וועבזייַטל. זיי האָבן אַ באַניצער פירער, און זיי אויך האָבן אַ אַפּי Explorer. מיר קענען ויספאָרשן אַלע די פאַרשידענע פאַנגקשאַנז און העלפער פאַנגקשאַנז זיי האָבן פֿאַר איר. זיי בכלל האָבן גענוג אינפֿאָרמאַציע אויף דעם וועבזייַטל אַז איר קענען נוצן צו באַקומען סטאַרטעד און באַקומען געגאנגען מיט קאָהאַנאַ. עס זענען ניט אַז פילע טוטאָריאַלז, איך טראַכטן, פֿאַר קאָהאַנאַ, אַרויס פון וואָס זיי האָבן אויף דעם וועבזייַטל דאָ, אַזוי דעם איז מיסטאָמע אייער בעסטער געוועט. אבער אויב איר ווילן צו גיין מיט די וועב פריימווערק און איר טאָן ניט וועלן צו האָבן צו קלייַבן אַרויף אַ נייַ שפּראַך, און איר ווילן עפּעס אַז איז לעפיערעך לייטווייט און האט אַ גרינג לערנען ויסבייג, איך וואָלט באשטימט פֿאָרשלאָגן קאָהאַנאַ. אַז ס מיסטאָמע דער בעסטער קרבן פֿאַר אַז. די מאָדנע זאַך, כאָטש, איז אויב מיר זענען ניצן רובי אויף ראַילס, מיר קען האָבן רעפּליקייטיד וואָס מיר נאָר האט און מיסטאָמע מער אין אונטער 3 מינוט. ניט קיין וויץ, אָבער לערנען רובי אויף ראַילס נעמט אַ פּלאַץ מער ווי עס וואָלט נעמען צו לערנען קאָהאַנאַ. עס ס בייסיקלי דיין ברירה אויף וואָס איר ווילן צו קלייַבן צו לערנען, אָבער אויב איר ווילן צו באַקומען אַרויף און פליסנדיק געשווינד, קאָהאַנאַ איז באשטימט אַ זייער גוט ברירה. אַני לעצטע שאלות איידער מיר סוף? יאָ. [תּלמיד] ווי וואָלט מיר ויסשטימען אַז אין אַ קסס פריימווערק ווי איר זענען ניצן ווען איר זענען ינסטראַקטינג? די קשיא איז ווי וואָלט מיר ויסשטימען אַז מיט אַ קסס פריימווערק? וואָס מיר וואָלט מיסטאָמע טאָן איז מיר וואָלט מיסטאָמע אַרייַננעמען אַ נייַ טעקע ווו מיר וואָלט דאַמפּ אַלע אונדזער קסס טעקעס, און דעריבער מיר 'ד אויך לייגן אַ נייַ מוסטער. אין די מוסטער מיר 'ד אַרייַננעמען די קסס טעקעס צו מאַכן זיכער זיי ניטאָ רעפראַנסט אויף יעדער איין בלאַט, און דעריבער ווען איר פאקטיש זענען שרייַבן HTML, איר נאָר לייגן צונעמען קלאסן און וואַטנאַט, און פֿאַר בייַשפּיל, ווען איר ניטאָ ניצן עפּעס ווי די פאָרעם העלפּער פֿונקציע, איר קענען לייגן מער פּאַראַמעטערס דערנאָכדעם צו ספּעציפיצירן וואָס קלאסן איר ווילן צו זיין אַטאַטשט צו פאַרשידן זאכן אַזוי זיי קען נוסח עס רעכט, און אַז ס בייסיקלי ווי איר וואָלט גיין. קיין אנדערע שאלות? אָסאַם. דאנק איר פֿאַר אייער צייַט, און דאַנקען איר פֿאַר קומען. איך איז געווען ניט געגאנגען צו לייגן זייער פיל אַנדערש, אָבער 1 טאַקע שנעל זאַך איז מיר טאָן ניט האָבן אַ לינק צו די פאָרעם. טאַקע נאַריש. זאל ס לייגן אַ - פאקטיש אין די מיינונג, בלאָג, אינדעקס, זאל ס טאַקע געשווינד לייגן אַ לינק אַז גייט צו די נייַ בלאַט, די בלאַט ווו מיר קענען אַרייַנלייגן אַ נייַ פּאָסטן. מיר ניטאָ געגאנגען צו טאָן דעם. וואָס ס פייַן איז עס איז דעם גאַנץ גרופּע פון ​​HTML העלפּער פאַנגקשאַנז וואָס טאָן פאַרשידענע זאכן פֿאַר איר, אַזוי איר שוין געזען די ענטיטיז פונקציאָנירן דאָ, אָבער זיי אויך האָבן אַ פֿונקציע גערופן "אַנקער", וואָס איר קענען דרוקן אין בלאָג / ניו און זאָגן, "פאסט אַ נייַ בלאָג." און עס וואָלט מאַכן אַז לינק פֿאַר איר, און דעם מיינט טאַקע נישטיק צו טאָן, אָבער דעם איז פייַן, ווייַל רעכן אַז איר זענען מאָווינג דיין וועבזייַטל פון 1 פעלד צו אנדערן. און אויב איר נאָר געשריבן אויס די URL ס זיך, דעמאָלט איר וואָלט האָבן צו טוישן אַלע די URL ס. אָדער אפֿשר איר אריבערגעפארן עס פון 1 סובפאָלדער צו אנדערן סובפאָלדער. איר וואָלט האָבן צו טוישן אַלע די URL ס זיך, און אַז ס ניט שפּאַס. איר קענען נוצן דעם אַנקער רעכט דאָ, און איר קענען טוישן די פעלד אָדער די סובפאָלדער פּרעפיקס אין די קאַנפיגיעריישאַן טעקע אַמאָל, און דעריבער עס וועט צולייגן אַז אומעטום, און דעם איז, ווידער, אַ גרויס בייַשפּיל פון טאָן ניט איבערחזרן זיך, דריינג דיין קאָד אויס. ווו נאָר איר ניטאָ ריפּיטינג זיך, פּרובירן און עקסטראַקט אין עטלעכע סאָרט פון קאַנפיגיעריישאַן טעקע אָדער צו אַ אַנדערש פונקציאָנירן און האָבן עס שעפּן אַז פֿאַר איר. און די זייער לעצט זאַך אַז איך געוואלט צו ווייַזן איר איז רעכן מיר ניטאָ צוריק אין דעם פּאָסטן, און איך האט פארפאסט עטלעכע טאַקע לאַנג עסיי, אָבער איך פארגעסן צו אַרייַננעמען מיין מחבר. איצט ווען איך דריקט "פאָרלייגן אַרייַנשיקן," איך נאָר פאַרפאַלן אַלץ. ניט! טאַקע טרויעריק. אַזוי ווי טאָן איר האַנדלען מיט אַז? דעם איז וואָס מיר טאָן. וואָס מיר טאָן איז דאָ פֿאַר די אַרייַנשרייַב און טעקסט געגנט פאַנגקשאַנז, אויב מיר אַרייַננעמען אַ רגע פּאַראַמעטער, דעמאָלט דער ווערט פון אַז רגע פּאַראַמעטער איז געגאנגען צו זיין וואָס די פעלד איז געגאנגען צו זיין טכילעס פּאַפּיאַלייטאַד מיט. וואָס מיר געקענט טאָן איז אין אונדזער בלאָג קאַנטראָולער, מיר געקענט בינדן אנדערן בייַטעוודיק. רופן עס "וואַלועס" מייַבע. און פאָרן אין דעם פּאָסטן מענגע, ממש. אַז מיטל אַז אויב די וואַלאַדיישאַן ניט אַנדערש, פאָרן צו מיר דעם פּאָסטן מענגע אַז איך דערלאנגט פון די לעצטע בקשה, און אַז וועג איך קענען נוצן די וואַלועס פון מיין לעצט סאַבמישאַן צו רעפּאָפּולאַטע די פעלדער. איצט איך קענען טאָן עפּעס ווי וואַלועס מחבר און וואַלועס גוף, און אַז וועג איצט אויב איך טאָן עטלעכע טראַפ - שטאָפּן און גיט "פאָרלייגן אַרייַנשיקן," דעמאָלט עס סטייז עס. אבער מיר ניטאָ געגאנגען צו לויפן אין אן אנדער פּראָבלעם. אַז אַרבעט, אָבער אויב איך גיין צו די בלאַט די זייער ערשטער מאָל, עס ס געגאנגען צו אַראָפּפאַלן, און אַז ס ווייַל די זייער ערשטער מאָל מיר גיין צו די בלאַט, דעם פּאָסטן בייַטעוודיק האט ניט געווען דיפיינד נאָך. עס ס נאַל. עס טוט נישט עקסיסטירן. און וואָס מיר ווילן צו זאָגן איז אויב דעם שליסל יגזיסץ, דעמאָלט צוריקקומען די ווערט פון דעם מענגע, אָבער אויב דער שליסל טוט נישט עקסיסטירן, דעמאָלט צוריקקומען אַ פּוסט שטריקל. אַז ס די פאַנגקשאַנאַליטי מיר וועלן דאָ. מיר ווילן צו טשעק אויב דער שליסל יגזיסס איידער טריינג צו צוטריט די מענגע, און גליק גענוג, קאָהאַנאַ אויך גיט אונדז אַ העלפער פֿונקציע פֿאַר אַז. זיי האָבן דעם גאַנץ סוויט פון פאַנגקשאַנז אונטער דעם נאָמען אַרר, קורץ פֿאַר מענגע, און זיי האָבן 1 פונקציאָנירן גערופן "באַקומען," און איר קענען פאָרן אין די מענגע, און איר קענען פאָרן אין די נאָמען פון די שליסל. דעמאָלט בייסיקלי וואָס עס וועט טאָן איז עס וועט פּרובירן צו באַקומען אַז שליסל, אָבער אויב אַז שליסל טוט נישט עקסיסטירן אין די מענגע, דעמאָלט עס וועט צוריקקומען ליידיק, אָדער מיר קענען אויך ספּעציפיצירן אַ פעליקייַט, איך גלויבן, וואָס איז פייַן. איצט אויב מיר טאָן די זעלבע זאַך ווידער, דעמאָלט איר זען איצט עס אַרבעט די ערשטער מאָל אַרום, און ווידער, אויב מיר טיפּ אין עטלעכע טראַפ - שטאָפּן און פּרובירן און פאָרלייגן, דעמאָלט עס סטייז עס. און איך טרעפן איך קענען אויך ווייַזן איר ווי צו לייגן אַ מוסטער טאַקע געשווינד. וואָס מיר קענען טאָן ערשטער איז מיר קענען לייגן אַ נייַ מיינונג גערופן "טעמפּלאַטע.פפּ" ין די קוקן טעקע, און וואָס איך בין געגאנגען צו טאָן איז איך בין געגאנגען צו דרוקן אויס עפּעס גערופן "צופרידן," וואָס איז געגאנגען צו זיין מיין הויפּט צופרידן. און אפֿשר בייַ די זייער דנאָ איך בין געגאנגען צו לייגן, זאָגן, דרוקרעכט. [ינאָדאַבאַל תּלמיד קשיא] [בראַנדאָן ליו] אפֿשר דעם איז אַ יבער יקערדיק מוסטער איך ווילן צו נוצן. איך ווילן צו האָבן אַ טעקע מיט מיין דרוקרעכט אויף יעדער איין בלאַט, און איצט וואָס איך בין געגאנגען צו טאָן ין מיין קאַנטראָולער איז איצט אַנשטאָט פון געזאגט, "יקסטענדז קאָנטראָללער" איך בין געגאנגען צו זאָגן, "יקסטענדז קאָנטראָללער_טעמפּלאַטע," און איצט אָנשטאָט פון געזאגט, "ענטפער גוף איז גלייַך צו דעם מיינונג," איך בין געגאנגען צו זאָגן, "דעם מוסטער צופרידן איז -" און איך טראַכטן - טאָן איך לייגן אַ גלייַך צייכן? איך פאַרגעסן. יאָ, איך געדאַנק אַזוי. און איצט איך שטעלן אַז צופרידן בייַטעוודיק צו גלייַך דער מיינונג. איך קענען טאָן די זעלבע דאָ. און איצט אויב איך דערפרישן, איר קענען זען איצט דעם דרוקרעכט איז מוסיף עס, און פּונקט מאַכן עטלעכע טראַפ - פּאָסטן, און דעריבער, ווידער, איר זאָל זען אַז די דרוקרעכט איז בייַ די זייער דנאָ פון די בלאַט. גרויס. אַז ס אַלע איך געוואלט צו ווייַזן איר גייז. [אַפּלאָז] קיין שאלות? [CS50.TV]