[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 <? Php.
Im Geiste HTML,
diese Sequenz von Zeichen sagt dem Computer
"Hey, Computer, hier kommt ein Programm, dass wir in PHP."
Es stellt sicher, es nicht zu verwechseln, dass es eine andere Sprache ist.
Linie 2 ist eine interessante weißen Raum.
Line 3 ist unser alter Freund printf,
diesmal im Kontext von PHP.
PHP hat seine eigene Version von printf, die genau das gleiche Verhalten,
so ist dies nur Drucklegung "Hallo Welt."
Und dann diese gegenüber tag hier?>, 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 <? Php beginnen.
Dann habe ich ein paar nutzlose Kommentare, selbstverständlich, aber dann schließe ich PHP-Modus.
Aber dann habe ich in den HTML-Modus fallen.
>> Was ist interessant über PHP ist, obwohl die Datei endet in. Php
es ist in der Regel soll mit HTML miteinander vermischt werden,
einige PHP-Code, einige HTML.
Und wir werden irgendwann sehen, dass wir beginnen können, zu denen neben necken
und halten unsere HTML getrennt von unserem PHP überhaupt,
aber die Ursprünge der PHP wirklich, um Ihnen diese Flexibilität,
, dass, wenn Sie etwas HTML wollen nur schreiben, und das wird
auszuspucken identisch mit dem Browser.
Aber wenn Sie etwas Programmierung Technik,
einige Programmiercode, können Sie auch steckte es in die exakt gleiche Datei, wie wir bald sehen werden.
Hier ist mein HTML.
Ich habe einen Titel dieses für Frosh IMs.
Ich habe einen Body-Tag, der einige CSS auf sie bekommen hat bis Mitte alles in der Mitte,
und dann hier unten Ich habe ein Formular, die offenbar werde vorgelegt werden wird
um eine neue Datei namens register0.php, so dass wir in einem Moment sehen.
Es ist mit einer Methode namens Post, die wir zurückkommen werden, um als gut.
Dann habe ich einige Form-Eingänge, einen sogenannten Namen, deren Typ Text,
ein, dessen Name Kapitän, dessen Typ Checkbox
und dies haben wir es nicht gesehen, aber es tut genau das, was es sagt.
Sie erhalten eine Checkbox anstelle eines Textfelds.
Ab hier haben Sie einen Radio-Button, der eine dieser kreisförmigen Tasten ist
Sie können entweder dieses oder jenes.
>> Beachten Sie, es ist bewusste, dass ich beide Optionsfelder gab den Namen des Geschlechts.
Dies ist, wie Sie gegenseitiger Ausschluss wobei Sie zu bekommen, klicken
entweder diese oder jenes, und durch Anklicken des anderen
Es deaktiviert das andere, so dass Sie haben, um ihnen den gleichen Namen
wenn man sie sich gegenseitig ausschließen, wie das wollen.
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ü.
Der Tag dafür ist select.
Sie geben Sie dem Dropdown-Menü einen Namen,
und dann haben Sie eine ganze Reihe von diesen Optionen.
Die erste, nur für Ästhetik, ist eine leere Zeichenfolge.
Ich wollte nur das Drop-Down zu sein standardmäßig leer,
und dann gibt es Apley, Canaday, Grays, und so weiter.
Und bemerken die Dichotomie hier.
Die Option in der Dropdown einen Wert hat,
aber dann hat es eine Mensch-freundlichen Namen, die in diesem Beispiel
identisch ist, aber wenn wir wirklich wollten, dass anal könnten wir
der Wert dieser Dropdown nur die kurze Version sein,
Grays, aber wir konnten wirklich sagen Grays Halle, dass der Mensch tatsächlich sieht,
aber das ist nicht so interessant, so dass ich einfach immer einfach und machte sie identisch.
Dann unten am Ende haben wir ein Submit-Button
was haben wir gesehen, aber ich merke, nur gab es ein anderes Wort.
Statt CS50 Suche gab ich das Etikett "Registrieren".
>> Das Ergebnis ist diese Webseite hier, und wieder
Woher kommt diese eingereicht werden?
Es wird bis zu einem gewissen Datei, wird der Wert des action-Attribut vorgelegt,
das war register0.php.
Mal sehen, was passiert eigentlich hier.
Lassen Sie mich gehen Sie vor und füllen Sie dieses Formular, sagen David,
männlich, Matthews, und dann werde ich sagen registrieren.
Lassen Sie mich Verkleinern und klicken Sie auf registrieren.
Okay, so Art von nutzlos, aber lasst uns sehen, was eigentlich los ist.
Beachten Sie, dass die URL geändert hat, um register0.php sein.
Was ist neugierig abwesend aus dem URL, obwohl, obwohl wir gerade übermittelt ein Formular?
[Unverständlich Studenten Antwort]
Okay, das ist nur Chrome ist benutzerfreundlich in diesen Tagen.
Das ist tatsächlich da ist. Sie nur verstecken, um Speicherplatz zu sparen.
Aber guter Gedanke, gute Gedanken.
Zum anderen Ende der URL, obwohl, was ist dabei? Yeah.
[Student] Der Query-String.
Der Abfrage-String, so von unserem einfache Google-Suche Beispiele erinnern.
Sobald ich auf die Schaltfläche Senden der URL
nahm mich mit zu Google, aber dann gab es? q = Informatik oder was auch immer hatte ich getippt in.
Das ist, weil wir die get-Methode verwendet bei der Suche Beispiel.
>> Dieses Mal haben wir mit welcher Methode sind statt?
Stellen, und eine der unmittelbaren Unterscheidungen
zwischen GET und POST ist, dass Post nicht tut die Eingabe des Benutzers in der URL.
Er versteckt es. Es ist immer noch sendet.
In der Tat, was wir im Browser hier sehen, wie wir in einem Moment werde zeigen,
Dazu suchen Sie in register0 wird ich nur sehen, den Inhalt
des Arrays, die vom Browser an den Server gesendet wurden.
Aber die URL nicht ein?, Hat keine Stichworte
oder Werte in sie, und warum ist das so?
Nun, ermöglicht Beitrag, den Sie noch Absenden von Daten aus dem Formular an einen Server,
aber es ist es nicht in der URL, so, welche Art von Informationen Beitrag ist
besonders geeignet für vielleicht, wenn Sie den Benutzer auffordert, sind die
Geben Sie am Eingang zu einem Formular?
Etwas wie ein Passwort, etwas, was sonst?
Kreditkartennummern.
Alles, was wenig empfindlichen Sie wahrscheinlich nicht wollen, landen in der URL
wenn auch nur, weil es bedeutet, dass Ihre Mitbewohner oder ein Familienmitglied kann nur durch troll
Ihre Internet-Geschichte und dann buchstäblich sehen Ihre Passwörter,
buchstäblich sehen Ihre Kreditkarten-Nummern, da die meisten Browser
Speichern in der Geschichte, was URLs du bei gewesen,
also, wenn nur, weil das wäre eine schlechte Idee sein.
Mit Post verbirgt, die detailliert von dem Benutzer.
>> Auch, wie Sie lade ein Foto auf Facebook?
Nun, die nur 2 Mechanismen, die Sie auch wirklich nutzen kann,
obwohl es noch ein paar andere mehr geheimnisvoll diejenigen, wird GET und POST.
Wie können Sie lade ein Foto über eine URL?
Sie können tatsächlich tun.
Sie können eine JPEG-oder Bitmap-oder GIF und Sie können es in hexadezimaler stellen
oder so genannte Basis 64.
Statt der Basis 16 Sie Base 64, die im Wesentlichen aussieht
ASCII-Zeichen, und man kann tatsächlich lade ein Foto über eine URL
Nach einem Fragezeichen, aber es gibt in der Regel Größenbeschränkungen.
Die meisten Browser zwingen URLs auf nicht mehr als 1.000 Zeichen sein,
vielleicht 2.000 Zeichen oder dergleichen, so kann man nicht laden
eine 10 MB Facebook Foto.
Denn, dass Sie Post verwenden, wie gut, so jetzt bekommen setzt die Parameter in der URL,
das ist schön und manchmal nützlich, aber für etwas sensibler oder große
Beitrag ist der Weg zu gehen.
Was ist register0 eigentlich hier?
Nun, wenn ich öffnen register0 beachten Sie, dass dies ein super einfaches Seite ist,
aber es zeigt die Tatsache, dass ich zusammen mischen, zum Guten oder zum Schlechten,
HTML mit PHP.
Das gesamte Datei, außer für die Kommentare an der Spitze, sind HTML-
Ausnahme für diesen Kerl hier.
>> Beachten Sie in der Mitte von meinem PHP-Code,
in der Mitte meines HTML, habe ich eine Art temporär
eingegebenen PHP-Modus.
Ich rufe eine spezielle Funktion namens Print r.
Es bedeutet, zu drucken rekursiv, und was es tut, ist es rekursiv druckt
was variable Sie es übergeben, Semikolon, Ausfahrt PHP-Modus.
Und das pre tag gibt Ihnen pre-formatierten Text,
mono Raum Text, so dass jeder Raum, den Sie tatsächlich sehen.
Es verschwindet nicht. Was ist post?
Nun, was ist interessant und überzeugend über PHP
ist, dass, wenn Sie ein Formular mit get oder post
alles, was Sie von einem Browser eingereicht werden
PHP selbst herausfindet, was diese Schlüssel-Wert-Paare sind,
Zahlen heraus, ob es gleich Zeichen, Zahlen heraus, ob es ein Fragezeichen.
Es macht die ganze harte Arbeit für Sie, und dann gibt dir ein assoziatives Array
enthält alles, was der Benutzer in das Formular eingegeben.
Na ja, in welchen Feldern diese Form haben?
>> Es hatte 4 Felder.
Einer war ein Textfeld namens name.
Einer war ein Kontrollkästchen mit der Bezeichnung Kapitän.
Einer war ein Radio-Button aufgerufen Geschlecht,
und einer war ein Drop-down-Menü aufgerufen Wohnheim,
so feststellen, wenn ich rekursiv drucken
der Inhalt dieser speziellen Variablen.
Dies ist eine besondere globale Variable namens buchstäblich $ _POST, in Großbuchstaben.
Dies ist eine besondere globale Variable, dass PHP nur für Sie erstellt
und Hände, so dass Sie Zugriff auf alles, was
das war über ein Formular von einem Benutzer übermittelte.
Und indem Druck r auf it-Sie würden dies nicht in einer normalen Anwendung.
Wir tun dies, um in dieser Variablen zu sehen,
und was drin ist es gut, 4 Tasten,
4 http-Parameter, so zu sprechen,
Namen, Kapitän, Geschlecht, Wohnheim, und dann die Werte, die der Benutzer
tippte mit einer Ausnahme.
Ich habe Typ D-A-V-I-D.
Ich habe die Box, aber für Männer, die offenbar vorgelegt einen Wert
nur m prägnante sein.
>> Wenn ich Matthews gewählt, das ist der Wert, wurde ausgewählt,
und dies ist ein wenig dumm, aber es ist die Konvention.
Wenn ich das Feld ein Wert von ein, überprüft "on" wurde für das Kontrollkästchen eingereicht.
Wenn ich es nicht überprüft hätte, wäre kein Wert gesendet wurde immer haben.
Dies wird nur geben uns Einblicke in das, was drin ist dieser speziellen globalen Variablen,
und es ist so speziell, dass es heißt ein super globale Variable.
Es existiert überall für Sie in Ihrem Code, so dass Sie tatsächlich zugreifen kann.
Dies ist nicht so, dass überzeugende, also lasst uns tatsächlich nutzen die Super globalen
und tatsächlich versuchen, jemanden zu registrieren.
In froshims1 Ich werde eine Änderung vornehmen.
Ich ändere die Aktion register1.php sein,
und ich mache eine andere Sache.
Ich war ein bisschen von der Qualität meiner Webseite gibt es peinlich.
Es ist ziemlich scheußlich, ehrlich gesagt, so stellt sich heraus,
Sie können sehr leicht die Verwendung im Web
anderer Leute JavaScript-Code anderer Leute CSS
dass sie geschrieben haben und Open Source und zur Verfügung wie eine Bibliothek,
so zu sprechen, und zum Beispiel, hier bin ich mit einem frei verfügbaren Bibliothek,
eine Reihe von Codes, dass jemand anderes geschrieben hat.
>> Twitter passiert, um diesen Code zu schreiben, und es heißt die Bootstrap-Bibliothek,
und es ist nur ein Haufen von CSS-Stylesheets, ein Haufen. CSS-Dateien
dass jemand anderes geschrieben und herausgefunden, wie um alles nett und hübsch
so dass Leute wie wir können ein bisschen weniger Sorgen über Ästhetik und konzentrieren sich viel mehr
auf der Logik und der tatsächlichen Programmierung.
Durch Verknüpfung mit diesem Tag, die gleich tag Ich erinnere mich zum styles3.css früher ist,
Ich habe jetzt Zugang zu einer Datei namens bootstrap.min.css.
Min bedeutet nur, sie haben es minimierte und sie haben losgeworden alle Leerzeichen und so weiter
nur um sicherzustellen, dass sie nicht senden Sie mir mehr bytes, als ich tatsächlich benötigen.
Aber da ist ein ganzes Bündel von CSS, so dass, wenn ich öffne nun die Version 1 des Frosh IMs
feststellen, dass meine Datei auf jeden Fall schöner ist.
Jetzt ist es noch immer nur schwarz und weiß, aber feststellen, dass nur mit Hilfe ihrer Stylesheet
und die Verwendung bestimmter Funktionen der es auf meine Form ist es nicht erstaunlich,
aber es ist definitiv sauberer als es vorher war, und der Projektor macht es nicht Gerechtigkeit.
Es gibt kleine graue Linien um die Tasten und um das Textfeld hier,
aber es ist definitiv sauberer als es vorher war.
>> Jetzt, in Fairness, musste ich ändere meine Markup ein bisschen.
Dies ist die Version 1, und feststellen, dass ich ein paar neue Tags verwendet,
und ehrlich gesagt, hatte ich keine Ahnung, wie dies zu tun, bis ich die Dokumentation zu lesen
für Twitter Bootstrap-Bibliothek, und sie erzählte mir, wenn Sie unsere Bibliothek nutzen wollen
verwenden Sie ein fieldset-Element in Ihrem Formular,
setzen Sie das Wort neben einem Feld innerhalb eines Etiketts tag zeigen,
dann geben Sie Ihre Eingabe eines Namens, wie zuvor,
und dann das Kontrollkästchen, nicht nur Sie wickeln Sie es in einem Label-Element,
Sie so etwas wie eine Klasse, so haben wir das nicht schon einmal gesehen,
aber du wirst dies in einem pset 7-Shorts zu sehen.
Eine Klasse in CSS können Sie etwas tun, sehr ähnlich zu der ID,
aber bevor, wenn wir hatten eine ID mit dem Symbol #
Das war für eine und nur eine Element.
Was ist schön über eine Klasse ist, dass mehrere Elemente den gleichen Klasse haben
oder die gleiche CSS Sachen angewendet.
>> Aber noch einmal, sich mehr auf die in der kurzen und der Rest dieses nur kopieren und einfügen
aus ihrer Dokumentation, wo ich soeben einen Label hier und da.
Und am Ende, denn ich habe den Link tag an der Spitze enthalten,
sieht alles schöner automatisch
indem Sie einfach mit bis meine Seite in einer Weise, dass markiert
Twitter erwartet, und es gibt so viele verschiedene Möglichkeiten
dies zu tun, und das ist in der Tat sehr angemessen.
An diesem Punkt in dem Semester, wie Sie in pset 7 der spec sehen,
Googeln um, das Lesen auf Bibliotheken, die mit anderen Menschen CSS
und JavaScript zu lösen zusätzlichen Problemen
Satz für das Problem selbst wird sicher gefördert und ist der Weg
das Web gebaut ist in diesen Tagen, indem sie sich auf andere Menschen auf die Schultern
so dass man wirklich auf den neuen und interessanten Probleme zu konzentrieren.
Aber lasst uns jetzt darauf konzentrieren, wieder die Logik.
>> Das war ein Abstecher auf die Ästhetik nur um zu zeigen Ihnen die Richtung, in die man gehen kann.
Ich werde wieder zurück zu den hässlicher ein für jetzt, nur weil
es gibt keine Ablenkungen mit Twitter Zeug, und lassen Sie mich gehen Sie vor und eröffnen
froshims2, was wiederum nur dadurch unterscheidet, mit der Maßnahme, register2.php,
und lassen Sie uns einen Blick darauf, was die Wirkung ist hier.
Lassen Sie mich gehen Sie vor und geben Sie in David.
Ich werde nicht Kapitän dieser Zeit.
Ich werde sagen, männlich, Matthews, Register.
Verdammt. Okay, das ist eine Schraube auf meiner Seite.
Stand-by.
Register2, Zeile 22, wenn sie leer oder-leid.
Lasst uns neu zu laden.
Okay, nach dem Absenden dieses Formulars, was gerade passiert?
I in David eingegeben, geprüft männlich, klickten Matthews, Register.
Sie registriert sind. (Na ja, nicht wirklich.)
Dies ist eindeutig ein Schritt mehr als nur Ausdruck der Inhalt einer Variablen,
aber was ist diese Datei eigentlich?
In register2.php
bemerkt, dass ich einige neue Code.
Innerhalb von meinem Körper tag Ich habe im Wesentlichen eine if else konstruieren,
sondern weil ich die Vermischung dieser mit einigen HTML
Ich habe zu betreten und verlassen PHP-Modus hin und her, also lasst uns sehen, was ich tue.
>> In der ersten Zeile hier ich sage, wenn es der Fall ist
dass die Post Super-global ist für den Schlüssel des Namens leer,
so in anderen Worten, wenn der Benutzer nicht geben mir einen Wert für Namen in der Form,
dann leer wird return true, weil der Wert ist leer.
Or-bemerken, die vertikalen Balken-if gender ist leer
Innere dieser speziellen globalen Super, was wiederum stellt den Inhalt der Form,
oder das Wohnheim leer ist, dann werde ich voran gehen und schreien den Benutzer.
Wie? Nun, ich merke, ich wollte sagen, müssen Sie Ihren Namen, Geschlecht, und Wohnheim bieten.
Lasst uns eigentlich veranlassen, diesen Fehler.
Lassen Sie mich zurück zu meiner Form. Lassen Sie mich neu laden, um es zu deaktivieren.
Und ich werde einfach um ihnen David, und sie brauchen nicht zu wissen, wo ich wohne.
Registrieren. Offenbar habe ich brauchen, um ihnen zu sagen, wo ich wohne.
Sie müssen Ihren Namen, Geschlecht und Wohnheim. Gehen Sie zurück.
>> Und ich konnte klicken, um zurück zu dieser Form, aber warum ist das so?
Nun, in diesem Fall Name war nicht leer, aber Geschlechts war, und Schlafsaal war,
so dass diese ganze Ausdruck als wahr ausgewertet, und obwohl die Syntax ein wenig neu ist,
wieder betreten wir PHP-Modus vertraut if-Anweisung
aber das neue Teil ist hier nur diese Doppelpunkt, und ich hatte durch Weglassen eine Klammer verschraubt
durch einen Unfall, aber beachten Sie den Doppelpunkt, und das bedeutet
obwohl wir verlassen PHP-Modus alles
Das folgt sollte ausspucken wörtlich an den Browser
bis Sie einen else-Block zu sehen, wie wir hier tun,
In diesem Fall sollten Sie stattdessen spucken this out
bis Sie den endif sehen, so einige etwas neue Syntax
das ermöglicht es mir, zwischen HTML und PHP zu wechseln.
Wir können diese bis schließlich sauber, aber für jetzt,
es ist eine Art überzeugende Art und Weise der Fehlerprüfung das Formular aus.
>> Nun, ich sage du bist nicht wirklich registriert, weil wir natürlich nichts, aber die Daten getan haben,
also lasst uns tatsächlich versuchen, etwas Cooles zu tun.
In froshims3 der einzige Unterschied ist, dass ich gehe, um register3 einreichen,
so gibt der HTML ist die gleiche.
In register3 bemerkt.
Dieses ist eine Art von sexy.
An der Spitze Ich bin mit einer require-Anweisung, so ist dies wie # include.
Dieses Mal ist es nicht stdio.h oder so etwas.
Es ist eine PHP-Bibliothek, und diese wird als PHPMailer.
Wie wusste ich genau diese Zeichenfolge in Anführungszeichen enthalten?
Ich las es in der Dokumentation, so, wenn sie sagte mir, dies legte am Anfang der Datei
wenn Sie eine spezielle Bibliothek namens PHPMailer, was es sagt und tut verwenden möchten.
Es erlaubt Ihnen, E-Mails über PHP zu senden.
Lassen Sie uns nun nach unten scrollen weiter.
>> Hinweis für beginne ich bin in PHP-Modus die ganze Zeit,
so jetzt bemerken hier unten nach dem Import die Bibliothek,
so zu sprechen, ich mache einige Plausibilitätsprüfungen.
Wenn es der Fall, dass Namen nicht leer ist
und Geschlecht ist nicht mit leeren Beachten Sie die Ausrufezeichen-
und Wohnheim nicht leer ist, dann hat der Benutzer logisch das Formular ausgefüllt, zumindest genug.
Es ist mir egal, wenn sie Kapitän bist oder nicht. Ich brauche nur ihren Namen, Geschlecht und Wohnheim.
Wenn sie diese ausgefüllt haben, so dass keines dieser Felder sind leer
das ist etwas neue Syntax.
PHP als beiseite, ist eine objektorientierte Programmiersprache
was einige von euch können von APCS oder dergleichen erinnern.
Denn jetzt, wenn ungewohnte, weiß nur, dass die Verwendung dieser Bibliothek
müssen Sie eine Code-Zeile wie diese mit einem neuen Schlagwort zu schreiben,
wahrsten Sinne des Wortes ein neues Schlüsselwort heißt neu.
Aber darüber hinaus haben wir einige bekannte Syntax.
Es ist ein Pfeil-Operator, der ähnlich dem, was wir verwendet für Strukturen im Rahmen der Zeiger ist.
Für heute PHP nicht Zeiger,
aber jetzt wissen, dass im Inneren der E-Mail variable
Art ist im wesentlichen aus einem Zeiger auf einer speziellen Bibliothek
dass jemand anderes geschrieben hat, und wenn ich auf bestimmte Funktionen zugreifen
Innere dieser Bibliothek Ich weiß, wie in C, verwenden Sie den Pfeil-Operator,
obwohl diese sind nicht wirklich Zeigern.
Es ist eine Art eigene Version von PHP davon.
Dies bedeutet, gehen in die Bibliothek und rufen Sie die IsSMTP Funktion.
SMTP, Rückruf aus unserer Warriors of the Net bezieht sich auf E-Mail,
und das bedeutet nur, verwenden Sie eine E-Mail-Server für dieses Frosh IMs Registrierung.
>> Welche Host will ich benutzen?
Nun, Harvard, wenn Sie Google herum, hat eine E-Mail-Server namens smtp.fas.harvard.edu.
Wenn Sie spielen zusammen sind zu Hause oder Sie leben auf einem Comcast-Netzwerk
es könnte so etwas wie smtp.comcast.net sein.
Es hängt total von wo Sie leben und Ihr ISP.
Danach werde ich meine Absenderadresse beliebig jharvard@cs50.net eingestellt werden.
Ich bin dann los, um den Satz zu richten an jharvard@cs50.net sein.
Der einzige Weg, ich wusste, dass diese Funktionen aufgerufen wurden setFrom und AddAddress
wird wieder las ich die Dokumentation.
Dies ist nicht eine Art magisch an alle Programmierer bekannt.
Dann habe ich ein Thema auf "Registrierung."
Und jetzt diese Linie ist ein bisschen hässlich, weil was bedeutet der Punkt-Operator in PHP das?
Wer weiß?
Verketten.
In C ist es ein Schmerz im Nacken zu 2 Strings verketten.
Sie müssen mit malloc oder realloc oder alle von dem Zeug umgehen
nur um sich über die Länge eines Strings.
In PHP, in JavaScript und andere Sprachen
Sie können in der Regel tun dies mit einem einzelnen Zeichen.
In diesem Fall bedeutet dot nehmen diese Zeichenfolge hier
und fügen Sie es diese Zeichenfolge.
>> Oh, und übrigens, es hängen diese Zeichenfolge,
was geschieht, eine Variable in dieser Super-global sein.
Dann, es fügt eine neue Zeile ein, so dass alle von diesen Punkten nur bedeuten,
halten was eine immer größere und größere string,
und Sie müssen nicht alles egal zu malloc oder dergleichen in einer Sprache, wie diese,
und es gibt andere Möglichkeiten, um dies zu tun, aber dies ist eine der schnellsten
Möglichkeiten, um es lag.
Was ist dieses Tun?
Es ist die Schaffung eines E-Mail-Körper, werde Name sagt schon: Captain: Geschlecht: Dorm:
alle auf separaten Zeilen ein, und schließlich
eine Zeile Code, und ich werde dies jetzt zu ignorieren.
Wenn == false bedeutet nur, wenn etwas schief ging,
aber die Magie hier passiert.
Mail senden bedeutet, senden Sie diese E-Mail.
Lasst uns sehen, was das Ergebnis ist.
Am Ende der Datei, merkt es geht zu sagen, Sie sind wirklich registriert
wenn ich so weit kommen.
Wenn aber der Benutzer Schrauben bis bemerken, dass wir diese gestartet
wenn die Bedingung hier oben, wenn es nicht leer und nicht leer
und nicht leer, senden wir die E-Mail.
Ansonsten werden wir diese Codezeile zu senden,
das wird den Effekt haben, wie Sie in pset 7 sehen werden, der leitet den Benutzer
zurück, wo sie hergekommen, froshims3.php.
>> Fingers crossed, sonst wird die enttäuschenden Demo heute.
Here we go.
Lassen Sie mich öffne meine E-Mail-Posteingang für jharvard in Gmail.
Keine E-Mail sofort. Gut.
Nun lassen Sie mich eröffnen froshims3, die dritte und letzte Beispiel haben wir hier betrachten müssen, ist.
Okay, here we go.
Nate, er Kapitän, männlich zu sein, von, sagen wir, Apley.
Registrieren. Okay, sind Sie registriert wirklich.
Nun, wenn ich über scrollen, um meine E-Mail, oh, mein Gott.
Ich habe gerade dynamisch eine E-Mail auf dem Web gesendet.
>> Lassen Sie uns auf diese Note zu verlassen.
Ein Video ist in Vorbereitung für die Vorlesung verpasst. Wir sehen uns nächste Woche.
[CS50.TV]