1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Woche 8] 2 00:00:02,000 --> 00:00:04,000 [David J Malan] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Dies ist CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,000 >> Willkommen zurück. 5 00:00:09,000 --> 00:00:11,000 Dies ist CS50, und dies ist der Beginn der Woche 8. 6 00:00:11,000 --> 00:00:14,000 Ein paar Möglichkeiten, die diese Woche 7 00:00:14,000 --> 00:00:17,000 unter ihnen das Gerede hier, an denen etwas zu Essen serviert werden. 8 00:00:17,000 --> 00:00:20,000 Für weitere Informationen bitte die Folien, die online sind. 9 00:00:20,000 --> 00:00:24,000 Und auch ein anderes Ereignis in dieser Woche durch unsere eigene Thomas Carriero. 10 00:00:24,000 --> 00:00:27,000 Er ist einer der ehemaligen Leiter CS50 Lehre Burschen, die jetzt bei Dropbox, 11 00:00:27,000 --> 00:00:29,000 und er ist der Kerl, der uns eingehakt mit der wissen Sie was, 12 00:00:29,000 --> 00:00:36,000 so, wenn Sie mehr von diesem Kopf bis ihr Gespräch wollen heute Nachmittag für Dropbox und vieles mehr. 13 00:00:36,000 --> 00:00:38,000 CS50 Mittagessen ist an diesem Freitag. 14 00:00:38,000 --> 00:00:41,000 Haben uns, wenn Sie in der Lage, 1:15, wie üblich, auf Fire and Ice sind. 15 00:00:41,000 --> 00:00:45,000 >> Und jetzt sind wir in etwas namens Seminare zu tauchen. 16 00:00:45,000 --> 00:00:49,000 Unsere CS50 Seminare, Rückruf, sind diese optional Klassen durch die Lehre Burschen führten 17 00:00:49,000 --> 00:00:51,000 und natürlich Helfer und Freunde des Kurses 18 00:00:51,000 --> 00:00:55,000 Leute aus einer Gruppe auf dem Campus als ABCD, die eine Gruppe der 19 00:00:55,000 --> 00:00:58,000 Technikbegeisterte auf dem Campus, sowie eine Gruppe namens HCS, 20 00:00:58,000 --> 00:01:02,000 der Harvard Computer Society, Studenten, die in ähnlicher Weise Computing interessiert sind. 21 00:01:02,000 --> 00:01:08,000 Die diesjährige Liste von Seminaren umfasst Seminare auf Android und iOS und JavaScript 22 00:01:08,000 --> 00:01:13,000 und PHP, Unix, Vim, und mehr, so erkennen, dass diese Seminare werden kommen. 23 00:01:13,000 --> 00:01:16,000 Wenn Sie möchten, dass für RSVP einer von ihnen den Kopf zu dieser URL gibt. 24 00:01:16,000 --> 00:01:20,000 Wir werden dann über den Verlauf der Website veröffentlichen die Zeiten und Orte, sobald sie abgeschlossen sind. 25 00:01:20,000 --> 00:01:26,000 Aber wissen, dass es 5 Jahre im Wert von vor Seminare online verfügbar, 26 00:01:26,000 --> 00:01:29,000 von denen viele noch sehr viel Strom in Bezug auf Technologien, die Sie vielleicht 27 00:01:29,000 --> 00:01:36,000 wollen mit Ihrer letzten Projekte spielen, so dass es den Kopf für einige verfügbaren Videos davon. 28 00:01:36,000 --> 00:01:39,000 >> CSS, diejenigen von euch, die mit CSS bereits, 29 00:01:39,000 --> 00:01:42,000 was ist es, in einer Nussschale? 30 00:01:42,000 --> 00:01:45,000 Was ist CSS? 31 00:01:45,000 --> 00:01:48,000 Es Cascading Style Sheets, und was bedeutet das? 32 00:01:48,000 --> 00:01:53,000 Was bedeutet das für uns tun, CSS? 33 00:01:53,000 --> 00:01:57,000 Alles klar, lasst uns aufwärmen mit einem leichteren, HTML, Hypertext Markup Language. 34 00:01:57,000 --> 00:02:01,000 Was bedeutet das für uns tun? 35 00:02:01,000 --> 00:02:04,000 Wer überhaupt? 36 00:02:04,000 --> 00:02:07,000 Es ist schon wirklich peinlich diese Fragen. 37 00:02:07,000 --> 00:02:11,000 HTML, Hypertext Markup Language. 38 00:02:11,000 --> 00:02:14,000 Ja? Nein? 39 00:02:14,000 --> 00:02:17,000 [Unverständlich Studenten Antwort] 40 00:02:17,000 --> 00:02:20,000 Okay, gut, erlaubt es uns, markieren Text in einem Web-Browser anzuzeigen. 41 00:02:20,000 --> 00:02:22,000 Es ist nicht eine Programmiersprache. 42 00:02:22,000 --> 00:02:25,000 Es ist in der Tat eine Markup-Sprache, das heißt, es weist den Browser an, wie die Anzeige 43 00:02:25,000 --> 00:02:28,000 Informationen, so dass die einfachste Inkarnation dieser, wie wir gesehen haben, 44 00:02:28,000 --> 00:02:32,000 ist etwas super einfach wie boldfacing, sagt Klammer b geschlossenen Klammer 45 00:02:32,000 --> 00:02:36,000 machen diesen Text fett, und das ist eigentlich nur eine von vielen Möglichkeiten 46 00:02:36,000 --> 00:02:39,000 in denen wir das tun, und in der Tat, in diesen Tagen ein besserer Ansatz 47 00:02:39,000 --> 00:02:42,000 zu stilisieren Ihrer Webseite, die Dinge fett und kursiv 48 00:02:42,000 --> 00:02:47,000 und zentriert und gerechtfertigt und dergleichen, nicht über HTML-Tags allein getan 49 00:02:47,000 --> 00:02:51,000 sondern mit einer Technik namens CSS, Cascading Style Sheets. 50 00:02:51,000 --> 00:02:53,000 Dies ist eine Sprache für sich. 51 00:02:53,000 --> 00:02:55,000 Es ist auch keine Programmiersprache, sondern- 52 00:02:55,000 --> 00:02:58,000 jeder, das ist Dan, der heute bei uns hält. 53 00:02:58,000 --> 00:03:01,000 Einige technische Schwierigkeiten. Kein Problem. 54 00:03:01,000 --> 00:03:04,000 >> CSS ermöglicht es uns, eine Seite zu stilisieren 55 00:03:04,000 --> 00:03:07,000 indem so genannte Eigenschaften, also nehmen wir mal einen Blick auf diese 56 00:03:07,000 --> 00:03:09,000 durch einige grundlegende Beispiele. 57 00:03:09,000 --> 00:03:12,000 Lassen Sie mich in das Gerät gehen heute. 58 00:03:12,000 --> 00:03:15,000 Ich habe die Quelle 8 Montag Verzeichnis hier 59 00:03:15,000 --> 00:03:18,000 und ich werde in ein Verzeichnis namens CSS gehen, wo wir eine ganze Reihe haben 60 00:03:18,000 --> 00:03:21,000 von Dateien auf uns wartet hier, 61 00:03:21,000 --> 00:03:27,000 und in diesem Ordner wir beispielsweise search0.html vom letzten Mal. 62 00:03:27,000 --> 00:03:31,000 Jetzt, mit search0 erinnern wir uns links auf dieser Notiz 63 00:03:31,000 --> 00:03:35,000 nach Art der Implementierung von Google oder wirklich nur das Frontend für es eine Woche oder so vor, 64 00:03:35,000 --> 00:03:38,000 und feststellen, dass wir einige neue Tags dort hatte. 65 00:03:38,000 --> 00:03:41,000 Wir hatten h1 für einen großen, mutigen Überschrift 66 00:03:41,000 --> 00:03:45,000 Form, die uns tatsächlich ein HTML-Formular für Benutzereingaben erlaubt. 67 00:03:45,000 --> 00:03:48,000 Action, was die Bedeutung eines action-Attribut 68 00:03:48,000 --> 00:03:52,000 auf der HTML-Formular-Tag? 69 00:03:52,000 --> 00:03:58,000 Was war der Sinn dieser, Aktion? 70 00:03:58,000 --> 00:04:00,000 Ich werde einfach tun dies heute. 71 00:04:00,000 --> 00:04:03,000 Aktion ist das Ziel, wo die Form wird eingereicht werden. 72 00:04:03,000 --> 00:04:07,000 Die Tatsache, dass das sagt action = "google.com / search" 73 00:04:07,000 --> 00:04:10,000 bedeutet, dass, wenn der Benutzer klickt auf die Schaltfläche Senden oder den Gegenwert 74 00:04:10,000 --> 00:04:14,000 was Formularfelder sie ausgefüllt gehen, um nicht zu unserem Server gesendet werden 75 00:04:14,000 --> 00:04:17,000 oder unser Gerät, sondern auf diesen speziellen URL an Google. 76 00:04:17,000 --> 00:04:19,000 Und die Methode es geht zu bedienen ist genannt zu bekommen, 77 00:04:19,000 --> 00:04:25,000 und bekommen, jetzt ist nur eine Technik für die Weitergabe von Informationen entlang zu einem Web-Server 78 00:04:25,000 --> 00:04:29,000 über die URL, so lassen Sie uns einen kurzen Blick zurück, wie das funktioniert. 79 00:04:29,000 --> 00:04:31,000 >> Beachten Sie, dass es einen Eingang, dessen Name q 80 00:04:31,000 --> 00:04:35,000 deren Typ Text und dann ein zweiter Eingang des Typs Eintragen 81 00:04:35,000 --> 00:04:39,000 deren Wert CS50 suchen, und in der Tat, wenn wir öffnen diese Datei hier 82 00:04:39,000 --> 00:04:42,000 search0.html, es ist eine super einfache Form, 83 00:04:42,000 --> 00:04:45,000 und wenn ich nach so etwas wie der Informatik 84 00:04:45,000 --> 00:04:50,000 und dann drücken Sie die Eingabetaste oder klicken Sie auf CS50 Suche 85 00:04:50,000 --> 00:04:53,000 feststellen, dass das, was passiert ist jenseits kennen zu Google 86 00:04:53,000 --> 00:04:56,000 Ich habe zwar bis zu diesem URL an der Spitze endete, 87 00:04:56,000 --> 00:05:01,000 google.com / search? q = computer + science, 88 00:05:01,000 --> 00:05:04,000 und Informatik ist offensichtlich, was ich eingetippt 89 00:05:04,000 --> 00:05:06,000 Das + bedeutet nur, das ist, wo ein Leerzeichen war, 90 00:05:06,000 --> 00:05:10,000 und es ist durch den Browser erfolgt, nur um sicherzugehen, dass es keine 91 00:05:10,000 --> 00:05:13,000 Verwirrung und Leerraum in der tatsächlichen URL. 92 00:05:13,000 --> 00:05:15,000 Und dann q, ist natürlich der Name des Parameters. 93 00:05:15,000 --> 00:05:20,000 Wir haben nicht gesehen, wie wir, die Programmierer können tatsächlich auf q noch. 94 00:05:20,000 --> 00:05:23,000 Wir können davon ausgehen, dass Google weiß, was damit zu tun hier, 95 00:05:23,000 --> 00:05:25,000 aber wir werden es schaffen rechtzeitig heute. 96 00:05:25,000 --> 00:05:30,000 >> Aber lassen Sie mich einen Blick stattdessen auf search1.html, 97 00:05:30,000 --> 00:05:34,000 das sieht ein wenig anders, weil ich entschied, dass diese Form hier nur ein wenig lahm war. 98 00:05:34,000 --> 00:05:36,000 Ich meine, es ist an der oberen linken. 99 00:05:36,000 --> 00:05:40,000 Es gibt wirklich keine Ästhetik, und so möchte ich dies zu stilisieren 100 00:05:40,000 --> 00:05:43,000 ein bisschen mehr wie Google, dessen Homepage, Rückruf, 101 00:05:43,000 --> 00:05:47,000 obwohl Sie vielleicht nicht besuchen, die oft, sieht dies heute auf Halloween. 102 00:05:47,000 --> 00:05:53,000 Wenn wir öffnen, anstatt bis Version 1 dieser Datei, Suche 1.html, ich habe es zentriert. 103 00:05:53,000 --> 00:05:57,000 Noch ziemlich hässlich, aber zumindest jetzt habe ich damit begonnen, die Ästhetik dieser Seite zu kontrollieren, 104 00:05:57,000 --> 00:06:00,000 nicht nur die Markierung bis davon. 105 00:06:00,000 --> 00:06:04,000 Werfen wir einen Blick auf Suche 1, und es ist wirklich nur ein Unterschied, 106 00:06:04,000 --> 00:06:06,000 was könnte springen dich an, oder vielleicht auch nicht, 107 00:06:06,000 --> 00:06:11,000 aber was ist die eine Zeile oder Snippet Unterschied? 108 00:06:11,000 --> 00:06:14,000 >> Es ist das style-Attribut, so stellt sich heraus, dass in HTML 109 00:06:14,000 --> 00:06:19,000 die meisten Elemente, die meisten Tags ein style-Attribut auf sie haben, 110 00:06:19,000 --> 00:06:23,000 und innerhalb dieser style-Attribut ist eine Zeichenfolge in Anführungszeichen, 111 00:06:23,000 --> 00:06:26,000 und dass Anführungszeichen ist CSS. 112 00:06:26,000 --> 00:06:29,000 Sie können Cascading Stylesheet in es gesetzt 113 00:06:29,000 --> 00:06:32,000 indem es als eine Eigenschaft name 114 00:06:32,000 --> 00:06:34,000 gefolgt von einem Doppelpunkt gefolgt von einem Wert. 115 00:06:34,000 --> 00:06:37,000 Dies ist eine Art einer unglücklichen Design-Entscheidung vor einigen Jahren 116 00:06:37,000 --> 00:06:40,000 dass CSS ist eine Sprache für sich, 117 00:06:40,000 --> 00:06:43,000 aber syntaktisch es ist sehr verschieden von HTML. 118 00:06:43,000 --> 00:06:46,000 In diesem Fall sehen wir, dass innerhalb meiner Webseite, die in HTML geschrieben ist, 119 00:06:46,000 --> 00:06:51,000 Ich habe CSS Inneren dieser Zitate und die Konvention für CSS 120 00:06:51,000 --> 00:06:55,000 ist, dass Sie, was eine Eigenschaft, gefolgt von wieder ein Doppelpunkt genannt, 121 00:06:55,000 --> 00:06:58,000 gefolgt von dem Wert dieser Eigenschaft, so gibt es kein Gleichheitszeichen. 122 00:06:58,000 --> 00:07:00,000 Es gibt keine zusätzlichen Anführungszeichen. 123 00:07:00,000 --> 00:07:03,000 Es ist gerade diese Doppelpunkt getrennt Schlüssel-Wert-Paar, 124 00:07:03,000 --> 00:07:05,000 und Textzeile genau das tut, was es sagt. 125 00:07:05,000 --> 00:07:09,000 Es richtet den Text im Hauptteil der Seite ist die wirklich den Mut der Seite, 126 00:07:09,000 --> 00:07:11,000 in der Mitte. 127 00:07:11,000 --> 00:07:13,000 >> Okay, das Endergebnis dann klar zu sein, ist dies. 128 00:07:13,000 --> 00:07:17,000 Nicht alles, was sexier, aber zumindest ist es zentriert und ein wenig mehr wie die reale Google. 129 00:07:17,000 --> 00:07:21,000 Aber was, wenn ich stattdessen eröffnen Version 2 dieses 130 00:07:21,000 --> 00:07:25,000 und darauf hinweisen, hier unten einen neuen Tag überhaupt? 131 00:07:25,000 --> 00:07:30,000 Jetzt im Kopf auf meiner Seite, die bislang nur die tag 132 00:07:30,000 --> 00:07:32,000 in allen früheren Beispielen? 133 00:07:32,000 --> 00:07:34,000 Es musste dazu den Titel. 134 00:07:34,000 --> 00:07:38,000 Vorhin der Kopf tag sah wie folgt aus. 135 00:07:38,000 --> 00:07:40,000 Jetzt sondern es hat einen Stil tag innen von ihm, 136 00:07:40,000 --> 00:07:44,000 und auch dies, ich entschuldige mich, syntaktisch ganz anders aussieht HTML, 137 00:07:44,000 --> 00:07:47,000 aber man gewöhnt es, wodurch im Inneren des Stils tag 138 00:07:47,000 --> 00:07:50,000 Ich kann jetzt ausklammern, was vor einem Augenblick 139 00:07:50,000 --> 00:07:54,000 ein Attribut, das style-Attribut, und ich kann es ganz oben auf meiner Seite setzen. 140 00:07:54,000 --> 00:07:56,000 >> Warum? 141 00:07:56,000 --> 00:08:00,000 Nun, dies ist ein Schritt in Richtung Reinigen Dinge, ähnlich wie in schriftlicher Form C-Code 142 00:08:00,000 --> 00:08:04,000 wir würden manchmal schreiben Funktionen ausklammern gemeinsame Funktionalität. 143 00:08:04,000 --> 00:08:07,000 Es ist nur ein wenig sauberer, Factoring Dinge wie die Ästhetik zu starten 144 00:08:07,000 --> 00:08:11,000 an einem zentralen Ort, anstatt alles durchsetzen gesamten HTML. 145 00:08:11,000 --> 00:08:14,000 Auch dies tut, was sie sagt, obwohl es ein wenig neue Syntax. 146 00:08:14,000 --> 00:08:19,000 Das hier ist ein Selektor und Körper bedeutet nur, wählen Sie das body-Element 147 00:08:19,000 --> 00:08:21,000 und wenden Sie die folgenden Eigenschaften zu. 148 00:08:21,000 --> 00:08:23,000 Nun, das ist die Eigenschaft genau das gleiche. 149 00:08:23,000 --> 00:08:25,000 Für eine gute Maßnahme Ich habe ein Semikolon am Ende hinzugefügt, 150 00:08:25,000 --> 00:08:29,000 die dazu neigt, Konvention sein, und ich habe dieses ganze Vermögen gewickelt 151 00:08:29,000 --> 00:08:33,000 in geschweiften Klammern, denn ich konnte tatsächlich haben unterschiedliche Dinge hier. 152 00:08:33,000 --> 00:08:39,000 Ich konnte tatsächlich etwas sagen wie color: blue; 153 00:08:39,000 --> 00:08:42,000 >> Jetzt auch dies wird nicht ein Schritt in Richtung nichts alles, was schöner sein, 154 00:08:42,000 --> 00:08:47,000 aber wenn ich jetzt zurück auf Version 2 habe ich jetzt wenigstens den Körper meines gemacht 155 00:08:47,000 --> 00:08:49,000 Seite den Text ganz blau. 156 00:08:49,000 --> 00:08:51,000 Die Taste bleibt die gleiche, denn das ist ein Eingang. Es ist nicht reiner Text. 157 00:08:51,000 --> 00:08:56,000 Aber alles, was Text ist, wie CS50 Search up top, ist in der Tat blau. 158 00:08:56,000 --> 00:09:01,000 Wieder ist alles, was wir jetzt gemacht haben aus dem Körper zu entfernen tag, Kündigung, 159 00:09:01,000 --> 00:09:04,000 Das style-Attribut, und wir haben berücksichtigt es hier. 160 00:09:04,000 --> 00:09:08,000 Dies ist nicht eine gewaltige Verbesserung, aber wenn wir noch einen Schritt weiter 161 00:09:08,000 --> 00:09:10,000 bemerken, was wir in dieser dritten Version hier tun. 162 00:09:10,000 --> 00:09:14,000 >> In search3.html die Webseite ist fast identisch 163 00:09:14,000 --> 00:09:17,000 außer dem, was neue taggen? 164 00:09:17,000 --> 00:09:20,000 Link, so ist dies ein nicht sehr treffend benannt 165 00:09:20,000 --> 00:09:24,000 weil Sie nicht die Verknüpfung im Sinne einer anklickbaren Hyperlinks. 166 00:09:24,000 --> 00:09:28,000 Vielmehr sind Sie eine Art tut das Äquivalent von # in C gehören 167 00:09:28,000 --> 00:09:31,000 wobei die Link-Tag mit einem href-Attribut 168 00:09:31,000 --> 00:09:34,000 und ein rel-Attribut sagt gehen Sie vor 169 00:09:34,000 --> 00:09:39,000 und kopieren Sie den Inhalt einer Datei namens search3.css genau hier, im Wesentlichen. 170 00:09:39,000 --> 00:09:42,000 Es ist nicht ganz das tun, aber das ist der Geist von ihm. 171 00:09:42,000 --> 00:09:45,000 Er sagt, gehen diese Datei öffnen, search3.css, 172 00:09:45,000 --> 00:09:49,000 und behandeln sie, als ob der Benutzer hatte es hier im Kopf der Seite eingegeben 173 00:09:49,000 --> 00:09:51,000 genau wie ich im vorigen Beispiel. 174 00:09:51,000 --> 00:09:54,000 Search3.css, mittlerweile ist ziemlich einfach. 175 00:09:54,000 --> 00:09:58,000 Es ist wirklich enthält nur genau, was vor einem Augenblick 176 00:09:58,000 --> 00:10:03,000 im Stil tag, aber ich habe einkalkuliert es hier eine eigene Datei. 177 00:10:03,000 --> 00:10:07,000 >> Auch wenn wir nicht viel Zeit auf allen verbrachten im HTML-oder Web-Programmierung 178 00:10:07,000 --> 00:10:11,000 nur intuitiv, was ist die Motivation, vielleicht, für Ausklammern 179 00:10:11,000 --> 00:10:14,000 Dieses kleine Schnipsel selbst von CSS in eine eigene Datei 180 00:10:14,000 --> 00:10:19,000 und dann auch mit diesem Link tag hier? 181 00:10:19,000 --> 00:10:21,000 [Unverständlich Studenten Antwort] 182 00:10:21,000 --> 00:10:25,000 Okay, ist es einfacher, in dem Sinne, dass Sie Ihre CSS haben in einer CSS-Datei zu lesen. 183 00:10:25,000 --> 00:10:28,000 Sie haben Ihre HTML in die HTML-Datei, so ist es besser lesbar in diesem Sinne. 184 00:10:28,000 --> 00:10:30,000 Was sonst könnte überzeugend? Yeah. 185 00:10:30,000 --> 00:10:32,000 [Unverständlich Studenten Antwort] 186 00:10:32,000 --> 00:10:35,000 Ja, so kann man schließen es viele Male, so jetzt wir tun dies 187 00:10:35,000 --> 00:10:38,000 einfache Beispiele mit einzelnen Dateien, sondern nehme an, Sie tatsächlich machen 188 00:10:38,000 --> 00:10:42,000 eine echte Website wie Sie für pset 7 oder das endgültige Projekt vielleicht 189 00:10:42,000 --> 00:10:45,000 und Sie mehrere Webseiten haben wollen, wie es durchaus üblich auf 190 00:10:45,000 --> 00:10:48,000 die eigentliche World Wide Web, und es wäre irgendwie lahm sein 191 00:10:48,000 --> 00:10:52,000 zu haben, zu kopieren und die gleiche blaue Farbe 192 00:10:52,000 --> 00:10:56,000 und der gleiche Text Zentrum in jeder dieser Seiten ausgerichtet ist. 193 00:10:56,000 --> 00:10:59,000 Vielmehr macht es mehr Sinn, ausklammern, so wie wir in C gemacht 194 00:10:59,000 --> 00:11:02,000 mit der. h-Datei, legen Sie sie in einer zentralen Stelle, 195 00:11:02,000 --> 00:11:06,000 in diesem Fall search3.css, und lassen Sie jede Datei 196 00:11:06,000 --> 00:11:11,000 in Ihre Website tatsächlich gehören diese Datei mittels dieser Tag hier in Zeile 16. 197 00:11:11,000 --> 00:11:14,000 Wie ist typischerweise der Fall, begannen wir mit der Version 0, welche Art von Arbeiten 198 00:11:14,000 --> 00:11:18,000 aber ist nicht notwendigerweise die beste, und bei jedem Schritt, 199 00:11:18,000 --> 00:11:21,000 Suche 1, Suche 2, und jetzt suche 3 haben wir diese Baby Schritte 200 00:11:21,000 --> 00:11:26,000 Richtung Designs ein wenig sauberer sind und weitere vorbereitende 201 00:11:26,000 --> 00:11:30,000 Für komplexere Seiten, die wir da unten könnte die Straße. 202 00:11:30,000 --> 00:11:33,000 >> Lassen Sie mich eröffnen ein letztes Beispiel sei hier nur um zu zeigen 203 00:11:33,000 --> 00:11:36,000 eine noch stärker stilisiert Seite, aber lassen Sie uns zuerst an der HTML aussehen. 204 00:11:36,000 --> 00:11:41,000 Dies ist search4.html, und beachten Sie, dass strukturell es fast das gleiche ist 205 00:11:41,000 --> 00:11:44,000 mit Ausnahme der Einführung einer neuen Tag, Div. 206 00:11:44,000 --> 00:11:48,000 Div ist ein Tag, das eine Aufteilung der Seite führt. 207 00:11:48,000 --> 00:11:51,000 Sie können dies als einen unsichtbaren Rechteck denken. 208 00:11:51,000 --> 00:11:54,000 Es Art schafft eine Schneise der Bereich in der Homepage 209 00:11:54,000 --> 00:11:56,000 dass man alles auf einmal zu stilisieren. 210 00:11:56,000 --> 00:11:58,000 Was ich hier getan ist wie folgt. 211 00:11:58,000 --> 00:12:01,000 Innerhalb von meinem Körper tag, das hat es immer gewesen, 212 00:12:01,000 --> 00:12:05,000 Ich sage eine Aufteilung der Seite hier über die Leitungen 45 bis 47, 213 00:12:05,000 --> 00:12:09,000 und das bedeutet im Wesentlichen mir ein unsichtbares Rechteck am oberen Rand der Seite. 214 00:12:09,000 --> 00:12:14,000 Dann geben Sie mir ein zweites Rechteck, wenn auch unsichtbar, darunter, 215 00:12:14,000 --> 00:12:16,000 und identifizieren es mit dem Namen Inhalt, und dann schließlich 216 00:12:16,000 --> 00:12:19,000 geben Sie mir eine dritte Abteilung der Seite an der Unterseite 217 00:12:19,000 --> 00:12:21,000 als ID. 218 00:12:21,000 --> 00:12:23,000 Wir werden sehen, warum ich das in einem Moment getan haben, 219 00:12:23,000 --> 00:12:26,000 aber konzeptionell Ich habe einen Header Division. 220 00:12:26,000 --> 00:12:30,000 Ich habe ein Content Division, und ich habe eine Fußzeile Teilung der Seite 221 00:12:30,000 --> 00:12:32,000 obwohl diese nur im Markup. 222 00:12:32,000 --> 00:12:35,000 Der Benutzer wird nicht 3 Rechtecke zu sehen, 223 00:12:35,000 --> 00:12:37,000 aber irgendwie strukturell es hinter den Kulissen 224 00:12:37,000 --> 00:12:39,000 sie sind tatsächlich vorhanden. 225 00:12:39,000 --> 00:12:41,000 >> Jetzt, who cares? Warum eigentlich tun? 226 00:12:41,000 --> 00:12:43,000 Alles andere auf der Seite ist das gleiche wie wir bisher gesehen haben. 227 00:12:43,000 --> 00:12:47,000 Hier ist meine Form. Hier ist mein Input, meinen Input, ein Zeilenumbruch und so weiter. 228 00:12:47,000 --> 00:12:50,000 Hier ist ein Bild, obwohl, so werden wir sehen, wo dieses in nur einem Augenblick kam. 229 00:12:50,000 --> 00:12:52,000 Hier ist eine Fußzeile, die neu ist, nur weil ich einführen wollte 230 00:12:52,000 --> 00:12:54,000 einige weitere Inhalte. 231 00:12:54,000 --> 00:12:58,000 Wenn wir feststellen, scrollen, dass ID des div-Header. 232 00:12:58,000 --> 00:13:02,000 Die ID dieses div ist Inhalte und die Kennung dieser ist Footer. 233 00:13:02,000 --> 00:13:05,000 Und wie der Name schon sagt, wenn Sie haben ein ID-Attribut 234 00:13:05,000 --> 00:13:09,000 in HTML, per Definition muss es eindeutig zu identifizieren 235 00:13:09,000 --> 00:13:12,000 eines der Elemente, eine der Tags in Ihre Seite ein. 236 00:13:12,000 --> 00:13:16,000 Die Belastung ist ganz auf Sie bedenken, dass Sie einen Header ID bereits haben. 237 00:13:16,000 --> 00:13:19,000 Sie haben eine Fußzeile. Sie haben eine Content-ID bereits. 238 00:13:19,000 --> 00:13:22,000 Der Computer wird nicht herausfinden, was eine verfügbare ID für Sie ist, 239 00:13:22,000 --> 00:13:27,000 so könnte man versehentlich zu 2 Tags eine ID-Header, 240 00:13:27,000 --> 00:13:29,000 und dass wäre einfach falsch. 241 00:13:29,000 --> 00:13:31,000 >> Sie müssen im Hinterkopf behalten, was du geschaffen hast, 242 00:13:31,000 --> 00:13:34,000 aber wenn man einmal diese Mitteilung, was wir hier tun können, getan. 243 00:13:34,000 --> 00:13:38,000 Jetzt kann ich in meinem Stil tag geben an der Spitze 244 00:13:38,000 --> 00:13:41,000 oder äquivalent in meiner CSS-Datei, wenn ich noch mit dieser Version, 245 00:13:41,000 --> 00:13:46,000 Ich kann sagen, # header, und was das bedeutet, ist, dass unabhängig von tag 246 00:13:46,000 --> 00:13:49,000 Die auf dieser Webseite hat eine ID-Header 247 00:13:49,000 --> 00:13:53,000 und #, nur durch menschliche Konvention stellt ID. 248 00:13:53,000 --> 00:13:56,000 Der starke Zeichen oder Raute stellt ID. 249 00:13:56,000 --> 00:13:58,000 Header ist der Name, dass ich es gab. 250 00:13:58,000 --> 00:14:01,000 Dies bedeutet, gelten diese CSS-Eigenschaft 251 00:14:01,000 --> 00:14:04,000 zu was auch immer tag auf dieser Seite trägt die ID-Header. 252 00:14:04,000 --> 00:14:06,000 Gleiches Geschäft hier. 253 00:14:06,000 --> 00:14:09,000 Wenden Sie diese Eigenschaft, die die gleiche sein geschieht, zu jedem Element 254 00:14:09,000 --> 00:14:11,000 dessen ID ist zufrieden, und dann hier unten 255 00:14:11,000 --> 00:14:14,000 bemerkt habe ich ein wenig schicker mit Fußzeile. 256 00:14:14,000 --> 00:14:18,000 Jedes Element, dessen ID Footer, von denen es kann nur ein per definitionem, 257 00:14:18,000 --> 00:14:21,000 gehen Sie vor und machen die Schriftgröße kleiner, 258 00:14:21,000 --> 00:14:24,000 ihre Schriftstärke fett, ihre Marge 20 Pixel. 259 00:14:24,000 --> 00:14:26,000 >> Was bedeutet das? 260 00:14:26,000 --> 00:14:28,000 Es ist nur ein Rand auf der Oberseite, der Unterseite und der linken und der rechten Seite. 261 00:14:28,000 --> 00:14:31,000 Das bedeutet mir eine 20-Pixel unsichtbaren Rand um es 262 00:14:31,000 --> 00:14:35,000 nur um alles wegschieben von ihm ein wenig, wie Sie in Word tun könnte, 263 00:14:35,000 --> 00:14:37,000 Microsoft Word oder Pages oder dergleichen. 264 00:14:37,000 --> 00:14:39,000 Und dann text-align Zentrum. 265 00:14:39,000 --> 00:14:43,000 Lasst uns das Endergebnis zu sehen, und dann werden wir wieder bis zum ein verbleibenden Snippet CSS gibt. 266 00:14:43,000 --> 00:14:48,000 Dies ist die Version 4, unsere letzte für die Suche Beispiele, und es ist viel, viel sexier. 267 00:14:48,000 --> 00:14:54,000 Nun, in aller Fairness sagen, ich habe gerade gegoogelt "google font Logogenerator." 268 00:14:54,000 --> 00:14:58,000 Und das mir erlaubt, eine GIF, ein Bildformat, das wie, dass es aussieht. 269 00:14:58,000 --> 00:15:00,000 In der Tat, können Sie dies auch tun. 270 00:15:00,000 --> 00:15:03,000 Wir haben "google Schriften Logogenerator." 271 00:15:03,000 --> 00:15:05,000 >> Lasst uns sehen, ob wir dies tun können. 272 00:15:05,000 --> 00:15:07,000 Okay, ich denke, das ist die Website, die ich verwendet. 273 00:15:07,000 --> 00:15:11,000 Wir können sagen, Ec 10, zum Beispiel, und machen sie ihre eigenen. 274 00:15:11,000 --> 00:15:13,000 Sie können mit diesem den ganzen Tag lang spielen und dann Rechtsklick auf die Datei 275 00:15:13,000 --> 00:15:16,000 und laden Sie dann die tatsächliche GIF, das alles, was ich tat. 276 00:15:16,000 --> 00:15:19,000 Und in der Tat, der Grund, warum in meinem HTML ist, erinnern, hier drüben 277 00:15:19,000 --> 00:15:22,000 Ich hatte ein Image-Tag, die wir kurz letzte Woche gesehen 278 00:15:22,000 --> 00:15:24,000 dessen Quelle logo.gif. 279 00:15:24,000 --> 00:15:28,000 Und was einmal war die Motivation für mit dieser alt-Attribut, 280 00:15:28,000 --> 00:15:31,000 Diese Alternative Attribut? 281 00:15:31,000 --> 00:15:33,000 Yeah. 282 00:15:33,000 --> 00:15:35,000 [Unverständlich Studenten Antwort] 283 00:15:35,000 --> 00:15:37,000 Gut, so 2 Gründen wirklich, wenn der Browser nicht ziehen das Bild 284 00:15:37,000 --> 00:15:40,000 weil Sie eine langsame Netzwerkverbindung oder das Bild ist beschädigt 285 00:15:40,000 --> 00:15:44,000 oder so ähnlich, dass zumindest die Menschen sehen können "CS50 Suche" 286 00:15:44,000 --> 00:15:46,000 und dann auch für die Zugänglichkeit Gründen. 287 00:15:46,000 --> 00:15:48,000 Wenn Sie einen Benutzer, der blind ist und mit einem Screenreader 288 00:15:48,000 --> 00:15:50,000 und damit natürlich sehen keine Bilder sie zumindest 289 00:15:50,000 --> 00:15:52,000 hören, Text, wenn ihre Computer spricht er zu ihnen. 290 00:15:52,000 --> 00:15:56,000 >> In der Regel wird dies am besten üben, wenn es um die Zugänglichkeit der Seiten kommt 291 00:15:56,000 --> 00:16:00,000 so dass auch Benutzer in dieser Situation kann hören oder zu sehen, so zu sprechen, 292 00:16:00,000 --> 00:16:03,000 was es ist, ist auf Ihrer Seite. 293 00:16:03,000 --> 00:16:05,000 Es gibt eine andere Sache, die ich hier 294 00:16:05,000 --> 00:16:09,000 das ist ein wenig interessant, und wir werden mehr darüber im Problem sehen Set 7 295 00:16:09,000 --> 00:16:12,000 über einen der Kurzschlüsse durch einen der Lehre Stipendiaten geführt. 296 00:16:12,000 --> 00:16:15,000 Aber # content bezieht sich auf den Tag 297 00:16:15,000 --> 00:16:20,000 dessen ID ist zufrieden, aber dann gibt es ein Leerzeichen, und dann gibt es das Wort Eingang. 298 00:16:20,000 --> 00:16:25,000 Nun, was ist interessant über CSS ist, dass man 299 00:16:25,000 --> 00:16:29,000 beziehen sich auf Tags in einer Seite eine Art hierarchisch 300 00:16:29,000 --> 00:16:33,000 und was das Snippet CSS Mittel finden tag 301 00:16:33,000 --> 00:16:37,000 dessen ID ist zufrieden, und wenden Sie dann die folgenden Eigenschaften 302 00:16:37,000 --> 00:16:42,000 an alle Eingangs-Tags, die Nachkommen der Inhalt sind, 303 00:16:42,000 --> 00:16:44,000 Das heißt, dass im Inneren des eingerückt. 304 00:16:44,000 --> 00:16:48,000 Einbuchtung wieder ist nur wichtig, dem Computer, nicht an den menschlichen, 305 00:16:48,000 --> 00:16:51,000 Eine Konvention ist jedoch wir Gedankenstrich Dinge, wie wir tiefer in eine Seite zu gehen, 306 00:16:51,000 --> 00:16:54,000 so bedeutet dies zutreffen ein Spielraum von 5 Pixeln irgendeinem Eingabeelement 307 00:16:54,000 --> 00:16:57,000 das ist irgendwo innerhalb oder verschachtelt Innenseite 308 00:16:57,000 --> 00:16:59,000  das Element, dessen ID ist der Inhalt. 309 00:16:59,000 --> 00:17:01,000 >> Wer kennt sie, dass bewerben? 310 00:17:01,000 --> 00:17:03,000 Nun, es gibt eigentlich nur diese 2 Jungs hier. 311 00:17:03,000 --> 00:17:05,000 Beachten Sie, dass im Inneren der Form gibt es 2 Eingänge, 312 00:17:05,000 --> 00:17:07,000 Da gibt es für alle diese Beispiele gewesen. 313 00:17:07,000 --> 00:17:11,000 Aber beachten Sie, dass diese 2 Eingänge nach innen verschachtelt werden passieren, 314 00:17:11,000 --> 00:17:13,000 wenn auch ein wenig tief, ein paar Schichten Einzug, 315 00:17:13,000 --> 00:17:16,000 Innenseite der Tag, dessen ID ist der Inhalt. 316 00:17:16,000 --> 00:17:18,000 Was bedeutet das? 317 00:17:18,000 --> 00:17:21,000 Wenn wir an den Browser hier gehen Sie immer so leicht-see 318 00:17:21,000 --> 00:17:23,000 Lassen Sie mich heran-, dass es ein bisschen Polsterung zwischen der Taste 319 00:17:23,000 --> 00:17:25,000 und zwischen dem Textfeld. 320 00:17:25,000 --> 00:17:27,000 >> Lassen Sie mich zeitweise dies ausschalten. 321 00:17:27,000 --> 00:17:30,000 Lassen Sie mich gehen bis zu meinem CSS, und lassen Sie mich vor und gehen Sie einfach 322 00:17:30,000 --> 00:17:34,000 Ändern Sie diese Marge von 5 Pixel auf 0 Pixel. 323 00:17:34,000 --> 00:17:37,000 Lassen Sie mich gehen Sie dann und speichern Sie die Datei, gehen Sie zurück zur Suchmaschine 324 00:17:37,000 --> 00:17:40,000 und laden, und beobachten Sie die Mitte der Seite. 325 00:17:40,000 --> 00:17:43,000 Alles wurde zusammen komprimiert und als ich das erste Schlagsahne dieses Beispiel bis 326 00:17:43,000 --> 00:17:46,000 Ich dachte, dass sah dumm mit dem Textfeld und dann die Taste direkt darunter. 327 00:17:46,000 --> 00:17:50,000 Ich wollte pad es ein wenig, so stellte ich Margen. 328 00:17:50,000 --> 00:17:55,000 Was wir nicht in der Vorlesung zu tun ist durch die mehreren Dutzend gehen 329 00:17:55,000 --> 00:17:58,000 CSS-Eigenschaften, weil wieder gibt Dinge wie Schriftgröße sind vorhanden, 330 00:17:58,000 --> 00:18:02,000 Schriftstärke, Marge, Text ausrichten, und ein paar Dutzend andere, 331 00:18:02,000 --> 00:18:06,000 und wir werden Ihnen in Problemsituationen beziehen Set 7 verschiedene Online-Tutorials 332 00:18:06,000 --> 00:18:08,000 und Referenzen, mit denen Sie diese Dinge abholen lassen. 333 00:18:08,000 --> 00:18:10,000 Aber was ist wirklich wichtig, am Ende des Tages 334 00:18:10,000 --> 00:18:12,000 >> ist es zu verstehen, wie diese Dinge angewendet werden. 335 00:18:12,000 --> 00:18:15,000 Auch wenn wir den Stil tag innerhalb derer 336 00:18:15,000 --> 00:18:19,000 können die Selektoren, die Art von Kennungen, die angeben, gehen 337 00:18:19,000 --> 00:18:21,000 wem wollen Sie diese Eigenschaften gelten, 338 00:18:21,000 --> 00:18:24,000 und dann legt man die Eigenschaften als Schlüssel-Wert-Paar 339 00:18:24,000 --> 00:18:28,000 getrennt durch einen Doppelpunkt und dann mit einem Semikolon beendet, 340 00:18:28,000 --> 00:18:32,000 oder Sie können rippen all das heraus und steckte sie in einer separaten CSS-Datei 341 00:18:32,000 --> 00:18:35,000 Selbstzweck. 342 00:18:35,000 --> 00:18:39,000 Alles klar, alle Fragen zu den Konzepten 343 00:18:39,000 --> 00:18:41,000 oder das große Bild von CSS? 344 00:18:41,000 --> 00:18:43,000 Du wirst wieder zu sehen mehr davon in pset 7, 345 00:18:43,000 --> 00:18:47,000 aber wir halten es in der Regel recht einfach. 346 00:18:47,000 --> 00:18:49,000 Nein? Gut. 347 00:18:49,000 --> 00:18:51,000 Es ist Zeit für eine tatsächliche Programmiersprache, 348 00:18:51,000 --> 00:18:54,000 und wir kommen zurück, um ein wenig von CSS in Form eines Beispiels. 349 00:18:54,000 --> 00:18:58,000 PHP ist eigentlich ein wunderbar leicht verständlicher Sprache 350 00:18:58,000 --> 00:19:02,000 gekennzeichnet, dass sie syntaktisch nahezu äquivalent C. 351 00:19:02,000 --> 00:19:06,000 In anderen Worten, wenn Sie C kennen, wissen Sie zum größten Teil PHP, 352 00:19:06,000 --> 00:19:08,000 zumindest syntaktisch, obwohl es einige neue Features 353 00:19:08,000 --> 00:19:10,000 und einige neue Konzepte müssen wir zu betrachten. 354 00:19:10,000 --> 00:19:13,000 >> Aber zum größten Teil, dass wir jetzt Übergang von C zu PHP 355 00:19:13,000 --> 00:19:16,000 die meisten der neuen Zeug ist wirklich in das große Bild, 356 00:19:16,000 --> 00:19:19,000 wie Sie eine Sprache Programm auf dem Web im Gegensatz 357 00:19:19,000 --> 00:19:23,000 auf der Kommandozeile oder in einem blinkenden Prompt als wir schon bisher tun. 358 00:19:23,000 --> 00:19:27,000 Zum Vergleich, vor allem mit pset 7 und das endgültige Projekt vorwärts, 359 00:19:27,000 --> 00:19:31,000 Sie Vorteil dieser URL hier nehmen, wenn Sie möchten, um sich über die Formalitäten der PHP. 360 00:19:31,000 --> 00:19:34,000 Es ist eigentlich wie eine kostenlose Online-Lehrbuch effektiv 361 00:19:34,000 --> 00:19:37,000 und Sie finden auch, dass, was wirklich nett über PHP ist 362 00:19:37,000 --> 00:19:41,000 ist, dass es Hunderte von Funktionen, die mit ihm zu kommen, 363 00:19:41,000 --> 00:19:44,000 während in C Sie nicht unbedingt Zugang zu 364 00:19:44,000 --> 00:19:47,000 mehr Funktionen als in der Mathematik-Bibliothek, die CS50-Bibliothek. 365 00:19:47,000 --> 00:19:51,000 In PHP und viele moderne Sprachen, Python und Ruby unter ihnen, 366 00:19:51,000 --> 00:19:54,000 Sie erhalten Zugang zu so viel mehr Funktionen, was bedeutet, Sie zu schreiben 367 00:19:54,000 --> 00:19:57,000 sehr viel weniger Code, weil Sie auf den Schultern von anderen Menschen stehen kann 368 00:19:57,000 --> 00:19:59,000 die bereits bestimmte Dinge für Sie geschrieben. 369 00:19:59,000 --> 00:20:03,000 >> Lassen Sie uns einen kurzen Überblick über die Syntax von PHP und dann schreiben Sie ein paar Beispiele. 370 00:20:03,000 --> 00:20:06,000 Was ist schön über PHP in erster Linie 371 00:20:06,000 --> 00:20:08,000 wird es keine Hauptfunktion. 372 00:20:08,000 --> 00:20:10,000 Wenn Sie ein Programm in PHP schreiben wollen starten Sie einfach das Schreiben von Code, 373 00:20:10,000 --> 00:20:12,000 und Sie brauchen sich keine Gedanken über Haupt kümmern. 374 00:20:12,000 --> 00:20:14,000 Es gibt keine int. Es gibt kein Zurück. 375 00:20:14,000 --> 00:20:17,000 Es gibt keine argv, argc, die erforderlich sind, wenn Sie das Programm zu schreiben ist. 376 00:20:17,000 --> 00:20:20,000 Vielmehr können Sie einfach mit dem Schreiben beginnen Code, und dies ist Teil 377 00:20:20,000 --> 00:20:23,000 weil PHP ist, was heißt eine interpretierte Sprache. 378 00:20:23,000 --> 00:20:26,000 C kompiliert wurde, und es wurde in dem Sinne, dass Sie beginnen zusammengestellt 379 00:20:26,000 --> 00:20:29,000 mit Source-Code, führen Sie es durch Clang, was ein Compiler ist, 380 00:20:29,000 --> 00:20:33,000 und schließlich nach einer bestimmten Anzahl von Schritten erhalten Sie Objekt-Code, 0s und 1s. 381 00:20:33,000 --> 00:20:36,000 PHP und Python und Ruby und Pearl und andere 382 00:20:36,000 --> 00:20:39,000 gibt verschiedene Arten von Sprachen, dass Sie nicht kompiliert sie. 383 00:20:39,000 --> 00:20:42,000 Sie müssen nicht aus dem Quellcode auf 0s und 1s gehen. 384 00:20:42,000 --> 00:20:45,000 Sie führen Sie einfach den Quellcode, und Sie laufen den Quellcode 385 00:20:45,000 --> 00:20:49,000 schriftlich in einer üblichen Textdatei mit der Endung. php in diesem Fall 386 00:20:49,000 --> 00:20:53,000 statt. c, und was das Programm macht auf Ihrem Computer 387 00:20:53,000 --> 00:20:57,000 ist es buchstäblich interpretiert den Code Zeile für Zeile für Zeile durch. 388 00:20:57,000 --> 00:21:00,000 >> Mit anderen Worten, anstatt ein Programm schreiben, und das Programm 389 00:21:00,000 --> 00:21:04,000 direkt Sie stattdessen ein Programm schreiben, mit einer Datei mit der Endung. php. 390 00:21:04,000 --> 00:21:09,000 Anschließend führen Sie eine aktuelle Programm namens php.exe, wenn Sie unter Windows sind, 391 00:21:09,000 --> 00:21:12,000 oder einfach nur PHP wenn Sie auf Mac OS oder Linux, 392 00:21:12,000 --> 00:21:17,000 und Ihnen als Eingabe für den PHP-Programm Ihren eigenen Quellcode, 393 00:21:17,000 --> 00:21:20,000 und seinen Zweck im Leben ist, um Ihren Code von oben nach unten, von links nach rechts gelesen, 394 00:21:20,000 --> 00:21:23,000 und tun, was du hast gesagt, es zu tun. 395 00:21:23,000 --> 00:21:25,000 >> Mal sehen, was das wird syntaktisch bedeuten. 396 00:21:25,000 --> 00:21:27,000 In PHP haben wir Bedingungen. 397 00:21:27,000 --> 00:21:29,000 Diese Folie ist identisch zu dem, was du gesehen hast, wieder in Woche 1 398 00:21:29,000 --> 00:21:33,000 weil syntaktisch Bedingungen, wenn und anderes ifs und anderswo in PHP 399 00:21:33,000 --> 00:21:35,000 genauso aussehen wie diese. 400 00:21:35,000 --> 00:21:38,000 Wenn es um boolesche Ausdrücke kommt sie gehen, um genau so aussehen wie diese. 401 00:21:38,000 --> 00:21:43,000 Wenn es um Anding Dinge zusammen als boolesche es wird genau so aussehen wie diese. 402 00:21:43,000 --> 00:21:46,000 Switches gleich aussehen, und Sie bekommen den zusätzlichen Vorteil in PHP 403 00:21:46,000 --> 00:21:51,000 dass die Schalter in C konnte nur auf einem char oder int wechseln. 404 00:21:51,000 --> 00:21:53,000 Sie könnten nicht auf einen String-Wert zu wechseln. 405 00:21:53,000 --> 00:21:55,000 In PHP können Sie sogar einen Ausdruck 406 00:21:55,000 --> 00:21:58,000 das ist eine Variable, deren Inhalt eine Zeichenkette, 407 00:21:58,000 --> 00:22:01,000 und man kann tatsächlich tun, String-Vergleich in der realen intuitive Art und Weise, 408 00:22:01,000 --> 00:22:06,000 nicht Zeiger Vergleich, um zu entscheiden, ob Fall zu tun i oder j oder etwas anderes. 409 00:22:06,000 --> 00:22:09,000 Wir, dass potenziell sehen, bevor lang. 410 00:22:09,000 --> 00:22:11,000 >> Schleifen zu wunderbar gleich sind. 411 00:22:11,000 --> 00:22:15,000 For-Schleifen haben eine Initialisierung, eine Bedingung, und eine gewisse Anzahl von Updates. 412 00:22:15,000 --> 00:22:18,000 While-Schleifen auch in PHP existieren. 413 00:22:18,000 --> 00:22:21,000 Do while-Schleifen auch in PHP existieren, 414 00:22:21,000 --> 00:22:26,000 und Arrays existieren in PHP, aber hier ist die Syntax beginnt, ein wenig anders, 415 00:22:26,000 --> 00:22:29,000 aber die Konzepte die gleichen sind, und die Konzepte wirklich gleich sind 416 00:22:29,000 --> 00:22:32,000 wie sie waren in Woche 0 mit Scratch. 417 00:22:32,000 --> 00:22:34,000 In erster Linie ist das $-Zeichen. 418 00:22:34,000 --> 00:22:37,000 Dies war eine Design-Entscheidung in PHP, wobei jede Variable 419 00:22:37,000 --> 00:22:41,000 in PHP Design beginnt mit $-Zeichen. 420 00:22:41,000 --> 00:22:46,000 Es ist nicht mehr X, Y, Z. Es ist jetzt $ X, $ Y, $ Z einfach nur da. 421 00:22:46,000 --> 00:22:49,000 Es ist etwas im Auge zu behalten, und jetzt auf der rechten Seite 422 00:22:49,000 --> 00:22:52,000 Diese sieht ähnlich aus wie ein Array, 423 00:22:52,000 --> 00:22:54,000 aber wir sind mit eckigen Klammern hier. 424 00:22:54,000 --> 00:22:57,000 In PHP und JavaScript als wir schließlich sehen, 425 00:22:57,000 --> 00:23:01,000 um ein Array Sie offene eckige Klammer geschlossen und eckige Klammer zu erklären, 426 00:23:01,000 --> 00:23:04,000 und dann haben Sie eine durch Komma getrennte Liste von Werten, ob ints 427 00:23:04,000 --> 00:23:09,000 oder Strings oder verkohlt, was Sie wollen, innerhalb dieses Ausdrucks gibt. 428 00:23:09,000 --> 00:23:11,000 >> Nun, wie wir etwas tun, wie dies in C? 429 00:23:11,000 --> 00:23:16,000 Was war die Syntax für statisch deklarieren eine Reihe von bekannten Nummern? 430 00:23:16,000 --> 00:23:19,000 Es war geschweiften Klammern, so kleiner Unterschied hier, aber sowohl in PHP 431 00:23:19,000 --> 00:23:22,000 und schließlich JavaScript es nur verwendet eckigen Klammern, also wirklich 432 00:23:22,000 --> 00:23:25,000 das einzige interessante Detail ist das $-Zeichen für den Variablennamen 433 00:23:25,000 --> 00:23:28,000 und auch die eckigen Klammern, und es gibt ein merkwürdiges Ding 434 00:23:28,000 --> 00:23:32,000 Das ist nicht so gut auf der linken Seite des =-Zeichen weggelassen. 435 00:23:32,000 --> 00:23:36,000 Was noch fehlt, dass wir seit Wochen erfordern? Yeah. 436 00:23:36,000 --> 00:23:38,000 [Unverständlich Studenten Antwort] 437 00:23:38,000 --> 00:23:41,000 Die Größe, so gibt es keine Erwähnung der Größe des Arrays. 438 00:23:41,000 --> 00:23:45,000 Ehrlich gesagt, gibt es keine Erwähnung von eckigen Klammern auf der linken Seite 439 00:23:45,000 --> 00:23:47,000 von dem =-Zeichen, und was sonst noch von der Linie fehlt? 440 00:23:47,000 --> 00:23:49,000 Yeah. >> [Unverständlich Studenten Antwort] 441 00:23:49,000 --> 00:23:52,000 Die Art, so was ist insbesondere über PHP interessante 442 00:23:52,000 --> 00:23:56,000 ist, dass es sich nicht um eine stark typisierten Sprache als C ist, 443 00:23:56,000 --> 00:23:58,000 und das ist stark in dem Sinne, dass man muss sagen char eingegeben haben, 444 00:23:58,000 --> 00:24:00,000 Sie müssen sagen int, müssen Sie sagen, float. 445 00:24:00,000 --> 00:24:03,000 >> Immer, wenn Sie eine Variable wollen, müssen Sie Clang sagen, was seiner Art ist. 446 00:24:03,000 --> 00:24:05,000 PHP ist ein wenig fauler. 447 00:24:05,000 --> 00:24:08,000 Es ist lose in dem Sinne, dass getippt 448 00:24:08,000 --> 00:24:11,000 Sie können die Schwimmer und Zeichen und Zeichenketten 449 00:24:11,000 --> 00:24:14,000 und ints und so weiter, aber die Sprache selbst 450 00:24:14,000 --> 00:24:17,000 nicht wirklich egal, was Sie innerhalb einer Variable setzen. 451 00:24:17,000 --> 00:24:20,000 Sie müssen nicht im Voraus zu informieren, welche Daten-Typ 452 00:24:20,000 --> 00:24:22,000 wird in einer Variablen gehen. 453 00:24:22,000 --> 00:24:24,000 Es ist völlig bis zu Ihnen, so this is nice 454 00:24:24,000 --> 00:24:27,000 dass Sie nicht mehr so ​​viel Sorgen über Datentypisierung 455 00:24:27,000 --> 00:24:29,000 und beunruhigend, was Ihre Argumente sind und so weiter. 456 00:24:29,000 --> 00:24:32,000 Dies bedeutet auch, schließlich Funktionen in PHP in der Lage sein, um wieder 457 00:24:32,000 --> 00:24:36,000 entweder ein int meiste Zeit, und vielleicht einmal in eine Weile 458 00:24:36,000 --> 00:24:40,000 sie werden wieder ein bool, einen boolean false, zum Beispiel, um anzudeuten, dass etwas schief gelaufen ist. 459 00:24:40,000 --> 00:24:44,000 Dies gibt uns einige upsides, aber es wird auch uns Art by design 460 00:24:44,000 --> 00:24:47,000 ein bisschen fauler, wenn es darum geht, Daten eingeben. 461 00:24:47,000 --> 00:24:50,000 >> Was gibt es sonst noch im Auge behalten? 462 00:24:50,000 --> 00:24:54,000 Variablen sieht ganz wie diese, so $ s = "Hallo Welt." 463 00:24:54,000 --> 00:24:57,000 Das ist vielleicht inferable aus dem vorherigen Beispiel, 464 00:24:57,000 --> 00:24:59,000 und wir haben eine andere Art von Schleife. 465 00:24:59,000 --> 00:25:02,000 Dieses werden wir tatsächlich einmal zu sehen in eine Weile, da es sehr praktisch ist, 466 00:25:02,000 --> 00:25:04,000 a foreach-Konstrukt. 467 00:25:04,000 --> 00:25:11,000 In diesem Fall erfolgt die foreach-Schleife innerhalb der Klammern 3 Worte in der Regel, 468 00:25:11,000 --> 00:25:16,000 $ Zuerst etwas, das, was array haben wird Sie über die Mitglieder durchlaufen, 469 00:25:16,000 --> 00:25:19,000 dann buchstäblich das Schlüsselwort as, und dann schließlich 470 00:25:19,000 --> 00:25:21,000 andere Variable Namen, den Sie wählen, erhalten. 471 00:25:21,000 --> 00:25:23,000 Es kann foo, bar oder Element sein, 472 00:25:23,000 --> 00:25:26,000 und was dieses Konstrukt funktioniert 473 00:25:26,000 --> 00:25:29,000 ist, wenn der $ array enthält 10 Elemente 474 00:25:29,000 --> 00:25:34,000 bei jeder Iteration des Array-sorry, bei jeder Iteration dieser Schleife 475 00:25:34,000 --> 00:25:37,000 Die Variable namens Element wird aktualisiert 476 00:25:37,000 --> 00:25:40,000 um das erste Element in dem Array, dann das zweite Element in dem Array, 477 00:25:40,000 --> 00:25:44,000 dann das dritte Element des Arrays, wodurch die Notwendigkeit 478 00:25:44,000 --> 00:25:46,000 die etwas ärgerlich eckigen Klammern zu tun und 479 00:25:46,000 --> 00:25:49,000 $ I um Index in ein Array. 480 00:25:49,000 --> 00:25:53,000 PHP hat all diese Arbeit für Sie und bei jeder Iteration 481 00:25:53,000 --> 00:25:55,000 nur gibt dir das nächste Element aus dem Array 482 00:25:55,000 --> 00:26:01,000 ohne dass Sie wissen oder kümmern uns um den numerischen Indexposition. 483 00:26:01,000 --> 00:26:04,000 >> Und dann endlich, denn jetzt gibt es eine weitere Funktion von PHP 484 00:26:04,000 --> 00:26:08,000 das wird sein äußerst nützlich, vor allem, wenn wir die Programmierung zu starten auf dem Web, 485 00:26:08,000 --> 00:26:10,000 und das ist als assoziatives Array bekannt. 486 00:26:10,000 --> 00:26:13,000 Die Arrays, die wir kennen bisher als 20 Sekunden vor 487 00:26:13,000 --> 00:26:17,000 und in den letzten 8 Wochen sind numerisch Arrays indiziert, 488 00:26:17,000 --> 00:26:20,000 Art der traditionellen Arrays, wo die Indizes sind ints, 489 00:26:20,000 --> 00:26:23,000 0, 1, 2, den ganzen Weg bis auf. 490 00:26:23,000 --> 00:26:25,000 Assoziative Arrays sind viel stärker. 491 00:26:25,000 --> 00:26:28,000 Sie ermöglichen es, beliebige Tasten haben, 492 00:26:28,000 --> 00:26:31,000 beliebige Indizes und willkürliche Werte. 493 00:26:31,000 --> 00:26:34,000 Während bei einer herkömmlichen Anordnung ist es 0, 1, 2, 494 00:26:34,000 --> 00:26:37,000 in einem assoziativen Array können Sie einen Index 495 00:26:37,000 --> 00:26:41,000 oder ein Schlüssel foo, dessen Wert bar. 496 00:26:41,000 --> 00:26:46,000 Sie können dann eine andere Taste, deren Name baz und dessen Wert qux. 497 00:26:46,000 --> 00:26:49,000 >> Wieder dumm Informatik generischen Variablennamen hier 498 00:26:49,000 --> 00:26:55,000 aber der Punkt ist, dass diese Anordnung nicht Halterung 0 oder Halterung 1. 499 00:26:55,000 --> 00:26:59,000 Es ist statt dessen werde Halterung foo und Halterung baz haben. 500 00:26:59,000 --> 00:27:03,000 Dies ist weitaus vielseitiger, dass wir in der Lage sein zu assoziieren 501 00:27:03,000 --> 00:27:07,000 Wörter mit anderen Worten, Schlüssel mit Werten vollkommen willkürlich 502 00:27:07,000 --> 00:27:12,000 und wir werden in der Lage sein, diese Werte wieder in konstanter Zeit 503 00:27:12,000 --> 00:27:14,000 denn unter der Haube, was ein assoziatives Array 504 00:27:14,000 --> 00:27:16,000 ist wirklich eine Hash-Tabelle. 505 00:27:16,000 --> 00:27:20,000 Daran erinnern, dass ein Hash-Tabelle, die Sie in einigen Eingangssignalen setzen können 506 00:27:20,000 --> 00:27:25,000 gerne stellen im Wort David, wenn Sie David in eine Art Wörterbuch einfügen möchten, 507 00:27:25,000 --> 00:27:27,000 und dann bekommst du wieder etwas Wert in der Regel. 508 00:27:27,000 --> 00:27:29,000 Im Falle der Speller, wahr oder falsch. 509 00:27:29,000 --> 00:27:33,000 David oder was auch immer Wort ist oder nicht im Wörterbuch. 510 00:27:33,000 --> 00:27:36,000 Ein assoziatives Array ist eigentlich nur eine Hash-Tabelle, 511 00:27:36,000 --> 00:27:38,000 aber es ist ein viel benutzerfreundlicher Inkarnation es. 512 00:27:38,000 --> 00:27:41,000 Wie wir sehen werden, wird es uns zu erlauben, einige Dinge zu tun 513 00:27:41,000 --> 00:27:43,000 sehr, sehr leicht. 514 00:27:43,000 --> 00:27:45,000 >> Werfen wir einen Blick auf einige grundlegende PHP 515 00:27:45,000 --> 00:27:47,000 Beispiele und sehen, was wir mit dieser Sprache zu tun. 516 00:27:47,000 --> 00:27:51,000 Lassen Sie mich gehen Sie vor und eröffnen in unserem Quellverzeichnis heute 517 00:27:51,000 --> 00:27:54,000 eine Datei namens hello1.php. 518 00:27:54,000 --> 00:27:57,000 Diese Datei ist Kommentar als eigentliche Code ist, 519 00:27:57,000 --> 00:28:00,000 so lassen Sie mich wirklich entfernen alle Kommentare aus der Datei 520 00:28:00,000 --> 00:28:05,000 und präsentieren Ihnen vielleicht die einfachste PHP-Programm finden Sie hier. 521 00:28:05,000 --> 00:28:07,000 5 Zeilen, und einige von ihnen sind Leerraum 522 00:28:07,000 --> 00:28:09,000 so feststellen, dass einige wichtige Unterschiede. 523 00:28:09,000 --> 00:28:12,000 Die Datei heißt hello1.php. 524 00:28:12,000 --> 00:28:16,000 Die allererste Zeile, obwohl, ist 00:28:18,000 Im Geiste HTML, 526 00:28:18,000 --> 00:28:21,000 diese Sequenz von Zeichen sagt dem Computer 527 00:28:21,000 --> 00:28:25,000 "Hey, Computer, hier kommt ein Programm, dass wir in PHP." 528 00:28:25,000 --> 00:28:28,000 Es stellt sicher, es nicht zu verwechseln, dass es eine andere Sprache ist. 529 00:28:28,000 --> 00:28:30,000 Linie 2 ist eine interessante weißen Raum. 530 00:28:30,000 --> 00:28:32,000 Line 3 ist unser alter Freund printf, 531 00:28:32,000 --> 00:28:34,000 diesmal im Kontext von PHP. 532 00:28:34,000 --> 00:28:37,000 PHP hat seine eigene Version von printf, die genau das gleiche Verhalten, 533 00:28:37,000 --> 00:28:39,000 so ist dies nur Drucklegung "Hallo Welt." 534 00:28:39,000 --> 00:28:46,000 Und dann diese gegenüber tag hier?>, Bedeutet, dass es für meine PHP-Code. 535 00:28:46,000 --> 00:28:48,000 >> Mal sehen, wie das läuft. 536 00:28:48,000 --> 00:28:50,000 Ich werde gehen zurück zu meinem Terminal-Fenster hier. 537 00:28:50,000 --> 00:28:52,000 Ich werde in meinem PHP-Verzeichnis. 538 00:28:52,000 --> 00:28:56,000 Beachten Sie, dass wir eine ganze Reihe von Dateien, die erste von denen hello.php ist zu haben. 539 00:28:56,000 --> 00:29:01,000 Lassen Sie mich gehen Sie vor und führen Sie dieses, hello1.php geben. 540 00:29:01,000 --> 00:29:03,000 Permission denied. Okay. 541 00:29:03,000 --> 00:29:06,000 Wie haben wir Dinge wie diese in der Vergangenheit fixiert? 542 00:29:06,000 --> 00:29:08,000 Was ist das? >> [Unverständlich Studenten Antwort] 543 00:29:08,000 --> 00:29:11,000 Wir brauchen lesen und schreiben, aber lass mich tun ls-l. 544 00:29:11,000 --> 00:29:14,000 Merken Sie sich diese etwas kryptisch ausgegeben, wobei hello1 545 00:29:14,000 --> 00:29:17,000 scheint zu sein, lesbar und beschreibbar von mir 546 00:29:17,000 --> 00:29:19,000 aber lesbar von allen anderen. 547 00:29:19,000 --> 00:29:22,000 Es stellt sich heraus das ist eigentlich nicht ein Schritt in die richtige Richtung. 548 00:29:22,000 --> 00:29:25,000 Die Differenz wiederum mit einer interpretierten Sprache 549 00:29:25,000 --> 00:29:27,000 wird Sie nicht starten Sie das Programm direkt. 550 00:29:27,000 --> 00:29:30,000 Sie laufen anstatt einen Dolmetscher und geben es der Code 551 00:29:30,000 --> 00:29:33,000 , dass du geschrieben hast so interpretieren kann sie Zeile für Zeile. 552 00:29:33,000 --> 00:29:36,000 In diesem Fall wird die Dolmetscher oder Programm, das ich tatsächlich ausführen möchten 553 00:29:36,000 --> 00:29:38,000 wörtlich heißt PHP. 554 00:29:38,000 --> 00:29:41,000 >> Irgendwo auf dieser Festplatte des Gerätes gibt es ein Programm 555 00:29:41,000 --> 00:29:45,000 Jemand anderes schrieb als PHP oder Windows php.exe. 556 00:29:45,000 --> 00:29:48,000 Was ich hier zu tun ist, ich werde tatsächlich laufen PHP 557 00:29:48,000 --> 00:29:51,000 sondern geben es als Befehlszeilenargument den Code, der ich schrieb, 558 00:29:51,000 --> 00:29:54,000 und dann werde ich Verkleinern und drücken Sie Enter. 559 00:29:54,000 --> 00:29:58,000 Es läuft mein Programm für mich, von oben nach unten, von links nach rechts. 560 00:29:58,000 --> 00:30:01,000 Lassen Sie mich gehen Sie vor und eröffnen eine geringfügige Abweichung davon. 561 00:30:01,000 --> 00:30:05,000 In hello2.php beachten Sie, dass dies auch 562 00:30:05,000 --> 00:30:08,000 ist meistens Kommentare, so lassen Sie mich diejenigen loswerden, als Ablenkung, 563 00:30:08,000 --> 00:30:13,000 und was ist eindeutig jetzt anders über diese Datei? 564 00:30:13,000 --> 00:30:15,000 Es ist diese neue Linie, etwas kryptisch an der Spitze. 565 00:30:15,000 --> 00:30:20,000 In Zeile 1 ist es #! / Bin / php. 566 00:30:20,000 --> 00:30:24,000 Bin eine Konvention unter Linux und Mac OS für Binärdateien, 567 00:30:24,000 --> 00:30:27,000 so / bin bedeutet dies, ist ein Ordner mit einer Reihe von Binärdateien 568 00:30:27,000 --> 00:30:29,000 das so programmiert ist, von denen eine PHP. 569 00:30:29,000 --> 00:30:32,000 Die #! trägt den Spitznamen Kram, 570 00:30:32,000 --> 00:30:35,000 das ist der schnelle Weg, es zu sagen, und was bedeutet dies 571 00:30:35,000 --> 00:30:40,000 ist, dass, wenn Sie dieses Programm ausführen jetzt gibt es ein Hinweis auf die Anfang der Datei 572 00:30:40,000 --> 00:30:44,000 das sagt dem Computer, was zu verwendenden Interpreter. 573 00:30:44,000 --> 00:30:47,000 >> Es wird ein wenig ärgerlich, wenn Sie Ihre Benutzer und Ihre Kunden zu sagen hatte 574 00:30:47,000 --> 00:30:50,000 "Hey, schrieben wir dieses Programm namens hello1.php." 575 00:30:50,000 --> 00:30:54,000 Alles, was Sie tun müssen, ist immer PHP laufen und dann den Namen des Programms. 576 00:30:54,000 --> 00:30:58,000 Ehrlich gesagt, wäre es nur dann netter zu hello1.php laufen, 577 00:30:58,000 --> 00:31:00,000 und in der Tat können wir, wenn wir wie folgt vor. 578 00:31:00,000 --> 00:31:05,000 Lassen Sie mich gehen Sie vor und tun ls-l, und beachten Sie in hello2 es gerade noch lesen und schreiben 579 00:31:05,000 --> 00:31:10,000 und dann gelesen, so kann ich noch nicht tun, hello2.php. 580 00:31:10,000 --> 00:31:15,000 Aber wir eingeführt dies jemals so kurz letzten Zeit, die chmod-Befehl. 581 00:31:15,000 --> 00:31:20,000 Wenn ich das tue chmod a + x, die alle sowie Ausführbarkeit bedeutet, 582 00:31:20,000 --> 00:31:26,000 und dann hello2.php und führen Sie dann ls-l wieder bemerken, was geändert. 583 00:31:26,000 --> 00:31:29,000 One, wird Linux zeigt mir den Namen der Datei in grün, um die Idee zu vermitteln 584 00:31:29,000 --> 00:31:32,000 daß sie die ausführbare, aber noch wichtiger, auf der linken Seite 585 00:31:32,000 --> 00:31:36,000 feststellen, dass das Bit repräsentiert x für ausführbare nun eingestellt wurde. 586 00:31:36,000 --> 00:31:42,000 Was dies bedeutet jetzt ist, kann ich ./hello2.php wie gewohnt laufen, 587 00:31:42,000 --> 00:31:45,000 drücken Sie die Eingabetaste, und weil der Kram ganz am Anfang der Datei 588 00:31:45,000 --> 00:31:48,000 Das ist ein Hinweis, wieder auf Linux, das sagt 589 00:31:48,000 --> 00:31:51,000 Verwenden Sie diese Dolmetscherin Sie diese Datei ausführen. 590 00:31:51,000 --> 00:31:54,000 Nicht über den Benutzer zu zwingen tatsächlich geben Sorgen. 591 00:31:54,000 --> 00:31:57,000 >> Und was ist schön jetzt ist es irgendwie irrelevant für meine Kunden oder meine Freunde 592 00:31:57,000 --> 00:32:01,000 welche Sprache ich dieses Programm schrieb, so kann ich voran mit mv 593 00:32:01,000 --> 00:32:04,000 und benennen Sie diese Sache zu hello2, zum Beispiel. 594 00:32:04,000 --> 00:32:07,000 Und nun, wenn ich ./hello2 595 00:32:07,000 --> 00:32:10,000 vergrößern und verkleinern mein Programm läuft weiter. 596 00:32:10,000 --> 00:32:13,000 Diese Dateierweiterungen sind eine menschliche Konvention, die notwendig ist 597 00:32:13,000 --> 00:32:15,000 für so etwas wie Clang und Make, die nach ihnen suchen. 598 00:32:15,000 --> 00:32:18,000 Aber für PHP, könnte ich nennen diese Dateierweiterung, was ich will. 599 00:32:18,000 --> 00:32:22,000 Ich könnte die Welt zu denken, dass ich wirklich gut bin bei Ruby auszutricksen, 600 00:32:22,000 --> 00:32:25,000 und ich könnte schreiben hello2.rb und führen Sie dann diese, 601 00:32:25,000 --> 00:32:28,000 und voila, jetzt habe ich die Ruby-Version, die eine komplette Lüge ist. 602 00:32:28,000 --> 00:32:30,000 Aber die Dateierweiterungen sind bedeutungslos 603 00:32:30,000 --> 00:32:35,000 wenn die Datei ausführbar ist und hat diese besondere Tipp am Anfang der Datei. 604 00:32:35,000 --> 00:32:38,000 >> Jetzt, als beiseite, lassen Sie mich Ihnen schnell Version 3 605 00:32:38,000 --> 00:32:40,000 das ist eine Art nützlicher Trick zu wissen. 606 00:32:40,000 --> 00:32:45,000 In hello3 tat ich etwas etwas falsch 607 00:32:45,000 --> 00:32:47,000 dass ich zu aktualisieren den Quellcode online. 608 00:32:47,000 --> 00:32:50,000 In Version 3 stellt sich heraus, dass auf den meisten Linux-Computern 609 00:32:50,000 --> 00:32:53,000 gibt es ein Programm namens env für Umwelt, 610 00:32:53,000 --> 00:32:56,000 und was Sie hier tun können, wenn Sie keine Ahnung haben, wo PHP 611 00:32:56,000 --> 00:33:00,000 auf der lokalen Festplatte installiert, weil in der Tat auf dem Computer basieren könnte variieren 612 00:33:00,000 --> 00:33:03,000 dass jemand mit, env sagt nur laufen env, 613 00:33:03,000 --> 00:33:07,000 das ist auf den meisten Systemen, und herauszufinden, wo PHP ist. 614 00:33:07,000 --> 00:33:11,000 Nur ein üblicher Trick, so dass Sie sich nicht um herauszufinden, wo ein Programm kümmern. 615 00:33:11,000 --> 00:33:14,000 Aber wenn Sie darauf, herauszufinden, wo ein Programm ist und Sie haben nicht gepflegt bisher 616 00:33:14,000 --> 00:33:16,000 können Sie den Befehl which. 617 00:33:16,000 --> 00:33:19,000 >> Lassen Sie mich Verkleinern und geben an, welche PHP, 618 00:33:19,000 --> 00:33:23,000 und bemerken es sagt mir, es ist eigentlich in usr / bin / php. 619 00:33:23,000 --> 00:33:25,000 Es ist eine Art der Lüge. Es ist auch in bin. 620 00:33:25,000 --> 00:33:27,000 Es ist nur zeigt mir den ersten Treffer. 621 00:33:27,000 --> 00:33:31,000 Wenn Sie sich jemals gefragt, wo Clang ist, was Clang, das ist in usr / bin / Klang, 622 00:33:31,000 --> 00:33:34,000 was zu machen, ist usr / bin / machen, und was das bedeutet die ganze Zeit 623 00:33:34,000 --> 00:33:38,000 Sie könnten worden Eingabe usr / bin / clang eingeben, um Clang laufen, 624 00:33:38,000 --> 00:33:41,000 aber es ist irgendwie langweilig, das zu tun, so dass einige Ordner 625 00:33:41,000 --> 00:33:44,000 wie usr / bin und bin davon ausgegangen Standardwerte werden 626 00:33:44,000 --> 00:33:50,000 damit der Computer weiß, in ihnen für Sie suchen. 627 00:33:50,000 --> 00:33:53,000 Haben Sie Fragen zum Schreiben einer super, super einfache Hallo Welt Programm 628 00:33:53,000 --> 00:33:55,000 in PHP und dann läuft es? 629 00:33:55,000 --> 00:33:59,000 Denn jetzt werden wir beginnen, mehr überzeugende Syntax einzuführen. 630 00:33:59,000 --> 00:34:01,000 Alles klar, hier gehen wir. 631 00:34:01,000 --> 00:34:03,000 Diese Programme haben wir eigentlich alle von ihnen gesehen. 632 00:34:03,000 --> 00:34:07,000 >> Wenn ich öffnen, zum Beispiel, lasst uns beer1.php, 633 00:34:07,000 --> 00:34:09,000 wir werden nicht über mehrere Versionen dieses gehen, aber was ich getan habe 634 00:34:09,000 --> 00:34:13,000 wurde ich setzte mich hin und goß es oder umgewandelt 635 00:34:13,000 --> 00:34:15,000 meine C-Code in PHP-Code hier. 636 00:34:15,000 --> 00:34:18,000 Die meisten der Anfang der Datei sind Kommentare hier. 637 00:34:18,000 --> 00:34:20,000 Es stellt sich heraus, es gibt eine neue Funktion, die wir brauchen genannt readline. 638 00:34:20,000 --> 00:34:23,000 GetString, Rückruf, von Woche 0 Weiterreise war ein CS50 Sache. 639 00:34:23,000 --> 00:34:27,000 PHP kommt mit seiner eigenen benutzerfreundliche Funktion namens readline 640 00:34:27,000 --> 00:34:30,000 das dauert 1 Argument, das die Eingabeaufforderung gibt 641 00:34:30,000 --> 00:34:33,000 dass Sie möchten, um dem Benutzer zu zeigen, und was readline macht 642 00:34:33,000 --> 00:34:35,000 ist es wieder, was der Benutzer Typen in. 643 00:34:35,000 --> 00:34:39,000 In diesem Fall bin ich Deklaration einer Variable namens $ n. 644 00:34:39,000 --> 00:34:42,000 Ich bin in sie speichert den Rückgabewert der readline 645 00:34:42,000 --> 00:34:44,000 nach Aufforderung des Benutzers mit dieser Zeichenfolge. 646 00:34:44,000 --> 00:34:47,000 Nur zum Sichern, um tatsächlich dieses Ding, lass mich gehen Sie vor 647 00:34:47,000 --> 00:34:50,000 und führen Sie php beer1.php. 648 00:34:50,000 --> 00:34:53,000 Wie viele Flaschen wird es geben? Lass uns einfach tun, 2 diese Zeit. 649 00:34:53,000 --> 00:34:55,000 Enter. Das ist alles. 650 00:34:55,000 --> 00:34:59,000 >> Das Programm ist funktional identisch mit der C-Version von Wochen. 651 00:34:59,000 --> 00:35:01,000 Aber syntaktisch mal sehen, was ist anders. 652 00:35:01,000 --> 00:35:05,000 Nach bekomme ich eine int aus der Benutzer feststellen, dass ich tue etwas Fehlerkontrolle, 653 00:35:05,000 --> 00:35:08,000 und wenn n kleiner als 1 I beenden und drucke ich 654 00:35:08,000 --> 00:35:11,000 eine traurige Nachricht an den Benutzer und Ausgang mit 1. 655 00:35:11,000 --> 00:35:13,000 Auch dies ist ein wenig anders. 656 00:35:13,000 --> 00:35:16,000  In C, was haben wir getan? In C kehrten wir ein. 657 00:35:16,000 --> 00:35:20,000 In PHP Sie mit 1 zu verlassen, die offen ist, ich ein wenig mehr intuitive denken 658 00:35:20,000 --> 00:35:22,000 weil Sie buchstäblich das Programm beenden. 659 00:35:22,000 --> 00:35:25,000 Alles klar, und dann hier unten ärgerliches Lied ist identisch syntaktisch 660 00:35:25,000 --> 00:35:29,000 mit Ausnahme der variablen, so hier unten in Zeile 24 weiter 661 00:35:29,000 --> 00:35:31,000 bemerkt meiner for-Schleife ist fast das gleiche, 662 00:35:31,000 --> 00:35:34,000 aber ich habe $ vor i und n, 663 00:35:34,000 --> 00:35:37,000 und was fehlt auch von der Linie 26, die wir in der Vergangenheit 664 00:35:37,000 --> 00:35:39,000 beim Deklarieren einer Variablen i? 665 00:35:39,000 --> 00:35:41,000 Es gibt keinen Typ. 666 00:35:41,000 --> 00:35:43,000 Es ist falsch, in PHP zu sagen int. 667 00:35:43,000 --> 00:35:45,000 Sie wissen einfach nicht brauchen, um das zu tun. 668 00:35:45,000 --> 00:35:48,000 Der Computer ist der Interpreter PHP klug genug zu erkennen 669 00:35:48,000 --> 00:35:51,000 dass, wenn Sie eine Nummer setzen in $ I wird es behandeln 670 00:35:51,000 --> 00:35:53,000 als Zahl für Sie. 671 00:35:53,000 --> 00:35:57,000 Und dann hier unten haben wir Plug-in $ i, $ i, $ i - 1. 672 00:35:57,000 --> 00:36:00,000 All das ist die gleiche, und dann hier unten machen wir einen "Wow, das ist ärgerlich" printf 673 00:36:00,000 --> 00:36:02,000 und beenden Sie dann (0). 674 00:36:02,000 --> 00:36:05,000 >> Auch hier ist das Essen zum Mitnehmen hier, dass, obwohl wir werden relativ zu verbringen 675 00:36:05,000 --> 00:36:09,000 wenig Zeit auf PHP, sicherlich im Vergleich zu was wir auf C hat, 676 00:36:09,000 --> 00:36:12,000 es ist fast das gleiche, und so, was wir heute und nächste Woche 677 00:36:12,000 --> 00:36:14,000 und darüber hinaus ist zu konzentrieren wirklich auf einige der neuen Ideen. 678 00:36:14,000 --> 00:36:17,000 Nur um zu sehen, dass eine andere Sache ist zu übersetzen als aus C, 679 00:36:17,000 --> 00:36:20,000 Das war ein super einfaches Programm, das wir in Woche 1 hat 680 00:36:20,000 --> 00:36:22,000 oder 2, die gewürfelt einen Wert. 681 00:36:22,000 --> 00:36:25,000 Aber was war an der Zeit, über dieses Programm interessant ist, dass es 682 00:36:25,000 --> 00:36:28,000 führte die Vorstellung von einem eigens geschriebenen Funktion, die wir uns selbst schrieb. 683 00:36:28,000 --> 00:36:31,000 Die Syntax in PHP ist fast das gleiche. 684 00:36:31,000 --> 00:36:33,000 Hier ist mein Programm bis oben. 685 00:36:33,000 --> 00:36:35,000 Beachten Sie wieder fehlt jede Vorstellung von main. 686 00:36:35,000 --> 00:36:39,000 Ich beginne das Schreiben von Code, und dies ist, was los ist, um vom Interpreter ausgeführt werden sollen. 687 00:36:39,000 --> 00:36:42,000 Drucke ich x ist jetzt 2, vermutlich. 688 00:36:42,000 --> 00:36:44,000 Dann behaupte ich Cubing ... 689 00:36:44,000 --> 00:36:47,000 Dann rufe ich den Würfel Funktion und in $ x vorbei 690 00:36:47,000 --> 00:36:50,000 und weisen Sie den Rückgabewert $ x. 691 00:36:50,000 --> 00:36:53,000 Dann habe ich behaupten, dass es gewürfelt hat, und dann sage ich, die hoffentlich 692 00:36:53,000 --> 00:36:55,000 sagen x ist jetzt 8. 693 00:36:55,000 --> 00:36:59,000 Die Syntax für die Funktion in PHP ist immer so ein wenig anders. 694 00:36:59,000 --> 00:37:01,000 Wieder fehlt, ist der Rückgabetyp. 695 00:37:01,000 --> 00:37:05,000 Wieder fehlt der Rückgabetyp und auch fehlt, ist, was andere Art? 696 00:37:05,000 --> 00:37:07,000 [Unverständlich Studenten Antwort] 697 00:37:07,000 --> 00:37:10,000 Na ja, okay, das ist gut. Lasst uns zurück zu, dass in einer Sekunde. 698 00:37:10,000 --> 00:37:12,000 >> Wir haben nicht, zum Beispiel, hier int. 699 00:37:12,000 --> 00:37:15,000 Wir wissen zum Beispiel nicht, hier haben int denn, noch einmal, in PHP 700 00:37:15,000 --> 00:37:18,000 Sie haben einfach nicht zu brauchen, und nicht das tun, 701 00:37:18,000 --> 00:37:20,000 sondern es ist das neue Schlüsselwort aufgerufene Funktion. 702 00:37:20,000 --> 00:37:23,000 In PHP ist es fast ein wenig klarer, denn wenn man eine Funktion möchten 703 00:37:23,000 --> 00:37:26,000 Sie buchstäblich sagen, Funktion, geben Sie ihm einen Namen und dann eine durch Komma getrennte Liste 704 00:37:26,000 --> 00:37:28,000 wenn einer ihrer Argumente. 705 00:37:28,000 --> 00:37:32,000 Keine Notwendigkeit für nichtig oder so etwas zu sagen, und dann wieder die gleiche ist, 706 00:37:32,000 --> 00:37:35,000 $ A * $ a * $ a. 707 00:37:35,000 --> 00:37:38,000 Was auch fehlt? Sammy wies dies hier. 708 00:37:38,000 --> 00:37:43,000 Am Anfang der Datei vollständig fehlen in PHP ist auch ein Prototyp. 709 00:37:43,000 --> 00:37:45,000 Auch dies ist beabsichtigt. 710 00:37:45,000 --> 00:37:48,000 Sprachen und Dolmetscher wie PHP sind klüger als C jemals war 711 00:37:48,000 --> 00:37:50,000 in Compilern wie Clang. 712 00:37:50,000 --> 00:37:53,000 >> Daran erinnern, dass Clang, wenn Sie nicht sagen, dass es diese Würfel existiert, 713 00:37:53,000 --> 00:37:56,000 wenn man nicht sagen, dass es das printf existiert mit einem Prototyp 714 00:37:56,000 --> 00:38:00,000 oder mit einem # include, gut, es würde auf Sie schreien und nicht einmal kompilieren Sie den Code. 715 00:38:00,000 --> 00:38:03,000 PHP und moderner Sprachen sind viel klüger, wenn es dazu kommt. 716 00:38:03,000 --> 00:38:07,000 Sie nehmen es auf sich, durch alle Ihre Code zu lesen 717 00:38:07,000 --> 00:38:11,000 und dann an Sie schreien nur, wenn es cube nirgends findet. 718 00:38:11,000 --> 00:38:15,000 Es spielt keine Rolle, wenn Würfel ist am Boden oder oben oder sogar in einigen separaten Datei. 719 00:38:15,000 --> 00:38:18,000 PHP und ähnliche Sprachen sind jetzt klug genug, nach vorne zu schauen 720 00:38:18,000 --> 00:38:26,000 auf alles, was vor dem Erachten Sie als einen Fehler gemacht. 721 00:38:26,000 --> 00:38:28,000 Wo führt uns das? 722 00:38:28,000 --> 00:38:32,000 >> Lassen Sie uns noch ein letztes Beispiel sei hier unter Bedingungen, 723 00:38:32,000 --> 00:38:35,000 und wenn ich öffnen conditions2.php Ankündigung zu 724 00:38:35,000 --> 00:38:37,000 Syntax hier ist fast die gleiche. 725 00:38:37,000 --> 00:38:40,000 Ich bin mit readline anstelle von GetString, aber die Linie ist die gleiche wie vorher, 726 00:38:40,000 --> 00:38:42,000 "Ich möchte eine ganze Zahl bitte." 727 00:38:42,000 --> 00:38:45,000 Ich habe dann ein, wenn die Bedingung, eine else if, und dann ein anderes, 728 00:38:45,000 --> 00:38:48,000 aber funktionell dieses Programm ist ebenfalls identisch zu dem, was wir taten Wochen 729 00:38:48,000 --> 00:38:51,000 also, wenn ich dieses Ding, php Bedingungen2, 730 00:38:51,000 --> 00:38:54,000 und ich gebe es eine Zahl wie 23 - 731 00:38:54,000 --> 00:38:57,000 Ich nahm eine positive Zahl ist. Wenn ich es -1 geben, nahm ich eine negative Zahl. 732 00:38:57,000 --> 00:39:00,000 Wenn ich gebe es 0 ich tatsächlich abgeholt 0. 733 00:39:00,000 --> 00:39:02,000 Also, wer kümmert sich um all dies? 734 00:39:02,000 --> 00:39:06,000 Nun, eine der fun Art Übungen hier 735 00:39:06,000 --> 00:39:10,000 zumindest für mich war, gehen Sie zurück und sehen, wie schnell ich konnte pset 5 zu implementieren, 736 00:39:10,000 --> 00:39:12,000 Die Rechtschreibfehler pset. 737 00:39:12,000 --> 00:39:15,000 Erinnern, dass es diese Datei namens speller.c, 738 00:39:15,000 --> 00:39:17,000 und es gab eine Datei namens dictionary.c. 739 00:39:17,000 --> 00:39:20,000 Was ich tat, war ich irgendwie verbrachte ein paar Minuten und ich verwandelte den C-Code 740 00:39:20,000 --> 00:39:23,000 PHP-Code, und wir werden nicht viel Zeit auf Speller 741 00:39:23,000 --> 00:39:26,000 denn wie in pset 5 Sie nicht wirklich brauchen, um 742 00:39:26,000 --> 00:39:29,000 verbringen viel Zeit auf Speller selbst, weil Ihre Aufmerksamkeit war auf Wörterbuch. 743 00:39:29,000 --> 00:39:32,000 >> Es genügt zu sagen, dass, wenn Sie durch Speller lesen, 744 00:39:32,000 --> 00:39:35,000 Diese Datei hier, es ist so ziemlich gleichbedeutend mit der C-Code 745 00:39:35,000 --> 00:39:37,000 gaben wir Ihnen für pset 5. 746 00:39:37,000 --> 00:39:39,000 Ich habe gerade einige $ an Orten aufgenommen. 747 00:39:39,000 --> 00:39:43,000 Ich habe bestimmte Funktion Namen geändert, wenn sie nicht in PHP existierte. 748 00:39:43,000 --> 00:39:45,000 Es gibt eine weitere Sache hier, preg_match, 749 00:39:45,000 --> 00:39:48,000 das ist ein wenig schicker Weg, etwas zu tun, aber wir kommen zurück, um die schließlich. 750 00:39:48,000 --> 00:39:51,000 Aber kurz gesagt, ist Speller nahezu identisch, und wenn man sich ganz unten 751 00:39:51,000 --> 00:39:54,000 was sie schließlich spuckt, ist das hier, 752 00:39:54,000 --> 00:39:57,000 falsch geschriebene Wörter, Wörter in das Wörterbuch, Wörter im Text. 753 00:39:57,000 --> 00:40:00,000 Alles klar, so was ist interessant, jetzt ist die folgende. 754 00:40:00,000 --> 00:40:05,000 An der Spitze der meine Datei Ich erfordern dictionary.php. 755 00:40:05,000 --> 00:40:09,000 Genau wie C hat # include PHP verfügt über eine spezielle Funktion namens erfordern 756 00:40:09,000 --> 00:40:14,000 dass so ziemlich dasselbe tut, erfordern eine Datei namens dictionary.php. 757 00:40:14,000 --> 00:40:18,000 Wie kann ich über die Implementierung pset 5 gehen? 758 00:40:18,000 --> 00:40:21,000 Lassen Sie mich gehen Sie vor und öffnen Sie eine Datei hier. 759 00:40:21,000 --> 00:40:24,000 Lassen Sie mich ein wenig Bezug hier. 760 00:40:24,000 --> 00:40:29,000 Und lassen Sie mich eine neue Datei erstellen und starten Aufruf dieser dictionary.php. 761 00:40:29,000 --> 00:40:31,000 Lassen Sie es mich in einem anderen Ordner, so dass wir tun können, damit zu leben. 762 00:40:31,000 --> 00:40:33,000 Und jetzt werde ich hineinzuzoomen 763 00:40:33,000 --> 00:40:37,000 Ich werde meine PHP-Datei mit Klammer php geschlossen Halterung starten. 764 00:40:37,000 --> 00:40:40,000 Und dann hier gab es einige Funktionen, die ich brauchte, um pset 5 zu implementieren, 765 00:40:40,000 --> 00:40:42,000 so lassen Sie mich beginnen Umsetzung einige von denen, 766 00:40:42,000 --> 00:40:47,000 so Funktionskontrolle, die ein Wort als Argument nehmen musste. 767 00:40:47,000 --> 00:40:49,000 Das machen wir und kommen zurück, um es in einem Augenblick. 768 00:40:49,000 --> 00:40:53,000 >> Es gab Funktion Last, die in dem, was als ein Argument hat? 769 00:40:53,000 --> 00:40:56,000 Wörterbuch, so dass die Datei, die ich wollte eigentlich zu laden. 770 00:40:56,000 --> 00:41:00,000 Es war die Funktion Größe, die nicht beteiligt waren keine Argumente 771 00:41:00,000 --> 00:41:04,000 und es war die Funktion, was war das andere? 772 00:41:04,000 --> 00:41:06,000 Entladen, was hast keine Argumente nicht. 773 00:41:06,000 --> 00:41:10,000 Dies sind die 4 Funktionen, die ich brauche, um jetzt in PHP implementieren möchten, 774 00:41:10,000 --> 00:41:13,000 und was ich zu tun ist, gehen Sie vor und tun dies. 775 00:41:13,000 --> 00:41:16,000 Viele von euch verwendet eine Hash-Tabelle in pset 5, 776 00:41:16,000 --> 00:41:21,000 so lassen Sie mich gehen Sie vor und erstellen eine Hash-Tabelle in PHP. 777 00:41:21,000 --> 00:41:23,000 Fertig. 778 00:41:23,000 --> 00:41:25,000 Das gibt mir eine Hash-Tabelle. Nun, warum? 779 00:41:25,000 --> 00:41:30,000 One, wird die Variable namens $ table, nur zu zaubern die Idee einer Hash-Tabelle. 780 00:41:30,000 --> 00:41:34,000 Die eckigen Klammern, aber erinnern, das darstellen, was? 781 00:41:34,000 --> 00:41:37,000 Ein Array, aber in PHP Arrays müssen nicht numerisch indiziert werden. 782 00:41:37,000 --> 00:41:41,000 Sie können auch assoziative Arrays, 783 00:41:41,000 --> 00:41:44,000 das heißt, Sie können beliebige Schlüssel und Werte haben. 784 00:41:44,000 --> 00:41:49,000 >> Vieles in pset 5, diejenigen von euch, die Hash-Tabelle Implementierungen haben möchte 785 00:41:49,000 --> 00:41:53,000 Sie wahrscheinlich das Wort eingefügt und dann steckte sie in eine Kette von verknüpften Listen, 786 00:41:53,000 --> 00:41:56,000 oder Sie den Wert true irgendwo etwas zu diesem Effekt gespeichert. 787 00:41:56,000 --> 00:41:59,000 Sie irgendwie erinnerte mich an die Tatsache, dass das Wort da war. 788 00:41:59,000 --> 00:42:01,000 Denn jetzt ist das werde meine Hashtabelle sein, 789 00:42:01,000 --> 00:42:06,000 und so nun über die Umsetzung der Check-Funktion gehen 790 00:42:06,000 --> 00:42:09,000 Ich brauche nur nach innen zu schauen dieser Hash-Tabelle 791 00:42:09,000 --> 00:42:11,000 und sehen, ob ein Wort ist da. 792 00:42:11,000 --> 00:42:15,000 Was ich zu tun ist, werde ich sagen, wenn- 793 00:42:15,000 --> 00:42:20,000 sagen wir isset, die eine PHP-Funktion, die buchstäblich nur bedeutet, ist der Schlüssel-Set, 794 00:42:20,000 --> 00:42:24,000 so isset ($ table [$ word] 795 00:42:24,000 --> 00:42:29,000 und wenn ja, true zurückgeben. 796 00:42:29,000 --> 00:42:32,000 Das war's. Das ist pset 5 in PHP. 797 00:42:32,000 --> 00:42:34,000 Nun, in aller Fairness sagen, okay. 798 00:42:34,000 --> 00:42:37,000 Else false zurück, so ist es nicht da. 799 00:42:37,000 --> 00:42:39,000 Was ist wirklich los? 800 00:42:39,000 --> 00:42:42,000 Nun, wenn Tabellen-oder Hash-Tabelle hier mehr allgemein 801 00:42:42,000 --> 00:42:46,000 ist ein assoziatives Array, dass Sie Index in es bedeutet, 802 00:42:46,000 --> 00:42:50,000 mit einem Wort wie "Wort", und Sie haben, um wieder einen gewissen Wert. 803 00:42:50,000 --> 00:42:52,000 >> Wir sind irgendwie immer einen Schritt voraus zu uns. 804 00:42:52,000 --> 00:42:56,000 Es wäre ganz nett, wenn wir geladen tatsächlich, die Datei zuerst, 805 00:42:56,000 --> 00:42:58,000 so Last ist nicht ganz so einfach, aber lassen Sie mich gehen Sie vor und schüren 806 00:42:58,000 --> 00:43:00,000  eine wirklich schnelle Umsetzung der Last. 807 00:43:00,000 --> 00:43:07,000 Lassen Sie mich gehen Sie vor und sagen Worte bekommt File-Wörterbuch. 808 00:43:07,000 --> 00:43:10,000 Die Datei-Funktion in PHP eine Datei öffnet 809 00:43:10,000 --> 00:43:12,000 und kehrt euch ein Array aller der Wörter in dieser Datei, 810 00:43:12,000 --> 00:43:14,000 nur gibt sie Ihnen. 811 00:43:14,000 --> 00:43:16,000 Das war ein großer Schmerz zu, nicht wahr? 812 00:43:16,000 --> 00:43:21,000 Jetzt foreach, das ist unser neues Konstrukt, foreach ($ words wie $ Wort). 813 00:43:21,000 --> 00:43:25,000 Diese Schleife wird beginnen Iteration über die Array-Wort 814 00:43:25,000 --> 00:43:30,000 und die $ word zuweisen jedes Wort in der Datei 815 00:43:30,000 --> 00:43:32,000 aus der ersten in die zweite zu der dritten zu der vierten ganzen Weg 816 00:43:32,000 --> 00:43:35,000 so dass ich nicht haben, um die lästigen [i]-Notation zu tun und dergleichen. 817 00:43:35,000 --> 00:43:38,000 Und was ich einfach gehen zu müssen für jedes dieser Wörter 818 00:43:38,000 --> 00:43:43,000 wird speichern Sie es in meinem Tisch durch Indizierung in die Tabelle 819 00:43:43,000 --> 00:43:47,000 und dann tut wahr, weil sich zu erinnern 820 00:43:47,000 --> 00:43:50,000 dass ein Wort in meinem Wörterbuch ist alles, was ich wirklich tun müssen, 821 00:43:50,000 --> 00:43:55,000 ist Art von Flip ein wenig und sagen, dass dies Wort in meinem Hash-Tabelle ist es wahr. 822 00:43:55,000 --> 00:43:58,000 Und wenn es nicht da ist, kann ich nicht explizit gestellt falsch, 823 00:43:58,000 --> 00:44:01,000 sonst müsste ich false für alle möglichen Wörter im Universum setzen. 824 00:44:01,000 --> 00:44:05,000 >> Es genügt für mich nur um einen Indexwert gesetzt 825 00:44:05,000 --> 00:44:09,000 true, wenn ein Wort ist eigentlich in meinem Hash-Tabelle. 826 00:44:09,000 --> 00:44:12,000 Nun, ich bin Schneiden ein paar Ecken hier, dass ich meine Hände winken für jetzt, 827 00:44:12,000 --> 00:44:15,000 aber jetzt ist die Ladefunktion ist getan. 828 00:44:15,000 --> 00:44:18,000 Ich lade alle Wörter aus der Datei in ein Array. 829 00:44:18,000 --> 00:44:21,000 I über diesem Array durchlaufen, und für jedes Wort in der Anordnung 830 00:44:21,000 --> 00:44:24,000 Ich stecke ihn in meine Hash-Tabelle mit 1 Zeile Code. 831 00:44:24,000 --> 00:44:26,000 Das macht Spaß. Sie wissen, wie wir können die Größe nun umsetzen? 832 00:44:26,000 --> 00:44:28,000 Nun, das ist Größe immer recht einfach, in Fairness. 833 00:44:28,000 --> 00:44:32,000 Hier können wir einfach zurück Zählung der Tabelle. 834 00:44:32,000 --> 00:44:34,000 Das ist ziemlich einfach auch die Anzahl der Dinge, die in der Tabelle. 835 00:44:34,000 --> 00:44:36,000 Das ist eigentlich ganz nicht die effizienteste. 836 00:44:36,000 --> 00:44:39,000 Ich sollte wohl eine Variable namens Größe, so dass wir sie tun können 837 00:44:39,000 --> 00:44:41,000 in konstanter Zeit, aber das ist ziemlich einfach. 838 00:44:41,000 --> 00:44:45,000 Oh, und dann entladen, wenn wir wirklich wollen, anal hier 839 00:44:45,000 --> 00:44:47,000 können wir sagen, das ist, wie Sie etwas entladen. 840 00:44:47,000 --> 00:44:49,000 Sie müssen nur die Variable gleich ein leeres Array, 841 00:44:49,000 --> 00:44:51,000 und es entledigt sich von allem, was da war. 842 00:44:51,000 --> 00:44:53,000 Keine Notwendigkeit, rufen Sie kostenlos. 843 00:44:53,000 --> 00:44:56,000 >> Auch habe ich einige Ecken schneiden, und ich für die Zuweisung Problem Satz 5 entschuldigen 844 00:44:56,000 --> 00:45:00,000 vielleicht in C, aber wenn wir jetzt gehen Sie vor und führen Sie dieses, 845 00:45:00,000 --> 00:45:02,000 Ich werde tatsächlich laufen die Version, die ich im Voraus geschrieben 846 00:45:02,000 --> 00:45:05,000 einfach so, dass ich machte keine syntaktischen Fehler überhaupt. 847 00:45:05,000 --> 00:45:08,000 Lassen Sie mich gehen Sie vor und führen Sie Speller. Die Verwendung ist dieselbe. 848 00:45:08,000 --> 00:45:12,000 Hier ist eine Wörterbuch-Datei, die nur enthält das Wort foo. 849 00:45:12,000 --> 00:45:15,000 Hier ist eine Textdatei, die enthält nur foo bar. 850 00:45:15,000 --> 00:45:19,000 Lassen Sie die Rechtschreibprüfung diese, so Speller, mit diesem Wörterbuch-Datei auf dieser Textdatei. 851 00:45:19,000 --> 00:45:21,000 Es ist ein falsch geschriebenes Wort, eine Bar und voila. 852 00:45:21,000 --> 00:45:23,000 Fertig mit pset 5. 853 00:45:23,000 --> 00:45:30,000 Werfen wir einen 5-minütigen Pause hier, und wir kommen wieder und kommen auf PHP. 854 00:45:30,000 --> 00:45:32,000 Alles klar, wir sind zurück. 855 00:45:32,000 --> 00:45:34,000 Lassen Sie uns wissen, hassen mich für eine Weile. 856 00:45:34,000 --> 00:45:37,000 Lassen Sie uns nun tatsächlich sehen, ob dies nicht eine positive 857 00:45:37,000 --> 00:45:39,000 die tatsächliche Umsetzung dieses Ding in PHP. 858 00:45:39,000 --> 00:45:43,000 Zugegeben, es dauerte 45 Sekunden, um zu realisieren. 859 00:45:43,000 --> 00:45:45,000 >> Aber lassen Sie uns jetzt gehen und laufen Dinge. 860 00:45:45,000 --> 00:45:49,000 Lassen Sie mich gehen Sie vor und führen Sie eine C-Version 861 00:45:49,000 --> 00:45:52,000 der Speller, und wir werden es auf einer der größten Dateien ausführen, 862 00:45:52,000 --> 00:45:54,000 was der King James Bibel. 863 00:45:54,000 --> 00:45:57,000 Und das ist hier in-lasst in unseren C-Ordner gehen, 864 00:45:57,000 --> 00:46:01,000 Speller auf der King James die fünfte. 865 00:46:01,000 --> 00:46:03,000 Eine Menge falsch geschriebene Wörter. 866 00:46:03,000 --> 00:46:06,000 Okay, das ist also die Ausgabe haben Sie sich wahrscheinlich, auch wenn die Zeiten ein wenig anders sind, 867 00:46:06,000 --> 00:46:09,000 wenn du alles richtig funktioniert, und so Zeit habe insgesamt um die Rechtschreibprüfung 868 00:46:09,000 --> 00:46:13,000 die King James Bibel war 0,38 Sekunden, so ziemlich gut mit, dass die Umsetzung. 869 00:46:13,000 --> 00:46:16,000 Nun lassen Sie mich in die PHP-Version, die wir gerade geschrieben haben zu gehen. 870 00:46:16,000 --> 00:46:18,000 Lassen Sie mich laufen Speller auf der King James. 871 00:46:18,000 --> 00:46:21,000 Whoops, ignorieren diesen Fehler. Ich bin im falschen Verzeichnis. 872 00:46:21,000 --> 00:46:24,000 Speller auf der King James die fünfte. 873 00:46:46,000 --> 00:46:48,000 Fast fertig. 874 00:46:48,000 --> 00:46:51,000 >> Okay, der scharfsinnige Beobachter erkennen, dass mehr als 3 Sekunden da. 875 00:46:51,000 --> 00:46:54,000 Das ist die wahre Laufzeit. 876 00:46:54,000 --> 00:46:58,000 Es stellt sich heraus, dass es Zeit braucht, um viel Text ausspucken 877 00:46:58,000 --> 00:47:00,000 wegen der Pufferung Probleme, aber lange Geschichte kurz, 878 00:47:00,000 --> 00:47:04,000 Das war 3,15 Sekunden der Maschine, CPU-Zeit, 879 00:47:04,000 --> 00:47:07,000 gegenüber dem, was es war vor einem Augenblick? 880 00:47:07,000 --> 00:47:09,000 Wie .3. 881 00:47:09,000 --> 00:47:11,000 Ich meine, es ist eine Größenordnung langsamer, also wo ist das 882 00:47:11,000 --> 00:47:14,000 lächerlich Abschwächung aus? 883 00:47:14,000 --> 00:47:17,000 Nun, wie der Fall mit fast jedem Design-Entscheidung die wir gemacht haben 884 00:47:17,000 --> 00:47:21,000 in der Klasse in den letzten 9 Wochen gibt es fast immer so Kompromiss. 885 00:47:21,000 --> 00:47:24,000 Manchmal nur zwischen Raum, manchmal zwischen Raum und Zeit, 886 00:47:24,000 --> 00:47:27,000 Raum, Zeit und Entwicklungsaufwand, und zwar hier, obwohl 887 00:47:27,000 --> 00:47:31,000 wir gerettet eine Menge Zeit, vielleicht potenziell 10-20-30 Stunden 888 00:47:31,000 --> 00:47:34,000 Entwicklungszeit die Umsetzung der Rechtschreibprüfung 889 00:47:34,000 --> 00:47:36,000 durch Schlagen Sie es in nur 45 Sekunden mit dieser Sprache 890 00:47:36,000 --> 00:47:40,000 der Preis zahlen ist, dass es um eine Größenordnung langsamer ist als ein Ergebnis, 891 00:47:40,000 --> 00:47:43,000 und dies ist in der Regel der Fall mit fast jedem interpretierte Sprache, 892 00:47:43,000 --> 00:47:46,000 PHP, Python, Ruby, Perl oder andere, wobei 893 00:47:46,000 --> 00:47:49,000 wenn du gehst, um es durch einen Interpreter ausgeführt sind und haben es zu lesen Code 894 00:47:49,000 --> 00:47:52,000 Zeile für Zeile von oben nach unten, von links nach rechts, 895 00:47:52,000 --> 00:47:55,000 das Mittelsmann wird einige Zeit seiner eigenen zu nehmen, 896 00:47:55,000 --> 00:47:59,000 und was du hier das Gefühl in den 3 Sekunden im Gegensatz zu 0,3 Sekunden 897 00:47:59,000 --> 00:48:02,000 ist die Tatsache, dass es diese Zwischenhändler, die buchstäblich zu interpretieren unseren Code hat 898 00:48:02,000 --> 00:48:05,000 Zeile für Zeile, und Gott bewahre, wenn Sie innerhalb einer Schleife sind 899 00:48:05,000 --> 00:48:08,000 mit einer riesigen Datei mit Hunderttausenden von Wörtern. 900 00:48:08,000 --> 00:48:11,000 >> Das Overhead wird addieren und summieren sich und addieren und summieren. 901 00:48:11,000 --> 00:48:16,000 Bei einem Werkzeug wie dieses, es ist wahrscheinlich nicht die beste Sprache, um für die Umsetzung verwenden 902 00:48:16,000 --> 00:48:20,000 eine Rechtschreibprüfung, wenn Unmittelbarkeit ist von Interesse für Ihre Benutzer und zu Ihnen. 903 00:48:20,000 --> 00:48:23,000 Aber der Luxus, den wir haben, in einem Augenblick, wenn Sie 904 00:48:23,000 --> 00:48:27,000 verwenden Sie eine Sprache wie PHP oder viel interpretierte Sprachen 905 00:48:27,000 --> 00:48:30,000 im Kontext des Internets, was das betrifft, muss man den Nutzen 906 00:48:30,000 --> 00:48:34,000 dass das Internet ist sehr viel langsamer als die meisten Computer. 907 00:48:34,000 --> 00:48:38,000 Sie haben ein GHz CPU in Ihrem Computer, 2 GHz, vielleicht sogar noch mehr in diesen Tagen. 908 00:48:38,000 --> 00:48:41,000 Aber die Realität ist im Internet gibt es eine hohe Latenz 909 00:48:41,000 --> 00:48:45,000 wobei für einen Browser auf einem Server sprechen, obwohl wir letzte Woche gesehen 910 00:48:45,000 --> 00:48:47,000 , dass ziemlich schnell ist, eine halbe Millisekunde oder so, 911 00:48:47,000 --> 00:48:51,000 Auch das summiert sich, und wenn Sie das Herunterladen Dinge wie ein Bild 912 00:48:51,000 --> 00:48:54,000 oder ein Facebook-Foto oder sich Instant Messages über Facebook Geschwätz, 913 00:48:54,000 --> 00:48:57,000 Gchat oder dergleichen, wobei alle diese Roundtrip-Zeiten 914 00:48:57,000 --> 00:49:00,000 zwischen dem Browser und dem Server Start addieren, 915 00:49:00,000 --> 00:49:03,000 was macht Ihr besondere Wahl der Sprache, in vielen Fällen 916 00:49:03,000 --> 00:49:07,000 nicht alles, was relevant, so dass Sie gut mit der eine etwas langsamere Sprache 917 00:49:07,000 --> 00:49:10,000 wie PHP oder Python oder Ruby 918 00:49:10,000 --> 00:49:13,000 aber für die gibt es riesige upsides um Sie und Ihre Kollegen 919 00:49:13,000 --> 00:49:17,000 und Ihre Freunde, weil Sie so, so viel schneller Dinge umsetzen können. 920 00:49:17,000 --> 00:49:20,000 Und außerdem haben Sie viel weniger Risiko für bestimmte Sicherheitslücken. 921 00:49:20,000 --> 00:49:22,000 Es gibt keine Hinweise in PHP. 922 00:49:22,000 --> 00:49:25,000 Es gibt keine seg Fehler, die Sie leicht zu induzieren 923 00:49:25,000 --> 00:49:27,000 in der gleichen Weise könnte man in C. 924 00:49:27,000 --> 00:49:29,000 Mit C, du bist ganz nah an der Hardware. 925 00:49:29,000 --> 00:49:33,000 Mit PHP und ähnliche Sprachen, du bist Art von höherer Ebene, so zu sprechen, 926 00:49:33,000 --> 00:49:37,000 mit einer Menge von Verteidigungsanlagen zwischen Ihnen und was ist eigentlich los 927 00:49:37,000 --> 00:49:39,000 im Inneren der Maschine, und es ist nur ein Kompromiss. 928 00:49:39,000 --> 00:49:42,000 >> Wir haben bis zu dem Punkt mit diesen modernen, Hochsprachen bekommen 929 00:49:42,000 --> 00:49:47,000 wie PHP, weil der Unterricht in Sprachen wie PHP in C gelernt 930 00:49:47,000 --> 00:49:50,000 Aber wenn Sie nicht verstehen, was geht schon unter der Haube die ganze Zeit 931 00:49:50,000 --> 00:49:53,000 man kann sicherlich nicht die richtigen Design-Entscheidungen, 932 00:49:53,000 --> 00:49:56,000 und sicherlich, wenn es um Arbeiten an einem Ort wie Facebook oder Google 933 00:49:56,000 --> 00:49:59,000 oder einer dieser Orte, die immer spielen mit großen Datenmengen 934 00:49:59,000 --> 00:50:01,000 auch wenn Sie zurückgehen und nicht PREMED und sind mit einigen MD arbeiten 935 00:50:01,000 --> 00:50:04,000 auf einigen großen Datensatz mit Patienten und Ärzten 936 00:50:04,000 --> 00:50:08,000 und dergleichen mit den richtigen Werkzeugen ist enorm überzeugende 937 00:50:08,000 --> 00:50:11,000 weil sonst die Analyse einiger Datensatz könnte Sekunden dauern, 938 00:50:11,000 --> 00:50:14,000 oder es könnte buchstäblich Stunden dauern. 939 00:50:14,000 --> 00:50:17,000 Dies ist nur ein Beispiel, nicht auf Sie, mit wie viel mehr Aufwand zu vereiteln 940 00:50:17,000 --> 00:50:21,000 war es in C, sondern Ihnen dabei helfen, dass wenn man etwas in C implementieren 941 00:50:21,000 --> 00:50:24,000 Sie wirklich zu verstehen oder in der Theorie, wirklich zu verstehen, 942 00:50:24,000 --> 00:50:28,000 wie alles oder tätig werden sollte, und Sie haben fast die volle Kontrolle 943 00:50:28,000 --> 00:50:31,000 über das, was los ist unter der Haube, und mit diesen höheren Programmiersprachen 944 00:50:31,000 --> 00:50:34,000 Sie haben mehr Kontrolle, um die Menschen, die sie erfunden zu verzichten 945 00:50:34,000 --> 00:50:37,000 und unterliegen mehr auf ihre Design-Entscheidungen als deins. 946 00:50:37,000 --> 00:50:41,000 Aber wenn wir davon ausgehen, dass die Leistung 947 00:50:41,000 --> 00:50:44,000 ist nicht ganz so wichtig, auf dem Web, weil dieser andere Fragen, 948 00:50:44,000 --> 00:50:47,000 nur Netzwerk-Geschwindigkeiten sind ein wenig langsamer als CPU-Geschwindigkeiten ohnehin 949 00:50:47,000 --> 00:50:50,000 so können wir uns sortieren leisten, eine etwas langsamere Sprache verwenden 950 00:50:50,000 --> 00:50:55,000 wenn die upsides sind, können wir die Dinge 10 mal schneller oder sogar noch mehr zu entwickeln. 951 00:50:55,000 --> 00:50:57,000 >> Mal sehen, wie wir beginnen können, mit diesem. 952 00:50:57,000 --> 00:51:00,000 Lassen Sie mich in einen Ordner gehen 953 00:51:00,000 --> 00:51:03,000 unter den heutigen Beispielen genannt frosh.ims, 954 00:51:03,000 --> 00:51:06,000 und dies wurde tatsächlich persönlich durch die Tatsache motiviert, dass das erste, was 955 00:51:06,000 --> 00:51:10,000 Ich schrieb für das Web Jahren nach der Einnahme von CS50 und CS51 956 00:51:10,000 --> 00:51:14,000 war eine Website für die Frosh IMs Programm Freshman intramuralen Sport, 957 00:51:14,000 --> 00:51:16,000 welche an der Zeit war dies genug Jahre her, dass zum Zeitpunkt 958 00:51:16,000 --> 00:51:19,000 es gab keine Website für das Programm, obwohl es einen Web, 959 00:51:19,000 --> 00:51:22,000 und stattdessen gab es eine Aufsichtsperson in Wigglesworth, wobei, wenn man wollte 960 00:51:22,000 --> 00:51:26,000 für Volleyball oder Fußball oder was auch immer registrieren Sie füllen ein Stück Papier. 961 00:51:26,000 --> 00:51:28,000 Sie würden dann über den Hof gehen. 962 00:51:28,000 --> 00:51:31,000 Sie würden dann an ihre Tür klopfen und Rutsche in die Tür oder die Hand auf die proctor 963 00:51:31,000 --> 00:51:34,000 ein Stück Papier mit Ihrem Namen darauf, ob Sie ein Team Kapitän sein, 964 00:51:34,000 --> 00:51:37,000 welche Sportart Sie tun wollte, und was dorm Sie waren in. 965 00:51:37,000 --> 00:51:39,000 Es war eine Art der alten Schule Art, die Dinge, und das war ein Paradebeispiel 966 00:51:39,000 --> 00:51:41,000 Gelegenheit, eine Menge von diesem Prozess zu automatisieren. 967 00:51:41,000 --> 00:51:43,000 Sie müssen nur auf die Website gehen. Sie geben etwas in. 968 00:51:43,000 --> 00:51:46,000 Sie erhalten eine Bestätigung per Email, und boom, sind Sie fertig. 969 00:51:46,000 --> 00:51:49,000 >> Dies war das erste, was ich tat, wenn auch in einer Sprache namens Pearl, 970 00:51:49,000 --> 00:51:52,000 aber es ist relativ einfach, in PHP zu tun, und dies ist eine Art repräsentativer 971 00:51:52,000 --> 00:51:55,000 der Probleme können Sie beginnen zu lösen, wenn man sich ausdrücken kann 972 00:51:55,000 --> 00:51:58,000 programmatisch und nicht auf Dinge wie Google Sites verlassen 973 00:51:58,000 --> 00:52:01,000 oder Excel-Tools, die Ihnen übergeben werden. 974 00:52:01,000 --> 00:52:03,000 You guys haben jetzt die Möglichkeit, Dinge wie diese zu tun. 975 00:52:03,000 --> 00:52:06,000 Dies ist ein super hässliche Version eines Formulars, 976 00:52:06,000 --> 00:52:09,000 aber lasst es einfach verwenden, für den Beginn des Gesprächs, wobei dies 977 00:52:09,000 --> 00:52:12,000 etwa was die Form aussah Jahren für uns 978 00:52:12,000 --> 00:52:14,000 damit die Menschen auf dem Web, um sich für Frosh IMs. 979 00:52:14,000 --> 00:52:18,000 Wir fragten nach einem Namen, eine Checkbox für, ob sie zum Kapitän werden wollte, 980 00:52:18,000 --> 00:52:21,000 männlich oder weiblich, und was dann dorm sie waren, 981 00:52:21,000 --> 00:52:23,000 und dann würden sie dieses Formular. 982 00:52:23,000 --> 00:52:27,000 Lassen Sie uns zuerst einen Blick unter die Haube an der HTML-Code, diese Webseite darstellt. 983 00:52:27,000 --> 00:52:31,000 Lassen Sie mich in froshims0 gehen, 984 00:52:31,000 --> 00:52:35,000 und als Flächenstillegung für pset 7 Ich bin für selbstverständlich nehmen 985 00:52:35,000 --> 00:52:37,000 die Verzeichnisse und die Ordner, die ich die Dinge bin in. 986 00:52:37,000 --> 00:52:40,000 Wir führen Sie durch, wo genau Zeug hat, um in das Gerät gehen, 987 00:52:40,000 --> 00:52:43,000 die mod Befehle, die Sie haben zu laufen, also nicht über all die Sorgen 988 00:52:43,000 --> 00:52:46,000 dumm Details Synchronisierung in der get-go hier. 989 00:52:46,000 --> 00:52:49,000 >> Alles klar, hier ist froshims0.php. 990 00:52:49,000 --> 00:52:52,000 Lassen Sie mich nach unten scrollen, und was ist neugierig hier 991 00:52:52,000 --> 00:52:56,000 dies ist eine PHP-Datei, aber was drin ist es, klar? 992 00:52:56,000 --> 00:52:59,000 Es ist eine ganze Reihe von HTML, und in der Tat, PHP Ursprünge 993 00:52:59,000 --> 00:53:02,000 wirklich für ein Web-centric Sprache. 994 00:53:02,000 --> 00:53:04,000 Vorhin haben wir benutzt, um das Bier beispielsweise zu implementieren, 995 00:53:04,000 --> 00:53:07,000 die Bedingungen beispielsweise das hallo Beispiel, und das ist in Ordnung. 996 00:53:07,000 --> 00:53:11,000 Sie können PHP als Skriptsprache verwenden 997 00:53:11,000 --> 00:53:15,000 wo ein Skript ist wirklich nur die Nomenklatur, die einem quick and dirty-Programm 998 00:53:15,000 --> 00:53:19,000 oder etwas, das Sie schreiben in einer Skript-oder allgemein einer interpretierten Sprache. 999 00:53:19,000 --> 00:53:22,000 PHP ist super nützlich für das, weil Sie gesehen haben, wie schnell 1000 00:53:22,000 --> 00:53:24,000 relativ können wir schüren Programme in PHP. 1001 00:53:24,000 --> 00:53:27,000 Aber es war wirklich entworfen, um für das Web verwendet werden, 1002 00:53:27,000 --> 00:53:31,000 und für das Web in dem Sinne, dass sich feststellen, hier am Anfang der Datei entwickelt 1003 00:53:31,000 --> 00:53:34,000 Ich habe mit 00:53:38,000 Dann habe ich ein paar nutzlose Kommentare, selbstverständlich, aber dann schließe ich PHP-Modus. 1005 00:53:38,000 --> 00:53:41,000 Aber dann habe ich in den HTML-Modus fallen. 1006 00:53:41,000 --> 00:53:45,000 >> Was ist interessant über PHP ist, obwohl die Datei endet in. Php 1007 00:53:45,000 --> 00:53:48,000 es ist in der Regel soll mit HTML miteinander vermischt werden, 1008 00:53:48,000 --> 00:53:50,000 einige PHP-Code, einige HTML. 1009 00:53:50,000 --> 00:53:53,000 Und wir werden irgendwann sehen, dass wir beginnen können, zu denen neben necken 1010 00:53:53,000 --> 00:53:56,000 und halten unsere HTML getrennt von unserem PHP überhaupt, 1011 00:53:56,000 --> 00:53:59,000 aber die Ursprünge der PHP wirklich, um Ihnen diese Flexibilität, 1012 00:53:59,000 --> 00:54:02,000 , dass, wenn Sie etwas HTML wollen nur schreiben, und das wird 1013 00:54:02,000 --> 00:54:04,000 auszuspucken identisch mit dem Browser. 1014 00:54:04,000 --> 00:54:07,000 Aber wenn Sie etwas Programmierung Technik, 1015 00:54:07,000 --> 00:54:12,000 einige Programmiercode, können Sie auch steckte es in die exakt gleiche Datei, wie wir bald sehen werden. 1016 00:54:12,000 --> 00:54:14,000 Hier ist mein HTML. 1017 00:54:14,000 --> 00:54:16,000 Ich habe einen Titel dieses für Frosh IMs. 1018 00:54:16,000 --> 00:54:20,000 Ich habe einen Body-Tag, der einige CSS auf sie bekommen hat bis Mitte alles in der Mitte, 1019 00:54:20,000 --> 00:54:23,000 und dann hier unten Ich habe ein Formular, die offenbar werde vorgelegt werden wird 1020 00:54:23,000 --> 00:54:27,000 um eine neue Datei namens register0.php, so dass wir in einem Moment sehen. 1021 00:54:27,000 --> 00:54:31,000 Es ist mit einer Methode namens Post, die wir zurückkommen werden, um als gut. 1022 00:54:31,000 --> 00:54:34,000 Dann habe ich einige Form-Eingänge, einen sogenannten Namen, deren Typ Text, 1023 00:54:34,000 --> 00:54:37,000 ein, dessen Name Kapitän, dessen Typ Checkbox 1024 00:54:37,000 --> 00:54:40,000 und dies haben wir es nicht gesehen, aber es tut genau das, was es sagt. 1025 00:54:40,000 --> 00:54:42,000 Sie erhalten eine Checkbox anstelle eines Textfelds. 1026 00:54:42,000 --> 00:54:46,000 Ab hier haben Sie einen Radio-Button, der eine dieser kreisförmigen Tasten ist 1027 00:54:46,000 --> 00:54:48,000 Sie können entweder dieses oder jenes. 1028 00:54:48,000 --> 00:54:52,000 >> Beachten Sie, es ist bewusste, dass ich beide Optionsfelder gab den Namen des Geschlechts. 1029 00:54:52,000 --> 00:54:55,000 Dies ist, wie Sie gegenseitiger Ausschluss wobei Sie zu bekommen, klicken 1030 00:54:55,000 --> 00:54:58,000 entweder diese oder jenes, und durch Anklicken des anderen 1031 00:54:58,000 --> 00:55:01,000 Es deaktiviert das andere, so dass Sie haben, um ihnen den gleichen Namen 1032 00:55:01,000 --> 00:55:03,000 wenn man sie sich gegenseitig ausschließen, wie das wollen. 1033 00:55:03,000 --> 00:55:07,000 Und dann für Wohnheim, weiß ich nicht denke, wir haben dies noch nicht gesehen, aber es ist ein Select-Menü, ein Drop-Down-Menü. 1034 00:55:07,000 --> 00:55:09,000 Der Tag dafür ist select. 1035 00:55:09,000 --> 00:55:11,000 Sie geben Sie dem Dropdown-Menü einen Namen, 1036 00:55:11,000 --> 00:55:13,000 und dann haben Sie eine ganze Reihe von diesen Optionen. 1037 00:55:13,000 --> 00:55:16,000 Die erste, nur für Ästhetik, ist eine leere Zeichenfolge. 1038 00:55:16,000 --> 00:55:20,000 Ich wollte nur das Drop-Down zu sein standardmäßig leer, 1039 00:55:20,000 --> 00:55:22,000 und dann gibt es Apley, Canaday, Grays, und so weiter. 1040 00:55:22,000 --> 00:55:24,000 Und bemerken die Dichotomie hier. 1041 00:55:24,000 --> 00:55:27,000 Die Option in der Dropdown einen Wert hat, 1042 00:55:27,000 --> 00:55:30,000 aber dann hat es eine Mensch-freundlichen Namen, die in diesem Beispiel 1043 00:55:30,000 --> 00:55:33,000 identisch ist, aber wenn wir wirklich wollten, dass anal könnten wir 1044 00:55:33,000 --> 00:55:36,000 der Wert dieser Dropdown nur die kurze Version sein, 1045 00:55:36,000 --> 00:55:39,000 Grays, aber wir konnten wirklich sagen Grays Halle, dass der Mensch tatsächlich sieht, 1046 00:55:39,000 --> 00:55:43,000 aber das ist nicht so interessant, so dass ich einfach immer einfach und machte sie identisch. 1047 00:55:43,000 --> 00:55:46,000 Dann unten am Ende haben wir ein Submit-Button 1048 00:55:46,000 --> 00:55:49,000 was haben wir gesehen, aber ich merke, nur gab es ein anderes Wort. 1049 00:55:49,000 --> 00:55:53,000 Statt CS50 Suche gab ich das Etikett "Registrieren". 1050 00:55:53,000 --> 00:55:56,000 >> Das Ergebnis ist diese Webseite hier, und wieder 1051 00:55:56,000 --> 00:56:00,000 Woher kommt diese eingereicht werden? 1052 00:56:00,000 --> 00:56:04,000 Es wird bis zu einem gewissen Datei, wird der Wert des action-Attribut vorgelegt, 1053 00:56:04,000 --> 00:56:07,000 das war register0.php. 1054 00:56:07,000 --> 00:56:09,000 Mal sehen, was passiert eigentlich hier. 1055 00:56:09,000 --> 00:56:13,000 Lassen Sie mich gehen Sie vor und füllen Sie dieses Formular, sagen David, 1056 00:56:13,000 --> 00:56:16,000 männlich, Matthews, und dann werde ich sagen registrieren. 1057 00:56:16,000 --> 00:56:18,000 Lassen Sie mich Verkleinern und klicken Sie auf registrieren. 1058 00:56:18,000 --> 00:56:22,000 Okay, so Art von nutzlos, aber lasst uns sehen, was eigentlich los ist. 1059 00:56:22,000 --> 00:56:26,000 Beachten Sie, dass die URL geändert hat, um register0.php sein. 1060 00:56:26,000 --> 00:56:34,000 Was ist neugierig abwesend aus dem URL, obwohl, obwohl wir gerade übermittelt ein Formular? 1061 00:56:34,000 --> 00:56:37,000 [Unverständlich Studenten Antwort] 1062 00:56:37,000 --> 00:56:39,000 Okay, das ist nur Chrome ist benutzerfreundlich in diesen Tagen. 1063 00:56:39,000 --> 00:56:42,000 Das ist tatsächlich da ist. Sie nur verstecken, um Speicherplatz zu sparen. 1064 00:56:42,000 --> 00:56:44,000 Aber guter Gedanke, gute Gedanken. 1065 00:56:44,000 --> 00:56:46,000 Zum anderen Ende der URL, obwohl, was ist dabei? Yeah. 1066 00:56:46,000 --> 00:56:48,000 [Student] Der Query-String. 1067 00:56:48,000 --> 00:56:51,000 Der Abfrage-String, so von unserem einfache Google-Suche Beispiele erinnern. 1068 00:56:51,000 --> 00:56:54,000 Sobald ich auf die Schaltfläche Senden der URL 1069 00:56:54,000 --> 00:57:00,000 nahm mich mit zu Google, aber dann gab es? q = Informatik oder was auch immer hatte ich getippt in. 1070 00:57:00,000 --> 00:57:04,000 Das ist, weil wir die get-Methode verwendet bei der Suche Beispiel. 1071 00:57:04,000 --> 00:57:06,000 >> Dieses Mal haben wir mit welcher Methode sind statt? 1072 00:57:06,000 --> 00:57:10,000 Stellen, und eine der unmittelbaren Unterscheidungen 1073 00:57:10,000 --> 00:57:14,000 zwischen GET und POST ist, dass Post nicht tut die Eingabe des Benutzers in der URL. 1074 00:57:14,000 --> 00:57:16,000 Er versteckt es. Es ist immer noch sendet. 1075 00:57:16,000 --> 00:57:19,000 In der Tat, was wir im Browser hier sehen, wie wir in einem Moment werde zeigen, 1076 00:57:19,000 --> 00:57:22,000 Dazu suchen Sie in register0 wird ich nur sehen, den Inhalt 1077 00:57:22,000 --> 00:57:25,000 des Arrays, die vom Browser an den Server gesendet wurden. 1078 00:57:25,000 --> 00:57:29,000 Aber die URL nicht ein?, Hat keine Stichworte 1079 00:57:29,000 --> 00:57:31,000 oder Werte in sie, und warum ist das so? 1080 00:57:31,000 --> 00:57:35,000 Nun, ermöglicht Beitrag, den Sie noch Absenden von Daten aus dem Formular an einen Server, 1081 00:57:35,000 --> 00:57:38,000 aber es ist es nicht in der URL, so, welche Art von Informationen Beitrag ist 1082 00:57:38,000 --> 00:57:41,000 besonders geeignet für vielleicht, wenn Sie den Benutzer auffordert, sind die 1083 00:57:41,000 --> 00:57:44,000 Geben Sie am Eingang zu einem Formular? 1084 00:57:44,000 --> 00:57:48,000 Etwas wie ein Passwort, etwas, was sonst? 1085 00:57:48,000 --> 00:57:50,000 Kreditkartennummern. 1086 00:57:50,000 --> 00:57:53,000 Alles, was wenig empfindlichen Sie wahrscheinlich nicht wollen, landen in der URL 1087 00:57:53,000 --> 00:57:56,000 wenn auch nur, weil es bedeutet, dass Ihre Mitbewohner oder ein Familienmitglied kann nur durch troll 1088 00:57:56,000 --> 00:57:59,000 Ihre Internet-Geschichte und dann buchstäblich sehen Ihre Passwörter, 1089 00:57:59,000 --> 00:58:02,000 buchstäblich sehen Ihre Kreditkarten-Nummern, da die meisten Browser 1090 00:58:02,000 --> 00:58:05,000 Speichern in der Geschichte, was URLs du bei gewesen, 1091 00:58:05,000 --> 00:58:09,000 also, wenn nur, weil das wäre eine schlechte Idee sein. 1092 00:58:09,000 --> 00:58:11,000 Mit Post verbirgt, die detailliert von dem Benutzer. 1093 00:58:11,000 --> 00:58:14,000 >> Auch, wie Sie lade ein Foto auf Facebook? 1094 00:58:14,000 --> 00:58:17,000 Nun, die nur 2 Mechanismen, die Sie auch wirklich nutzen kann, 1095 00:58:17,000 --> 00:58:21,000 obwohl es noch ein paar andere mehr geheimnisvoll diejenigen, wird GET und POST. 1096 00:58:21,000 --> 00:58:26,000 Wie können Sie lade ein Foto über eine URL? 1097 00:58:26,000 --> 00:58:28,000 Sie können tatsächlich tun. 1098 00:58:28,000 --> 00:58:30,000 Sie können eine JPEG-oder Bitmap-oder GIF und Sie können es in hexadezimaler stellen 1099 00:58:30,000 --> 00:58:32,000 oder so genannte Basis 64. 1100 00:58:32,000 --> 00:58:35,000 Statt der Basis 16 Sie Base 64, die im Wesentlichen aussieht 1101 00:58:35,000 --> 00:58:38,000 ASCII-Zeichen, und man kann tatsächlich lade ein Foto über eine URL 1102 00:58:38,000 --> 00:58:41,000 Nach einem Fragezeichen, aber es gibt in der Regel Größenbeschränkungen. 1103 00:58:41,000 --> 00:58:44,000 Die meisten Browser zwingen URLs auf nicht mehr als 1.000 Zeichen sein, 1104 00:58:44,000 --> 00:58:47,000 vielleicht 2.000 Zeichen oder dergleichen, so kann man nicht laden 1105 00:58:47,000 --> 00:58:50,000 eine 10 MB Facebook Foto. 1106 00:58:50,000 --> 00:58:54,000 Denn, dass Sie Post verwenden, wie gut, so jetzt bekommen setzt die Parameter in der URL, 1107 00:58:54,000 --> 00:58:57,000 das ist schön und manchmal nützlich, aber für etwas sensibler oder große 1108 00:58:57,000 --> 00:58:59,000 Beitrag ist der Weg zu gehen. 1109 00:58:59,000 --> 00:59:02,000 Was ist register0 eigentlich hier? 1110 00:59:02,000 --> 00:59:05,000 Nun, wenn ich öffnen register0 beachten Sie, dass dies ein super einfaches Seite ist, 1111 00:59:05,000 --> 00:59:09,000 aber es zeigt die Tatsache, dass ich zusammen mischen, zum Guten oder zum Schlechten, 1112 00:59:09,000 --> 00:59:12,000 HTML mit PHP. 1113 00:59:12,000 --> 00:59:15,000 Das gesamte Datei, außer für die Kommentare an der Spitze, sind HTML- 1114 00:59:15,000 --> 00:59:19,000 Ausnahme für diesen Kerl hier. 1115 00:59:19,000 --> 00:59:22,000 >> Beachten Sie in der Mitte von meinem PHP-Code, 1116 00:59:22,000 --> 00:59:26,000 in der Mitte meines HTML, habe ich eine Art temporär 1117 00:59:26,000 --> 00:59:28,000 eingegebenen PHP-Modus. 1118 00:59:28,000 --> 00:59:31,000 Ich rufe eine spezielle Funktion namens Print r. 1119 00:59:31,000 --> 00:59:34,000 Es bedeutet, zu drucken rekursiv, und was es tut, ist es rekursiv druckt 1120 00:59:34,000 --> 00:59:38,000 was variable Sie es übergeben, Semikolon, Ausfahrt PHP-Modus. 1121 00:59:38,000 --> 00:59:40,000 Und das pre tag gibt Ihnen pre-formatierten Text, 1122 00:59:40,000 --> 00:59:43,000 mono Raum Text, so dass jeder Raum, den Sie tatsächlich sehen. 1123 00:59:43,000 --> 00:59:46,000 Es verschwindet nicht. Was ist post? 1124 00:59:46,000 --> 00:59:48,000 Nun, was ist interessant und überzeugend über PHP 1125 00:59:48,000 --> 00:59:52,000 ist, dass, wenn Sie ein Formular mit get oder post 1126 00:59:52,000 --> 00:59:56,000 alles, was Sie von einem Browser eingereicht werden 1127 00:59:56,000 --> 01:00:00,000 PHP selbst herausfindet, was diese Schlüssel-Wert-Paare sind, 1128 01:00:00,000 --> 01:00:02,000 Zahlen heraus, ob es gleich Zeichen, Zahlen heraus, ob es ein Fragezeichen. 1129 01:00:02,000 --> 01:00:07,000 Es macht die ganze harte Arbeit für Sie, und dann gibt dir ein assoziatives Array 1130 01:00:07,000 --> 01:00:10,000 enthält alles, was der Benutzer in das Formular eingegeben. 1131 01:00:10,000 --> 01:00:12,000 Na ja, in welchen Feldern diese Form haben? 1132 01:00:12,000 --> 01:00:14,000 >> Es hatte 4 Felder. 1133 01:00:14,000 --> 01:00:16,000 Einer war ein Textfeld namens name. 1134 01:00:16,000 --> 01:00:18,000 Einer war ein Kontrollkästchen mit der Bezeichnung Kapitän. 1135 01:00:18,000 --> 01:00:22,000 Einer war ein Radio-Button aufgerufen Geschlecht, 1136 01:00:22,000 --> 01:00:24,000 und einer war ein Drop-down-Menü aufgerufen Wohnheim, 1137 01:00:24,000 --> 01:00:27,000 so feststellen, wenn ich rekursiv drucken 1138 01:00:27,000 --> 01:00:29,000 der Inhalt dieser speziellen Variablen. 1139 01:00:29,000 --> 01:00:34,000 Dies ist eine besondere globale Variable namens buchstäblich $ _POST, in Großbuchstaben. 1140 01:00:34,000 --> 01:00:39,000 Dies ist eine besondere globale Variable, dass PHP nur für Sie erstellt 1141 01:00:39,000 --> 01:00:42,000 und Hände, so dass Sie Zugriff auf alles, was 1142 01:00:42,000 --> 01:00:45,000 das war über ein Formular von einem Benutzer übermittelte. 1143 01:00:45,000 --> 01:00:48,000 Und indem Druck r auf it-Sie würden dies nicht in einer normalen Anwendung. 1144 01:00:48,000 --> 01:00:50,000 Wir tun dies, um in dieser Variablen zu sehen, 1145 01:00:50,000 --> 01:00:53,000 und was drin ist es gut, 4 Tasten, 1146 01:00:53,000 --> 01:00:56,000 4 http-Parameter, so zu sprechen, 1147 01:00:56,000 --> 01:00:59,000 Namen, Kapitän, Geschlecht, Wohnheim, und dann die Werte, die der Benutzer 1148 01:00:59,000 --> 01:01:01,000 tippte mit einer Ausnahme. 1149 01:01:01,000 --> 01:01:03,000 Ich habe Typ D-A-V-I-D. 1150 01:01:03,000 --> 01:01:05,000 Ich habe die Box, aber für Männer, die offenbar vorgelegt einen Wert 1151 01:01:05,000 --> 01:01:07,000 nur m prägnante sein. 1152 01:01:07,000 --> 01:01:10,000 >> Wenn ich Matthews gewählt, das ist der Wert, wurde ausgewählt, 1153 01:01:10,000 --> 01:01:12,000 und dies ist ein wenig dumm, aber es ist die Konvention. 1154 01:01:12,000 --> 01:01:17,000 Wenn ich das Feld ein Wert von ein, überprüft "on" wurde für das Kontrollkästchen eingereicht. 1155 01:01:17,000 --> 01:01:21,000 Wenn ich es nicht überprüft hätte, wäre kein Wert gesendet wurde immer haben. 1156 01:01:21,000 --> 01:01:26,000 Dies wird nur geben uns Einblicke in das, was drin ist dieser speziellen globalen Variablen, 1157 01:01:26,000 --> 01:01:29,000 und es ist so speziell, dass es heißt ein super globale Variable. 1158 01:01:29,000 --> 01:01:33,000 Es existiert überall für Sie in Ihrem Code, so dass Sie tatsächlich zugreifen kann. 1159 01:01:33,000 --> 01:01:36,000 Dies ist nicht so, dass überzeugende, also lasst uns tatsächlich nutzen die Super globalen 1160 01:01:36,000 --> 01:01:38,000 und tatsächlich versuchen, jemanden zu registrieren. 1161 01:01:38,000 --> 01:01:41,000 In froshims1 Ich werde eine Änderung vornehmen. 1162 01:01:41,000 --> 01:01:44,000 Ich ändere die Aktion register1.php sein, 1163 01:01:44,000 --> 01:01:46,000 und ich mache eine andere Sache. 1164 01:01:46,000 --> 01:01:48,000 Ich war ein bisschen von der Qualität meiner Webseite gibt es peinlich. 1165 01:01:48,000 --> 01:01:52,000 Es ist ziemlich scheußlich, ehrlich gesagt, so stellt sich heraus, 1166 01:01:52,000 --> 01:01:56,000 Sie können sehr leicht die Verwendung im Web 1167 01:01:56,000 --> 01:01:59,000 anderer Leute JavaScript-Code anderer Leute CSS 1168 01:01:59,000 --> 01:02:02,000 dass sie geschrieben haben und Open Source und zur Verfügung wie eine Bibliothek, 1169 01:02:02,000 --> 01:02:06,000 so zu sprechen, und zum Beispiel, hier bin ich mit einem frei verfügbaren Bibliothek, 1170 01:02:06,000 --> 01:02:08,000 eine Reihe von Codes, dass jemand anderes geschrieben hat. 1171 01:02:08,000 --> 01:02:11,000 >> Twitter passiert, um diesen Code zu schreiben, und es heißt die Bootstrap-Bibliothek, 1172 01:02:11,000 --> 01:02:15,000 und es ist nur ein Haufen von CSS-Stylesheets, ein Haufen. CSS-Dateien 1173 01:02:15,000 --> 01:02:19,000 dass jemand anderes geschrieben und herausgefunden, wie um alles nett und hübsch 1174 01:02:19,000 --> 01:02:22,000 so dass Leute wie wir können ein bisschen weniger Sorgen über Ästhetik und konzentrieren sich viel mehr 1175 01:02:22,000 --> 01:02:24,000 auf der Logik und der tatsächlichen Programmierung. 1176 01:02:24,000 --> 01:02:30,000 Durch Verknüpfung mit diesem Tag, die gleich tag Ich erinnere mich zum styles3.css früher ist, 1177 01:02:30,000 --> 01:02:34,000 Ich habe jetzt Zugang zu einer Datei namens bootstrap.min.css. 1178 01:02:34,000 --> 01:02:37,000 Min bedeutet nur, sie haben es minimierte und sie haben losgeworden alle Leerzeichen und so weiter 1179 01:02:37,000 --> 01:02:40,000 nur um sicherzustellen, dass sie nicht senden Sie mir mehr bytes, als ich tatsächlich benötigen. 1180 01:02:40,000 --> 01:02:45,000 Aber da ist ein ganzes Bündel von CSS, so dass, wenn ich öffne nun die Version 1 des Frosh IMs 1181 01:02:45,000 --> 01:02:49,000 feststellen, dass meine Datei auf jeden Fall schöner ist. 1182 01:02:49,000 --> 01:02:54,000 Jetzt ist es noch immer nur schwarz und weiß, aber feststellen, dass nur mit Hilfe ihrer Stylesheet 1183 01:02:54,000 --> 01:02:58,000 und die Verwendung bestimmter Funktionen der es auf meine Form ist es nicht erstaunlich, 1184 01:02:58,000 --> 01:03:01,000 aber es ist definitiv sauberer als es vorher war, und der Projektor macht es nicht Gerechtigkeit. 1185 01:03:01,000 --> 01:03:05,000 Es gibt kleine graue Linien um die Tasten und um das Textfeld hier, 1186 01:03:05,000 --> 01:03:07,000 aber es ist definitiv sauberer als es vorher war. 1187 01:03:07,000 --> 01:03:09,000 >> Jetzt, in Fairness, musste ich ändere meine Markup ein bisschen. 1188 01:03:09,000 --> 01:03:12,000 Dies ist die Version 1, und feststellen, dass ich ein paar neue Tags verwendet, 1189 01:03:12,000 --> 01:03:17,000 und ehrlich gesagt, hatte ich keine Ahnung, wie dies zu tun, bis ich die Dokumentation zu lesen 1190 01:03:17,000 --> 01:03:20,000 für Twitter Bootstrap-Bibliothek, und sie erzählte mir, wenn Sie unsere Bibliothek nutzen wollen 1191 01:03:20,000 --> 01:03:23,000 verwenden Sie ein fieldset-Element in Ihrem Formular, 1192 01:03:23,000 --> 01:03:27,000 setzen Sie das Wort neben einem Feld innerhalb eines Etiketts tag zeigen, 1193 01:03:27,000 --> 01:03:30,000 dann geben Sie Ihre Eingabe eines Namens, wie zuvor, 1194 01:03:30,000 --> 01:03:34,000 und dann das Kontrollkästchen, nicht nur Sie wickeln Sie es in einem Label-Element, 1195 01:03:34,000 --> 01:03:36,000 Sie so etwas wie eine Klasse, so haben wir das nicht schon einmal gesehen, 1196 01:03:36,000 --> 01:03:39,000 aber du wirst dies in einem pset 7-Shorts zu sehen. 1197 01:03:39,000 --> 01:03:43,000 Eine Klasse in CSS können Sie etwas tun, sehr ähnlich zu der ID, 1198 01:03:43,000 --> 01:03:46,000 aber bevor, wenn wir hatten eine ID mit dem Symbol # 1199 01:03:46,000 --> 01:03:48,000 Das war für eine und nur eine Element. 1200 01:03:48,000 --> 01:03:51,000 Was ist schön über eine Klasse ist, dass mehrere Elemente den gleichen Klasse haben 1201 01:03:51,000 --> 01:03:54,000 oder die gleiche CSS Sachen angewendet. 1202 01:03:54,000 --> 01:03:57,000 >> Aber noch einmal, sich mehr auf die in der kurzen und der Rest dieses nur kopieren und einfügen 1203 01:03:57,000 --> 01:04:00,000 aus ihrer Dokumentation, wo ich soeben einen Label hier und da. 1204 01:04:00,000 --> 01:04:03,000 Und am Ende, denn ich habe den Link tag an der Spitze enthalten, 1205 01:04:03,000 --> 01:04:06,000 sieht alles schöner automatisch 1206 01:04:06,000 --> 01:04:10,000 indem Sie einfach mit bis meine Seite in einer Weise, dass markiert 1207 01:04:10,000 --> 01:04:12,000 Twitter erwartet, und es gibt so viele verschiedene Möglichkeiten 1208 01:04:12,000 --> 01:04:14,000 dies zu tun, und das ist in der Tat sehr angemessen. 1209 01:04:14,000 --> 01:04:17,000 An diesem Punkt in dem Semester, wie Sie in pset 7 der spec sehen, 1210 01:04:17,000 --> 01:04:20,000 Googeln um, das Lesen auf Bibliotheken, die mit anderen Menschen CSS 1211 01:04:20,000 --> 01:04:23,000 und JavaScript zu lösen zusätzlichen Problemen 1212 01:04:23,000 --> 01:04:26,000 Satz für das Problem selbst wird sicher gefördert und ist der Weg 1213 01:04:26,000 --> 01:04:29,000 das Web gebaut ist in diesen Tagen, indem sie sich auf andere Menschen auf die Schultern 1214 01:04:29,000 --> 01:04:32,000 so dass man wirklich auf den neuen und interessanten Probleme zu konzentrieren. 1215 01:04:32,000 --> 01:04:34,000 Aber lasst uns jetzt darauf konzentrieren, wieder die Logik. 1216 01:04:34,000 --> 01:04:38,000 >> Das war ein Abstecher auf die Ästhetik nur um zu zeigen Ihnen die Richtung, in die man gehen kann. 1217 01:04:38,000 --> 01:04:40,000 Ich werde wieder zurück zu den hässlicher ein für jetzt, nur weil 1218 01:04:40,000 --> 01:04:44,000 es gibt keine Ablenkungen mit Twitter Zeug, und lassen Sie mich gehen Sie vor und eröffnen 1219 01:04:44,000 --> 01:04:51,000 froshims2, was wiederum nur dadurch unterscheidet, mit der Maßnahme, register2.php, 1220 01:04:51,000 --> 01:04:55,000 und lassen Sie uns einen Blick darauf, was die Wirkung ist hier. 1221 01:04:55,000 --> 01:04:57,000 Lassen Sie mich gehen Sie vor und geben Sie in David. 1222 01:04:57,000 --> 01:04:59,000 Ich werde nicht Kapitän dieser Zeit. 1223 01:04:59,000 --> 01:05:01,000 Ich werde sagen, männlich, Matthews, Register. 1224 01:05:01,000 --> 01:05:05,000 Verdammt. Okay, das ist eine Schraube auf meiner Seite. 1225 01:05:05,000 --> 01:05:07,000 Stand-by. 1226 01:05:07,000 --> 01:05:17,000 Register2, Zeile 22, wenn sie leer oder-leid. 1227 01:05:17,000 --> 01:05:19,000 Lasst uns neu zu laden. 1228 01:05:19,000 --> 01:05:22,000 Okay, nach dem Absenden dieses Formulars, was gerade passiert? 1229 01:05:22,000 --> 01:05:25,000 I in David eingegeben, geprüft männlich, klickten Matthews, Register. 1230 01:05:25,000 --> 01:05:27,000 Sie registriert sind. (Na ja, nicht wirklich.) 1231 01:05:27,000 --> 01:05:32,000 Dies ist eindeutig ein Schritt mehr als nur Ausdruck der Inhalt einer Variablen, 1232 01:05:32,000 --> 01:05:34,000 aber was ist diese Datei eigentlich? 1233 01:05:34,000 --> 01:05:37,000 In register2.php 1234 01:05:37,000 --> 01:05:40,000 bemerkt, dass ich einige neue Code. 1235 01:05:40,000 --> 01:05:44,000 Innerhalb von meinem Körper tag Ich habe im Wesentlichen eine if else konstruieren, 1236 01:05:44,000 --> 01:05:47,000 sondern weil ich die Vermischung dieser mit einigen HTML 1237 01:05:47,000 --> 01:05:51,000 Ich habe zu betreten und verlassen PHP-Modus hin und her, also lasst uns sehen, was ich tue. 1238 01:05:51,000 --> 01:05:55,000 >> In der ersten Zeile hier ich sage, wenn es der Fall ist 1239 01:05:55,000 --> 01:06:00,000 dass die Post Super-global ist für den Schlüssel des Namens leer, 1240 01:06:00,000 --> 01:06:04,000 so in anderen Worten, wenn der Benutzer nicht geben mir einen Wert für Namen in der Form, 1241 01:06:04,000 --> 01:06:07,000 dann leer wird return true, weil der Wert ist leer. 1242 01:06:07,000 --> 01:06:11,000 Or-bemerken, die vertikalen Balken-if gender ist leer 1243 01:06:11,000 --> 01:06:15,000 Innere dieser speziellen globalen Super, was wiederum stellt den Inhalt der Form, 1244 01:06:15,000 --> 01:06:19,000 oder das Wohnheim leer ist, dann werde ich voran gehen und schreien den Benutzer. 1245 01:06:19,000 --> 01:06:22,000 Wie? Nun, ich merke, ich wollte sagen, müssen Sie Ihren Namen, Geschlecht, und Wohnheim bieten. 1246 01:06:22,000 --> 01:06:24,000 Lasst uns eigentlich veranlassen, diesen Fehler. 1247 01:06:24,000 --> 01:06:27,000 Lassen Sie mich zurück zu meiner Form. Lassen Sie mich neu laden, um es zu deaktivieren. 1248 01:06:27,000 --> 01:06:30,000 Und ich werde einfach um ihnen David, und sie brauchen nicht zu wissen, wo ich wohne. 1249 01:06:30,000 --> 01:06:33,000 Registrieren. Offenbar habe ich brauchen, um ihnen zu sagen, wo ich wohne. 1250 01:06:33,000 --> 01:06:35,000 Sie müssen Ihren Namen, Geschlecht und Wohnheim. Gehen Sie zurück. 1251 01:06:35,000 --> 01:06:39,000 >> Und ich konnte klicken, um zurück zu dieser Form, aber warum ist das so? 1252 01:06:39,000 --> 01:06:43,000 Nun, in diesem Fall Name war nicht leer, aber Geschlechts war, und Schlafsaal war, 1253 01:06:43,000 --> 01:06:47,000 so dass diese ganze Ausdruck als wahr ausgewertet, und obwohl die Syntax ein wenig neu ist, 1254 01:06:47,000 --> 01:06:51,000 wieder betreten wir PHP-Modus vertraut if-Anweisung 1255 01:06:51,000 --> 01:06:54,000 aber das neue Teil ist hier nur diese Doppelpunkt, und ich hatte durch Weglassen eine Klammer verschraubt 1256 01:06:54,000 --> 01:06:57,000 durch einen Unfall, aber beachten Sie den Doppelpunkt, und das bedeutet 1257 01:06:57,000 --> 01:07:00,000 obwohl wir verlassen PHP-Modus alles 1258 01:07:00,000 --> 01:07:03,000 Das folgt sollte ausspucken wörtlich an den Browser 1259 01:07:03,000 --> 01:07:07,000 bis Sie einen else-Block zu sehen, wie wir hier tun, 1260 01:07:07,000 --> 01:07:10,000 In diesem Fall sollten Sie stattdessen spucken this out 1261 01:07:10,000 --> 01:07:13,000 bis Sie den endif sehen, so einige etwas neue Syntax 1262 01:07:13,000 --> 01:07:16,000 das ermöglicht es mir, zwischen HTML und PHP zu wechseln. 1263 01:07:16,000 --> 01:07:19,000 Wir können diese bis schließlich sauber, aber für jetzt, 1264 01:07:19,000 --> 01:07:22,000 es ist eine Art überzeugende Art und Weise der Fehlerprüfung das Formular aus. 1265 01:07:22,000 --> 01:07:25,000 >> Nun, ich sage du bist nicht wirklich registriert, weil wir natürlich nichts, aber die Daten getan haben, 1266 01:07:25,000 --> 01:07:28,000 also lasst uns tatsächlich versuchen, etwas Cooles zu tun. 1267 01:07:28,000 --> 01:07:33,000 In froshims3 der einzige Unterschied ist, dass ich gehe, um register3 einreichen, 1268 01:07:33,000 --> 01:07:35,000 so gibt der HTML ist die gleiche. 1269 01:07:35,000 --> 01:07:38,000 In register3 bemerkt. 1270 01:07:38,000 --> 01:07:40,000 Dieses ist eine Art von sexy. 1271 01:07:40,000 --> 01:07:44,000 An der Spitze Ich bin mit einer require-Anweisung, so ist dies wie # include. 1272 01:07:44,000 --> 01:07:46,000 Dieses Mal ist es nicht stdio.h oder so etwas. 1273 01:07:46,000 --> 01:07:50,000 Es ist eine PHP-Bibliothek, und diese wird als PHPMailer. 1274 01:07:50,000 --> 01:07:53,000 Wie wusste ich genau diese Zeichenfolge in Anführungszeichen enthalten? 1275 01:07:53,000 --> 01:07:56,000 Ich las es in der Dokumentation, so, wenn sie sagte mir, dies legte am Anfang der Datei 1276 01:07:56,000 --> 01:08:00,000 wenn Sie eine spezielle Bibliothek namens PHPMailer, was es sagt und tut verwenden möchten. 1277 01:08:00,000 --> 01:08:03,000 Es erlaubt Ihnen, E-Mails über PHP zu senden. 1278 01:08:03,000 --> 01:08:05,000 Lassen Sie uns nun nach unten scrollen weiter. 1279 01:08:05,000 --> 01:08:08,000 >> Hinweis für beginne ich bin in PHP-Modus die ganze Zeit, 1280 01:08:08,000 --> 01:08:11,000 so jetzt bemerken hier unten nach dem Import die Bibliothek, 1281 01:08:11,000 --> 01:08:13,000  so zu sprechen, ich mache einige Plausibilitätsprüfungen. 1282 01:08:13,000 --> 01:08:16,000 Wenn es der Fall, dass Namen nicht leer ist 1283 01:08:16,000 --> 01:08:19,000 und Geschlecht ist nicht mit leeren Beachten Sie die Ausrufezeichen- 1284 01:08:19,000 --> 01:08:24,000 und Wohnheim nicht leer ist, dann hat der Benutzer logisch das Formular ausgefüllt, zumindest genug. 1285 01:08:24,000 --> 01:08:28,000 Es ist mir egal, wenn sie Kapitän bist oder nicht. Ich brauche nur ihren Namen, Geschlecht und Wohnheim. 1286 01:08:28,000 --> 01:08:31,000 Wenn sie diese ausgefüllt haben, so dass keines dieser Felder sind leer 1287 01:08:31,000 --> 01:08:33,000 das ist etwas neue Syntax. 1288 01:08:33,000 --> 01:08:36,000 PHP als beiseite, ist eine objektorientierte Programmiersprache 1289 01:08:36,000 --> 01:08:39,000 was einige von euch können von APCS oder dergleichen erinnern. 1290 01:08:39,000 --> 01:08:42,000 Denn jetzt, wenn ungewohnte, weiß nur, dass die Verwendung dieser Bibliothek 1291 01:08:42,000 --> 01:08:45,000 müssen Sie eine Code-Zeile wie diese mit einem neuen Schlagwort zu schreiben, 1292 01:08:45,000 --> 01:08:47,000 wahrsten Sinne des Wortes ein neues Schlüsselwort heißt neu. 1293 01:08:47,000 --> 01:08:50,000 Aber darüber hinaus haben wir einige bekannte Syntax. 1294 01:08:50,000 --> 01:08:54,000 Es ist ein Pfeil-Operator, der ähnlich dem, was wir verwendet für Strukturen im Rahmen der Zeiger ist. 1295 01:08:54,000 --> 01:08:57,000 Für heute PHP nicht Zeiger, 1296 01:08:57,000 --> 01:09:01,000 aber jetzt wissen, dass im Inneren der E-Mail variable 1297 01:09:01,000 --> 01:09:05,000 Art ist im wesentlichen aus einem Zeiger auf einer speziellen Bibliothek 1298 01:09:05,000 --> 01:09:08,000 dass jemand anderes geschrieben hat, und wenn ich auf bestimmte Funktionen zugreifen 1299 01:09:08,000 --> 01:09:12,000 Innere dieser Bibliothek Ich weiß, wie in C, verwenden Sie den Pfeil-Operator, 1300 01:09:12,000 --> 01:09:14,000 obwohl diese sind nicht wirklich Zeigern. 1301 01:09:14,000 --> 01:09:16,000 Es ist eine Art eigene Version von PHP davon. 1302 01:09:16,000 --> 01:09:20,000 Dies bedeutet, gehen in die Bibliothek und rufen Sie die IsSMTP Funktion. 1303 01:09:20,000 --> 01:09:23,000 SMTP, Rückruf aus unserer Warriors of the Net bezieht sich auf E-Mail, 1304 01:09:23,000 --> 01:09:28,000 und das bedeutet nur, verwenden Sie eine E-Mail-Server für dieses Frosh IMs Registrierung. 1305 01:09:28,000 --> 01:09:30,000 >> Welche Host will ich benutzen? 1306 01:09:30,000 --> 01:09:34,000 Nun, Harvard, wenn Sie Google herum, hat eine E-Mail-Server namens smtp.fas.harvard.edu. 1307 01:09:34,000 --> 01:09:37,000 Wenn Sie spielen zusammen sind zu Hause oder Sie leben auf einem Comcast-Netzwerk 1308 01:09:37,000 --> 01:09:40,000 es könnte so etwas wie smtp.comcast.net sein. 1309 01:09:40,000 --> 01:09:43,000 Es hängt total von wo Sie leben und Ihr ISP. 1310 01:09:43,000 --> 01:09:47,000 Danach werde ich meine Absenderadresse beliebig jharvard@cs50.net eingestellt werden. 1311 01:09:47,000 --> 01:09:52,000 Ich bin dann los, um den Satz zu richten an jharvard@cs50.net sein. 1312 01:09:52,000 --> 01:09:55,000 Der einzige Weg, ich wusste, dass diese Funktionen aufgerufen wurden setFrom und AddAddress 1313 01:09:55,000 --> 01:09:57,000 wird wieder las ich die Dokumentation. 1314 01:09:57,000 --> 01:09:59,000 Dies ist nicht eine Art magisch an alle Programmierer bekannt. 1315 01:09:59,000 --> 01:10:02,000 Dann habe ich ein Thema auf "Registrierung." 1316 01:10:02,000 --> 01:10:07,000 Und jetzt diese Linie ist ein bisschen hässlich, weil was bedeutet der Punkt-Operator in PHP das? 1317 01:10:07,000 --> 01:10:09,000 Wer weiß? 1318 01:10:09,000 --> 01:10:11,000 Verketten. 1319 01:10:11,000 --> 01:10:14,000 In C ist es ein Schmerz im Nacken zu 2 Strings verketten. 1320 01:10:14,000 --> 01:10:17,000 Sie müssen mit malloc oder realloc oder alle von dem Zeug umgehen 1321 01:10:17,000 --> 01:10:20,000 nur um sich über die Länge eines Strings. 1322 01:10:20,000 --> 01:10:22,000 In PHP, in JavaScript und andere Sprachen 1323 01:10:22,000 --> 01:10:24,000 Sie können in der Regel tun dies mit einem einzelnen Zeichen. 1324 01:10:24,000 --> 01:10:28,000 In diesem Fall bedeutet dot nehmen diese Zeichenfolge hier 1325 01:10:28,000 --> 01:10:30,000 und fügen Sie es diese Zeichenfolge. 1326 01:10:30,000 --> 01:10:32,000 >> Oh, und übrigens, es hängen diese Zeichenfolge, 1327 01:10:32,000 --> 01:10:34,000 was geschieht, eine Variable in dieser Super-global sein. 1328 01:10:34,000 --> 01:10:37,000 Dann, es fügt eine neue Zeile ein, so dass alle von diesen Punkten nur bedeuten, 1329 01:10:37,000 --> 01:10:39,000 halten was eine immer größere und größere string, 1330 01:10:39,000 --> 01:10:43,000 und Sie müssen nicht alles egal zu malloc oder dergleichen in einer Sprache, wie diese, 1331 01:10:43,000 --> 01:10:46,000 und es gibt andere Möglichkeiten, um dies zu tun, aber dies ist eine der schnellsten 1332 01:10:46,000 --> 01:10:48,000 Möglichkeiten, um es lag. 1333 01:10:48,000 --> 01:10:50,000 Was ist dieses Tun? 1334 01:10:50,000 --> 01:10:55,000 Es ist die Schaffung eines E-Mail-Körper, werde Name sagt schon: Captain: Geschlecht: Dorm: 1335 01:10:55,000 --> 01:10:58,000 alle auf separaten Zeilen ein, und schließlich 1336 01:10:58,000 --> 01:11:00,000 eine Zeile Code, und ich werde dies jetzt zu ignorieren. 1337 01:11:00,000 --> 01:11:02,000 Wenn == false bedeutet nur, wenn etwas schief ging, 1338 01:11:02,000 --> 01:11:04,000 aber die Magie hier passiert. 1339 01:11:04,000 --> 01:11:08,000 Mail senden bedeutet, senden Sie diese E-Mail. 1340 01:11:08,000 --> 01:11:10,000 Lasst uns sehen, was das Ergebnis ist. 1341 01:11:10,000 --> 01:11:13,000 Am Ende der Datei, merkt es geht zu sagen, Sie sind wirklich registriert 1342 01:11:13,000 --> 01:11:15,000 wenn ich so weit kommen. 1343 01:11:15,000 --> 01:11:18,000 Wenn aber der Benutzer Schrauben bis bemerken, dass wir diese gestartet 1344 01:11:18,000 --> 01:11:21,000 wenn die Bedingung hier oben, wenn es nicht leer und nicht leer 1345 01:11:21,000 --> 01:11:24,000 und nicht leer, senden wir die E-Mail. 1346 01:11:24,000 --> 01:11:27,000 Ansonsten werden wir diese Codezeile zu senden, 1347 01:11:27,000 --> 01:11:30,000 das wird den Effekt haben, wie Sie in pset 7 sehen werden, der leitet den Benutzer 1348 01:11:30,000 --> 01:11:35,000 zurück, wo sie hergekommen, froshims3.php. 1349 01:11:35,000 --> 01:11:38,000 >> Fingers crossed, sonst wird die enttäuschenden Demo heute. 1350 01:11:38,000 --> 01:11:40,000 Here we go. 1351 01:11:40,000 --> 01:11:42,000 Lassen Sie mich öffne meine E-Mail-Posteingang für jharvard in Gmail. 1352 01:11:42,000 --> 01:11:44,000 Keine E-Mail sofort. Gut. 1353 01:11:44,000 --> 01:11:53,000 Nun lassen Sie mich eröffnen froshims3, die dritte und letzte Beispiel haben wir hier betrachten müssen, ist. 1354 01:11:53,000 --> 01:11:55,000 Okay, here we go. 1355 01:11:55,000 --> 01:12:00,000 Nate, er Kapitän, männlich zu sein, von, sagen wir, Apley. 1356 01:12:00,000 --> 01:12:04,000 Registrieren. Okay, sind Sie registriert wirklich. 1357 01:12:04,000 --> 01:12:07,000 Nun, wenn ich über scrollen, um meine E-Mail, oh, mein Gott. 1358 01:12:07,000 --> 01:12:09,000 Ich habe gerade dynamisch eine E-Mail auf dem Web gesendet. 1359 01:12:09,000 --> 01:12:11,000 >> Lassen Sie uns auf diese Note zu verlassen. 1360 01:12:11,000 --> 01:12:16,000 Ein Video ist in Vorbereitung für die Vorlesung verpasst. Wir sehen uns nächste Woche. 1361 01:12:16,000 --> 01:12:18,000 [CS50.TV]