[Powered by Google Translate] [Woche 8] [David J Malan] [Harvard University] [Dies ist CS50.] [CS50.TV] Willkommen zurück. Dies ist CS50, und dies ist der Beginn der Woche 8. Ein paar Möglichkeiten, die diese Woche unter ihnen das Gerede hier, an denen etwas zu Essen serviert werden. Für weitere Informationen bitte die Folien, die online sind. Und auch ein anderes Ereignis in dieser Woche durch unsere eigene Thomas Carriero. Er ist einer der ehemaligen Leiter CS50 Lehre Burschen, die jetzt bei Dropbox, und er ist der Kerl, der uns eingehakt mit der wissen Sie was, so, wenn Sie mehr von diesem Kopf bis ihr Gespräch wollen heute Nachmittag für Dropbox und vieles mehr. CS50 Mittagessen ist an diesem Freitag. Haben uns, wenn Sie in der Lage, 1:15, wie üblich, auf Fire and Ice sind. Und jetzt sind wir in etwas namens Seminare zu tauchen. Unsere CS50 Seminare, Rückruf, sind diese optional Klassen durch die Lehre Burschen führten und natürlich Helfer und Freunde des Kurses Leute aus einer Gruppe auf dem Campus als ABCD, die eine Gruppe der Technikbegeisterte auf dem Campus, sowie eine Gruppe namens HCS, der Harvard Computer Society, Studenten, die in ähnlicher Weise Computing interessiert sind. Die diesjährige Liste von Seminaren umfasst Seminare auf Android und iOS und JavaScript und PHP, Unix, Vim, und mehr, so erkennen, dass diese Seminare werden kommen. Wenn Sie möchten, dass für RSVP einer von ihnen den Kopf zu dieser URL gibt. Wir werden dann über den Verlauf der Website veröffentlichen die Zeiten und Orte, sobald sie abgeschlossen sind. Aber wissen, dass es 5 Jahre im Wert von vor Seminare online verfügbar, von denen viele noch sehr viel Strom in Bezug auf Technologien, die Sie vielleicht wollen mit Ihrer letzten Projekte spielen, so dass es den Kopf für einige verfügbaren Videos davon. CSS, diejenigen von euch, die mit CSS bereits, was ist es, in einer Nussschale? Was ist CSS? Es Cascading Style Sheets, und was bedeutet das? Was bedeutet das für uns tun, CSS? Alles klar, lasst uns aufwärmen mit einem leichteren, HTML, Hypertext Markup Language. Was bedeutet das für uns tun? Wer überhaupt? Es ist schon wirklich peinlich diese Fragen. HTML, Hypertext Markup Language. Ja? Nein? [Unverständlich Studenten Antwort] Okay, gut, erlaubt es uns, markieren Text in einem Web-Browser anzuzeigen. Es ist nicht eine Programmiersprache. Es ist in der Tat eine Markup-Sprache, das heißt, es weist den Browser an, wie die Anzeige Informationen, so dass die einfachste Inkarnation dieser, wie wir gesehen haben, ist etwas super einfach wie boldfacing, sagt Klammer b geschlossenen Klammer machen diesen Text fett, und das ist eigentlich nur eine von vielen Möglichkeiten in denen wir das tun, und in der Tat, in diesen Tagen ein besserer Ansatz zu stilisieren Ihrer Webseite, die Dinge fett und kursiv und zentriert und gerechtfertigt und dergleichen, nicht über HTML-Tags allein getan sondern mit einer Technik namens CSS, Cascading Style Sheets. Dies ist eine Sprache für sich. Es ist auch keine Programmiersprache, sondern- jeder, das ist Dan, der heute bei uns hält. Einige technische Schwierigkeiten. Kein Problem. CSS ermöglicht es uns, eine Seite zu stilisieren indem so genannte Eigenschaften, also nehmen wir mal einen Blick auf diese durch einige grundlegende Beispiele. Lassen Sie mich in das Gerät gehen heute. Ich habe die Quelle 8 Montag Verzeichnis hier und ich werde in ein Verzeichnis namens CSS gehen, wo wir eine ganze Reihe haben von Dateien auf uns wartet hier, und in diesem Ordner wir beispielsweise search0.html vom letzten Mal. Jetzt, mit search0 erinnern wir uns links auf dieser Notiz nach Art der Implementierung von Google oder wirklich nur das Frontend für es eine Woche oder so vor, und feststellen, dass wir einige neue Tags dort hatte. Wir hatten h1 für einen großen, mutigen Überschrift Form, die uns tatsächlich ein HTML-Formular für Benutzereingaben erlaubt. Action, was die Bedeutung eines action-Attribut auf der HTML-Formular-Tag? Was war der Sinn dieser, Aktion? Ich werde einfach tun dies heute. Aktion ist das Ziel, wo die Form wird eingereicht werden. Die Tatsache, dass das sagt action = "google.com / search" bedeutet, dass, wenn der Benutzer klickt auf die Schaltfläche Senden oder den Gegenwert was Formularfelder sie ausgefüllt gehen, um nicht zu unserem Server gesendet werden oder unser Gerät, sondern auf diesen speziellen URL an Google. Und die Methode es geht zu bedienen ist genannt zu bekommen, und bekommen, jetzt ist nur eine Technik für die Weitergabe von Informationen entlang zu einem Web-Server über die URL, so lassen Sie uns einen kurzen Blick zurück, wie das funktioniert. Beachten Sie, dass es einen Eingang, dessen Name q deren Typ Text und dann ein zweiter Eingang des Typs Eintragen deren Wert CS50 suchen, und in der Tat, wenn wir öffnen diese Datei hier search0.html, es ist eine super einfache Form, und wenn ich nach so etwas wie der Informatik und dann drücken Sie die Eingabetaste oder klicken Sie auf CS50 Suche feststellen, dass das, was passiert ist jenseits kennen zu Google Ich habe zwar bis zu diesem URL an der Spitze endete, google.com / search? q = computer + science, und Informatik ist offensichtlich, was ich eingetippt Das + bedeutet nur, das ist, wo ein Leerzeichen war, und es ist durch den Browser erfolgt, nur um sicherzugehen, dass es keine Verwirrung und Leerraum in der tatsächlichen URL. Und dann q, ist natürlich der Name des Parameters. Wir haben nicht gesehen, wie wir, die Programmierer können tatsächlich auf q noch. Wir können davon ausgehen, dass Google weiß, was damit zu tun hier, aber wir werden es schaffen rechtzeitig heute. Aber lassen Sie mich einen Blick stattdessen auf search1.html, das sieht ein wenig anders, weil ich entschied, dass diese Form hier nur ein wenig lahm war. Ich meine, es ist an der oberen linken. Es gibt wirklich keine Ästhetik, und so möchte ich dies zu stilisieren ein bisschen mehr wie Google, dessen Homepage, Rückruf, obwohl Sie vielleicht nicht besuchen, die oft, sieht dies heute auf Halloween. Wenn wir öffnen, anstatt bis Version 1 dieser Datei, Suche 1.html, ich habe es zentriert. Noch ziemlich hässlich, aber zumindest jetzt habe ich damit begonnen, die Ästhetik dieser Seite zu kontrollieren, nicht nur die Markierung bis davon. Werfen wir einen Blick auf Suche 1, und es ist wirklich nur ein Unterschied, was könnte springen dich an, oder vielleicht auch nicht, aber was ist die eine Zeile oder Snippet Unterschied? Es ist das style-Attribut, so stellt sich heraus, dass in HTML die meisten Elemente, die meisten Tags ein style-Attribut auf sie haben, und innerhalb dieser style-Attribut ist eine Zeichenfolge in Anführungszeichen, und dass Anführungszeichen ist CSS. Sie können Cascading Stylesheet in es gesetzt indem es als eine Eigenschaft name gefolgt von einem Doppelpunkt gefolgt von einem Wert. Dies ist eine Art einer unglücklichen Design-Entscheidung vor einigen Jahren dass CSS ist eine Sprache für sich, aber syntaktisch es ist sehr verschieden von HTML. In diesem Fall sehen wir, dass innerhalb meiner Webseite, die in HTML geschrieben ist, Ich habe CSS Inneren dieser Zitate und die Konvention für CSS ist, dass Sie, was eine Eigenschaft, gefolgt von wieder ein Doppelpunkt genannt, gefolgt von dem Wert dieser Eigenschaft, so gibt es kein Gleichheitszeichen. Es gibt keine zusätzlichen Anführungszeichen. Es ist gerade diese Doppelpunkt getrennt Schlüssel-Wert-Paar, und Textzeile genau das tut, was es sagt. Es richtet den Text im Hauptteil der Seite ist die wirklich den Mut der Seite, in der Mitte. Okay, das Endergebnis dann klar zu sein, ist dies. Nicht alles, was sexier, aber zumindest ist es zentriert und ein wenig mehr wie die reale Google. Aber was, wenn ich stattdessen eröffnen Version 2 dieses und darauf hinweisen, hier unten einen neuen Tag überhaupt? Jetzt im Kopf auf meiner Seite, die bislang nur die tag in allen früheren Beispielen? Es musste dazu den Titel. Vorhin der Kopf tag sah wie folgt aus. Jetzt sondern es hat einen Stil tag innen von ihm, und auch dies, ich entschuldige mich, syntaktisch ganz anders aussieht HTML, aber man gewöhnt es, wodurch im Inneren des Stils tag Ich kann jetzt ausklammern, was vor einem Augenblick ein Attribut, das style-Attribut, und ich kann es ganz oben auf meiner Seite setzen. Warum? Nun, dies ist ein Schritt in Richtung Reinigen Dinge, ähnlich wie in schriftlicher Form C-Code wir würden manchmal schreiben Funktionen ausklammern gemeinsame Funktionalität. Es ist nur ein wenig sauberer, Factoring Dinge wie die Ästhetik zu starten an einem zentralen Ort, anstatt alles durchsetzen gesamten HTML. Auch dies tut, was sie sagt, obwohl es ein wenig neue Syntax. Das hier ist ein Selektor und Körper bedeutet nur, wählen Sie das body-Element und wenden Sie die folgenden Eigenschaften zu. Nun, das ist die Eigenschaft genau das gleiche. Für eine gute Maßnahme Ich habe ein Semikolon am Ende hinzugefügt, die dazu neigt, Konvention sein, und ich habe dieses ganze Vermögen gewickelt in geschweiften Klammern, denn ich konnte tatsächlich haben unterschiedliche Dinge hier. Ich konnte tatsächlich etwas sagen wie color: blue; Jetzt auch dies wird nicht ein Schritt in Richtung nichts alles, was schöner sein, aber wenn ich jetzt zurück auf Version 2 habe ich jetzt wenigstens den Körper meines gemacht Seite den Text ganz blau. Die Taste bleibt die gleiche, denn das ist ein Eingang. Es ist nicht reiner Text. Aber alles, was Text ist, wie CS50 Search up top, ist in der Tat blau. Wieder ist alles, was wir jetzt gemacht haben aus dem Körper zu entfernen tag, Kündigung, Das style-Attribut, und wir haben berücksichtigt es hier. Dies ist nicht eine gewaltige Verbesserung, aber wenn wir noch einen Schritt weiter bemerken, was wir in dieser dritten Version hier tun. In search3.html die Webseite ist fast identisch außer dem, was neue taggen? Link, so ist dies ein nicht sehr treffend benannt weil Sie nicht die Verknüpfung im Sinne einer anklickbaren Hyperlinks. Vielmehr sind Sie eine Art tut das Äquivalent von # in C gehören wobei die Link-Tag mit einem href-Attribut und ein rel-Attribut sagt gehen Sie vor und kopieren Sie den Inhalt einer Datei namens search3.css genau hier, im Wesentlichen. Es ist nicht ganz das tun, aber das ist der Geist von ihm. Er sagt, gehen diese Datei öffnen, search3.css, und behandeln sie, als ob der Benutzer hatte es hier im Kopf der Seite eingegeben genau wie ich im vorigen Beispiel. Search3.css, mittlerweile ist ziemlich einfach. Es ist wirklich enthält nur genau, was vor einem Augenblick im Stil tag, aber ich habe einkalkuliert es hier eine eigene Datei. Auch wenn wir nicht viel Zeit auf allen verbrachten im HTML-oder Web-Programmierung nur intuitiv, was ist die Motivation, vielleicht, für Ausklammern Dieses kleine Schnipsel selbst von CSS in eine eigene Datei und dann auch mit diesem Link tag hier? [Unverständlich Studenten Antwort] Okay, ist es einfacher, in dem Sinne, dass Sie Ihre CSS haben in einer CSS-Datei zu lesen. Sie haben Ihre HTML in die HTML-Datei, so ist es besser lesbar in diesem Sinne. Was sonst könnte überzeugend? Yeah. [Unverständlich Studenten Antwort] Ja, so kann man schließen es viele Male, so jetzt wir tun dies einfache Beispiele mit einzelnen Dateien, sondern nehme an, Sie tatsächlich machen eine echte Website wie Sie für pset 7 oder das endgültige Projekt vielleicht und Sie mehrere Webseiten haben wollen, wie es durchaus üblich auf die eigentliche World Wide Web, und es wäre irgendwie lahm sein zu haben, zu kopieren und die gleiche blaue Farbe und der gleiche Text Zentrum in jeder dieser Seiten ausgerichtet ist. Vielmehr macht es mehr Sinn, ausklammern, so wie wir in C gemacht mit der. h-Datei, legen Sie sie in einer zentralen Stelle, in diesem Fall search3.css, und lassen Sie jede Datei in Ihre Website tatsächlich gehören diese Datei mittels dieser Tag hier in Zeile 16. Wie ist typischerweise der Fall, begannen wir mit der Version 0, welche Art von Arbeiten aber ist nicht notwendigerweise die beste, und bei jedem Schritt, Suche 1, Suche 2, und jetzt suche 3 haben wir diese Baby Schritte Richtung Designs ein wenig sauberer sind und weitere vorbereitende Für komplexere Seiten, die wir da unten könnte die Straße. Lassen Sie mich eröffnen ein letztes Beispiel sei hier nur um zu zeigen eine noch stärker stilisiert Seite, aber lassen Sie uns zuerst an der HTML aussehen. Dies ist search4.html, und beachten Sie, dass strukturell es fast das gleiche ist mit Ausnahme der Einführung einer neuen Tag, Div. Div ist ein Tag, das eine Aufteilung der Seite führt. Sie können dies als einen unsichtbaren Rechteck denken. Es Art schafft eine Schneise der Bereich in der Homepage dass man alles auf einmal zu stilisieren. Was ich hier getan ist wie folgt. Innerhalb von meinem Körper tag, das hat es immer gewesen, Ich sage eine Aufteilung der Seite hier über die Leitungen 45 bis 47, und das bedeutet im Wesentlichen mir ein unsichtbares Rechteck am oberen Rand der Seite. Dann geben Sie mir ein zweites Rechteck, wenn auch unsichtbar, darunter, und identifizieren es mit dem Namen Inhalt, und dann schließlich geben Sie mir eine dritte Abteilung der Seite an der Unterseite als ID. Wir werden sehen, warum ich das in einem Moment getan haben, aber konzeptionell Ich habe einen Header Division. Ich habe ein Content Division, und ich habe eine Fußzeile Teilung der Seite obwohl diese nur im Markup. Der Benutzer wird nicht 3 Rechtecke zu sehen, aber irgendwie strukturell es hinter den Kulissen sie sind tatsächlich vorhanden. Jetzt, who cares? Warum eigentlich tun? Alles andere auf der Seite ist das gleiche wie wir bisher gesehen haben. Hier ist meine Form. Hier ist mein Input, meinen Input, ein Zeilenumbruch und so weiter. Hier ist ein Bild, obwohl, so werden wir sehen, wo dieses in nur einem Augenblick kam. Hier ist eine Fußzeile, die neu ist, nur weil ich einführen wollte einige weitere Inhalte. Wenn wir feststellen, scrollen, dass ID des div-Header. Die ID dieses div ist Inhalte und die Kennung dieser ist Footer. Und wie der Name schon sagt, wenn Sie haben ein ID-Attribut in HTML, per Definition muss es eindeutig zu identifizieren eines der Elemente, eine der Tags in Ihre Seite ein. Die Belastung ist ganz auf Sie bedenken, dass Sie einen Header ID bereits haben. Sie haben eine Fußzeile. Sie haben eine Content-ID bereits. Der Computer wird nicht herausfinden, was eine verfügbare ID für Sie ist, so könnte man versehentlich zu 2 Tags eine ID-Header, und dass wäre einfach falsch. Sie müssen im Hinterkopf behalten, was du geschaffen hast, aber wenn man einmal diese Mitteilung, was wir hier tun können, getan. Jetzt kann ich in meinem Stil tag geben an der Spitze oder äquivalent in meiner CSS-Datei, wenn ich noch mit dieser Version, Ich kann sagen, # header, und was das bedeutet, ist, dass unabhängig von tag Die auf dieser Webseite hat eine ID-Header und #, nur durch menschliche Konvention stellt ID. Der starke Zeichen oder Raute stellt ID. Header ist der Name, dass ich es gab. Dies bedeutet, gelten diese CSS-Eigenschaft zu was auch immer tag auf dieser Seite trägt die ID-Header. Gleiches Geschäft hier. Wenden Sie diese Eigenschaft, die die gleiche sein geschieht, zu jedem Element dessen ID ist zufrieden, und dann hier unten bemerkt habe ich ein wenig schicker mit Fußzeile. Jedes Element, dessen ID Footer, von denen es kann nur ein per definitionem, gehen Sie vor und machen die Schriftgröße kleiner, ihre Schriftstärke fett, ihre Marge 20 Pixel. Was bedeutet das? Es ist nur ein Rand auf der Oberseite, der Unterseite und der linken und der rechten Seite. Das bedeutet mir eine 20-Pixel unsichtbaren Rand um es nur um alles wegschieben von ihm ein wenig, wie Sie in Word tun könnte, Microsoft Word oder Pages oder dergleichen. Und dann text-align Zentrum. Lasst uns das Endergebnis zu sehen, und dann werden wir wieder bis zum ein verbleibenden Snippet CSS gibt. Dies ist die Version 4, unsere letzte für die Suche Beispiele, und es ist viel, viel sexier. Nun, in aller Fairness sagen, ich habe gerade gegoogelt "google font Logogenerator." Und das mir erlaubt, eine GIF, ein Bildformat, das wie, dass es aussieht. In der Tat, können Sie dies auch tun. Wir haben "google Schriften Logogenerator." Lasst uns sehen, ob wir dies tun können. Okay, ich denke, das ist die Website, die ich verwendet. Wir können sagen, Ec 10, zum Beispiel, und machen sie ihre eigenen. Sie können mit diesem den ganzen Tag lang spielen und dann Rechtsklick auf die Datei und laden Sie dann die tatsächliche GIF, das alles, was ich tat. Und in der Tat, der Grund, warum in meinem HTML ist, erinnern, hier drüben Ich hatte ein Image-Tag, die wir kurz letzte Woche gesehen dessen Quelle logo.gif. Und was einmal war die Motivation für mit dieser alt-Attribut, Diese Alternative Attribut? Yeah. [Unverständlich Studenten Antwort] Gut, so 2 Gründen wirklich, wenn der Browser nicht ziehen das Bild weil Sie eine langsame Netzwerkverbindung oder das Bild ist beschädigt oder so ähnlich, dass zumindest die Menschen sehen können "CS50 Suche" und dann auch für die Zugänglichkeit Gründen. Wenn Sie einen Benutzer, der blind ist und mit einem Screenreader und damit natürlich sehen keine Bilder sie zumindest hören, Text, wenn ihre Computer spricht er zu ihnen. In der Regel wird dies am besten üben, wenn es um die Zugänglichkeit der Seiten kommt so dass auch Benutzer in dieser Situation kann hören oder zu sehen, so zu sprechen, was es ist, ist auf Ihrer Seite. Es gibt eine andere Sache, die ich hier das ist ein wenig interessant, und wir werden mehr darüber im Problem sehen Set 7 über einen der Kurzschlüsse durch einen der Lehre Stipendiaten geführt. Aber # content bezieht sich auf den Tag dessen ID ist zufrieden, aber dann gibt es ein Leerzeichen, und dann gibt es das Wort Eingang. Nun, was ist interessant über CSS ist, dass man beziehen sich auf Tags in einer Seite eine Art hierarchisch und was das Snippet CSS Mittel finden tag dessen ID ist zufrieden, und wenden Sie dann die folgenden Eigenschaften an alle Eingangs-Tags, die Nachkommen der Inhalt sind, Das heißt, dass im Inneren des eingerückt. Einbuchtung wieder ist nur wichtig, dem Computer, nicht an den menschlichen, Eine Konvention ist jedoch wir Gedankenstrich Dinge, wie wir tiefer in eine Seite zu gehen, so bedeutet dies zutreffen ein Spielraum von 5 Pixeln irgendeinem Eingabeelement das ist irgendwo innerhalb oder verschachtelt Innenseite  das Element, dessen ID ist der Inhalt. Wer kennt sie, dass bewerben? Nun, es gibt eigentlich nur diese 2 Jungs hier. Beachten Sie, dass im Inneren der Form gibt es 2 Eingänge, Da gibt es für alle diese Beispiele gewesen. Aber beachten Sie, dass diese 2 Eingänge nach innen verschachtelt werden passieren, wenn auch ein wenig tief, ein paar Schichten Einzug, Innenseite der Tag, dessen ID ist der Inhalt. Was bedeutet das? Wenn wir an den Browser hier gehen Sie immer so leicht-see Lassen Sie mich heran-, dass es ein bisschen Polsterung zwischen der Taste und zwischen dem Textfeld. Lassen Sie mich zeitweise dies ausschalten. Lassen Sie mich gehen bis zu meinem CSS, und lassen Sie mich vor und gehen Sie einfach Ändern Sie diese Marge von 5 Pixel auf 0 Pixel. Lassen Sie mich gehen Sie dann und speichern Sie die Datei, gehen Sie zurück zur Suchmaschine und laden, und beobachten Sie die Mitte der Seite. Alles wurde zusammen komprimiert und als ich das erste Schlagsahne dieses Beispiel bis Ich dachte, dass sah dumm mit dem Textfeld und dann die Taste direkt darunter. Ich wollte pad es ein wenig, so stellte ich Margen. Was wir nicht in der Vorlesung zu tun ist durch die mehreren Dutzend gehen CSS-Eigenschaften, weil wieder gibt Dinge wie Schriftgröße sind vorhanden, Schriftstärke, Marge, Text ausrichten, und ein paar Dutzend andere, und wir werden Ihnen in Problemsituationen beziehen Set 7 verschiedene Online-Tutorials und Referenzen, mit denen Sie diese Dinge abholen lassen. Aber was ist wirklich wichtig, am Ende des Tages ist es zu verstehen, wie diese Dinge angewendet werden. Auch wenn wir den Stil tag innerhalb derer können die Selektoren, die Art von Kennungen, die angeben, gehen wem wollen Sie diese Eigenschaften gelten, und dann legt man die Eigenschaften als Schlüssel-Wert-Paar getrennt durch einen Doppelpunkt und dann mit einem Semikolon beendet, oder Sie können rippen all das heraus und steckte sie in einer separaten CSS-Datei Selbstzweck. Alles klar, alle Fragen zu den Konzepten oder das große Bild von CSS? Du wirst wieder zu sehen mehr davon in pset 7, aber wir halten es in der Regel recht einfach. Nein? Gut. Es ist Zeit für eine tatsächliche Programmiersprache, und wir kommen zurück, um ein wenig von CSS in Form eines Beispiels. PHP ist eigentlich ein wunderbar leicht verständlicher Sprache gekennzeichnet, dass sie syntaktisch nahezu äquivalent C. In anderen Worten, wenn Sie C kennen, wissen Sie zum größten Teil PHP, zumindest syntaktisch, obwohl es einige neue Features und einige neue Konzepte müssen wir zu betrachten. Aber zum größten Teil, dass wir jetzt Übergang von C zu PHP die meisten der neuen Zeug ist wirklich in das große Bild, wie Sie eine Sprache Programm auf dem Web im Gegensatz auf der Kommandozeile oder in einem blinkenden Prompt als wir schon bisher tun. Zum Vergleich, vor allem mit pset 7 und das endgültige Projekt vorwärts, Sie Vorteil dieser URL hier nehmen, wenn Sie möchten, um sich über die Formalitäten der PHP. Es ist eigentlich wie eine kostenlose Online-Lehrbuch effektiv und Sie finden auch, dass, was wirklich nett über PHP ist ist, dass es Hunderte von Funktionen, die mit ihm zu kommen, während in C Sie nicht unbedingt Zugang zu mehr Funktionen als in der Mathematik-Bibliothek, die CS50-Bibliothek. In PHP und viele moderne Sprachen, Python und Ruby unter ihnen, Sie erhalten Zugang zu so viel mehr Funktionen, was bedeutet, Sie zu schreiben sehr viel weniger Code, weil Sie auf den Schultern von anderen Menschen stehen kann die bereits bestimmte Dinge für Sie geschrieben. Lassen Sie uns einen kurzen Überblick über die Syntax von PHP und dann schreiben Sie ein paar Beispiele. Was ist schön über PHP in erster Linie wird es keine Hauptfunktion. Wenn Sie ein Programm in PHP schreiben wollen starten Sie einfach das Schreiben von Code, und Sie brauchen sich keine Gedanken über Haupt kümmern. Es gibt keine int. Es gibt kein Zurück. Es gibt keine argv, argc, die erforderlich sind, wenn Sie das Programm zu schreiben ist. Vielmehr können Sie einfach mit dem Schreiben beginnen Code, und dies ist Teil weil PHP ist, was heißt eine interpretierte Sprache. C kompiliert wurde, und es wurde in dem Sinne, dass Sie beginnen zusammengestellt mit Source-Code, führen Sie es durch Clang, was ein Compiler ist, und schließlich nach einer bestimmten Anzahl von Schritten erhalten Sie Objekt-Code, 0s und 1s. PHP und Python und Ruby und Pearl und andere gibt verschiedene Arten von Sprachen, dass Sie nicht kompiliert sie. Sie müssen nicht aus dem Quellcode auf 0s und 1s gehen. Sie führen Sie einfach den Quellcode, und Sie laufen den Quellcode schriftlich in einer üblichen Textdatei mit der Endung. php in diesem Fall statt. c, und was das Programm macht auf Ihrem Computer ist es buchstäblich interpretiert den Code Zeile für Zeile für Zeile durch. Mit anderen Worten, anstatt ein Programm schreiben, und das Programm direkt Sie stattdessen ein Programm schreiben, mit einer Datei mit der Endung. php. Anschließend führen Sie eine aktuelle Programm namens php.exe, wenn Sie unter Windows sind, oder einfach nur PHP wenn Sie auf Mac OS oder Linux, und Ihnen als Eingabe für den PHP-Programm Ihren eigenen Quellcode, und seinen Zweck im Leben ist, um Ihren Code von oben nach unten, von links nach rechts gelesen, und tun, was du hast gesagt, es zu tun. Mal sehen, was das wird syntaktisch bedeuten. In PHP haben wir Bedingungen. Diese Folie ist identisch zu dem, was du gesehen hast, wieder in Woche 1 weil syntaktisch Bedingungen, wenn und anderes ifs und anderswo in PHP genauso aussehen wie diese. Wenn es um boolesche Ausdrücke kommt sie gehen, um genau so aussehen wie diese. Wenn es um Anding Dinge zusammen als boolesche es wird genau so aussehen wie diese. Switches gleich aussehen, und Sie bekommen den zusätzlichen Vorteil in PHP dass die Schalter in C konnte nur auf einem char oder int wechseln. Sie könnten nicht auf einen String-Wert zu wechseln. In PHP können Sie sogar einen Ausdruck das ist eine Variable, deren Inhalt eine Zeichenkette, und man kann tatsächlich tun, String-Vergleich in der realen intuitive Art und Weise, nicht Zeiger Vergleich, um zu entscheiden, ob Fall zu tun i oder j oder etwas anderes. Wir, dass potenziell sehen, bevor lang. Schleifen zu wunderbar gleich sind. For-Schleifen haben eine Initialisierung, eine Bedingung, und eine gewisse Anzahl von Updates. While-Schleifen auch in PHP existieren. Do while-Schleifen auch in PHP existieren, und Arrays existieren in PHP, aber hier ist die Syntax beginnt, ein wenig anders, aber die Konzepte die gleichen sind, und die Konzepte wirklich gleich sind wie sie waren in Woche 0 mit Scratch. In erster Linie ist das $-Zeichen. Dies war eine Design-Entscheidung in PHP, wobei jede Variable in PHP Design beginnt mit $-Zeichen. Es ist nicht mehr X, Y, Z. Es ist jetzt $ X, $ Y, $ Z einfach nur da. Es ist etwas im Auge zu behalten, und jetzt auf der rechten Seite Diese sieht ähnlich aus wie ein Array, aber wir sind mit eckigen Klammern hier. In PHP und JavaScript als wir schließlich sehen, um ein Array Sie offene eckige Klammer geschlossen und eckige Klammer zu erklären, und dann haben Sie eine durch Komma getrennte Liste von Werten, ob ints oder Strings oder verkohlt, was Sie wollen, innerhalb dieses Ausdrucks gibt. Nun, wie wir etwas tun, wie dies in C? Was war die Syntax für statisch deklarieren eine Reihe von bekannten Nummern? Es war geschweiften Klammern, so kleiner Unterschied hier, aber sowohl in PHP und schließlich JavaScript es nur verwendet eckigen Klammern, also wirklich das einzige interessante Detail ist das $-Zeichen für den Variablennamen und auch die eckigen Klammern, und es gibt ein merkwürdiges Ding Das ist nicht so gut auf der linken Seite des =-Zeichen weggelassen. Was noch fehlt, dass wir seit Wochen erfordern? Yeah. [Unverständlich Studenten Antwort] Die Größe, so gibt es keine Erwähnung der Größe des Arrays. Ehrlich gesagt, gibt es keine Erwähnung von eckigen Klammern auf der linken Seite von dem =-Zeichen, und was sonst noch von der Linie fehlt? Yeah. >> [Unverständlich Studenten Antwort] Die Art, so was ist insbesondere über PHP interessante ist, dass es sich nicht um eine stark typisierten Sprache als C ist, und das ist stark in dem Sinne, dass man muss sagen char eingegeben haben, Sie müssen sagen int, müssen Sie sagen, float. Immer, wenn Sie eine Variable wollen, müssen Sie Clang sagen, was seiner Art ist. PHP ist ein wenig fauler. Es ist lose in dem Sinne, dass getippt Sie können die Schwimmer und Zeichen und Zeichenketten und ints und so weiter, aber die Sprache selbst nicht wirklich egal, was Sie innerhalb einer Variable setzen. Sie müssen nicht im Voraus zu informieren, welche Daten-Typ wird in einer Variablen gehen. Es ist völlig bis zu Ihnen, so this is nice dass Sie nicht mehr so ​​viel Sorgen über Datentypisierung und beunruhigend, was Ihre Argumente sind und so weiter. Dies bedeutet auch, schließlich Funktionen in PHP in der Lage sein, um wieder entweder ein int meiste Zeit, und vielleicht einmal in eine Weile sie werden wieder ein bool, einen boolean false, zum Beispiel, um anzudeuten, dass etwas schief gelaufen ist. Dies gibt uns einige upsides, aber es wird auch uns Art by design ein bisschen fauler, wenn es darum geht, Daten eingeben. Was gibt es sonst noch im Auge behalten? Variablen sieht ganz wie diese, so $ s = "Hallo Welt." Das ist vielleicht inferable aus dem vorherigen Beispiel, und wir haben eine andere Art von Schleife. Dieses werden wir tatsächlich einmal zu sehen in eine Weile, da es sehr praktisch ist, a foreach-Konstrukt. In diesem Fall erfolgt die foreach-Schleife innerhalb der Klammern 3 Worte in der Regel, $ Zuerst etwas, das, was array haben wird Sie über die Mitglieder durchlaufen, dann buchstäblich das Schlüsselwort as, und dann schließlich andere Variable Namen, den Sie wählen, erhalten. Es kann foo, bar oder Element sein, und was dieses Konstrukt funktioniert ist, wenn der $ array enthält 10 Elemente bei jeder Iteration des Array-sorry, bei jeder Iteration dieser Schleife Die Variable namens Element wird aktualisiert um das erste Element in dem Array, dann das zweite Element in dem Array, dann das dritte Element des Arrays, wodurch die Notwendigkeit die etwas ärgerlich eckigen Klammern zu tun und $ I um Index in ein Array. PHP hat all diese Arbeit für Sie und bei jeder Iteration nur gibt dir das nächste Element aus dem Array ohne dass Sie wissen oder kümmern uns um den numerischen Indexposition. Und dann endlich, denn jetzt gibt es eine weitere Funktion von PHP das wird sein äußerst nützlich, vor allem, wenn wir die Programmierung zu starten auf dem Web, und das ist als assoziatives Array bekannt. Die Arrays, die wir kennen bisher als 20 Sekunden vor und in den letzten 8 Wochen sind numerisch Arrays indiziert, Art der traditionellen Arrays, wo die Indizes sind ints, 0, 1, 2, den ganzen Weg bis auf. Assoziative Arrays sind viel stärker. Sie ermöglichen es, beliebige Tasten haben, beliebige Indizes und willkürliche Werte. Während bei einer herkömmlichen Anordnung ist es 0, 1, 2, in einem assoziativen Array können Sie einen Index oder ein Schlüssel foo, dessen Wert bar. Sie können dann eine andere Taste, deren Name baz und dessen Wert qux. Wieder dumm Informatik generischen Variablennamen hier aber der Punkt ist, dass diese Anordnung nicht Halterung 0 oder Halterung 1. Es ist statt dessen werde Halterung foo und Halterung baz haben. Dies ist weitaus vielseitiger, dass wir in der Lage sein zu assoziieren Wörter mit anderen Worten, Schlüssel mit Werten vollkommen willkürlich und wir werden in der Lage sein, diese Werte wieder in konstanter Zeit denn unter der Haube, was ein assoziatives Array ist wirklich eine Hash-Tabelle. Daran erinnern, dass ein Hash-Tabelle, die Sie in einigen Eingangssignalen setzen können gerne stellen im Wort David, wenn Sie David in eine Art Wörterbuch einfügen möchten, und dann bekommst du wieder etwas Wert in der Regel. Im Falle der Speller, wahr oder falsch. David oder was auch immer Wort ist oder nicht im Wörterbuch. Ein assoziatives Array ist eigentlich nur eine Hash-Tabelle, aber es ist ein viel benutzerfreundlicher Inkarnation es. Wie wir sehen werden, wird es uns zu erlauben, einige Dinge zu tun sehr, sehr leicht. Werfen wir einen Blick auf einige grundlegende PHP Beispiele und sehen, was wir mit dieser Sprache zu tun. Lassen Sie mich gehen Sie vor und eröffnen in unserem Quellverzeichnis heute eine Datei namens hello1.php. Diese Datei ist Kommentar als eigentliche Code ist, so lassen Sie mich wirklich entfernen alle Kommentare aus der Datei und präsentieren Ihnen vielleicht die einfachste PHP-Programm finden Sie hier. 5 Zeilen, und einige von ihnen sind Leerraum so feststellen, dass einige wichtige Unterschiede. Die Datei heißt hello1.php. Die allererste Zeile, obwohl, ist , Bedeutet, dass es für meine PHP-Code. Mal sehen, wie das läuft. Ich werde gehen zurück zu meinem Terminal-Fenster hier. Ich werde in meinem PHP-Verzeichnis. Beachten Sie, dass wir eine ganze Reihe von Dateien, die erste von denen hello.php ist zu haben. Lassen Sie mich gehen Sie vor und führen Sie dieses, hello1.php geben. Permission denied. Okay. Wie haben wir Dinge wie diese in der Vergangenheit fixiert? Was ist das? >> [Unverständlich Studenten Antwort] Wir brauchen lesen und schreiben, aber lass mich tun ls-l. Merken Sie sich diese etwas kryptisch ausgegeben, wobei hello1 scheint zu sein, lesbar und beschreibbar von mir aber lesbar von allen anderen. Es stellt sich heraus das ist eigentlich nicht ein Schritt in die richtige Richtung. Die Differenz wiederum mit einer interpretierten Sprache wird Sie nicht starten Sie das Programm direkt. Sie laufen anstatt einen Dolmetscher und geben es der Code , dass du geschrieben hast so interpretieren kann sie Zeile für Zeile. In diesem Fall wird die Dolmetscher oder Programm, das ich tatsächlich ausführen möchten wörtlich heißt PHP. Irgendwo auf dieser Festplatte des Gerätes gibt es ein Programm Jemand anderes schrieb als PHP oder Windows php.exe. Was ich hier zu tun ist, ich werde tatsächlich laufen PHP sondern geben es als Befehlszeilenargument den Code, der ich schrieb, und dann werde ich Verkleinern und drücken Sie Enter. Es läuft mein Programm für mich, von oben nach unten, von links nach rechts. Lassen Sie mich gehen Sie vor und eröffnen eine geringfügige Abweichung davon. In hello2.php beachten Sie, dass dies auch ist meistens Kommentare, so lassen Sie mich diejenigen loswerden, als Ablenkung, und was ist eindeutig jetzt anders über diese Datei? Es ist diese neue Linie, etwas kryptisch an der Spitze. In Zeile 1 ist es #! / Bin / php. Bin eine Konvention unter Linux und Mac OS für Binärdateien, so / bin bedeutet dies, ist ein Ordner mit einer Reihe von Binärdateien das so programmiert ist, von denen eine PHP. Die #! trägt den Spitznamen Kram, das ist der schnelle Weg, es zu sagen, und was bedeutet dies ist, dass, wenn Sie dieses Programm ausführen jetzt gibt es ein Hinweis auf die Anfang der Datei das sagt dem Computer, was zu verwendenden Interpreter. Es wird ein wenig ärgerlich, wenn Sie Ihre Benutzer und Ihre Kunden zu sagen hatte "Hey, schrieben wir dieses Programm namens hello1.php." Alles, was Sie tun müssen, ist immer PHP laufen und dann den Namen des Programms. Ehrlich gesagt, wäre es nur dann netter zu hello1.php laufen, und in der Tat können wir, wenn wir wie folgt vor. Lassen Sie mich gehen Sie vor und tun ls-l, und beachten Sie in hello2 es gerade noch lesen und schreiben und dann gelesen, so kann ich noch nicht tun, hello2.php. Aber wir eingeführt dies jemals so kurz letzten Zeit, die chmod-Befehl. Wenn ich das tue chmod a + x, die alle sowie Ausführbarkeit bedeutet, und dann hello2.php und führen Sie dann ls-l wieder bemerken, was geändert. One, wird Linux zeigt mir den Namen der Datei in grün, um die Idee zu vermitteln daß sie die ausführbare, aber noch wichtiger, auf der linken Seite feststellen, dass das Bit repräsentiert x für ausführbare nun eingestellt wurde. Was dies bedeutet jetzt ist, kann ich ./hello2.php wie gewohnt laufen, drücken Sie die Eingabetaste, und weil der Kram ganz am Anfang der Datei Das ist ein Hinweis, wieder auf Linux, das sagt Verwenden Sie diese Dolmetscherin Sie diese Datei ausführen. Nicht über den Benutzer zu zwingen tatsächlich geben Sorgen. Und was ist schön jetzt ist es irgendwie irrelevant für meine Kunden oder meine Freunde welche Sprache ich dieses Programm schrieb, so kann ich voran mit mv und benennen Sie diese Sache zu hello2, zum Beispiel. Und nun, wenn ich ./hello2 vergrößern und verkleinern mein Programm läuft weiter. Diese Dateierweiterungen sind eine menschliche Konvention, die notwendig ist für so etwas wie Clang und Make, die nach ihnen suchen. Aber für PHP, könnte ich nennen diese Dateierweiterung, was ich will. Ich könnte die Welt zu denken, dass ich wirklich gut bin bei Ruby auszutricksen, und ich könnte schreiben hello2.rb und führen Sie dann diese, und voila, jetzt habe ich die Ruby-Version, die eine komplette Lüge ist. Aber die Dateierweiterungen sind bedeutungslos wenn die Datei ausführbar ist und hat diese besondere Tipp am Anfang der Datei. Jetzt, als beiseite, lassen Sie mich Ihnen schnell Version 3 das ist eine Art nützlicher Trick zu wissen. In hello3 tat ich etwas etwas falsch dass ich zu aktualisieren den Quellcode online. In Version 3 stellt sich heraus, dass auf den meisten Linux-Computern gibt es ein Programm namens env für Umwelt, und was Sie hier tun können, wenn Sie keine Ahnung haben, wo PHP auf der lokalen Festplatte installiert, weil in der Tat auf dem Computer basieren könnte variieren dass jemand mit, env sagt nur laufen env, das ist auf den meisten Systemen, und herauszufinden, wo PHP ist. Nur ein üblicher Trick, so dass Sie sich nicht um herauszufinden, wo ein Programm kümmern. Aber wenn Sie darauf, herauszufinden, wo ein Programm ist und Sie haben nicht gepflegt bisher können Sie den Befehl which. Lassen Sie mich Verkleinern und geben an, welche PHP, und bemerken es sagt mir, es ist eigentlich in usr / bin / php. Es ist eine Art der Lüge. Es ist auch in bin. Es ist nur zeigt mir den ersten Treffer. Wenn Sie sich jemals gefragt, wo Clang ist, was Clang, das ist in usr / bin / Klang, was zu machen, ist usr / bin / machen, und was das bedeutet die ganze Zeit Sie könnten worden Eingabe usr / bin / clang eingeben, um Clang laufen, aber es ist irgendwie langweilig, das zu tun, so dass einige Ordner wie usr / bin und bin davon ausgegangen Standardwerte werden damit der Computer weiß, in ihnen für Sie suchen. Haben Sie Fragen zum Schreiben einer super, super einfache Hallo Welt Programm in PHP und dann läuft es? Denn jetzt werden wir beginnen, mehr überzeugende Syntax einzuführen. Alles klar, hier gehen wir. Diese Programme haben wir eigentlich alle von ihnen gesehen. Wenn ich öffnen, zum Beispiel, lasst uns beer1.php, wir werden nicht über mehrere Versionen dieses gehen, aber was ich getan habe wurde ich setzte mich hin und goß es oder umgewandelt meine C-Code in PHP-Code hier. Die meisten der Anfang der Datei sind Kommentare hier. Es stellt sich heraus, es gibt eine neue Funktion, die wir brauchen genannt readline. GetString, Rückruf, von Woche 0 Weiterreise war ein CS50 Sache. PHP kommt mit seiner eigenen benutzerfreundliche Funktion namens readline das dauert 1 Argument, das die Eingabeaufforderung gibt dass Sie möchten, um dem Benutzer zu zeigen, und was readline macht ist es wieder, was der Benutzer Typen in. In diesem Fall bin ich Deklaration einer Variable namens $ n. Ich bin in sie speichert den Rückgabewert der readline nach Aufforderung des Benutzers mit dieser Zeichenfolge. Nur zum Sichern, um tatsächlich dieses Ding, lass mich gehen Sie vor und führen Sie php beer1.php. Wie viele Flaschen wird es geben? Lass uns einfach tun, 2 diese Zeit. Enter. Das ist alles. Das Programm ist funktional identisch mit der C-Version von Wochen. Aber syntaktisch mal sehen, was ist anders. Nach bekomme ich eine int aus der Benutzer feststellen, dass ich tue etwas Fehlerkontrolle, und wenn n kleiner als 1 I beenden und drucke ich eine traurige Nachricht an den Benutzer und Ausgang mit 1. Auch dies ist ein wenig anders.  In C, was haben wir getan? In C kehrten wir ein. In PHP Sie mit 1 zu verlassen, die offen ist, ich ein wenig mehr intuitive denken weil Sie buchstäblich das Programm beenden. Alles klar, und dann hier unten ärgerliches Lied ist identisch syntaktisch mit Ausnahme der variablen, so hier unten in Zeile 24 weiter bemerkt meiner for-Schleife ist fast das gleiche, aber ich habe $ vor i und n, und was fehlt auch von der Linie 26, die wir in der Vergangenheit beim Deklarieren einer Variablen i? Es gibt keinen Typ. Es ist falsch, in PHP zu sagen int. Sie wissen einfach nicht brauchen, um das zu tun. Der Computer ist der Interpreter PHP klug genug zu erkennen dass, wenn Sie eine Nummer setzen in $ I wird es behandeln als Zahl für Sie. Und dann hier unten haben wir Plug-in $ i, $ i, $ i - 1. All das ist die gleiche, und dann hier unten machen wir einen "Wow, das ist ärgerlich" printf und beenden Sie dann (0). Auch hier ist das Essen zum Mitnehmen hier, dass, obwohl wir werden relativ zu verbringen wenig Zeit auf PHP, sicherlich im Vergleich zu was wir auf C hat, es ist fast das gleiche, und so, was wir heute und nächste Woche und darüber hinaus ist zu konzentrieren wirklich auf einige der neuen Ideen. Nur um zu sehen, dass eine andere Sache ist zu übersetzen als aus C, Das war ein super einfaches Programm, das wir in Woche 1 hat oder 2, die gewürfelt einen Wert. Aber was war an der Zeit, über dieses Programm interessant ist, dass es führte die Vorstellung von einem eigens geschriebenen Funktion, die wir uns selbst schrieb. Die Syntax in PHP ist fast das gleiche. Hier ist mein Programm bis oben. Beachten Sie wieder fehlt jede Vorstellung von main. Ich beginne das Schreiben von Code, und dies ist, was los ist, um vom Interpreter ausgeführt werden sollen. Drucke ich x ist jetzt 2, vermutlich. Dann behaupte ich Cubing ... Dann rufe ich den Würfel Funktion und in $ x vorbei und weisen Sie den Rückgabewert $ x. Dann habe ich behaupten, dass es gewürfelt hat, und dann sage ich, die hoffentlich sagen x ist jetzt 8. Die Syntax für die Funktion in PHP ist immer so ein wenig anders. Wieder fehlt, ist der Rückgabetyp. Wieder fehlt der Rückgabetyp und auch fehlt, ist, was andere Art? [Unverständlich Studenten Antwort] Na ja, okay, das ist gut. Lasst uns zurück zu, dass in einer Sekunde. Wir haben nicht, zum Beispiel, hier int. Wir wissen zum Beispiel nicht, hier haben int denn, noch einmal, in PHP Sie haben einfach nicht zu brauchen, und nicht das tun, sondern es ist das neue Schlüsselwort aufgerufene Funktion. In PHP ist es fast ein wenig klarer, denn wenn man eine Funktion möchten Sie buchstäblich sagen, Funktion, geben Sie ihm einen Namen und dann eine durch Komma getrennte Liste wenn einer ihrer Argumente. Keine Notwendigkeit für nichtig oder so etwas zu sagen, und dann wieder die gleiche ist, $ A * $ a * $ a. Was auch fehlt? Sammy wies dies hier. Am Anfang der Datei vollständig fehlen in PHP ist auch ein Prototyp. Auch dies ist beabsichtigt. Sprachen und Dolmetscher wie PHP sind klüger als C jemals war in Compilern wie Clang. Daran erinnern, dass Clang, wenn Sie nicht sagen, dass es diese Würfel existiert, wenn man nicht sagen, dass es das printf existiert mit einem Prototyp oder mit einem # include, gut, es würde auf Sie schreien und nicht einmal kompilieren Sie den Code. PHP und moderner Sprachen sind viel klüger, wenn es dazu kommt. Sie nehmen es auf sich, durch alle Ihre Code zu lesen und dann an Sie schreien nur, wenn es cube nirgends findet. Es spielt keine Rolle, wenn Würfel ist am Boden oder oben oder sogar in einigen separaten Datei. PHP und ähnliche Sprachen sind jetzt klug genug, nach vorne zu schauen auf alles, was vor dem Erachten Sie als einen Fehler gemacht. Wo führt uns das? Lassen Sie uns noch ein letztes Beispiel sei hier unter Bedingungen, und wenn ich öffnen conditions2.php Ankündigung zu Syntax hier ist fast die gleiche. Ich bin mit readline anstelle von GetString, aber die Linie ist die gleiche wie vorher, "Ich möchte eine ganze Zahl bitte." Ich habe dann ein, wenn die Bedingung, eine else if, und dann ein anderes, aber funktionell dieses Programm ist ebenfalls identisch zu dem, was wir taten Wochen also, wenn ich dieses Ding, php Bedingungen2, und ich gebe es eine Zahl wie 23 - Ich nahm eine positive Zahl ist. Wenn ich es -1 geben, nahm ich eine negative Zahl. Wenn ich gebe es 0 ich tatsächlich abgeholt 0. Also, wer kümmert sich um all dies? Nun, eine der fun Art Übungen hier zumindest für mich war, gehen Sie zurück und sehen, wie schnell ich konnte pset 5 zu implementieren, Die Rechtschreibfehler pset. Erinnern, dass es diese Datei namens speller.c, und es gab eine Datei namens dictionary.c. Was ich tat, war ich irgendwie verbrachte ein paar Minuten und ich verwandelte den C-Code PHP-Code, und wir werden nicht viel Zeit auf Speller denn wie in pset 5 Sie nicht wirklich brauchen, um verbringen viel Zeit auf Speller selbst, weil Ihre Aufmerksamkeit war auf Wörterbuch. Es genügt zu sagen, dass, wenn Sie durch Speller lesen, Diese Datei hier, es ist so ziemlich gleichbedeutend mit der C-Code gaben wir Ihnen für pset 5. Ich habe gerade einige $ an Orten aufgenommen. Ich habe bestimmte Funktion Namen geändert, wenn sie nicht in PHP existierte. Es gibt eine weitere Sache hier, preg_match, das ist ein wenig schicker Weg, etwas zu tun, aber wir kommen zurück, um die schließlich. Aber kurz gesagt, ist Speller nahezu identisch, und wenn man sich ganz unten was sie schließlich spuckt, ist das hier, falsch geschriebene Wörter, Wörter in das Wörterbuch, Wörter im Text. Alles klar, so was ist interessant, jetzt ist die folgende. An der Spitze der meine Datei Ich erfordern dictionary.php. Genau wie C hat # include PHP verfügt über eine spezielle Funktion namens erfordern dass so ziemlich dasselbe tut, erfordern eine Datei namens dictionary.php. Wie kann ich über die Implementierung pset 5 gehen? Lassen Sie mich gehen Sie vor und öffnen Sie eine Datei hier. Lassen Sie mich ein wenig Bezug hier. Und lassen Sie mich eine neue Datei erstellen und starten Aufruf dieser dictionary.php. Lassen Sie es mich in einem anderen Ordner, so dass wir tun können, damit zu leben. Und jetzt werde ich hineinzuzoomen Ich werde meine PHP-Datei mit Klammer php geschlossen Halterung starten. Und dann hier gab es einige Funktionen, die ich brauchte, um pset 5 zu implementieren, so lassen Sie mich beginnen Umsetzung einige von denen, so Funktionskontrolle, die ein Wort als Argument nehmen musste. Das machen wir und kommen zurück, um es in einem Augenblick. Es gab Funktion Last, die in dem, was als ein Argument hat? Wörterbuch, so dass die Datei, die ich wollte eigentlich zu laden. Es war die Funktion Größe, die nicht beteiligt waren keine Argumente und es war die Funktion, was war das andere? Entladen, was hast keine Argumente nicht. Dies sind die 4 Funktionen, die ich brauche, um jetzt in PHP implementieren möchten, und was ich zu tun ist, gehen Sie vor und tun dies. Viele von euch verwendet eine Hash-Tabelle in pset 5, so lassen Sie mich gehen Sie vor und erstellen eine Hash-Tabelle in PHP. Fertig. Das gibt mir eine Hash-Tabelle. Nun, warum? One, wird die Variable namens $ table, nur zu zaubern die Idee einer Hash-Tabelle. Die eckigen Klammern, aber erinnern, das darstellen, was? Ein Array, aber in PHP Arrays müssen nicht numerisch indiziert werden. Sie können auch assoziative Arrays, das heißt, Sie können beliebige Schlüssel und Werte haben. Vieles in pset 5, diejenigen von euch, die Hash-Tabelle Implementierungen haben möchte Sie wahrscheinlich das Wort eingefügt und dann steckte sie in eine Kette von verknüpften Listen, oder Sie den Wert true irgendwo etwas zu diesem Effekt gespeichert. Sie irgendwie erinnerte mich an die Tatsache, dass das Wort da war. Denn jetzt ist das werde meine Hashtabelle sein, und so nun über die Umsetzung der Check-Funktion gehen Ich brauche nur nach innen zu schauen dieser Hash-Tabelle und sehen, ob ein Wort ist da. Was ich zu tun ist, werde ich sagen, wenn- sagen wir isset, die eine PHP-Funktion, die buchstäblich nur bedeutet, ist der Schlüssel-Set, so isset ($ table [$ word] und wenn ja, true zurückgeben. Das war's. Das ist pset 5 in PHP. Nun, in aller Fairness sagen, okay. Else false zurück, so ist es nicht da. Was ist wirklich los? Nun, wenn Tabellen-oder Hash-Tabelle hier mehr allgemein ist ein assoziatives Array, dass Sie Index in es bedeutet, mit einem Wort wie "Wort", und Sie haben, um wieder einen gewissen Wert. Wir sind irgendwie immer einen Schritt voraus zu uns. Es wäre ganz nett, wenn wir geladen tatsächlich, die Datei zuerst, so Last ist nicht ganz so einfach, aber lassen Sie mich gehen Sie vor und schüren  eine wirklich schnelle Umsetzung der Last. Lassen Sie mich gehen Sie vor und sagen Worte bekommt File-Wörterbuch. Die Datei-Funktion in PHP eine Datei öffnet und kehrt euch ein Array aller der Wörter in dieser Datei, nur gibt sie Ihnen. Das war ein großer Schmerz zu, nicht wahr? Jetzt foreach, das ist unser neues Konstrukt, foreach ($ words wie $ Wort). Diese Schleife wird beginnen Iteration über die Array-Wort und die $ word zuweisen jedes Wort in der Datei aus der ersten in die zweite zu der dritten zu der vierten ganzen Weg so dass ich nicht haben, um die lästigen [i]-Notation zu tun und dergleichen. Und was ich einfach gehen zu müssen für jedes dieser Wörter wird speichern Sie es in meinem Tisch durch Indizierung in die Tabelle und dann tut wahr, weil sich zu erinnern dass ein Wort in meinem Wörterbuch ist alles, was ich wirklich tun müssen, ist Art von Flip ein wenig und sagen, dass dies Wort in meinem Hash-Tabelle ist es wahr. Und wenn es nicht da ist, kann ich nicht explizit gestellt falsch, sonst müsste ich false für alle möglichen Wörter im Universum setzen. Es genügt für mich nur um einen Indexwert gesetzt true, wenn ein Wort ist eigentlich in meinem Hash-Tabelle. Nun, ich bin Schneiden ein paar Ecken hier, dass ich meine Hände winken für jetzt, aber jetzt ist die Ladefunktion ist getan. Ich lade alle Wörter aus der Datei in ein Array. I über diesem Array durchlaufen, und für jedes Wort in der Anordnung Ich stecke ihn in meine Hash-Tabelle mit 1 Zeile Code. Das macht Spaß. Sie wissen, wie wir können die Größe nun umsetzen? Nun, das ist Größe immer recht einfach, in Fairness. Hier können wir einfach zurück Zählung der Tabelle. Das ist ziemlich einfach auch die Anzahl der Dinge, die in der Tabelle. Das ist eigentlich ganz nicht die effizienteste. Ich sollte wohl eine Variable namens Größe, so dass wir sie tun können in konstanter Zeit, aber das ist ziemlich einfach. Oh, und dann entladen, wenn wir wirklich wollen, anal hier können wir sagen, das ist, wie Sie etwas entladen. Sie müssen nur die Variable gleich ein leeres Array, und es entledigt sich von allem, was da war. Keine Notwendigkeit, rufen Sie kostenlos. Auch habe ich einige Ecken schneiden, und ich für die Zuweisung Problem Satz 5 entschuldigen vielleicht in C, aber wenn wir jetzt gehen Sie vor und führen Sie dieses, Ich werde tatsächlich laufen die Version, die ich im Voraus geschrieben einfach so, dass ich machte keine syntaktischen Fehler überhaupt. Lassen Sie mich gehen Sie vor und führen Sie Speller. Die Verwendung ist dieselbe. Hier ist eine Wörterbuch-Datei, die nur enthält das Wort foo. Hier ist eine Textdatei, die enthält nur foo bar. Lassen Sie die Rechtschreibprüfung diese, so Speller, mit diesem Wörterbuch-Datei auf dieser Textdatei. Es ist ein falsch geschriebenes Wort, eine Bar und voila. Fertig mit pset 5. Werfen wir einen 5-minütigen Pause hier, und wir kommen wieder und kommen auf PHP. Alles klar, wir sind zurück. Lassen Sie uns wissen, hassen mich für eine Weile. Lassen Sie uns nun tatsächlich sehen, ob dies nicht eine positive die tatsächliche Umsetzung dieses Ding in PHP. Zugegeben, es dauerte 45 Sekunden, um zu realisieren. Aber lassen Sie uns jetzt gehen und laufen Dinge. Lassen Sie mich gehen Sie vor und führen Sie eine C-Version der Speller, und wir werden es auf einer der größten Dateien ausführen, was der King James Bibel. Und das ist hier in-lasst in unseren C-Ordner gehen, Speller auf der King James die fünfte. Eine Menge falsch geschriebene Wörter. Okay, das ist also die Ausgabe haben Sie sich wahrscheinlich, auch wenn die Zeiten ein wenig anders sind, wenn du alles richtig funktioniert, und so Zeit habe insgesamt um die Rechtschreibprüfung die King James Bibel war 0,38 Sekunden, so ziemlich gut mit, dass die Umsetzung. Nun lassen Sie mich in die PHP-Version, die wir gerade geschrieben haben zu gehen. Lassen Sie mich laufen Speller auf der King James. Whoops, ignorieren diesen Fehler. Ich bin im falschen Verzeichnis. Speller auf der King James die fünfte. Fast fertig. Okay, der scharfsinnige Beobachter erkennen, dass mehr als 3 Sekunden da. Das ist die wahre Laufzeit. Es stellt sich heraus, dass es Zeit braucht, um viel Text ausspucken wegen der Pufferung Probleme, aber lange Geschichte kurz, Das war 3,15 Sekunden der Maschine, CPU-Zeit, gegenüber dem, was es war vor einem Augenblick? Wie .3. Ich meine, es ist eine Größenordnung langsamer, also wo ist das lächerlich Abschwächung aus? Nun, wie der Fall mit fast jedem Design-Entscheidung die wir gemacht haben in der Klasse in den letzten 9 Wochen gibt es fast immer so Kompromiss. Manchmal nur zwischen Raum, manchmal zwischen Raum und Zeit, Raum, Zeit und Entwicklungsaufwand, und zwar hier, obwohl wir gerettet eine Menge Zeit, vielleicht potenziell 10-20-30 Stunden Entwicklungszeit die Umsetzung der Rechtschreibprüfung durch Schlagen Sie es in nur 45 Sekunden mit dieser Sprache der Preis zahlen ist, dass es um eine Größenordnung langsamer ist als ein Ergebnis, und dies ist in der Regel der Fall mit fast jedem interpretierte Sprache, PHP, Python, Ruby, Perl oder andere, wobei wenn du gehst, um es durch einen Interpreter ausgeführt sind und haben es zu lesen Code Zeile für Zeile von oben nach unten, von links nach rechts, das Mittelsmann wird einige Zeit seiner eigenen zu nehmen, und was du hier das Gefühl in den 3 Sekunden im Gegensatz zu 0,3 Sekunden ist die Tatsache, dass es diese Zwischenhändler, die buchstäblich zu interpretieren unseren Code hat Zeile für Zeile, und Gott bewahre, wenn Sie innerhalb einer Schleife sind mit einer riesigen Datei mit Hunderttausenden von Wörtern. Das Overhead wird addieren und summieren sich und addieren und summieren. Bei einem Werkzeug wie dieses, es ist wahrscheinlich nicht die beste Sprache, um für die Umsetzung verwenden eine Rechtschreibprüfung, wenn Unmittelbarkeit ist von Interesse für Ihre Benutzer und zu Ihnen. Aber der Luxus, den wir haben, in einem Augenblick, wenn Sie verwenden Sie eine Sprache wie PHP oder viel interpretierte Sprachen im Kontext des Internets, was das betrifft, muss man den Nutzen dass das Internet ist sehr viel langsamer als die meisten Computer. Sie haben ein GHz CPU in Ihrem Computer, 2 GHz, vielleicht sogar noch mehr in diesen Tagen. Aber die Realität ist im Internet gibt es eine hohe Latenz wobei für einen Browser auf einem Server sprechen, obwohl wir letzte Woche gesehen , dass ziemlich schnell ist, eine halbe Millisekunde oder so, Auch das summiert sich, und wenn Sie das Herunterladen Dinge wie ein Bild oder ein Facebook-Foto oder sich Instant Messages über Facebook Geschwätz, Gchat oder dergleichen, wobei alle diese Roundtrip-Zeiten zwischen dem Browser und dem Server Start addieren, was macht Ihr besondere Wahl der Sprache, in vielen Fällen nicht alles, was relevant, so dass Sie gut mit der eine etwas langsamere Sprache wie PHP oder Python oder Ruby aber für die gibt es riesige upsides um Sie und Ihre Kollegen und Ihre Freunde, weil Sie so, so viel schneller Dinge umsetzen können. Und außerdem haben Sie viel weniger Risiko für bestimmte Sicherheitslücken. Es gibt keine Hinweise in PHP. Es gibt keine seg Fehler, die Sie leicht zu induzieren in der gleichen Weise könnte man in C. Mit C, du bist ganz nah an der Hardware. Mit PHP und ähnliche Sprachen, du bist Art von höherer Ebene, so zu sprechen, mit einer Menge von Verteidigungsanlagen zwischen Ihnen und was ist eigentlich los im Inneren der Maschine, und es ist nur ein Kompromiss. Wir haben bis zu dem Punkt mit diesen modernen, Hochsprachen bekommen wie PHP, weil der Unterricht in Sprachen wie PHP in C gelernt Aber wenn Sie nicht verstehen, was geht schon unter der Haube die ganze Zeit man kann sicherlich nicht die richtigen Design-Entscheidungen, und sicherlich, wenn es um Arbeiten an einem Ort wie Facebook oder Google oder einer dieser Orte, die immer spielen mit großen Datenmengen auch wenn Sie zurückgehen und nicht PREMED und sind mit einigen MD arbeiten auf einigen großen Datensatz mit Patienten und Ärzten und dergleichen mit den richtigen Werkzeugen ist enorm überzeugende weil sonst die Analyse einiger Datensatz könnte Sekunden dauern, oder es könnte buchstäblich Stunden dauern. Dies ist nur ein Beispiel, nicht auf Sie, mit wie viel mehr Aufwand zu vereiteln war es in C, sondern Ihnen dabei helfen, dass wenn man etwas in C implementieren Sie wirklich zu verstehen oder in der Theorie, wirklich zu verstehen, wie alles oder tätig werden sollte, und Sie haben fast die volle Kontrolle über das, was los ist unter der Haube, und mit diesen höheren Programmiersprachen Sie haben mehr Kontrolle, um die Menschen, die sie erfunden zu verzichten und unterliegen mehr auf ihre Design-Entscheidungen als deins. Aber wenn wir davon ausgehen, dass die Leistung ist nicht ganz so wichtig, auf dem Web, weil dieser andere Fragen, nur Netzwerk-Geschwindigkeiten sind ein wenig langsamer als CPU-Geschwindigkeiten ohnehin so können wir uns sortieren leisten, eine etwas langsamere Sprache verwenden wenn die upsides sind, können wir die Dinge 10 mal schneller oder sogar noch mehr zu entwickeln. Mal sehen, wie wir beginnen können, mit diesem. Lassen Sie mich in einen Ordner gehen unter den heutigen Beispielen genannt frosh.ims, und dies wurde tatsächlich persönlich durch die Tatsache motiviert, dass das erste, was Ich schrieb für das Web Jahren nach der Einnahme von CS50 und CS51 war eine Website für die Frosh IMs Programm Freshman intramuralen Sport, welche an der Zeit war dies genug Jahre her, dass zum Zeitpunkt es gab keine Website für das Programm, obwohl es einen Web, und stattdessen gab es eine Aufsichtsperson in Wigglesworth, wobei, wenn man wollte für Volleyball oder Fußball oder was auch immer registrieren Sie füllen ein Stück Papier. Sie würden dann über den Hof gehen. Sie würden dann an ihre Tür klopfen und Rutsche in die Tür oder die Hand auf die proctor ein Stück Papier mit Ihrem Namen darauf, ob Sie ein Team Kapitän sein, welche Sportart Sie tun wollte, und was dorm Sie waren in. Es war eine Art der alten Schule Art, die Dinge, und das war ein Paradebeispiel Gelegenheit, eine Menge von diesem Prozess zu automatisieren. Sie müssen nur auf die Website gehen. Sie geben etwas in. Sie erhalten eine Bestätigung per Email, und boom, sind Sie fertig. Dies war das erste, was ich tat, wenn auch in einer Sprache namens Pearl, aber es ist relativ einfach, in PHP zu tun, und dies ist eine Art repräsentativer der Probleme können Sie beginnen zu lösen, wenn man sich ausdrücken kann programmatisch und nicht auf Dinge wie Google Sites verlassen oder Excel-Tools, die Ihnen übergeben werden. You guys haben jetzt die Möglichkeit, Dinge wie diese zu tun. Dies ist ein super hässliche Version eines Formulars, aber lasst es einfach verwenden, für den Beginn des Gesprächs, wobei dies etwa was die Form aussah Jahren für uns damit die Menschen auf dem Web, um sich für Frosh IMs. Wir fragten nach einem Namen, eine Checkbox für, ob sie zum Kapitän werden wollte, männlich oder weiblich, und was dann dorm sie waren, und dann würden sie dieses Formular. Lassen Sie uns zuerst einen Blick unter die Haube an der HTML-Code, diese Webseite darstellt. Lassen Sie mich in froshims0 gehen, und als Flächenstillegung für pset 7 Ich bin für selbstverständlich nehmen die Verzeichnisse und die Ordner, die ich die Dinge bin in. Wir führen Sie durch, wo genau Zeug hat, um in das Gerät gehen, die mod Befehle, die Sie haben zu laufen, also nicht über all die Sorgen dumm Details Synchronisierung in der get-go hier. Alles klar, hier ist froshims0.php. Lassen Sie mich nach unten scrollen, und was ist neugierig hier dies ist eine PHP-Datei, aber was drin ist es, klar? Es ist eine ganze Reihe von HTML, und in der Tat, PHP Ursprünge wirklich für ein Web-centric Sprache. Vorhin haben wir benutzt, um das Bier beispielsweise zu implementieren, die Bedingungen beispielsweise das hallo Beispiel, und das ist in Ordnung. Sie können PHP als Skriptsprache verwenden wo ein Skript ist wirklich nur die Nomenklatur, die einem quick and dirty-Programm oder etwas, das Sie schreiben in einer Skript-oder allgemein einer interpretierten Sprache. PHP ist super nützlich für das, weil Sie gesehen haben, wie schnell relativ können wir schüren Programme in PHP. Aber es war wirklich entworfen, um für das Web verwendet werden, und für das Web in dem Sinne, dass sich feststellen, hier am Anfang der Datei entwickelt Ich habe mit