1 00:00:00,000 --> 00:00:03,920 >> [Musik zu spielen] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. MALAN: Alles klar. 4 00:00:13,800 --> 00:00:15,640 Dies ist CS50. 5 00:00:15,640 --> 00:00:17,620 Dies ist der Beginn der achten Woche. 6 00:00:17,620 --> 00:00:22,440 Und Sie erinnern sich vielleicht, dass wir aufgehört haben letzte Mal sah eine neue Sprache 7 00:00:22,440 --> 00:00:23,240 ganz. 8 00:00:23,240 --> 00:00:25,905 In der Tat, eine, die ziemlich ist leicht und es ist nicht einmal 9 00:00:25,905 --> 00:00:26,940 eine Programmiersprache. 10 00:00:26,940 --> 00:00:31,100 Es ist eine Auszeichnungssprache, die uns ermöglicht tatsächlich strukturieren und machen Webseiten. 11 00:00:31,100 --> 00:00:33,350 Und wenn Sie etwas anderes in Verbindung mit this-- 12 00:00:33,350 --> 00:00:35,670 oder Sie bald will, wenn Sie nicht bereits haben. 13 00:00:35,670 --> 00:00:38,530 Wir werden Cascading verwenden Style Sheets oder CSS, die 14 00:00:38,530 --> 00:00:40,971 eine andere Art von Sprach mit Eigenschaften und Werte 15 00:00:40,971 --> 00:00:43,220 das wird lassen Sie uns Dinge wie die Farbe ändern 16 00:00:43,220 --> 00:00:46,010 und ändern Sie die Position und diese Art von zwickt. 17 00:00:46,010 --> 00:00:49,940 Aber heute und weiter, beginnen wir, Fokus auf leistungsstärkere Sprachen 18 00:00:49,940 --> 00:00:52,810 tatsächlichen Programmiersprachen wie PHP. 19 00:00:52,810 --> 00:00:54,880 >> Also PHP gibt es schon seit einiger Zeit. 20 00:00:54,880 --> 00:00:56,810 Und wie Sie, es zu sehen wurde in erster Linie entwickelt 21 00:00:56,810 --> 00:01:00,280 früh zum eigentlichen Einsatz in Web-Entwicklung 22 00:01:00,280 --> 00:01:02,360 und tatsächlich Erzeugung Webseiten. 23 00:01:02,360 --> 00:01:04,849 Also, welche Art von Funktionen bietet eine Sprache 24 00:01:04,849 --> 00:01:10,040 benötigen, um Web machen Seiten dynamisch mit ihm? 25 00:01:10,040 --> 00:01:14,760 >> In anderen Worten, wenn Sie generieren möchten Inhalt dynamically-- wie Facebooks 26 00:01:14,760 --> 00:01:19,480 Newsfeed, die sich ständig ändert, oder Sofortnachrichten, die von Zeit knallen 27 00:01:19,480 --> 00:01:21,872 wie, was ist der Zeit-- Kernstück der Funktionalität 28 00:01:21,872 --> 00:01:24,580 Sie in einer Programmiersprache müssen Das würde Ihnen dynamisch lassen 29 00:01:24,580 --> 00:01:28,070 Drucken neue Informationen auf dem Bildschirm? 30 00:01:28,070 --> 00:01:28,685 >> STUDENT: Code. 31 00:01:28,685 --> 00:01:29,560 DAVID J. MALAN: Code. 32 00:01:29,560 --> 00:01:30,440 Ok. 33 00:01:30,440 --> 00:01:31,995 Wir werden das nehmen. 34 00:01:31,995 --> 00:01:35,310 Ein wenig genauer. 35 00:01:35,310 --> 00:01:37,639 Ich meine, wir tun könnten dies mit C, ehrlich gesagt. 36 00:01:37,639 --> 00:01:38,930 Es wäre ein Schmerz im Nacken sein. 37 00:01:38,930 --> 00:01:41,045 Aber-- ist dieses Engagement? 38 00:01:41,045 --> 00:01:41,895 >> STUDENT: Ja. 39 00:01:41,895 --> 00:01:42,677 Variablen, vielleicht? 40 00:01:42,677 --> 00:01:43,760 DAVID J. MALAN: Variablen. 41 00:01:43,760 --> 00:01:44,160 OK, sicher. 42 00:01:44,160 --> 00:01:45,740 Variablen können sicherlich helfen uns aus. 43 00:01:45,740 --> 00:01:47,020 Und sogar etwas einfacher. 44 00:01:47,020 --> 00:01:50,640 Wir haben es in der ersten Programm des ersten Tages 45 00:01:50,640 --> 00:01:55,686 wenn wir tatsächlich gesagt "Hallo Welt". 46 00:01:55,686 --> 00:01:56,570 >> STUDENT: Drucken. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. MALAN: Print, nicht wahr? 48 00:01:57,778 --> 00:02:01,050 Drucken oder printf in der Welt der C. Also all dieser Zeit, 49 00:02:01,050 --> 00:02:03,362 wir hatten unsere Entsorgung ein language-- C, 50 00:02:03,362 --> 00:02:05,570 in particular-- und sogar Scratch für diese Angelegenheit, 51 00:02:05,570 --> 00:02:07,400 können Textzeichenfolgen zu generieren. 52 00:02:07,400 --> 00:02:11,090 >> Nun, wenn HTML, wie wir letzte Woche gesehen haben, ist nur eine ganze Reihe von Textzeichenfolgen 53 00:02:11,090 --> 00:02:14,692 wenn auch mit offenen Klammern und geschlossen Klammern und eine Art von Reim 54 00:02:14,692 --> 00:02:16,650 und Grund dahinter, gut, dann könnten wir wirklich 55 00:02:16,650 --> 00:02:20,440 beginnen Erzeugen Webseiten entweder manuell, indem Sie sie in gedit 56 00:02:20,440 --> 00:02:23,870 oder in Microsoft Word, denn das matter-- wir brauchen nur einen Texteditor. 57 00:02:23,870 --> 00:02:26,830 >> Oder wir könnten Code zu schreiben, Ihren Vorschlag 58 00:02:26,830 --> 00:02:30,435 früher, das würde uns lassen dynamisch zu generieren HTML, 59 00:02:30,435 --> 00:02:32,560 und das ist, was wir zu tun beginnen mit PHP 60 00:02:32,560 --> 00:02:34,900 und schließlich sogar mit einem Sprache namens JavaScript 61 00:02:34,900 --> 00:02:37,910 ist zu verwenden eine andere Sprache zu erzeugen. 62 00:02:37,910 --> 00:02:40,720 Und in der Tat ist es das, was Facebook und viele, viele andere Websites 63 00:02:40,720 --> 00:02:44,530 tun, um tatsächlich dynamisch Display neuen Informationen zu Ihnen. 64 00:02:44,530 --> 00:02:47,117 >> Lassen Sie uns also mit this-- a beginnen kryptischen suchen Linie, aber ein 65 00:02:47,117 --> 00:02:48,450 das ist eigentlich ziemlich mächtig. 66 00:02:48,450 --> 00:02:51,210 Bisher Wir haben mit C, Das ist eine kompilierte Sprache. 67 00:02:51,210 --> 00:02:55,050 Und nur eine schnelle recap-- eine kompilierte Sprache hat, was charakteristisch? 68 00:02:55,050 --> 00:02:59,050 Sie müssen natürlich zu kompilieren es, aber was bedeutet das? 69 00:02:59,050 --> 00:03:00,505 Ja? 70 00:03:00,505 --> 00:03:02,940 >> STUDENT: Es muss sein in Maschinencode zusammengesetzt. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. MALAN: OK. 72 00:03:03,060 --> 00:03:04,530 Es muss zusammengebaut werden in Maschinencode. 73 00:03:04,530 --> 00:03:07,340 Also nehmen Sie Ihren Quellcode, Das ist eine Art Englisch-like. 74 00:03:07,340 --> 00:03:09,270 Sie wandeln also etwas niedrigeren Niveau, 75 00:03:09,270 --> 00:03:11,590 was letztlich genannt Objekt code-- 0 und 1en. 76 00:03:11,590 --> 00:03:14,830 Und es ist diese 0 und 1 ist das eine CPU, wie sie von Intel, 77 00:03:14,830 --> 00:03:16,110 tatsächlich zu verstehen. 78 00:03:16,110 --> 00:03:19,690 >> Nun, PHP und Python und Ruby und JavaScript und Trauben von anderen 79 00:03:19,690 --> 00:03:23,190 Sprachen werden nicht kompiliert Sprachen, sondern interpretierte Sprachen, 80 00:03:23,190 --> 00:03:26,630 was bedeutet, Sie geben Sie sie einfach und dann Sie nicht erscheinen, sie in 0 und 1 ist. 81 00:03:26,630 --> 00:03:30,790 Sie stattdessen nur liefern dann als Eingang zum Programm jemand anderes, 82 00:03:30,790 --> 00:03:32,080 rief ein Dolmetscher. 83 00:03:32,080 --> 00:03:34,460 Und diese Person ist Programm wurde entwickelt, 84 00:03:34,460 --> 00:03:38,280 zu verstehen, was jede und jedes Symbol in Python oder PHP 85 00:03:38,280 --> 00:03:42,650 oder Rubin oder eine beliebige Anzahl von andere Sprachen bedeutet. 86 00:03:42,650 --> 00:03:44,760 >> Und so brauchen wir nur noch so etwas wie dieses. 87 00:03:44,760 --> 00:03:46,350 Also in der Tat, ich bin zu gehen hinübergehen zu dem Gerät 88 00:03:46,350 --> 00:03:48,100 hier, nur in einem alten Fenster, und wir sind 89 00:03:48,100 --> 00:03:52,580 werde weiter und offener gehen eine Datei namens, sagen, hallo. 90 00:03:52,580 --> 00:03:55,780 Jetzt zuvor, könnte ich gespeichert haben dies sogar mit der Dateierweiterung, 91 00:03:55,780 --> 00:03:57,910 aber ich werde tun etwas noch einfacher hier. 92 00:03:57,910 --> 00:04:02,450 Ich werde weitermachen und Diese Datei mit dieser kryptischen Syntax. 93 00:04:02,450 --> 00:04:06,310 Also "user, bin, env, für Umwelt, php. " 94 00:04:06,310 --> 00:04:10,670 >> Das ist einfach eine Zeile Code, die ist werde mein Betriebssystem zu erzählen, 95 00:04:10,670 --> 00:04:13,730 gehen finden in Ihrem lokalen Umwelt, was auch immer das heißt, 96 00:04:13,730 --> 00:04:18,149 wo PHP ist-- die interpreter-- und gehen Sie vor und verwenden Sie diese Interpreter 97 00:04:18,149 --> 00:04:20,589 um den folgenden Code zu interpretieren. 98 00:04:20,589 --> 00:04:22,760 Nun ist diese Art von eine hässliche Merkmal PHP. 99 00:04:22,760 --> 00:04:24,980 Aber in dieser Sprache, jedes Mal, wenn Sie PHP-Code zu schreiben, 100 00:04:24,980 --> 00:04:29,200 Sie brauchen, um eine dieser hässlichen haben PHP-Tags Abgrenzung der Anfang 101 00:04:29,200 --> 00:04:32,220 Ihrer code-- 00:04:37,430 >> Aber hier unten, ich kann jetzt etwas tun ganz einfach, wie printf hallo Komma 103 00:04:37,430 --> 00:04:40,922 Welt Backslash n der Nähe zitat, schließende Klammer. 104 00:04:40,922 --> 00:04:42,630 Und dann nur für eine gute Maßnahme, ich werde 105 00:04:42,630 --> 00:04:45,380 nach vorne und in der Nähe zu gehen meine php-Tag über hier 106 00:04:45,380 --> 00:04:47,390 so dass alles aussieht schön schön gedruckt. 107 00:04:47,390 --> 00:04:50,780 >> Und sobald ich auf Speichern, gedit ist eigentlich intelligent genug 108 00:04:50,780 --> 00:04:54,620 bis zu dieser ersten Zeile schauen und zu realisieren, oh, du schreibst PHP-Code. 109 00:04:54,620 --> 00:04:56,710 Lassen Sie mich Syntaxhervorhebung es mit den Farben 110 00:04:56,710 --> 00:04:58,690 hier, so dass es aussieht ein wenig mehr. 111 00:04:58,690 --> 00:05:01,300 Aber jetzt werde ich gehen bis zu meinem Terminal-Fenster. 112 00:05:01,300 --> 00:05:02,340 Ich werde zoomen. 113 00:05:02,340 --> 00:05:06,860 >> Dieses Programm wurde als "Hallo" so werde ich dot slash tun hallo, 114 00:05:06,860 --> 00:05:07,990 aber die Erlaubnis verweigert. 115 00:05:07,990 --> 00:05:08,490 Und bash. 116 00:05:08,490 --> 00:05:10,610 Wir haben eigentlich davon gehört vor, was ein paar Wochen 117 00:05:10,610 --> 00:05:13,140 im Rahmen der Shells, einer jener Fehler. 118 00:05:13,140 --> 00:05:16,240 >> Aber Permission denied wir gesehen haben vor, vielleicht in einem anderen Kontext. 119 00:05:16,240 --> 00:05:19,060 Hat jemand daran erinnern, wie Sie vielleicht etwas zu fixieren 120 00:05:19,060 --> 00:05:22,100 wo Genehmigung ist so verweigert? 121 00:05:22,100 --> 00:05:23,490 Was ist der Befehl, mindestens? 122 00:05:23,490 --> 00:05:24,159 >> STUDENT: Chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. MALAN: Ja, chmod, zum Ändern des Modus einer Datei. 124 00:05:26,700 --> 00:05:30,171 Und Sie bekommen umso mehr zu verwenden dies nächste Woche mit einer anschließenden Problem 125 00:05:30,171 --> 00:05:30,670 gesetzt. 126 00:05:30,670 --> 00:05:33,211 Aber jetzt werde ich ändern der Modus nicht lesbar sein, 127 00:05:33,211 --> 00:05:36,650 sondern jedem executeability geben Privilegien, die Fähigkeit 128 00:05:36,650 --> 00:05:37,710 diese Datei ausführen. 129 00:05:37,710 --> 00:05:40,360 Und ich werde zuordnen dass in der Datei hallo. 130 00:05:40,360 --> 00:05:45,150 >> Wenn ich jetzt tun dot slash hallo eingeben, können Sie sehen in der Tat, mein Programm, hallo Welt. 131 00:05:45,150 --> 00:05:48,760 Und welche Schritt habe ich klar ganz überspringen? 132 00:05:48,760 --> 00:05:49,520 Kompilieren. 133 00:05:49,520 --> 00:05:51,680 Also habe ich nur dieses Programm lief ganz einfach. 134 00:05:51,680 --> 00:05:55,690 >> Und es stellt sich heraus, können Sie dies mit zu tun eine Menge von Syntax erinnert an C 135 00:05:55,690 --> 00:06:03,400 Lassen Sie mich gehen in den heutigen Code, denen ich in meine vhost Verzeichnis abgelegt 136 00:06:03,400 --> 00:06:05,250 Hier zum wahren Gründe wir kommen wieder zu kommen. 137 00:06:05,250 --> 00:06:09,350 Und ich werde in zu gehen, sagen wir, die Bedingungen 1. 138 00:06:09,350 --> 00:06:12,450 >> Und Sie werden hier zu sehen, erste und Linie eine ganze Reihe von Kommentaren. 139 00:06:12,450 --> 00:06:15,240 Aber dies ist tatsächlich eine Neuschöpfung in PHP 140 00:06:15,240 --> 00:06:18,960 eines Programms die wir in der Woche tat sogenannte Bedingungen 1.c 141 00:06:18,960 --> 00:06:20,690 wobei der Zweck in Leben dieses Programm 142 00:06:20,690 --> 00:06:22,950 ist offenbar zu fragen der Benutzer für eine ganze Zahl 143 00:06:22,950 --> 00:06:25,270 und dann einige flauschige Analyse darauf, wodurch 144 00:06:25,270 --> 00:06:29,510 Sie sagen, wenn es positiv ist oder negativ oder gleich Null ist. 145 00:06:29,510 --> 00:06:34,220 Und ich erwähne dies nur, weil, außer vielleicht ein kleines Detail, 146 00:06:34,220 --> 00:06:37,150 Es ist zu unterscheiden, so weit von C. 147 00:06:37,150 --> 00:06:39,930 >> Was ist die eine charakteristische hier springt, dass vielleicht aus 148 00:06:39,930 --> 00:06:41,410 auf Sie als wenig anders? 149 00:06:41,410 --> 00:06:42,160 Vielleicht zwei Dinge. 150 00:06:42,160 --> 00:06:42,660 Ja? 151 00:06:42,660 --> 00:06:44,070 >> STUDENT: Dollarzeichen n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. MALAN: Yeah. 153 00:06:44,944 --> 00:06:46,210 So Dollarzeichen n vorhanden. 154 00:06:46,210 --> 00:06:48,120 Und Dollar-Zeichen, wie wir werden sehen, gehen 155 00:06:48,120 --> 00:06:51,460 , um ein Update zu der Anfang sein einer Variablen in PHP. 156 00:06:51,460 --> 00:06:54,250 Es ist sowohl gut als auch bad-- gut dass es irgendwie auf der Hand, was ist 157 00:06:54,250 --> 00:06:56,797 eine Variable, schlecht, dass es noch eine andere Sache zu geben. 158 00:06:56,797 --> 00:06:58,630 Und es gibt einen weiteren was wir haben nicht ganz 159 00:06:58,630 --> 00:07:00,876 gesehen, zumindest von dieser Eingabe. ja? 160 00:07:00,876 --> 00:07:01,630 >> STUDENT: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. MALAN: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline sahen wir nicht per se in C, obwohl es so etwas 163 00:07:06,550 --> 00:07:09,530 ähnlich, aber wir getstring verwendet haben, und dies ist sein Gegenstück. 164 00:07:09,530 --> 00:07:12,950 Also, wenn ich in diese zu gelangen Verzeichnis, das zufällig, 165 00:07:12,950 --> 00:07:18,030 wie werde ich ein bisschen in meiner vhost erklären Verzeichnis und meine Quelle ein Verzeichnis, 166 00:07:18,030 --> 00:07:22,730 und ich gehen Sie vor und tun dot slash conditions-- whoops-- dot slash 167 00:07:22,730 --> 00:07:26,710 Bedingungen 1, werden Sie sehen, wieder, das gleiche Issue-- Erlaubnis verweigert. 168 00:07:26,710 --> 00:07:33,610 >> Also lassen Sie mich vergrößern und tun chmod ein Plus x über die Bedingungen, Punkt Schrägstrich Bedingungen. 169 00:07:33,610 --> 00:07:35,222 Ich möchte eine ganze Zahl, bitte, 50. 170 00:07:35,222 --> 00:07:36,930 Und wir könnten spielen Spiel den ganzen Tag lang. 171 00:07:36,930 --> 00:07:39,140 Es wird genau verhalten wie es in der ersten Woche taten. 172 00:07:39,140 --> 00:07:42,860 >> OK, so gar nicht so verschieden, mit Ausnahme nicht nur, dass eine leichte bisschen Syntax, 173 00:07:42,860 --> 00:07:45,490 aber an der Spitze, ich wieder hatte diese Linie, die 174 00:07:45,490 --> 00:07:49,760 erlaubt mir etwas zu schaffen, dass sieht aus wie ein C-Programm namens hallo, 175 00:07:49,760 --> 00:07:51,150 genannt Bedingungen 1. 176 00:07:51,150 --> 00:07:54,520 Aber es ist nicht 0 und Einsen Ich bin direkt auszuführen. 177 00:07:54,520 --> 00:07:57,620 Es ist stattdessen läuft diese Dolmetscher, dessen Name 178 00:07:57,620 --> 00:07:59,440 zufällig identisch mit der Sprache. 179 00:07:59,440 --> 00:08:04,970 Das Programm nennt sich PHP und meinen Code unterhalb der Linie eine wird hineingeben. 180 00:08:04,970 --> 00:08:07,740 >> Wir können eine weitere recht einfach zu tun Beispiel erinnert an etwas, 181 00:08:07,740 --> 00:08:09,240 wir haben schon vor Wochen. 182 00:08:09,240 --> 00:08:12,020 Auch dies ist eine Art von beliebige Stück Code 183 00:08:12,020 --> 00:08:14,000 dass anscheinend tut Was, wenn Sie es laufen? 184 00:08:14,000 --> 00:08:15,625 Was ist das Drucklegung, vermutlich? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Also zunächst in Zeile 16, ist es sagen x ist jetzt 2, wahrscheinlich. 187 00:08:28,250 --> 00:08:30,920 % D ist das gleiche wie für die $ i printf. 188 00:08:30,920 --> 00:08:33,460 Also dann ist es Cubing, punkt, Punkt, Punkt, in Zeile 17. 189 00:08:33,460 --> 00:08:36,299 Und dann Zeile 18 erscheint um eine Funktion Cubed nennen. 190 00:08:36,299 --> 00:08:37,600 Und wo ist Cubed definiert? 191 00:08:37,600 --> 00:08:40,319 >> Nun, es sieht aus wie in Zeile 25, das ist also gar nicht so verschieden. 192 00:08:40,319 --> 00:08:42,610 Ich habe einige Kommentare über bekam , aber zum größten Teil, 193 00:08:42,610 --> 00:08:45,370 es ist eine ziemlich einfache Portierung oder Wandlungs 194 00:08:45,370 --> 00:08:48,470 vom C-Programm mit der PHP-Version. 195 00:08:48,470 --> 00:08:52,670 Aber es gibt nun ein paar Unterschiede, die vielleicht sollte herausspringen. 196 00:08:52,670 --> 00:08:56,100 Was ist anders an, wie Sie könnte diese gleiche Programm in C schreiben? 197 00:08:56,100 --> 00:08:57,900 >> STUDENT: [unverständlich]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. MALAN: Es gibt kein Prototyp bis oben. 199 00:09:00,070 --> 00:09:03,210 So PHP-- und ehrlich gesagt, ein viele moderne languages-- 200 00:09:03,210 --> 00:09:06,920 gibt eine Menge intelligenter und hilfreich als C-Compiler, dass Sie 201 00:09:06,920 --> 00:09:09,740 können die Funktion hier untergebracht, Sie können eine Funktion hier unten setzen, 202 00:09:09,740 --> 00:09:12,740 und der Dolmetscher wird um Ihnen den Gefallen tun Lesung 203 00:09:12,740 --> 00:09:16,010 die gesamte Datei, bevor sie entscheidet, dass einige Funktion nicht vorhanden. 204 00:09:16,010 --> 00:09:17,970 So schön Verbesserungen Jahre später. 205 00:09:17,970 --> 00:09:22,126 Aber es gibt auch etwas, sonst anders oder hier fehlt. 206 00:09:22,126 --> 00:09:22,626 Ja? 207 00:09:22,626 --> 00:09:25,084 >> STUDENT: [unverständlich]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. MALAN: Wir haben nicht zu erklären die Arten von Variablen, 209 00:09:27,750 --> 00:09:31,780 so werden wir schon bald sehen, dass es gibt verschiedene Arten in PHP, 210 00:09:31,780 --> 00:09:34,970 aber Sie brauchen nicht zu ihnen angeben, die auch gute und schlechte. 211 00:09:34,970 --> 00:09:36,623 Und es gibt noch eine andere Sache fehlt. 212 00:09:36,623 --> 00:09:37,430 >> STUDENT: Es gibt keine Bibliotheken. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. MALAN: Es gibt keine Bibliotheken. 214 00:09:38,630 --> 00:09:39,350 OK, also das ist schön. 215 00:09:39,350 --> 00:09:40,540 Wir bekommen eine Menge mehr aus der Box. 216 00:09:40,540 --> 00:09:43,373 Also gibt es eigentlich viel mehr Dinge, als ich dachte, waren anders. 217 00:09:43,373 --> 00:09:44,350 Wie wäre es mit Art und Weise zurück? 218 00:09:44,350 --> 00:09:46,032 Was ist das? 219 00:09:46,032 --> 00:09:46,740 Sagen Sie es noch einmal? 220 00:09:46,740 --> 00:09:47,960 >> STUDENT: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. MALAN: Keine Zeiger. 222 00:09:49,270 --> 00:09:51,280 OK, zumindest in diesem Beispiel nicht. 223 00:09:51,280 --> 00:09:52,070 Das ist fair. 224 00:09:52,070 --> 00:09:55,090 So gibt es keine Zeiger in PHP eigentlich im Allgemeinen. 225 00:09:55,090 --> 00:09:58,730 Es gibt so etwas wie Referenzen, aber wir werden auch viel Zeit dort nicht verbringen. 226 00:09:58,730 --> 00:09:59,520 Und was noch? 227 00:09:59,520 --> 00:10:00,185 >> STUDENT: Main. 228 00:10:00,185 --> 00:10:01,060 DAVID J. MALAN: Main. 229 00:10:01,060 --> 00:10:02,768 Das war also das biggie Ich dachte an. 230 00:10:02,768 --> 00:10:04,660 Hinweis Es ist kein Haupteinstiegspunkt. 231 00:10:04,660 --> 00:10:06,525 Sie starten einfach das Schreiben Ihres Codes. 232 00:10:06,525 --> 00:10:08,400 Und das ist eigentlich gehen vorteilhaft, 233 00:10:08,400 --> 00:10:10,560 wenn wir den Übergang kurz, um tatsächlich mit 234 00:10:10,560 --> 00:10:13,980 dieselbe Sprache für Web-basierte Programmierung, für die wir 235 00:10:13,980 --> 00:10:16,580 wollen nicht nur eine Anlaufstelle haben. 236 00:10:16,580 --> 00:10:19,980 Wir möchten vielleicht ein paar haben URLs, eine Reihe von verschiedenen Dateien 237 00:10:19,980 --> 00:10:22,930 alle nehmen in Benutzereingaben und Erzeugen von Ausgangs. 238 00:10:22,930 --> 00:10:27,130 >> Aber hier ist das sehr entmutigend Beispiel, dass ich versprochen letzte Mal, 239 00:10:27,130 --> 00:10:30,130 nämlich in diesem Ordner hier, Rechtschreibfehler. 240 00:10:30,130 --> 00:10:33,680 Also in dieser Datei Speller, die wir nicht zu viel Zeit auf, gibt es 241 00:10:33,680 --> 00:10:37,870 Wesentlichen ein porting-- P-O-R-T. Es ist nur das Wort gegeben, wenn, sagen wir, 242 00:10:37,870 --> 00:10:40,800 Konvertieren von einer Sprache zum anderen manuell Regel. 243 00:10:40,800 --> 00:10:45,680 >> Dies ist eine Portierung von PC Version Speller von PSET 5. 244 00:10:45,680 --> 00:10:48,856 Und ich im Wesentlichen versucht, konvertieren Zeile für Zeile so eng wie ich kann. 245 00:10:48,856 --> 00:10:51,730 Also, wenn Sie diese Art der Sache mögen, es tatsächlich wert ist irgendwann 246 00:10:51,730 --> 00:10:54,229 Ziehen sie beide neben Seite und sehen, was ist das gleiche 247 00:10:54,229 --> 00:10:55,230 und was ist anders. 248 00:10:55,230 --> 00:10:57,510 Aber sie sind verdammt ähnlich. 249 00:10:57,510 --> 00:11:00,110 Wenn Sie sich erinnern, was Speller sah sogar wie, 250 00:11:00,110 --> 00:11:02,110 auch wenn Sie nicht getan müssen diese Datei zu ändern, 251 00:11:02,110 --> 00:11:04,860 es ist ziemlich ähnlich strukturell mit nur ein paar 252 00:11:04,860 --> 00:11:06,200 Änderungen hier und da. 253 00:11:06,200 --> 00:11:10,140 >> Das ist also nur zu sagen, dass es ziemlich einfach zu Speller konvertieren 254 00:11:10,140 --> 00:11:12,000 von C nach PHP. 255 00:11:12,000 --> 00:11:15,390 Aber im Wörterbuch gibt es etwas noch überzeugend. 256 00:11:15,390 --> 00:11:19,270 Lassen Sie mich gehen Sie vor und erstellen Eigene dictionary.php Datei. 257 00:11:19,270 --> 00:11:24,010 Dass so etwas anders wir werden es .c rufen .php statt. 258 00:11:24,010 --> 00:11:26,980 Da es sich um eine PHP-Datei, ich do-- leicht annoyingly-- haben 259 00:11:26,980 --> 00:11:30,132 , um die Datei mit zu beginnen ein PHP-Tag so. 260 00:11:30,132 --> 00:11:32,340 Und ich werde weitermachen und definieren Sie ein paar Funktionen. 261 00:11:32,340 --> 00:11:35,770 Funktion namens Check, der ist werde in einem Wort wie zuvor. 262 00:11:35,770 --> 00:11:37,520 Aber dieses Argument gehen, um einen Dollar haben 263 00:11:37,520 --> 00:11:39,840 unterzeichnen, weil wir wieder mit PHP. 264 00:11:39,840 --> 00:11:42,350 Eine weitere Funktion von dictionary.c war Last 265 00:11:42,350 --> 00:11:47,120 und es dauerte im Namen eines Wörterbuchs, also werde ich bekommen diese Funktion bereit zu gehen. 266 00:11:47,120 --> 00:11:50,920 >> Ein anderer in dictionary.c war was? 267 00:11:50,920 --> 00:11:54,580 Größe war einer der nettesten diejenigen, bei dest, wenn Sie einige Variablen in der Umgebung gehalten. 268 00:11:54,580 --> 00:11:57,830 so Größe muss nur eine Variable zurück. 269 00:11:57,830 --> 00:11:59,090 Und dann war da entladen. 270 00:11:59,090 --> 00:12:02,830 >> So waren es diese vier Funktionen in Problem Set 5 271 00:12:02,830 --> 00:12:06,770 dass Sie mit umzusetzen einige Datenstruktur oder Strukturen. 272 00:12:06,770 --> 00:12:10,170 Dass in so versprach ich PHP, können wir erklären, 273 00:12:10,170 --> 00:12:14,490 eine Hash-Tabelle, zum Beispiel, alle leichter das. 274 00:12:14,490 --> 00:12:17,377 In der Tat, wenn ich eine Hash-Tabelle, Ich werde einfach so gehen 275 00:12:17,377 --> 00:12:18,460 und da ist mein Hash-Tabelle. 276 00:12:18,460 --> 00:12:21,555 Und das ist die Note, entmutigend, dass wir aufgehört haben zu letzten Mal. 277 00:12:21,555 --> 00:12:23,930 Und wissen Sie was, wenn ich wollte eine Variable für Größe, gut, 278 00:12:23,930 --> 00:12:25,867 dieses ist nicht alles daß sich von C, 279 00:12:25,867 --> 00:12:27,450 aber ich werde weitermachen und tun. 280 00:12:27,450 --> 00:12:28,630 Und bemerken keinen Datentyp. 281 00:12:28,630 --> 00:12:31,180 Und ich werde später zurückgehen und einige Kommentare hier tatsächlich hinzuzufügen. 282 00:12:31,180 --> 00:12:32,480 Aber was ist mit Last? 283 00:12:32,480 --> 00:12:35,780 >> Wenn Dollarzeichen-Wörterbuch ist der Name meiner Datei 284 00:12:35,780 --> 00:12:39,600 und ich eigentlich zu ladende Worte in dieser Tabelle nun, 285 00:12:39,600 --> 00:12:42,360 Ich kann tatsächlich tun etwas ziemlich einfach. 286 00:12:42,360 --> 00:12:44,880 One-- und dies ist minorly annoying-- in PHP, 287 00:12:44,880 --> 00:12:47,710 Sie müssen innerhalb angeben einer Funktion, wenn Sie 288 00:12:47,710 --> 00:12:51,060 zugreifen möchten einige globale Variable, die außerhalb definiert ist. 289 00:12:51,060 --> 00:12:53,530 >> Aber das ist nicht besonders Interessant gerade jetzt. 290 00:12:53,530 --> 00:12:57,920 Was ist interessanter ist dies für jeden konstruieren, dass ich erwähnte letzte Mal. 291 00:12:57,920 --> 00:13:01,880 Und es stellt sich heraus, dass PHP hat eine Funktion abgerufenen Datei, deren Zweck im Leben 292 00:13:01,880 --> 00:13:05,550 ist es, eine Datei zu öffnen und zu lesen in allen Zeilen in einem Array 293 00:13:05,550 --> 00:13:06,840 und geben sie zurück zu. 294 00:13:06,840 --> 00:13:12,170 >> Welches ist zu sagen, ich kann Wörterbuch tun dass jetzt effektiv, wenn ich rufe Datei 295 00:13:12,170 --> 00:13:15,472 das wird mir zurückgeben ein Array von Wörtern aus der Datei. 296 00:13:15,472 --> 00:13:16,430 Es ist nicht alles so gut. 297 00:13:16,430 --> 00:13:20,130 Es geht immer noch um eine Linie sein von Worten, etwas linear. 298 00:13:20,130 --> 00:13:23,880 Aber ich kann weitermachen und durchlaufen über jedes dieser Wörter verwenden 299 00:13:23,880 --> 00:13:25,710 dass Syntax sahen wir kurz beim letzten Mal. 300 00:13:25,710 --> 00:13:27,940 Und Sie werden es mehr zu sehen in der kommenden PSET. 301 00:13:27,940 --> 00:13:32,070 >> Aber jetzt habe ich eine Schleife Iterieren über jedes Wort im Wörterbuch. 302 00:13:32,070 --> 00:13:36,100 Und bei jeder Iteration, erinnere ich ruft das aktuelle Wort "Wort". 303 00:13:36,100 --> 00:13:39,790 Und all das wird zu nehmen legte ein Wort in das Wörterbuch 304 00:13:39,790 --> 00:13:43,530 sein wird Wort zu erraten "wahr." 305 00:13:43,530 --> 00:13:44,740 Das ist mein Insert-Funktion. 306 00:13:44,740 --> 00:13:46,661 Das ist mein Ladefunktion für mein Wörterbuch. 307 00:13:46,661 --> 00:13:49,410 Jetzt ist es ein bisschen wie ein Cheat, weil, weißt du was, es gibt tatsächlich 308 00:13:49,410 --> 00:13:52,920 Backslash n am Ende der Wörter daß ich wohl loswerden, 309 00:13:52,920 --> 00:13:56,380 aber das ist kein Problem, da PHP eine Funktion namens Chop was wörtlich 310 00:13:56,380 --> 00:13:58,480 hackt ein Zeichen am Ende. 311 00:13:58,480 --> 00:13:59,400 Also kein Problem. 312 00:13:59,400 --> 00:14:02,199 Wir haben Sie vor und tatsächlich gegangen dass gerade diese verkürzt. 313 00:14:02,199 --> 00:14:05,240 Und jetzt sollte ich wohl im Auge behalten der Größe, also lassen Sie uns zumindest nichts this-- 314 00:14:05,240 --> 00:14:05,835 Größe ++. 315 00:14:05,835 --> 00:14:07,339 Das kann ich nach wie vor tun. 316 00:14:07,339 --> 00:14:10,380 Und dann wird dies wahrscheinlich zu gut funktionieren, so dass die return true. 317 00:14:10,380 --> 00:14:10,930 Fertig. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Gelächter] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. MALAN: OK. 321 00:14:14,420 --> 00:14:16,628 Wir werden das wieder tun mit dem nächsten PSET, zu. 322 00:14:16,628 --> 00:14:18,730 Also, was über Größe? 323 00:14:18,730 --> 00:14:22,080 Na, hoffentlich ist dies eine zu wie Sie das letzte Mal erwarten würde, 324 00:14:22,080 --> 00:14:24,460 obwohl ich zu tun habe diese dumme globale Sache. 325 00:14:24,460 --> 00:14:26,610 Es ist nur ein Artefakt aus Design der Sprache. 326 00:14:26,610 --> 00:14:28,450 >> Aber Kontrolle ist ein wenig interessanter. 327 00:14:28,450 --> 00:14:31,420 Also, wenn ich in Dollar übergeben unterzeichnen Wort, habe ich zuerst 328 00:14:31,420 --> 00:14:34,060 soll, um Zugang zu haben dass die globale Variablentabelle. 329 00:14:34,060 --> 00:14:36,700 Und jetzt, wenn ich will überprüfen, ob ein Wort ist es, 330 00:14:36,700 --> 00:14:44,350 Ich kann nur sagen, wenn es wahr ist, dass Hier finden Sie in der Tabelle gesetzt, 331 00:14:44,350 --> 00:14:49,957 dann gehen Sie vor und zurück true; anderes, return false. 332 00:14:49,957 --> 00:14:51,180 Fertig. 333 00:14:51,180 --> 00:14:52,440 Die andere Hälfte der PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Also gut, ich bin also wieder Schneiden Sie ein paar Ecken. 335 00:14:54,540 --> 00:14:56,831 Der Fairness halber sollte ich wahrscheinlich verbringen ein paar Sekunden 336 00:14:56,831 --> 00:14:58,300 auf dieser Umsetzung. 337 00:14:58,300 --> 00:15:01,860 Und ich sollte wohl nicht verspotten alle Stunden, die Sie auf der PSET haben so viel. 338 00:15:01,860 --> 00:15:04,045 So strtolower eine Funktion ist. 339 00:15:04,045 --> 00:15:06,670 Etwas Ähnliches existentialistischen in C, zumindest für Zeichen, 340 00:15:06,670 --> 00:15:08,560 aber PHP habe eine ganze String-Version. 341 00:15:08,560 --> 00:15:11,226 >> Das wird alles erzwingen in Kleinbuchstaben, die einige von euch 342 00:15:11,226 --> 00:15:14,944 getan haben könnte, um zu kanonisieren, was Sie in Ihrem Wörterbuch Putting wurden. 343 00:15:14,944 --> 00:15:16,360 Und jetzt können Sie diese in C auch tun. 344 00:15:16,360 --> 00:15:17,780 Das hat nichts mit PHP zu tun. 345 00:15:17,780 --> 00:15:20,260 >> Aber Sie haben jederzeit eine Boolesche Bedingung, 346 00:15:20,260 --> 00:15:22,680 wie etwas auf der Leitung 10 gibt, die nur 347 00:15:22,680 --> 00:15:27,145 werde auf true zu bewerten oder falsch, und Ihr, wenn sonst deutlich 348 00:15:27,145 --> 00:15:33,620 zurückkehrt wahr oder falsch, ich konnte Diese sexier einfach wirklich machen 349 00:15:33,620 --> 00:15:38,360 und nur so etwas wie dies zu tun. 350 00:15:38,360 --> 00:15:40,500 Also, dass es meine Check-Funktion. 351 00:15:40,500 --> 00:15:42,560 Richtig, wenn der Boolean kehrt ein wahrer oder ein falscher, 352 00:15:42,560 --> 00:15:44,630 lasst uns einfach zurück es sofort. 353 00:15:44,630 --> 00:15:47,340 >> Und es gibt noch ein paar andere Tweaks Ich hier und da machen könnte. 354 00:15:47,340 --> 00:15:51,380 Load-- Entladen, übrigens, das erledigt. 355 00:15:51,380 --> 00:15:52,850 Dort nichts zu tun. 356 00:15:52,850 --> 00:15:55,840 Da alle in dem Speicher PHP und viele andere Sprachen 357 00:15:55,840 --> 00:15:57,570 ist eigentlich für Sie verwaltet. 358 00:15:57,570 --> 00:16:00,330 Während also in C, wie Sie schmerzlich gelernt haben, 359 00:16:00,330 --> 00:16:04,700 alles, was Sie malloc oder calloc oder realloc, müssen Sie sich selbst zu befreien. 360 00:16:04,700 --> 00:16:08,770 Alles, was Sie fopen, um fclose haben Sie, so dass die Ressourcen letztlich befreit 361 00:16:08,770 --> 00:16:11,690 und Tools wie Valgrind nicht bemerken und sich nicht beschweren, 362 00:16:11,690 --> 00:16:13,570 das ist eine gute Sache, um auf ihnen laufen. 363 00:16:13,570 --> 00:16:16,190 >> Aber sicher, da muss sein etwas zu fangen, oder? 364 00:16:16,190 --> 00:16:19,400 Andernfalls wir irgendwie verschwendet eine ganze Reihe von Wochen. 365 00:16:19,400 --> 00:16:23,270 So gibt es eine Reihe von Gründen Deshalb haben wir eine Art nehmen diese Flugbahn, 366 00:16:23,270 --> 00:16:24,440 aber es gibt einen Kompromiß. 367 00:16:24,440 --> 00:16:25,820 Richtig, dies war thematisch. 368 00:16:25,820 --> 00:16:29,690 >> Also, was könnte ein Trade-off hier bewegt, von C nach PHP? 369 00:16:29,690 --> 00:16:33,250 Fühlt sich an wie alle gewinnen bisher außer ein bisschen Hässlichkeit hier oder dort. 370 00:16:33,250 --> 00:16:34,040 Ja. 371 00:16:34,040 --> 00:16:34,700 Was ist das? 372 00:16:34,700 --> 00:16:36,064 >> STUDENT: [unverständlich] Speicher. 373 00:16:36,064 --> 00:16:36,980 DAVID J. MALAN: Geschwindigkeit. 374 00:16:36,980 --> 00:16:37,479 Ok. 375 00:16:37,479 --> 00:16:40,720 Nun, meine Geschwindigkeit war ziemlich schnell. 376 00:16:40,720 --> 00:16:42,020 Richtig? 377 00:16:42,020 --> 00:16:44,320 Aber Geschwindigkeit der Ausführung des Programms? 378 00:16:44,320 --> 00:16:45,580 OK, das ist also ein fairer Punkt. 379 00:16:45,580 --> 00:16:50,930 >> So, wie es wäre, ich im Voraus geschehen cued bis meine beiden try Lösung, die eine 380 00:16:50,930 --> 00:16:53,510 Ich auf dem großen Brett hatte war einen Versuch-basierte Lösung, 381 00:16:53,510 --> 00:16:55,510 und ich habe, dass in diesem Verzeichnis hier. 382 00:16:55,510 --> 00:16:58,510 Also ich in einem Moment, kann ich weitermachen und laufen diese auf der King-James-Bibel, 383 00:16:58,510 --> 00:16:59,657 Enter drücken. 384 00:16:59,657 --> 00:17:01,990 Und dies hoffentlich korrekt ist Umsetzung am Ende, 385 00:17:01,990 --> 00:17:05,109 gibt mir Zeit insgesamt von 0,38 Sekunden, dass 386 00:17:05,109 --> 00:17:07,270 ein etwas willkürliches Beispiel. 387 00:17:07,270 --> 00:17:09,270 >> Und wenn ich jetzt in diese zu gelangen zweiten Terminalfenster 388 00:17:09,270 --> 00:17:14,569 hier, wo ich zum ersten Mal geöffnet gedit, lassen mich in der heutigen code-- gehen, die wieder 389 00:17:14,569 --> 00:17:19,650 ist in diesem Verzeichnis hier-- und lassen Sie mich gehen Sie vor und führen Speller. 390 00:17:19,650 --> 00:17:23,470 Also nur klar zu sein, dies ist die PHP-Version. 391 00:17:23,470 --> 00:17:25,170 Ich frage mich nur, das die Spitze der es hierher. 392 00:17:25,170 --> 00:17:32,020 >> Also, wenn ich Speller von Tilde CS50 tun PSET 5 Texte, King James, geben. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Es ist immer noch schneller als Schreib in C, aber die Gesamtzeit, 395 00:17:43,050 --> 00:17:47,650 ist, bemerken, 0,93, während meine C-basierte Implementierung betrug 0,38. 396 00:17:47,650 --> 00:17:49,110 Also ist es eine nicht-triviale Unterschied. 397 00:17:49,110 --> 00:17:51,100 >> Und dies ist nur auf einer Datei. 398 00:17:51,100 --> 00:17:53,480 Wenn Sie die beiden laufen waren Programme gegen die große Tafel 399 00:17:53,480 --> 00:17:56,510 und haben eine ganze Reihe von Ein- getestet, wäre dies sicherlich summieren. 400 00:17:56,510 --> 00:18:00,310 Und wenn wir auch größere Datenmengen, Auch dies würde summieren sich umso mehr. 401 00:18:00,310 --> 00:18:04,820 Also ja, zahlt rund Preis Geschwindigkeit ist in der Tat der Fall. 402 00:18:04,820 --> 00:18:05,470 Was sonst? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Ja? 405 00:18:08,860 --> 00:18:10,340 >> STUDENT: RAM-Nutzung. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. MALAN: RAM-Nutzung. 407 00:18:11,756 --> 00:18:15,380 Also habe ich keine Sekunde geben dachte beim Schreiben dieses PHP 408 00:18:15,380 --> 00:18:17,300 Ausführung, wie viel Speicher war ich mit. 409 00:18:17,300 --> 00:18:22,080 Ich bin völlig Aufschub, dass PHP selbst und wer schrieb das Programm. 410 00:18:22,080 --> 00:18:24,500 Und das könnte in Ordnung sein, aber wenn ich eigentlich wirklich 411 00:18:24,500 --> 00:18:28,420 kümmern drückte so viel Leistung aus meinem Programm oder von meiner Website 412 00:18:28,420 --> 00:18:31,150 oder aus welchem ​​Werkzeug Ich baue, vielleicht 413 00:18:31,150 --> 00:18:33,310 PHP ist in der Tat nicht die richtige Sprache. 414 00:18:33,310 --> 00:18:36,330 >> Und in der Tat ist der Grund, warum für So viele Web servers-- 415 00:18:36,330 --> 00:18:38,980 die eigentlichen Programme, servieren Web content-- 416 00:18:38,980 --> 00:18:41,810 werden nicht in PHP geschrieben oder in Python oder Ruby. 417 00:18:41,810 --> 00:18:44,630 Sie werden geschrieben, wie Sie jetzt mit PSet 6 zu tun, 418 00:18:44,630 --> 00:18:48,120 in C, so dass Sie quetschen kann jedes bisschen Leistung aus ihm 419 00:18:48,120 --> 00:18:50,780 und wirklich ausüben feinkörnige Kontrolle darüber, was ist 420 00:18:50,780 --> 00:18:52,980 los unter der Kapuze und nehmen Sie es nicht nur 421 00:18:52,980 --> 00:18:54,890 für einige höhere gewährt Level-Datenstruktur. 422 00:18:54,890 --> 00:18:58,071 >> Betrachten Sie, nachdem alle, Wer in PHP implementiert 423 00:18:58,071 --> 00:19:00,070 diese Vorstellung einer Hash table-- es ist eigentlich mehr 424 00:19:00,070 --> 00:19:04,260 richtig genannt eine assoziative array-- tut er oder sie eine Idee haben, welche Art 425 00:19:04,260 --> 00:19:07,090 von Eingängen willst du werden werden Putting in die Struktur? 426 00:19:07,090 --> 00:19:08,260 So offensichtlich nicht, oder? 427 00:19:08,260 --> 00:19:10,340 Es ist ein generisches Werkzeug im Toolkit, das ist 428 00:19:10,340 --> 00:19:13,430 für jeden, der will, zur Verfügung gestellt , es zu benutzen, und so ist es sicherlich 429 00:19:13,430 --> 00:19:17,680 letztlich nicht optimiert werden für genau das, was Sie tun möchten. 430 00:19:17,680 --> 00:19:21,180 >> So handels offs-- Entwicklungszeit vielleicht unterscheiden, Leistung kann abweichen, 431 00:19:21,180 --> 00:19:23,120 Komplexität oder Speichernutzung abweichen. 432 00:19:23,120 --> 00:19:24,820 Und so, was Sie finden verstärkt ist, dass es 433 00:19:24,820 --> 00:19:26,570 anders sein Tools für den Handel. 434 00:19:26,570 --> 00:19:31,160 Und in der Tat für einen Super Mehrheit Abschlussarbeiten der Menschen in dieser Klasse, 435 00:19:31,160 --> 00:19:34,360 es glauben oder nicht, ist C nicht um die richtige Sprache zu bedienen sein. 436 00:19:34,360 --> 00:19:37,880 >> Und in der Tat, einer der Imbissbuden letztlich für jede Klasse wie folgt 437 00:19:37,880 --> 00:19:40,510 ist es, Sie denken, Nun, was sollte man abziehen 438 00:19:40,510 --> 00:19:42,710 das Regal, wenn Sie wollen, um ein Problem zu lösen. 439 00:19:42,710 --> 00:19:46,720 Und in der Tat, werden wir diese Brücke überqueren noch mehr als wir uns mehr Sprachen 440 00:19:46,720 --> 00:19:47,920 auch über heute. 441 00:19:47,920 --> 00:19:50,530 >> Also lassen Sie uns jetzt, um den Übergang vielleicht ein vertrauter Rahmen 442 00:19:50,530 --> 00:19:52,480 für die Verwendung einer Sprache wie PHP. 443 00:19:52,480 --> 00:19:56,720 Es ist etwas gemeinsam zu nutzen die Kommandozeile, das Schreiben von Skripts 444 00:19:56,720 --> 00:19:59,050 wie ich es tat, aber es ist viel, viel häufiger. 445 00:19:59,050 --> 00:20:02,350 Und beabsichtigt wurde, verwendet werden in die Form von Dateien, die in der Regel am Ende 446 00:20:02,350 --> 00:20:05,060 in .php-- aber das ist kein prerequisite-- 447 00:20:05,060 --> 00:20:07,990 dass selbst erzeugen Web-Inhalten. 448 00:20:07,990 --> 00:20:11,310 >> Also lassen Sie mich gehen Sie vor und einige öffnen Beispiele, die ich im Voraus vorbereitet. 449 00:20:11,310 --> 00:20:15,100 Und das sind eigentlich eine Art wahr Geschichten, dass eines der ersten Dinge, 450 00:20:15,100 --> 00:20:18,200 Ich je getan habe mich nach Beendigung CS50 und vielleicht, denke ich, 451 00:20:18,200 --> 00:20:21,350 Vor CS51 Jahren ist mein Mitbewohner und ich halfen 452 00:20:21,350 --> 00:20:24,320 um den Neuling intramuralen laufen Sportprogramm, welches zu der Zeit, 453 00:20:24,320 --> 00:20:28,610 hatte Freshman Registrierung für verschiedene Sport durch Ausfüllen ein Stück Papier, 454 00:20:28,610 --> 00:20:31,800 wie es genannt wurde, zu Fuß über den Hof zu Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 und Ablegen in einigen Proctor Tür Tropfen. 456 00:20:34,030 --> 00:20:37,210 Und dann würde er oder sie durchlaufen und sie dann tatsächlich mailen Sie uns manuell 457 00:20:37,210 --> 00:20:39,140 dass wir für einige Sport registriert. 458 00:20:39,140 --> 00:20:41,166 >> So klar, eine Chance für Verbesserungen. 459 00:20:41,166 --> 00:20:44,040 In diesen Tagen, könnte man nur drehen Google Forms, aber wieder in den Tag, 460 00:20:44,040 --> 00:20:46,914 wir mussten tatsächlich for-- dies zu erreichen war nicht einmal so lange ago-- erreichen 461 00:20:46,914 --> 00:20:49,410 für ein Programmier Sprache, die nicht PHP. 462 00:20:49,410 --> 00:20:51,200 Zu der Zeit war es etwas namens Perl, 463 00:20:51,200 --> 00:20:52,890 die seit aus der Mode gegangen ist. 464 00:20:52,890 --> 00:20:54,160 Aber die Idee, die gleiche ist. 465 00:20:54,160 --> 00:20:58,940 >> Und ich Wesentlichen setzte sich, um zu versuchen zum Hafen geht Perl-Versionen von PHP, 466 00:20:58,940 --> 00:21:03,710 aber in vollständigen Haftungsausschluss, nicht geben Jeder Gedanke an die Ästhetik nur noch. 467 00:21:03,710 --> 00:21:04,960 So, hier ist eine Web-Seite. 468 00:21:04,960 --> 00:21:05,670 Dies ist eine Datei. 469 00:21:05,670 --> 00:21:09,470 Wenn ich Bilder in seine scheinbar genannt froshim0.php 470 00:21:09,470 --> 00:21:12,060 nur weil es unser erstes Beispiel in dieser Reihe. 471 00:21:12,060 --> 00:21:15,970 Und feststellen, dass es, was scheint eine sehr hässliche HTML Form vorliegen, 472 00:21:15,970 --> 00:21:18,680 sondern eine Form ist interessant weil es 473 00:21:18,680 --> 00:21:21,910 me auf eine Benutzereingabe an den Browser zur Verfügung stellen. 474 00:21:21,910 --> 00:21:27,730 >> Jetzt letzte Mal als wir eine Form, um wem haben wir unterbreiten unseren Abfrageparameter, 475 00:21:27,730 --> 00:21:30,450 die Warteschlange Parameter wie es genannt wurde? 476 00:21:30,450 --> 00:21:31,330 Also bei Google, oder? 477 00:21:31,330 --> 00:21:34,090 Wir auf der Idee total punted nichts mit diesem Eingang tut. 478 00:21:34,090 --> 00:21:36,160 >> Aber heute, wir produzieren Ausgabe. 479 00:21:36,160 --> 00:21:39,420 Und das Verhalten werde ich sehen hier zunächst ist ziemlich trivial. 480 00:21:39,420 --> 00:21:42,980 David, ich werde abhaken Geschlechter hier sagen Matthews hier. 481 00:21:42,980 --> 00:21:43,800 Ich werde nicht Kapitän sein. 482 00:21:43,800 --> 00:21:45,410 Ich werde auf Registrieren. 483 00:21:45,410 --> 00:21:50,720 Und feststellen, dass die URL hat geändert, um register 0.php, 484 00:21:50,720 --> 00:21:52,310 und dann gibt es dieses hässliche Text hier. 485 00:21:52,310 --> 00:21:54,460 Ich dachte nicht die Formatierung von diesem. 486 00:21:54,460 --> 00:21:59,900 >> Aber was interessant ist, ist, dass drei Werte wurden offenbar eingeleitet. 487 00:21:59,900 --> 00:22:02,960 Dies ist der PHP-Art entspricht printf-- 488 00:22:02,960 --> 00:22:06,330 wir werden sehen, was es wirklich genannt in einem bit-- die gerade druckt 489 00:22:06,330 --> 00:22:08,300 was man hineingeben. 490 00:22:08,300 --> 00:22:11,414 Also das lässt vermuten, dass diese Form hatten mindestens drei Felder, um sie, 491 00:22:11,414 --> 00:22:12,580 und Sie sah mich geben Sie sie in. 492 00:22:12,580 --> 00:22:15,739 Einer war mein Name, war Geschlecht, war Schlafsaal. 493 00:22:15,739 --> 00:22:18,780 Und Kapitän nicht einmal zu geschickt bekommen der Server, weil ich nicht überprüfen. 494 00:22:18,780 --> 00:22:22,150 >> Das ist also scheinbar sagen, wenn Sie Dinge einreichen, die im Internet, 495 00:22:22,150 --> 00:22:26,830 Nicht nur, dass die URL manchmal change-- manchmal nicht. 496 00:22:26,830 --> 00:22:30,330 Tatsächlich verändert der Dateiname, aber was fehlt im URL 497 00:22:30,330 --> 00:22:32,861 dass wir sahen letztes Mal mit Google. 498 00:22:32,861 --> 00:22:33,360 Ja? 499 00:22:33,360 --> 00:22:34,380 >> STUDENT: Keine Abfrage-String 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. MALAN: Es gibt keine Query-String. 501 00:22:35,220 --> 00:22:37,270 Es gibt kein Fragezeichen etwas. 502 00:22:37,270 --> 00:22:40,050 Es gibt kein Fragezeichen q gleich Katzen, wie wir beim letzten Mal. 503 00:22:40,050 --> 00:22:42,170 Und es gibt sicherlich keine Fragezeichen-Namen entspricht 504 00:22:42,170 --> 00:22:46,310 David oder einem Wohnheim gleich Matthews, also wo ist, dass alle hin? 505 00:22:46,310 --> 00:22:51,290 >> Nun, lassen Sie mich zurück zu gedit gehen Sie hier und eröffnen die erste dieser Dateien 506 00:22:51,290 --> 00:22:57,020 in meiner vhost, lokalen Host, öffentliche Verzeichnis hier und gehen in froshim0. 507 00:22:57,020 --> 00:23:02,060 So stellt sich heraus, dass fast Alle auf dieser Seite ist nur HTML. 508 00:23:02,060 --> 00:23:05,410 Und dies könnte Ihnen nicht vertraut sein, aber es wird bald mehr mit PSET 6 sein 509 00:23:05,410 --> 00:23:07,370 und PSET 7 und PSET 8. 510 00:23:07,370 --> 00:23:09,160 Doch dies ist nur eine HTML-Seite. 511 00:23:09,160 --> 00:23:12,400 >> Und die interessante Sachen scheint hier zu sein. 512 00:23:12,400 --> 00:23:16,290 Ein Formular-Tag, dessen Attribut action hat einen Wert von Register 0. 513 00:23:16,290 --> 00:23:18,890 Das ist, warum, wenn ich einreichen Dabei geht es zu dieser Datei. 514 00:23:18,890 --> 00:23:20,620 Aber Methode unterscheidet today-- Pfosten. 515 00:23:20,620 --> 00:23:23,120 So stellt sich heraus gibt es zumindest zwei Methoden, die im Internet verwendet 516 00:23:23,120 --> 00:23:24,911 Informationen zu senden von Browser zu Server. 517 00:23:24,911 --> 00:23:25,980 Get legt es in der URL. 518 00:23:25,980 --> 00:23:27,950 Beitrag legt es an anderer Stelle. 519 00:23:27,950 --> 00:23:30,570 Und wann und warum könnten Sie eigentlich wollen eine Website 520 00:23:30,570 --> 00:23:34,110 zur post dann verwenden Sie stattdessen bekommen, nur intuitiv? 521 00:23:34,110 --> 00:23:37,080 Jede Website. 522 00:23:37,080 --> 00:23:42,010 Welche Daten sollten nur weitergegeben werden durch Folgerung jetzt per Post, im Gegensatz 523 00:23:42,010 --> 00:23:45,184 zu bekommen, wenn wir gesehen haben, die beiden Unterschiede? 524 00:23:45,184 --> 00:23:46,350 STUDENT: [unverständlich] zu sichern. 525 00:23:46,350 --> 00:23:47,790 DAVID J. MALAN: Wenn Sie möchten etwas sicher. 526 00:23:47,790 --> 00:23:50,360 Sie könnten also ein Kennwort eingeben in eine Website, eine Kreditkarte 527 00:23:50,360 --> 00:23:53,030 in eine Website würde Art dieser suboptimalen 528 00:23:53,030 --> 00:23:56,220 wenn der Browser setzen, dass Wert innerhalb der URL. 529 00:23:56,220 --> 00:23:57,680 Warum? 530 00:23:57,680 --> 00:24:00,059 Du siehst es, welche nicht scheint so eine große Sache sein, 531 00:24:00,059 --> 00:24:03,350 aber Chancen sind Sie ziemlich häufig zu Fuß weg von Ihrem Computer oder Verwendung Computer 532 00:24:03,350 --> 00:24:05,310 Labors, und so jemand anderes oder sogar ein Mitbewohner 533 00:24:05,310 --> 00:24:08,220 könnte leicht zu Fuß und sehen, dass private Informationen. 534 00:24:08,220 --> 00:24:10,220 Wenn Sie eine E-Mail senden über das Web, werden Sie wahrscheinlich 535 00:24:10,220 --> 00:24:12,350 wollen nicht, dass die Daten Ende in der URL als auch. 536 00:24:12,350 --> 00:24:15,266 Und so gibt es eine Reihe von Gründen Deshalb wollen wir vielleicht, um es hier zu setzen. 537 00:24:15,266 --> 00:24:18,610 Und photos-- Recht, ich kann nicht einmal ganz vorstellen, wie Sie eine Grafik zu nehmen, 538 00:24:18,610 --> 00:24:21,480 wie ein JPEG, und steckte es in einer URL. 539 00:24:21,480 --> 00:24:22,330 Sie könnten es tun. 540 00:24:22,330 --> 00:24:25,840 Es gibt Wege, es kodiert, aber es ist nur nicht so einfach. 541 00:24:25,840 --> 00:24:29,030 >> So registrieren 0 ist eigentlich sehr berauschend. 542 00:24:29,030 --> 00:24:31,610 Alle heißt es wörtlich ist dies. 543 00:24:31,610 --> 00:24:35,910 Es druckt innerhalb von einigen HTML-Tags die folgenden. 544 00:24:35,910 --> 00:24:38,640 Ich habe eine PHP-Tag hier haben innerhalb eines vorge Tag verschachtelt. 545 00:24:38,640 --> 00:24:42,300 "Pre" bedeutet nur, pre-formatierten Text, Mono-Abstand, wie eine Schreibmaschine. 546 00:24:42,300 --> 00:24:44,836 >> Printr ist ein Druck rekursive Funktion. 547 00:24:44,836 --> 00:24:46,710 Und dann gibt es diese interessante Sache hier. 548 00:24:46,710 --> 00:24:48,835 Und wir werden darauf zurückkommen denn es gibt andere, 549 00:24:48,835 --> 00:24:51,140 aber Dollarzeichen Unterstrich Post zu sein scheint 550 00:24:51,140 --> 00:24:56,110 eine Variable in PHP, in der alles Sie von Browser zu Server senden 551 00:24:56,110 --> 00:24:58,040 wird für Sie gespeichert. 552 00:24:58,040 --> 00:25:00,930 Und wir werden sehen, wie man an bekommen dass Informationen, bevor lang. 553 00:25:00,930 --> 00:25:04,000 >> Aber zuerst gehen wir zurück zu ein etwas anderes Beispiel. 554 00:25:04,000 --> 00:25:09,050 Going in register-- oder vielmehr froshims1.php, 555 00:25:09,050 --> 00:25:10,470 was sieht ein wenig anders aus. 556 00:25:10,470 --> 00:25:12,670 Ich nahm ein wenig mehr Mühe mit der Formatierung, 557 00:25:12,670 --> 00:25:14,370 obwohl es immer noch ziemlich hässlich. 558 00:25:14,370 --> 00:25:16,990 Aber ich werde weitermachen und geben Sie "David" jetzt. 559 00:25:16,990 --> 00:25:17,850 Männlich. 560 00:25:17,850 --> 00:25:19,360 Wir werden "Kapitän" dieses Mal zu überprüfen. 561 00:25:19,360 --> 00:25:20,660 Wir Matthews zu tun. 562 00:25:20,660 --> 00:25:22,430 Und registrieren. 563 00:25:22,430 --> 00:25:24,110 >> Und diesmal heißt es, hm, nicht wirklich. 564 00:25:24,110 --> 00:25:26,180 Alles klar, so was ist Register 1? 565 00:25:26,180 --> 00:25:30,509 Lassen Sie mich in offene Register 1 und-- hm gehen. 566 00:25:30,509 --> 00:25:32,300 Na gut, das ist so interessant, und dies 567 00:25:32,300 --> 00:25:34,880 ist ein Sprungbrett nun Richtung Weitere interessante Programme. 568 00:25:34,880 --> 00:25:38,970 >> Beachten Sie den Anfang dieser Datei hat ein PHP-Tag sowie einige Kommentare. 569 00:25:38,970 --> 00:25:42,590 Und diese sind, denn jetzt, eine Ablenkung so lasst uns einfach loszuwerden, die Kommentare 570 00:25:42,590 --> 00:25:47,070 gerade wie sie in C. bist Und ich behaupte, mit diesem Stück Code mit einem Kommentar 571 00:25:47,070 --> 00:25:49,280 dass dieser Code Validierung der Unterwerfung. 572 00:25:49,280 --> 00:25:51,690 >> Nun stellt sich heraus, dass Variablen wie Dollarzeichen 573 00:25:51,690 --> 00:25:53,739 streichen Post sind genannten Super Globals. 574 00:25:53,739 --> 00:25:55,530 Sie sind wie diese Sonder globale Variablen 575 00:25:55,530 --> 00:25:58,840 die gerade omni-gegenwärtig sind verfügbar in Ihrem Programm. 576 00:25:58,840 --> 00:26:03,870 Und Sie können eckige Klammer-Notation zum Index in sie nicht mit Zahlen 577 00:26:03,870 --> 00:26:07,460 wie 0, 1, 2, 3, aber die tatsächlichen Worte. 578 00:26:07,460 --> 00:26:12,100 >> So können Sie von Dollarzeichen denken können streichen Posten als Art einer Hash-Tabelle 579 00:26:12,100 --> 00:26:15,920 dass man einen Schlüssel in ein Lookup geben Wort in-zwischen den eckigen Klammern, 580 00:26:15,920 --> 00:26:19,370 und es geht um Sie wieder das geben Wert, der der Benutzer tatsächlich zur Verfügung gestellt. 581 00:26:19,370 --> 00:26:21,210 PHP hat eine Funktion genannt leer, dass nur 582 00:26:21,210 --> 00:26:23,720 sagt ja oder nein, diese Variable leer ist oder nicht. 583 00:26:23,720 --> 00:26:27,250 Wir haben diese Doppelstriche, das bedeutet nur, oder, wie in C. 584 00:26:27,250 --> 00:26:31,740 >> Also in der Tat ist diese Linie 4 nur sagen, wenn der Benutzer nicht einen Namen geben 585 00:26:31,740 --> 00:26:36,540 oder hat ein Geschlecht nicht geben oder nicht geben ein Wohnheim, gehen Sie vor und leiten ihn 586 00:26:36,540 --> 00:26:38,184 oder ihr über diese Leitung hier. 587 00:26:38,184 --> 00:26:40,600 Also das ist ein wenig kryptisch, aber das bedeutet nur, wörtlich 588 00:26:40,600 --> 00:26:43,330 gehen Sie zurück zu diesem Ort, so ist es dem Benutzer punts 589 00:26:43,330 --> 00:26:45,420 zurück, wo er oder sie herkommt. 590 00:26:45,420 --> 00:26:47,880 Aber es ist ein wenig unelegant in, dass ich hart codiert es. 591 00:26:47,880 --> 00:26:52,150 >> Aber was, wenn diese, wenn die Bedingung nicht auf true zu bewerten? 592 00:26:52,150 --> 00:26:55,790 Was ist, wenn der Benutzer hat mir seine oder ihren Namen und Wohnheim und Geschlecht? 593 00:26:55,790 --> 00:26:58,540 Dass, wenn Bedingung nicht werde auf true zu bewerten, 594 00:26:58,540 --> 00:27:00,650 so dass ich nicht getroffen die Ausfahrt in Zeile 7. 595 00:27:00,650 --> 00:27:01,680 Also, was passiert? 596 00:27:01,680 --> 00:27:03,880 Und das ist, was ist Interessantes über PHP. 597 00:27:03,880 --> 00:27:07,470 >> Sie können in und aus Drop PHP-Modus, so zu sprechen. 598 00:27:07,470 --> 00:27:10,985 Wenn Sie einige Code, der ausgeführt werden soll, Sie öffnen und schließen ein PHP-Tag kann 599 00:27:10,985 --> 00:27:13,010 und legte Code da wie ich hier getan. 600 00:27:13,010 --> 00:27:16,810 Sobald Sie schließen die PHP-Tag, der Server 601 00:27:16,810 --> 00:27:19,407 ist gerade dabei, ausspucken was auch immer Sie setzen dort. 602 00:27:19,407 --> 00:27:21,740 Und in der Tat, das war Teil des Der ursprüngliche Entwurf von PHP, 603 00:27:21,740 --> 00:27:25,280 für besser für schlimmer war dieser Vermischung von Code und Markup 604 00:27:25,280 --> 00:27:25,920 Sprache. 605 00:27:25,920 --> 00:27:28,670 Und wir werden, dass dieser sehr zu sehen schnell zufällt in ein Chaos. 606 00:27:28,670 --> 00:27:31,280 Und so werden wir besser als zu tun dies letztlich aber nur 607 00:27:31,280 --> 00:27:35,620 beachten Sie die Leichtigkeit, mit der ich bin tatsächlich in der Lage, eine gewisse Logik auszuführen. 608 00:27:35,620 --> 00:27:37,440 >> Aber immer noch ein bisschen berauschend. 609 00:27:37,440 --> 00:27:41,210 Wir öffnen bis Version zwei Frosh IMs, die 610 00:27:41,210 --> 00:27:44,270 scheinbar unterwirft sich register2.php. 611 00:27:44,270 --> 00:27:47,600 Also diese Datei ist eigentlich los fast gleich aussehen. 612 00:27:47,600 --> 00:27:50,780 Ich werde zu Frosh IMs 2 gehen. 613 00:27:50,780 --> 00:27:53,050 Aber in Frosh IMs 2, mal sehen, was passiert. 614 00:27:53,050 --> 00:27:58,110 >> David, klicken Sie auf das Optionsfeld, wie es heißt; Matthews, kein Kapitän. 615 00:27:58,110 --> 00:27:59,230 Registrieren. 616 00:27:59,230 --> 00:28:00,130 Sie sind angemeldet. 617 00:28:00,130 --> 00:28:00,700 Nicht wirklich. 618 00:28:00,700 --> 00:28:02,574 Oh, Moment mal, wir hatten einfach dass beispielsweise, nicht wahr? 619 00:28:02,574 --> 00:28:04,520 Alles klar, stand by. 620 00:28:04,520 --> 00:28:06,602 Wir werden die drei zu tun. 621 00:28:06,602 --> 00:28:08,560 Eindeutig etwas geht um mit Gmail passieren. 622 00:28:08,560 --> 00:28:09,600 Wir werden es schaffen. 623 00:28:09,600 --> 00:28:11,900 >> So Frosh IMs 3 sieht wie folgt aus. 624 00:28:11,900 --> 00:28:13,050 Nicht anders. 625 00:28:13,050 --> 00:28:19,850 Aber wenn ich David, männlich, Matthews, und registrieren, diese dritte und letzte Version 626 00:28:19,850 --> 00:28:22,230 Ansprüche, ganz einfach, Sie wirklich registriert. 627 00:28:22,230 --> 00:28:23,560 Das ist eine Art unwesentlich. 628 00:28:23,560 --> 00:28:25,600 Aber ich behaupte, mit diesem dritte und letzte Version 629 00:28:25,600 --> 00:28:30,610 Ich habe jetzt neu erstellt, was genau mein Mitbewohner und ich für die Frosh IMs gebaut 630 00:28:30,610 --> 00:28:31,731 Programm Jahren. 631 00:28:31,731 --> 00:28:32,480 Und es war einfach. 632 00:28:32,480 --> 00:28:34,330 Es gab keine Datenbank, keine Excel-Tabelle. 633 00:28:34,330 --> 00:28:36,450 Aber noch wichtiger ist, es gab kein Papier mehr 634 00:28:36,450 --> 00:28:42,520 weil das, was wir mit diesem Programm haben war, um tatsächlich eine E-Mail die Proctor, der 635 00:28:42,520 --> 00:28:44,530 Zuvor war Empfangen diese Dinge über Formulare. 636 00:28:44,530 --> 00:28:48,890 >> Und anscheinend haben wir dies in programmiert haben derart, dass, wenn jemand registriert, 637 00:28:48,890 --> 00:28:52,470 John Harvard Konto E-Mails die proctor-- oder sich selbst in diesem Fall, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- mit den folgenden text-- "Diese Person nur registriert." 639 00:28:55,960 --> 00:29:00,560 Name ist David, ist Kapitän lassen; Geschlecht, männlich; und Wohnheim, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Also, was ist da passiert? 641 00:29:01,560 --> 00:29:05,360 Nun, die betreffende Datei hier ist offenbar register3.php. 642 00:29:05,360 --> 00:29:09,080 Und wenn ich diese öffnen, werden Sie sehen, sowohl die Macht der Code wie folgt 643 00:29:09,080 --> 00:29:12,380 und auch, ehrlich gesagt, die Unsicherheit eines Systems wie E-Mail. 644 00:29:12,380 --> 00:29:16,290 Ich habe gerade effektiv tat sein John Harvard in der folgenden Weise. 645 00:29:16,290 --> 00:29:20,920 >> Ich habe den offenen php tag bis oben, die sagt nur hier kommt einige PHP-Code. 646 00:29:20,920 --> 00:29:23,155 Hier unten, stellt sich heraus, es sind Bibliotheken in PHP. 647 00:29:23,155 --> 00:29:26,410 Sie wissen einfach nicht brauchen, um gehören Header-Dateien so viel. 648 00:29:26,410 --> 00:29:28,900 Sie erhalten mehr mit dem Küchenspüle, so zu sprechen. 649 00:29:28,900 --> 00:29:31,820 >> Aber dieses Mal in Zeile 4, das tue ich wollen Spezialbibliothek aufgerufen 650 00:29:31,820 --> 00:29:36,087 PHP-Mailer, die etwas, das Sie ist kann kostenlos in vielen Systemen installieren. 651 00:29:36,087 --> 00:29:37,920 Hier unten bin ich Validierung die Vorlage nur 652 00:29:37,920 --> 00:29:40,540 durch Überprüfung hat der Benutzer geben mir ein Name, ein Geschlecht und ein Wohnheim. 653 00:29:40,540 --> 00:29:44,130 Und wenn ja, gehen Sie vor und instanziiert einen Mailer. 654 00:29:44,130 --> 00:29:47,020 >> Sie können sich das als eine denken Codezeile, die nur reserviert. 655 00:29:47,020 --> 00:29:48,950 Es ist wie malloc, aber es ist ein wenig sexier 656 00:29:48,950 --> 00:29:51,790 in, dass Sie gerade erwähnen nicht malloc und einige generische Nummer. 657 00:29:51,790 --> 00:29:55,030 Sie sagen, gib mir einer von ihnen, gib mir einen neuen von diesen. 658 00:29:55,030 --> 00:29:57,950 >> Und wenn Sie in programmiert haben Java oder C ++ oder anderen Sprachen, 659 00:29:57,950 --> 00:29:59,130 Sie könnte dies gesehen haben. 660 00:29:59,130 --> 00:30:01,840 Aber die Rede kurzer Sinn, wenn vertraut, diese Linie 661 00:30:01,840 --> 00:30:05,410 legt in Dollarzeichen mail eine spezielle Struktur namens 662 00:30:05,410 --> 00:30:08,731 ein Objekt, das eingebaute hat E-Mail-Funktionalität. 663 00:30:08,731 --> 00:30:10,355 Und in der Tat, bemerken und ähnliche Syntax. 664 00:30:10,355 --> 00:30:11,900 >> Dies ist kein Zeiger, per se. 665 00:30:11,900 --> 00:30:13,990 PHP verwendet nur die gleiche Syntax. 666 00:30:13,990 --> 00:30:17,660 Diese Zeile sagt Nutzung SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protokoll, das nur der ist Protokoll verwendet, um Mail zu senden. 668 00:30:20,900 --> 00:30:24,240 Dies ist die Angabe Einsatz Harvard SMTP-Server, der 669 00:30:24,240 --> 00:30:25,830 ist irgendwo hier auf dem Campus. 670 00:30:25,830 --> 00:30:28,480 >> Dies wird sagen, was TCP Portnummer zu unterhalten, 671 00:30:28,480 --> 00:30:31,650 und ich gerade durch das heraus Googeln oder bitten den Helpdesk. 672 00:30:31,650 --> 00:30:34,640 Und dann, weil Harvard verwendet einige Systemsicherheit auf dem Mail server-- 673 00:30:34,640 --> 00:30:37,060 mindestens zu verschlüsseln Verkehr zwischen euch und ihr 674 00:30:37,060 --> 00:30:41,380 obwohl jedermann zu senden können, um es-- Ich werde auf dem TLS-Protokoll drehen 675 00:30:41,380 --> 00:30:42,710 für die Führung dieses sicher. 676 00:30:42,710 --> 00:30:44,730 >> Aber das ist, wo die Dinge ein wenig beängstigend. 677 00:30:44,730 --> 00:30:47,970 Ich kann einfach beliebig sagen, dass ich jharvard, 678 00:30:47,970 --> 00:30:51,930 Und ich kann einfach beliebig hier mailen mir. 679 00:30:51,930 --> 00:30:55,650 Und dann kann ich eine geben Thema mit dieser Linie hier. 680 00:30:55,650 --> 00:30:58,460 >> Und das sieht einfach hässlich, aber es ist nur ein Haufen von Verkettung. 681 00:30:58,460 --> 00:31:04,480 Stellt sich heraus, PHP hat eine super Nutzsymbol, wie einige Sprachen, die Punkt-Operator, 682 00:31:04,480 --> 00:31:07,340 die gerade buchstäblich verkettet String nach String nach String, 683 00:31:07,340 --> 00:31:09,810 und Sie müssen nicht zu malloc oder Figur haben aus der Gesamtlänge des Strings. 684 00:31:09,810 --> 00:31:10,820 Sie tun es einfach. 685 00:31:10,820 --> 00:31:15,220 Und in der Tat, weil ich Verkettung in all diesen Dingen mit diesen Punkten, 686 00:31:15,220 --> 00:31:18,330 das ist, warum die E-Mail I geschickt sah aus, als es getan hat. 687 00:31:18,330 --> 00:31:20,610 >> Und dann schließlich hier, ich bin Versenden. 688 00:31:20,610 --> 00:31:22,580 Also, wenn dies falsch ist, Ich werde einfach zu sterben, 689 00:31:22,580 --> 00:31:25,680 die eine Funktion ist, dass nur Drucke auf den Bildschirm einige Fehlermeldung. 690 00:31:25,680 --> 00:31:29,170 Aber es ist in der Tat, Aufruf der Sendefunktion. 691 00:31:29,170 --> 00:31:31,780 Andernfalls, wenn all dies fehlschlägt, es leitet mich wieder hier. 692 00:31:31,780 --> 00:31:34,050 >> Und warum sehe ich, dass Ich bin wirklich registriert? 693 00:31:34,050 --> 00:31:36,110 Nun geschah es, genau hier. 694 00:31:36,110 --> 00:31:38,170 Also ich diese bringen für ein paar Gründe. 695 00:31:38,170 --> 00:31:41,542 >> Eines, das ist genau, wie wenn Sie bauen einige Website für ein Abschlussprojekt 696 00:31:41,542 --> 00:31:44,000 oder für die reale Welt, ist dies wie Sie E-Mail-Erinnerungen senden 697 00:31:44,000 --> 00:31:45,924 an Ihre Kunden oder Ihre Abonnenten. 698 00:31:45,924 --> 00:31:47,590 Dies ist, wie Sie das Kennwort Mahnungen schicken. 699 00:31:47,590 --> 00:31:50,760 Dies ist, wie man die Leute Nachrichten senden dass sie eine neue Facebook haben 700 00:31:50,760 --> 00:31:52,990 Nachricht anhängig oder so ähnlich. 701 00:31:52,990 --> 00:31:55,010 >> Aber es spricht auch für die Tatsache, dass dies 702 00:31:55,010 --> 00:31:58,160 haben sehr gut aus gewesen Davin oder sonst jemand. 703 00:31:58,160 --> 00:32:00,567 Und ich sage, diese Art von mit einem Lächeln, denn ich bin 704 00:32:00,567 --> 00:32:03,400 ganz sicher, was durchmacht mehrere Ihrer Gedanken an dieser Stelle. 705 00:32:03,400 --> 00:32:11,910 Aber das ist einer von denen zu tun, wie ich sage, nicht was ich tun Art von Dingen, 706 00:32:11,910 --> 00:32:14,480 weil es trivial ist schmieden E-Mails wie diese. 707 00:32:14,480 --> 00:32:16,480 Aber wie Sie vielleicht gesehen haben oder in Crimson zu lesen, 708 00:32:16,480 --> 00:32:18,271 spät es ist auch ziemlich trivial für Menschen 709 00:32:18,271 --> 00:32:20,050 um sie wieder zu einem gewissen Herkunft zurückverfolgen. 710 00:32:20,050 --> 00:32:23,790 Und fragen Sie mich einige Zeit, vielleicht am CS50 Mittagessen, wie ich zum ersten Mal 711 00:32:23,790 --> 00:32:27,080 habe sehr genau kennen fast bis zu den ed Bord vielen Jahren 712 00:32:27,080 --> 00:32:30,890 her, als ich entdeckte, wie das Internet funktioniert. 713 00:32:30,890 --> 00:32:36,940 So in einem case-- leicht nachdem die ed Bord taten. 714 00:32:36,940 --> 00:32:42,300 >> So in jedem Fall gibt es eine ganze Reihe von Super Globals, 715 00:32:42,300 --> 00:32:45,960 wie sie hier genannt wird, von denen eine wir saw-- Dollarzeichen Strich Pfosten. 716 00:32:45,960 --> 00:32:49,530 Es gibt ein Gegenstück namens get, was, wo Sachen von einer URL ist 717 00:32:49,530 --> 00:32:50,690 landet gehen. 718 00:32:50,690 --> 00:32:54,051 Und es gibt eine ganze Reihe von anderen, too-- Sitzung und Server und Cookie. 719 00:32:54,051 --> 00:32:55,800 Wir kommen wieder zu kommen cookie andermal, 720 00:32:55,800 --> 00:33:01,340 aber Sitzung ist irgendwie cool denn direkt now-- bis now-- 721 00:33:01,340 --> 00:33:06,350 alles, was wir mit einem Web-Browser ist eine Art von Staatenlosen, sozusagen. 722 00:33:06,350 --> 00:33:10,060 Ich kann rund klicken, Zugang Dateien auf dem Server, was 723 00:33:10,060 --> 00:33:13,500 passiert auf dem Bildschirm, aber dann wird die Verbindung geschlossen wird. 724 00:33:13,500 --> 00:33:17,450 Der Internet Explorer oder die Firefox-Symbol hält Spinn 725 00:33:17,450 --> 00:33:20,340 und Sie sehen, was dass Web-Seite enthält. 726 00:33:20,340 --> 00:33:23,530 >> So HTTP staatenlos, dass sobald es einen Zusammenhang, 727 00:33:23,530 --> 00:33:25,050 bekommt einige Daten, das ist es. 728 00:33:25,050 --> 00:33:29,940 Keine Verbindung mehr, im Gegensatz zu Skype, Im Gegensatz zu Facetime, im Gegensatz GChat, die 729 00:33:29,940 --> 00:33:32,180 eine konstante Verbindung zum Server. 730 00:33:32,180 --> 00:33:34,650 Das Web ist grundsätzlich getrennt, obwohl wir 731 00:33:34,650 --> 00:33:36,630 sehen, bevor lange wie wir können die Dinge zu simulieren 732 00:33:36,630 --> 00:33:39,300 wie Facebook-Chat und GChat, dem die illusion-- pflegen 733 00:33:39,300 --> 00:33:41,680 oder tatsächlich tun pflegen ein ständige Verbindung mit 734 00:33:41,680 --> 00:33:43,270 mehr moderne Technik. 735 00:33:43,270 --> 00:33:49,000 >> Aber wenn ich gehen, um, sagen wir, counter.php, Dies ist ein weiteres einfaches Beispiel 736 00:33:49,000 --> 00:33:52,700 wie wir sehen werden, dass derzeit denkt Ich besuchte die Website Nullzeit. 737 00:33:52,700 --> 00:33:56,790 Aber wenn ich neu zu laden einfach die Seite, sie weiß, irgendwie war ich hier vor. 738 00:33:56,790 --> 00:33:58,840 Wenn ich reload wieder, es weiß, dass ich hier war, bevor. 739 00:33:58,840 --> 00:34:01,100 Und wieder und wieder und wieder und wieder. 740 00:34:01,100 --> 00:34:03,610 >> Es gibt also einige Plus plussing los ist, aber Bekanntmachung 741 00:34:03,610 --> 00:34:07,090 das kleine Ding dreht immer so kurzzeitig bis oben und dann trennt, 742 00:34:07,090 --> 00:34:11,179 so ist es nicht so, dass ich eine konstante Verbindung zu meinem Gerät. 743 00:34:11,179 --> 00:34:16,929 Nun, wenn ich in counter.php gehen, feststellen, wie einfach es ist. 744 00:34:16,929 --> 00:34:19,080 Ich zum ersten Mal diese besondere nennen Funktion, dass wir bald 745 00:34:19,080 --> 00:34:21,513 Beginn der Einnahme für selbstverständlich genannte Session-Start. 746 00:34:21,513 --> 00:34:22,179 Starten Sie eine Sitzung. 747 00:34:22,179 --> 00:34:25,095 >> Und eine Sitzung fortan nur werde ein Eimer sein, wie ein Einkaufs 748 00:34:25,095 --> 00:34:28,120 Warenkorb, in dem Sie Werte setzen und Art von Vertrauen als Programmierer 749 00:34:28,120 --> 00:34:31,590 dass sie gehen, um hier zu sein, wenn dass Benutzer kommt back-- eine zweite 750 00:34:31,590 --> 00:34:35,670 später eine Stunde später, auch ein Jahr später, solange er oder sie nicht klar tut 751 00:34:35,670 --> 00:34:37,602 ihre Cookies, wie wir schließlich sehen. 752 00:34:37,602 --> 00:34:39,310 Und jetzt habe ich nur noch ein, wenn die Bedingung hier. 753 00:34:39,310 --> 00:34:44,679 Also, wenn die folgenden Schlüssel, genannt Zähler, ist im Inneren eingestellt 754 00:34:44,679 --> 00:34:49,210 dieses Super global-- diesen Hash Tisch, wenn Sie genannte Session will--, 755 00:34:49,210 --> 00:34:53,350 dann gehen Sie vor und sichern Sie sich die Wert aus dem session-- Think 756 00:34:53,350 --> 00:34:55,250 Dies als Einkaufs cart-- und speichern Sie es 757 00:34:55,250 --> 00:34:57,680 in einer temporären Variablen namens Zähler. 758 00:34:57,680 --> 00:35:02,240 >> Andernfalls, wenn die Wertzähler war nicht in der so genannten Warenkorb gesetzt, 759 00:35:02,240 --> 00:35:04,430 nur initialisieren auf 0. 760 00:35:04,430 --> 00:35:09,830 Schließlich hier unten gehen und wieder in die Einkaufswagen oder der Session 761 00:35:09,830 --> 00:35:13,000 der Wert des Zählers +1. 762 00:35:13,000 --> 00:35:16,730 So stellt sich heraus, dass diese Spezialcontainer hier-- 763 00:35:16,730 --> 00:35:20,355 was wiederum ist eine dieser zugeordnete Arrays, ein Array, das Sie können Index 764 00:35:20,355 --> 00:35:25,010 in Worte statt numbers-- bleibt auch nach der Benutzer weggeht. 765 00:35:25,010 --> 00:35:26,510 Wieder werde ich zurück auf die Seite jetzt gehen. 766 00:35:26,510 --> 00:35:28,400 Es ist schon eine Minute oder so. 767 00:35:28,400 --> 00:35:31,300 Aber es erinnert sich, dass ich 19 Male zuvor hier gewesen. 768 00:35:31,300 --> 00:35:32,740 Dies ist mein 20. Besuch. 769 00:35:32,740 --> 00:35:36,560 >> Und so, das wird Schlüssel zum zu sein Implementierung einer Website, erinnert sich 770 00:35:36,560 --> 00:35:40,640 dass Sie angemeldet sind, dass Sie setzen etwas wörtlicher in Ihrem Warenkorb 771 00:35:40,640 --> 00:35:43,902 zu kaufen, oder dass Sie einige haben Anzahl der Nachrichten anhängig. 772 00:35:43,902 --> 00:35:45,610 Immer, wenn Sie zu wollen erinnern Informationen 773 00:35:45,610 --> 00:35:48,130 wir werden diesen PHP sehen wie mehrere andere Sprachen, 774 00:35:48,130 --> 00:35:53,640 bietet uns dieser Illusion der staatlichen obwohl, wie Sie im PSET 6 zu sehen, 775 00:35:53,640 --> 00:35:57,642 wie Sie HTTP-Anfragen sind vom Client zum Server, das ist es. 776 00:35:57,642 --> 00:35:59,850 Sobald Sie wieder zu bekommen, dass Antwort, es gibt nichts mehr 777 00:35:59,850 --> 00:36:01,790 vom Server zurückkommen standardmäßig. 778 00:36:01,790 --> 00:36:03,820 Aber wir werden sehen, wie man das umgehen. 779 00:36:03,820 --> 00:36:07,430 >> Nun, wollen wir versuchen, Reinigen Sie diese ein wenig. 780 00:36:07,430 --> 00:36:09,470 Wir haben ein paar mal gesehen verschiedene Beispiele gibt. 781 00:36:09,470 --> 00:36:12,250 Ach ja, und nebenbei, für diejenigen, bekannt oder unbekannt, 782 00:36:12,250 --> 00:36:14,230 Der Grund, dass die Frosh IMs Beispiel ging 783 00:36:14,230 --> 00:36:18,060 aus der Betrachtung wirklich hässlich, gut slightly--, 784 00:36:18,060 --> 00:36:23,160 noch ugly-- bis leicht weniger hässlich, obwohl immer noch hässlich 785 00:36:23,160 --> 00:36:25,230 Denn wenn wir uns auf den Quellcode hier 786 00:36:25,230 --> 00:36:28,240 es stellt sich heraus, dass ich diese ganz am Anfang der Datei. 787 00:36:28,240 --> 00:36:32,570 >> Es stellte sich heraus, dass Bootstrap ist eine von vielen frei verfügbar Bibliotheken gibt 788 00:36:32,570 --> 00:36:37,140 die nicht für Programmiersprachen existieren immer, aber für CSS oder JavaScript 789 00:36:37,140 --> 00:36:39,190 oder HTML oder eine beliebige Anzahl von Sprachen. 790 00:36:39,190 --> 00:36:42,160 >> Und diese Leute hier-- kam ursprünglich aus 791 00:36:42,160 --> 00:36:44,730 von Twitter-- einfach eine ganze Reihe von Arten. 792 00:36:44,730 --> 00:36:47,360 Es ist eine riesige Datei hier, dass jemand schrieb, 793 00:36:47,360 --> 00:36:51,020 oder jemand schrieb, im Laufe der Zeit, dass gibt Farben und Formatierungen 794 00:36:51,020 --> 00:36:53,740 und so weiter, so dass ich deren Syntax Art ausleihen 795 00:36:53,740 --> 00:36:56,157 und nicht, um herauszufinden, wie man das Layout meiner Form. 796 00:36:56,157 --> 00:36:57,990 Dies wird auch minimierte so dass ein Computer 797 00:36:57,990 --> 00:37:00,560 verstehe es aber nicht notwendigerweise ein Mensch ist. 798 00:37:00,560 --> 00:37:03,050 Also das ist nur, warum die Stilisierung dort geändert. 799 00:37:03,050 --> 00:37:05,450 >> Aber lassen Sie uns jetzt besser machen in Bezug auf Design, 800 00:37:05,450 --> 00:37:07,490 denn wenn wir unten bleiben diese Straße zu lang ist, 801 00:37:07,490 --> 00:37:11,290 unseren Kodex zu gehen unordentlich und Messier. 802 00:37:11,290 --> 00:37:13,040 Lassen Sie uns also auf diese Beispiele konzentrieren sich hier. 803 00:37:13,040 --> 00:37:15,090 Das letzte für heute. 804 00:37:15,090 --> 00:37:18,720 >> Also hier ist ein super einfaches Version 1.0 des CS50-Website. 805 00:37:18,720 --> 00:37:21,250 Es hat nur Links zu Vorträge und Lehrpläne, 806 00:37:21,250 --> 00:37:25,490 und es ist mit dieser ungeordnete Liste tag-- die UL-Tag, die wir beim letzten Mal verwendet. 807 00:37:25,490 --> 00:37:28,800 Und wenn in der Tat, wenn I eröffnen Seitenquelltext anzeigen, 808 00:37:28,800 --> 00:37:31,710 Sie werden sehen, dass dies wirklich, wirklich einfache HTML. 809 00:37:31,710 --> 00:37:35,460 Und in der Tat, auch wenn dies eine PHP-Datei unter der Haube, 810 00:37:35,460 --> 00:37:38,620 es ist immer noch nur spucken nur HTML für jetzt. 811 00:37:38,620 --> 00:37:41,312 >> Also, wenn ich auf Vorträge klicken, wir sehen dies geschieht. 812 00:37:41,312 --> 00:37:43,020 Und wenn ich am Wochenende auf Null, sehen wir dies. 813 00:37:43,020 --> 00:37:44,920 Und wenn ich auf Mittwoch, sehen wir dies. 814 00:37:44,920 --> 00:37:47,900 Und das war offenbar das PDF der Dias von diesem Tag. 815 00:37:47,900 --> 00:37:52,020 Alles, was ich getan habe, ist Link mit ein Anker-Tag auf diese URL hier. 816 00:37:52,020 --> 00:37:55,400 >> Das ist also nur zu sagen, das ist ein ziemlich einfache Version des CS50-Website. 817 00:37:55,400 --> 00:37:56,790 Mal sehen, wie es umgesetzt werden. 818 00:37:56,790 --> 00:38:01,240 Wenn ich in die mvc0 Verzeichnis zu gehen, Wir werden ein paar Dateien zu sehen. 819 00:38:01,240 --> 00:38:03,250 Eines ist ein README, also, wenn einige dieser zu schnell ist, 820 00:38:03,250 --> 00:38:05,166 Sie können einfach herumzustochern gemächlicher später. 821 00:38:05,166 --> 00:38:07,930 Und beachtet hier ist eine Datei index.php. 822 00:38:07,930 --> 00:38:09,960 Es stellt sich heraus, dass, wenn Sie selbst, die menschliche, 823 00:38:09,960 --> 00:38:14,460 keinen endgültigen Namen in angeben eine URL, die der Webserver in der Regel 824 00:38:14,460 --> 00:38:17,010 folgert einige Standardnamen für Sie. 825 00:38:17,010 --> 00:38:20,060 Ein Indexpunkt etwas ist in der Regel die Standardeinstellung. 826 00:38:20,060 --> 00:38:23,010 >> Also deshalb vor einem Augenblick bei meinem Besuch diese URL hier 827 00:38:23,010 --> 00:38:26,750 kein Dateiname, keine Datei Verlängerung, keine Periode in der URL. 828 00:38:26,750 --> 00:38:29,710 Es wusste nur irgendwie magisch für index.php aussehen. 829 00:38:29,710 --> 00:38:30,870 Es ist nur eine Konvention. 830 00:38:30,870 --> 00:38:32,360 Könnte etwas heißen. 831 00:38:32,360 --> 00:38:35,110 >> Also, wenn ich jetzt in zu gehen index.php, werden Sie sehen, 832 00:38:35,110 --> 00:38:37,100 dass indeed-- uns gelassen der Kommentare loswerden 833 00:38:37,100 --> 00:38:39,500 hier, weil es wirklich nichts Interessantes zu es-- 834 00:38:39,500 --> 00:38:41,579 dies ist nur hart codierte HTML. 835 00:38:41,579 --> 00:38:43,370 Also das ist konsequent, obwohl, mit meinem Anspruch 836 00:38:43,370 --> 00:38:45,230 dass man HTML und PHP vermischen. 837 00:38:45,230 --> 00:38:48,060 Es gibt keinen tatsächlichen Programmierlogik in hier. 838 00:38:48,060 --> 00:38:51,030 >> Und die anderen Dateien sind ziemlich viel genauso uninteressant. 839 00:38:51,030 --> 00:38:56,240 Es ist nur hartcodierte Woche ein hier zu Woche ein m und Woche ein w, 840 00:38:56,240 --> 00:38:57,510 für Montag und Mittwoch. 841 00:38:57,510 --> 00:39:01,890 Und dann, wenn ich öffnen Woche null, bemerken, dass es fast identisch. 842 00:39:01,890 --> 00:39:03,320 >> Und das ist eine Art Schlüssel zum Mitnehmen. 843 00:39:03,320 --> 00:39:06,180 Beachten Sie nur, wie redundante dies. 844 00:39:06,180 --> 00:39:10,710 Diese Dateien kaum ändern, und doch habe ich zog eine dieser copy / paste Jobs 845 00:39:10,710 --> 00:39:13,420 wo ich ein file-- vermutlich in Woche zero-- kopiert 846 00:39:13,420 --> 00:39:16,320 wenn Woche eine um kam, und zwickte ein paar Werte. 847 00:39:16,320 --> 00:39:18,590 Wir sollten wahrscheinlich in der Lage sein, besser als dieses zu tun. 848 00:39:18,590 --> 00:39:21,800 >> Also gehen wir zurück bis zu MVC und gehen in die Version ein. 849 00:39:21,800 --> 00:39:24,810 Und merke ich habe eine bekam wenige Dateien, weil das, was 850 00:39:24,810 --> 00:39:29,870 üblich war, alle diese Dateien nur ein Moment ago-- Wenn ich wieder auf die Version 0, 851 00:39:29,870 --> 00:39:32,600 gehen wir zurück in die Index und nur postulate-- 852 00:39:32,600 --> 00:39:36,090 wenn ich einmal der comments-- loswerden was für ein Teil dieser Seite 853 00:39:36,090 --> 00:39:40,072 ist vermutlich in jeder meiner Dateien? 854 00:39:40,072 --> 00:39:40,780 Nenn es einfach aus. 855 00:39:40,780 --> 00:39:44,620 Welche Zeilen dupliziert werden wahrscheinlich über all diese Seiten? 856 00:39:44,620 --> 00:39:45,120 Ja? 857 00:39:45,120 --> 00:39:46,110 >> STUDENT: [unverständlich]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. MALAN: 1 bis 9. 859 00:39:47,660 --> 00:39:48,720 Ja, absolut. 860 00:39:48,720 --> 00:39:52,080 1 bis 9, außer vielleicht 8 ändert ein wenig, weil CS50 861 00:39:52,080 --> 00:39:54,650 wird Vorträgen oder Woche Null oder so etwas. 862 00:39:54,650 --> 00:39:55,970 Aber fast identisch. 863 00:39:55,970 --> 00:39:58,657 Also all dieses Zeug ist nur Art kopiert und eingefügt. 864 00:39:58,657 --> 00:40:00,490 Und es gibt ein paar anderen Linien ich denken kann 865 00:40:00,490 --> 00:40:05,000 dieses sind wahrscheinlich identisch in allen Dateien. 866 00:40:05,000 --> 00:40:06,315 >> STUDENT: 12 und 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. MALAN: Yeah. 868 00:40:07,190 --> 00:40:11,220 Klar, 12, 13, und 14 wahrscheinlich, nur weil die interessante Sachen 869 00:40:11,220 --> 00:40:15,460 ist in den Zeilen 11 passiert und 10, so wie es scheint. 870 00:40:15,460 --> 00:40:18,350 Also schauen wir uns die Version 1, die versucht, dies zu verbessern. 871 00:40:18,350 --> 00:40:24,020 In Version 1 dieses MVC example-- wir werden Erklären Sie, was MVC Mittel in einem moment-- 872 00:40:24,020 --> 00:40:27,420 wenn ich in Index zu gehen, es ist irgendwie sieht ein wenig verwirrend jetzt. 873 00:40:27,420 --> 00:40:28,880 Es ist nicht ganz so einfach wie zuvor. 874 00:40:28,880 --> 00:40:30,906 >> Aber sobald Sie anfangen lesen Sie es sorgfältig, es ist 875 00:40:30,906 --> 00:40:32,530 ziemlich einfach, was es tut. 876 00:40:32,530 --> 00:40:34,397 Anscheinend Leitung 1 und Linie 8 ersetzt haben 877 00:40:34,397 --> 00:40:37,230 alle von dem Zeug einfach identified-- obwohl nur für eine gute Maßnahme, 878 00:40:37,230 --> 00:40:41,900 Ich ließ die ULs gibt nur für den Fall irgend Tage hatten nicht eine Liste der Dinge. 879 00:40:41,900 --> 00:40:47,860 Und so verlangen, ist eine Art, wie Pfund gehören in C. Es kopiert und Pasten 880 00:40:47,860 --> 00:40:50,470 der Inhalt effektiv hier in dieser Datei. 881 00:40:50,470 --> 00:40:53,650 >> So in header.php, wie Sie vielleicht dem Namen entnehmen, 882 00:40:53,650 --> 00:40:55,330 wird sich der Kopfzeile der Seite sein. 883 00:40:55,330 --> 00:40:57,110 Es ist hier Art von verwaisten. 884 00:40:57,110 --> 00:41:01,820 Es hat nur die Spitze, um sie, aber es gibt keine Inhalte unter mehr. 885 00:41:01,820 --> 00:41:05,070 >> Und wenn ich mir footer derweil welche die andere Datei war mentioned-- 886 00:41:05,070 --> 00:41:08,830 das hier ist noch weniger interessant, aber wieder, ist es üblich, alles. 887 00:41:08,830 --> 00:41:10,250 Das ist also der Fußzeile. 888 00:41:10,250 --> 00:41:11,300 Dies ist der Kopfzeile. 889 00:41:11,300 --> 00:41:13,950 Dies ist die Datei, ist Veränderung, also warum nicht 890 00:41:13,950 --> 00:41:18,140 versuchen, ausklammern die Gemeinsamkeit mit diesen beiden Linien hier? 891 00:41:18,140 --> 00:41:20,090 >> Aber wir können diese reinigen ein wenig weiter. 892 00:41:20,090 --> 00:41:23,260 Ich werde weitermachen und eröffnen Version zwei, wo 893 00:41:23,260 --> 00:41:27,106 wir werden sehen, dass es eine neue Datei, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Wir werden sehen, was das ist in einem Augenblick. 895 00:41:28,610 --> 00:41:30,930 Gehen wir zu indizieren, da die Einstiegspunkt wie zuvor. 896 00:41:30,930 --> 00:41:35,230 >> Und jetzt merke ich bin erfordern helpers.php nicht Kopf- oder Fußzeile. 897 00:41:35,230 --> 00:41:41,720 Aber Helfer ist ein bisschen wie helpers.c und helpers.h von PSET 2 898 00:41:41,720 --> 00:41:46,150 oder PSET 3 lange her, als Sie tatsächlich hat zu suchen und zu finden für diesen PSET, 899 00:41:46,150 --> 00:41:50,950 und Sie zum Sortieren hatten alle Ihre Code und die Suche in einer separaten Datei. 900 00:41:50,950 --> 00:41:52,510 Das ist, was ist denn hier los. 901 00:41:52,510 --> 00:41:54,390 >> Und jetzt Zeile 3 sieht ein wenig anders aus. 902 00:41:54,390 --> 00:41:55,920 Und es ist nur eine Zeile. 903 00:41:55,920 --> 00:41:57,950 Um diese noch mehr zu machen Klar, könnte ich nur 904 00:41:57,950 --> 00:42:01,820 dies tun, um stilistisch einheitlich sein mit allem, was wir sonst noch getan habe. 905 00:42:01,820 --> 00:42:04,130 Aber das ist nicht wirklich Änderung der Funktionalität. 906 00:42:04,130 --> 00:42:05,880 Es ist nur eine Zeile echten Code. 907 00:42:05,880 --> 00:42:09,010 >> Offenbar gibt es eine Funktion irgendwo genannt render Header, 908 00:42:09,010 --> 00:42:11,420 und das ist, wo die Dinge ganz schön mächtig. 909 00:42:11,420 --> 00:42:17,040 Beachten Sie, dass innerhalb seiner Klammern ist das, was andere Stück Syntax? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Es ist wahrscheinlich ein wenig schwer zu sagen, aber bemerken there's-- Ich werde einige weiße setzen 912 00:42:23,350 --> 00:42:24,300 Raum. 913 00:42:24,300 --> 00:42:25,530 Es gibt eckige Klammern. 914 00:42:25,530 --> 00:42:29,700 >> Und eckigen Klammern wir ein bisschen vor sah im Kontext der assoziativen Arrays, 915 00:42:29,700 --> 00:42:31,580 die, wieder, wie Hash-Tabellen. 916 00:42:31,580 --> 00:42:36,230 Und wenn Sie denken, jetzt zu C, die Reihenfolge der Argumente in eine Funktion 917 00:42:36,230 --> 00:42:37,570 hat, immer die gleiche sein. 918 00:42:37,570 --> 00:42:41,146 Man muss bedenken, was die bestellen ist-- x, y, z oder z, y, x-- 919 00:42:41,146 --> 00:42:44,020 und man muss immer ihnen in der gleichen Reihenfolge oder schauen sie auf 920 00:42:44,020 --> 00:42:45,100 wenn du es vergessen hast. 921 00:42:45,100 --> 00:42:51,140 >> Aber das scheint ein cleverer Weg sein der Übergabe eines beliebigen Schlüsselwert 922 00:42:51,140 --> 00:42:55,840 Paaren, wobei Titel ist der Name eines Arguments in diesem Fall 923 00:42:55,840 --> 00:42:58,334 und CS50 ist sein Wert. 924 00:42:58,334 --> 00:43:00,250 Und die Tatsache, dass ich Diese eckigen Klammern 925 00:43:00,250 --> 00:43:02,560 bedeutet hier, dass ich konnte auch in etwas passieren 926 00:43:02,560 --> 00:43:07,550 wie in der Woche 1 oder 0 oder 2 oder 3. 927 00:43:07,550 --> 00:43:10,550 Also haben wir parametriert haben diese Funktion in einer Weise 928 00:43:10,550 --> 00:43:15,180 dass es mehrere Eingänge zu nehmen, aber jetzt ist es nur die eine. 929 00:43:15,180 --> 00:43:20,060 >> Wenn ich nun in helpers.php gehen, feststellen, was es tut. 930 00:43:20,060 --> 00:43:22,030 Das ist ein bisschen neuer Funktionen, 931 00:43:22,030 --> 00:43:24,190 aber für jetzt nur nehmen auf den Glauben, dass dies 932 00:43:24,190 --> 00:43:26,570 die Syntax, mit denen Sie definieren eine Funktion in PHP. 933 00:43:26,570 --> 00:43:27,840 Sie sagen, buchstäblich Funktion. 934 00:43:27,840 --> 00:43:30,090 Sie müssen nicht eine Rückkehr angeben geben, und das ist im Einklang 935 00:43:30,090 --> 00:43:33,880 mit der Variablendetail früher wo man nicht wirklich stark geben. 936 00:43:33,880 --> 00:43:35,650 >> Dies gibt gerade dass standardmäßig diese 937 00:43:35,650 --> 00:43:37,460 nimmt ein assoziatives Array als Argument. 938 00:43:37,460 --> 00:43:38,210 Und wissen Sie was? 939 00:43:38,210 --> 00:43:41,450 Wenn der Benutzer nicht passieren ein in, gehen von einem Standardwert. 940 00:43:41,450 --> 00:43:44,680 >> Dies ist ein Feature, dass C nicht für uns, das ist schön, denn jetzt 941 00:43:44,680 --> 00:43:46,430 Daten, auch wenn Sie geben Sie es nicht etwas, 942 00:43:46,430 --> 00:43:49,300 wird, zu sein Array, aber ein leerer. 943 00:43:49,300 --> 00:43:51,860 Und nebenbei, Extrakt gerade tut etwas flippige 944 00:43:51,860 --> 00:43:56,380 wo es nimmt alle Schlüssel daraus assoziatives Array, all die Dinge, 945 00:43:56,380 --> 00:43:59,950 Sie in eckigen Klammern setzen könnte, und erzeugt aus ihnen Variablen 946 00:43:59,950 --> 00:44:06,270 so dass wir schließlich Zugang um sie in footet.php und header.php. 947 00:44:06,270 --> 00:44:08,950 Das ist ein wenig abstrakt, so möchte ich darauf dies. 948 00:44:08,950 --> 00:44:12,990 >> In index.php, bemerken, dass ich Einleiten eines Schlüssel-Wert Paar Titel 949 00:44:12,990 --> 00:44:14,850 mit einem Wert von CS50. 950 00:44:14,850 --> 00:44:18,660 Wenn ich nun einen Blick auf helpers.php, bemerken, dass RenderHeader 951 00:44:18,660 --> 00:44:23,870 wird das Extrahieren dieser Daten, die ich vorbei in, und dann verlangen header.php. 952 00:44:23,870 --> 00:44:27,970 Was ich getan habe, ist eine Art des armen Mannes Umsetzung der nun folgenden. 953 00:44:27,970 --> 00:44:31,720 >> Wenn ich öffnen header.php, Ankündigung, dass ich nicht mehr schwer 954 00:44:31,720 --> 00:44:34,890 codiert das Wort CS50 in dieser Header-Datei. 955 00:44:34,890 --> 00:44:39,310 Ich habe dies zwar grausam setzen benannte Funktion, HTML Sonderzeichen, 956 00:44:39,310 --> 00:44:40,170 drin. 957 00:44:40,170 --> 00:44:41,640 Aber bemerken, was ich getan habe. 958 00:44:41,640 --> 00:44:44,240 Ich habe offene HTML bekam. 959 00:44:44,240 --> 00:44:47,420 Ich habe dann offenen Kopf und offene Titel. 960 00:44:47,420 --> 00:44:52,380 >> Und dann in der Titel Die offene und Tags schließen, habe ich ein wenig PHP-Code. 961 00:44:52,380 --> 00:44:56,670 Und das ist ein schön, aber der Syntax, das bedeutet nur, Echo aus. 962 00:44:56,670 --> 00:44:59,840 Es bedeutet wörtlich this-- Echo der following-- 963 00:44:59,840 --> 00:45:01,910 aber dies ist sexier zu schreiben. 964 00:45:01,910 --> 00:45:05,000 Echo den Titel das ist übergeben worden. 965 00:45:05,000 --> 00:45:07,560 >> Aber was denken Sie HTML Sonder char dreht sich alles um, 966 00:45:07,560 --> 00:45:10,590 besonders wenn Sie einige vor HTML Erfahrung? 967 00:45:10,590 --> 00:45:14,050 Welche Zeichen sein könnte gefährlich, auf eine Seite zu übergeben in 968 00:45:14,050 --> 00:45:17,980 wo Sie die dynamische Generierung die Web-Seite mit Code wie diesen? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Lassen Sie mich an dieser Datei zu gehen, Version zwei, und sehen, ob ich nicht zu induzieren diese. 971 00:45:24,650 --> 00:45:26,210 >> Version zwei ist dies. 972 00:45:26,210 --> 00:45:28,510 Und bemerken alles ist in Ordnung, gut funktioniert. 973 00:45:28,510 --> 00:45:35,280 Aber angenommen, ich gehe in die index.php und Ich festgelegt, dass der Titel meiner Seite 974 00:45:35,280 --> 00:45:36,630 nicht CS50. 975 00:45:36,630 --> 00:45:44,930 Es ist offen Halterung Skript Benachrichtigung Hallo Welt, in der Nähe Apostroph, 976 00:45:44,930 --> 00:45:49,740 schließende Klammer, Semikolon, Stellwinkel, Schrägstrich-Skript. 977 00:45:49,740 --> 00:45:51,897 >> Schrift, wie wir schließlich sehen, ist ein Tag 978 00:45:51,897 --> 00:45:54,480 die Sie verwenden können, um eines anderen zu bedienen Programmiersprache namens 979 00:45:54,480 --> 00:45:56,330 JavaScript-Innenseite einer Webseite. 980 00:45:56,330 --> 00:45:57,960 Und jetzt bemerken die Logik hier. 981 00:45:57,960 --> 00:45:59,840 Hier ist ein Schlüssel namens Titel. 982 00:45:59,840 --> 00:46:02,690 Hier ist es ist verrückt langen Wert jetzt. 983 00:46:02,690 --> 00:46:07,840 >> Aber wenn ich zu den Helfern page- oder besser gesagt, die Kopfseite, 984 00:46:07,840 --> 00:46:11,310 Ich rufe diese Funktion an diesem Titel zuerst. 985 00:46:11,310 --> 00:46:15,250 Also, wenn ich jetzt diese Seite neu laden, ich dies zu sehen, was lächerlich aussieht, 986 00:46:15,250 --> 00:46:16,110 aber es ist sicher. 987 00:46:16,110 --> 00:46:17,310 Es sieht einfach nur dumm. 988 00:46:17,310 --> 00:46:20,320 >> Aber angenommen, statt Ich hatte das vergessen. 989 00:46:20,320 --> 00:46:24,660 Und meine Worte, eine von Null verschiedene Zahl von euch wird dies vergessen 990 00:46:24,660 --> 00:46:27,790 und du wirst einige fleißige bekommen Student oder Freund kommen 991 00:46:27,790 --> 00:46:31,540 Ihnen am CS50 Messe oder anonym nachts Stochern auf Ihrer Webseite 992 00:46:31,540 --> 00:46:35,300 und im Wesentlichen Injizieren Code ohne Wissen Sie in Ihre Website 993 00:46:35,300 --> 00:46:35,800 irgendwie. 994 00:46:35,800 --> 00:46:39,000 >> Denn wenn ich einfach spucken out Titel hier und Titel 995 00:46:39,000 --> 00:46:44,330 sind-- auch wenn Titel wörtlich sieht wie folgt aus und PHP 996 00:46:44,330 --> 00:46:47,660 als eine Sprache, die spucken kann aus anderen Sprachen Text, 997 00:46:47,660 --> 00:46:50,650 das ist wörtlich gehen um diesen Tag mit zu ersetzen, 998 00:46:50,650 --> 00:46:53,010 natürlich, was ich an anderer Stelle. 999 00:46:53,010 --> 00:46:57,640 >> Also, wenn ich jetzt hier gehen und Nachladen nach Lösen diese Sicherheitsmechanismen, 1000 00:46:57,640 --> 00:46:59,982 jetzt bin Welt hallo hier. 1001 00:46:59,982 --> 00:47:02,690 Nun, das ist gar nicht so groß von einem umzugehen, aber man konnte etwas tun 1002 00:47:02,690 --> 00:47:05,119 ein wenig mehr böswillige Hier wie dort ist 1003 00:47:05,119 --> 00:47:08,410 andere tags-- wie wir sehen werden, sobald wir verbringen mehr Zeit in JavaScript-- wie Lage 1004 00:47:08,410 --> 00:47:14,910 dot href bekommt, zitat, unquote, HTTP business.com, aber das Gegenteil von dem, 1005 00:47:14,910 --> 00:47:15,950 aus dem zweiten Tag. 1006 00:47:15,950 --> 00:47:20,120 Und jetzt können Sie eine Web induzieren Seite tatsächlich sofort gehen 1007 00:47:20,120 --> 00:47:21,190 auf diese Seite hier. 1008 00:47:21,190 --> 00:47:23,000 >> Und eigentlich will ich nicht sogar um business.com gehen 1009 00:47:23,000 --> 00:47:24,749 weil ich nicht will zu wissen, was das ist. 1010 00:47:24,749 --> 00:47:28,710 Aber auch dies wird Code auslösen in dieser Seite eingespritzt werden. 1011 00:47:28,710 --> 00:47:32,680 Das ist also nur auf, obwohl sagen, dass wir die Einführung Super früh einige 1012 00:47:32,680 --> 00:47:36,800 dieser komplexeren Strukturen, es ist alles auf ein Ende zu machen, dass 1013 00:47:36,800 --> 00:47:39,320 dass Ihr Code ist nicht ausnutzbar. 1014 00:47:39,320 --> 00:47:40,960 >> So, jetzt eine dritte Version hier. 1015 00:47:40,960 --> 00:47:42,470 Es ist schon ein wenig schicker. 1016 00:47:42,470 --> 00:47:44,875 Ich habe nicht wirklich like-- die anale Seite von mir 1017 00:47:44,875 --> 00:47:47,750 wurde immer durch die ein wenig verärgert Tatsache, dass ich eine Funktion aufgerufen 1018 00:47:47,750 --> 00:47:51,940 RenderHeader und RenderFooter dass waren fast identisch. 1019 00:47:51,940 --> 00:47:55,400 So ist es mir eingefallen, warum nicht Ich parametrieren diese Funktionen 1020 00:47:55,400 --> 00:47:59,180 in nur einer genannt zu machen, haben sie nehmen ein zweites Argument 1021 00:47:59,180 --> 00:48:04,420 wie der Name der Vorlage, die endgültige entweder Kopf- oder Fußzeile render--? 1022 00:48:04,420 --> 00:48:07,160 Und dann gegebenenfalls, wenn ich will, in einigen Schlüsselwertpaare übergeben 1023 00:48:07,160 --> 00:48:10,580 wie ich den Titel für das zu tun header, aber nicht für die Fußzeile, 1024 00:48:10,580 --> 00:48:11,800 Ich könnte das tun. 1025 00:48:11,800 --> 00:48:16,510 >> Und jetzt, wenn ich in helpers.php gehen, es ist ein wenig komplizierter. 1026 00:48:16,510 --> 00:48:19,670 Und ich werde meine Hände auf dem Wave Details, aber es ist nur eine Funktion. 1027 00:48:19,670 --> 00:48:21,890 Also das ist ein Schritt in Richtung einer besseren Design. 1028 00:48:21,890 --> 00:48:23,360 >> Wir können noch einen Schritt weiter zu gehen. 1029 00:48:23,360 --> 00:48:28,890 Wenn ich in meinem vierten gehen Version davon, jetzt merken 1030 00:48:28,890 --> 00:48:31,320 dass ich etwas zu tun noch Art von kryptisch. 1031 00:48:31,320 --> 00:48:33,230 Und ich weiß, das ist eine viel auf einmal aufnehmen, 1032 00:48:33,230 --> 00:48:35,080 aber wir sind gerade ein bisschen Reinigungs Dinge. 1033 00:48:35,080 --> 00:48:38,550 Jetzt bin ich Putting meine Helfer Datei in einem Ordner namens 1034 00:48:38,550 --> 00:48:41,190 includes-- nur eine willkürliche nennen, wo ich will, um Sachen zu setzen 1035 00:48:41,190 --> 00:48:44,300 dass ich include-- und dann der Rest ist gleich. 1036 00:48:44,300 --> 00:48:47,140 >> Aber wenn ich mir jetzt in gedit, Ankündigung, die ich losgeworden 1037 00:48:47,140 --> 00:48:51,940 der all die anderen Dateien, und ich habe bewegt sie zum Beispiel in den hier. 1038 00:48:51,940 --> 00:48:55,110 Und dann in Vorlagen, Ich habe dies auch hier. 1039 00:48:55,110 --> 00:48:59,292 Und so ist das alles jetzt zu einem Schritt der unter Verwendung einer viel besseren Design-Muster. 1040 00:48:59,292 --> 00:49:01,000 Und wir sehr schnell sind werde wegziehen 1041 00:49:01,000 --> 00:49:03,870 von PHP Standardfunktionalität, die wir hier begann mit, 1042 00:49:03,870 --> 00:49:07,655 wo man einfach vermischen PHP, und Ihre HTML und CSS, 1043 00:49:07,655 --> 00:49:09,780 und Sie nur ausspucken und Sie über Ihren Weg zu gehen. 1044 00:49:09,780 --> 00:49:11,404 Es wird nicht sehr wartbar. 1045 00:49:11,404 --> 00:49:14,481 Genau wie in C, mit begannen wir mehrere Dateien und mehrere Funktionen 1046 00:49:14,481 --> 00:49:15,730 und Factoring Dinge, die aus. 1047 00:49:15,730 --> 00:49:16,688 Wir werden hier das gleiche tun. 1048 00:49:16,688 --> 00:49:19,970 Und in der Tat, in der fünften und letzten Version hier, habe ich noch eine andere Sache. 1049 00:49:19,970 --> 00:49:23,710 Sie können sogar mit Punkt Punkt, der, wieder, ist nur das übergeordnete Verzeichnis. 1050 00:49:23,710 --> 00:49:28,260 Um noch mehr auf Sicherheit bedacht sein, denn wenn ich mir die Abhör 1051 00:49:28,260 --> 00:49:32,450 hier für fünfte und letzte Version, Ankündigung dass ich ein Verzeichnis hier genannt 1052 00:49:32,450 --> 00:49:35,180 Öffentlichkeit, und dann auf den gleichen Ebene sozusagen 1053 00:49:35,180 --> 00:49:38,490 Ich habe gehört und Vorlagen und dann, dass Textdatei Readme. 1054 00:49:38,490 --> 00:49:41,130 >> Und der Grund, warum ich strukturiert es mögen this-- und so viele Web 1055 00:49:41,130 --> 00:49:44,330 Wirte, insbesondere diejenigen, $ 5 Monat diejenigen oder $ 10 Monate diejenigen, 1056 00:49:44,330 --> 00:49:47,170 wenn Sie jemals eine dieser gehabt haben services--, was so viele von ihnen tun 1057 00:49:47,170 --> 00:49:50,690 ist sie nur erwarten, dass Sie alle Dump Ihrer Dateien in ein Verzeichnis, 1058 00:49:50,690 --> 00:49:53,640 wie wir bereits mit Dieses erste Beispiel. 1059 00:49:53,640 --> 00:49:56,740 >> Aber sobald man den Bau von mehr starten anspruchsvolle Websites, die nur speichern 1060 00:49:56,740 --> 00:50:00,480 Daten, die Sie über und Dateien, die Sie interessieren egal, eigentlich Dinge zu organisieren 1061 00:50:00,480 --> 00:50:05,060 richtig und mit mehr Sicherheit Bewusstsein im Hinterkopf kann 1062 00:50:05,060 --> 00:50:07,927 wir beginnen, zu verteidigen gegen all der Freunde 1063 00:50:07,927 --> 00:50:10,135 dass Sie entweder in oder außerhalb dieser Klasse, die, 1064 00:50:10,135 --> 00:50:12,510 sobald Sie machen beginnen Programme selbst im Web, 1065 00:50:12,510 --> 00:50:15,140 gehen zu beginnen Kommissionierung auf Sie und auf ihnen. 1066 00:50:15,140 --> 00:50:17,420 >> Und so werden wir schauen letztlich auf diesem Entwurf. 1067 00:50:17,420 --> 00:50:20,010 Dies ist nur ein Bild dass zeigt die folgende. 1068 00:50:20,010 --> 00:50:22,897 Wir werden alle stellen unsere Programmierlogik in einer oder mehreren Dateien, 1069 00:50:22,897 --> 00:50:25,230 und wir werden einfach starten ruft jene Steuerungen. 1070 00:50:25,230 --> 00:50:28,022 Es ist, wo die Gehirne von unsere Websites tatsächlich sind. 1071 00:50:28,022 --> 00:50:29,730 Dann sind wir zu gehen blicken und Ansichten 1072 00:50:29,730 --> 00:50:32,480 sind so einfach wie nur getrennte files-- genannte Templates, oft. 1073 00:50:32,480 --> 00:50:34,410 Sie müssen nur die Ästhetik auf meiner Seite, 1074 00:50:34,410 --> 00:50:37,020 was ich will die Seite zu schauen like-- den Farben und dem Layout 1075 00:50:37,020 --> 00:50:38,870 und die Positionen der alle Variablen. 1076 00:50:38,870 --> 00:50:41,120 >> Und dann noch interessanter dass wir schließlich zu bekommen 1077 00:50:41,120 --> 00:50:45,420 ist das Modell, die gehen, gerecht zu sein das Wort, das wir schlagen auf andere Technologien 1078 00:50:45,420 --> 00:50:47,771 dass wir in die bringen Bild, wie echte Datenbanken 1079 00:50:47,771 --> 00:50:49,520 so dass, wenn Sie wollen, um Informationen zu speichern, 1080 00:50:49,520 --> 00:50:52,140 Sie haben nicht nur eine E-Mail senden um Ihren Proctor oder sich selbst, 1081 00:50:52,140 --> 00:50:57,350 Sie tatsächlich speichern sie in einer Datenbank Verwendung einer anderen Sprache als SQL bekannt. 1082 00:50:57,350 --> 00:51:00,450 Und so werden wir heute hier zu verlassen und bauen mit diesem am Mittwoch 1083 00:51:00,450 --> 00:51:02,990 und die Einführung von Datenbanken dann. 1084 00:51:02,990 --> 00:51:06,940 >> [Musik zu spielen] 1085 00:51:06,940 --> 00:54:24,555