[Powered by Google Translate] [Uge 8]
[David J Malan] [Harvard University]
[Dette er CS50.] [CS50.TV]
>> Velkommen tilbage.
Dette er CS50, og dette er begyndelsen af ​​uge 8.
Et par muligheder i denne uge,
blandt dem denne snak her, hvor nogle fødevarer vil blive serveret.
For flere detaljer se de dias, der er online.
Og også en anden begivenhed i denne uge af vores egen Thomas Carriero.
Han er en af ​​CS50 s tidligere leder undervisning stipendiater, der nu er ved Dropbox,
og han er den fyr, der videostikket os med det ved du hvad,
så hvis du vil have mere af det hoved til deres tale i eftermiddag for Dropbox og mere.
CS50 frokost er denne fredag.
Gør slutte sig til os, hvis du er i stand til, 1:15, som sædvanlig, i Fire and Ice.
>> Og nu har vi dykke ned i noget, der hedder Seminarer.
Vores CS50 Seminarer, tilbagekaldelser, er disse valgfrie klasser ledet af undervisningen stipendiater
og kursus assistenter og venner af kurset,
folk fra en gruppe på campus kaldet ABCD, som er en gruppe af
technophiles på campus, samt en gruppe kaldet HCS,
Harvard Computer Society, undergraduates der er ligeledes interesseret i computing.
Dette års liste over seminarer omfatter seminarer om Android og iOS og JavaScript
og PHP, Unix, Vim, og mere, så indse, at disse seminarer kommer op.
Hvis du gerne vil RSVP for nogen af ​​dem hoved til den pågældende webadresse dér.
Vi vil derefter sende på kursets hjemmeside, hvornår og hvor, når de er afsluttet.
Men ved, at der er 5 års forbrug af tidligere seminarer er tilgængelige online,
hvoraf mange er stadig meget strøm i forhold til teknologier, du måske
ønsker at spille med for dine endelige projekter, så dyr der for nogle tilgængelige videoer deraf.
>> CSS, de af jer der er bekendt med CSS allerede,
hvad er det i en nøddeskal?
Hvad er CSS?
Det er cascading style sheets, og hvad betyder det?
Hvad betyder det gøre for os, CSS?
Okay, lad os varme op med en nemmere, HTML, Hypertext Markup Language.
Hvad betyder det gøre for os?
Nogen overhovedet?
Det bliver virkelig akavet at stille disse spørgsmål.
HTML, Hypertext Markup Language.
Ja? Nej?
[Uhørlig student svar]
Okay, godt, det giver os mulighed for at markere tekst skal vises i en webbrowser.
Det er ikke et programmeringssprog.
Det er faktisk et kodesprog, hvilket betyder, at det instruerer browseren, hvordan skal vises
information, så den simpleste inkarnation af dette, som vi har set
er noget super simpelt lignende boldfacing, åben beslag B lukket beslag siger
gøre denne tekst fed, og det er faktisk bare en af ​​mange måder
hvor vi kan gøre det, og ja, i disse dage en bedre tilgang
til stilisering din webside, hvilket gør tingene fed og kursiv
og centreret og begrundet og lignende, er ikke gjort via HTML-tags alene
men snarere med en teknik kaldet CSS, cascading style sheets.
Det er et sprog i sig selv.
Det er også ikke et programmeringssprog, men-
alle, dette er Dan, der holder slutter sig til os i dag.
Nogle tekniske vanskeligheder. Ikke et problem.
>> CSS giver os mulighed for at stilisere en side
ved at sætte det, der kaldes egenskaber, så lad os tage et kig på denne
ved hjælp af nogle grundlæggende eksempler.
Lad mig gå ind i apparatet i dag.
Jeg har kilden 8 Mandag mappe i her,
og jeg har tænkt mig at gå ind i en mappe kaldet CSS, hvor vi har en hel masse
af filer, der venter for os lige her,
og i denne folder har vi for eksempel search0.html fra sidste gang.
Nu mindes med search0 vi tilbage på denne note
ved slags implementering af Google eller egentlig bare den forreste ende for det en uges tid siden,
og bemærk, at vi havde nogle nye mærker der.
Vi havde h1 for en stor, fed overskrift,
form, hvilket tillod os at rent faktisk har en HTML-formular for bruger input.
Action, hvad var betydningen af ​​en handling attribut
på HTML formular tag?
Hvad var meningen med dette, action?
Jeg vil bare gøre det i dag.
Action er den destination, hvor formen vil blive forelagt.
Den omstændighed, at der siger action = "google.com / search"
betyder, at når brugeren klikker på send-knappen eller tilsvarende
uanset form felter de udfyldte vil blive sendt ikke til vores server
eller vores apparat, men snarere at den specifikke webadresse på Google.
Og den metode, den kommer til at bruge, kaldes får,
og få, for nu, bare er en teknik til at videregive oplysninger sammen til en webserver
ved hjælp af webadressen, så lad os tage et hurtigt kig tilbage på hvordan det virker.
>> Bemærk, at der er et input, hvis navn er q
hvis type er tekst og derefter en anden indgang af typen indgive
hvis værdi er CS50 Søg, og ja, hvis vi åbner op denne fil her,
search0.html, det er en super enkel form,
og hvis jeg søger efter noget som datalogi
og derefter ramte ind eller klik på CS50 Søg
bemærke, at det, der sker, er ud over at komme til Google
Jeg har specifikt endte på denne webadresse i toppen,
google.com / search? q = computer + videnskab,
og datalogi er naturligvis, hvad jeg har skrevet i.
Den + betyder blot, det er, hvor et mellemrum karakter var,
og det er gjort af browseren blot for at sikre, at der ikke er nogen
forvirring og hvid plads i den faktiske webadresse.
Og derefter q, selvfølgelig, er parameteren navn.
Vi har ikke set, hvordan vi, programmør, kan faktisk få adgang q endnu.
Vi kan antage, at Google ved, hvad at gøre med dette her,
men vi får der i god tid i dag.
>> Men lad mig tage et kig i stedet på search1.html,
der ser lidt anderledes, fordi jeg besluttede, at denne form her var bare en lille smule halt.
Jeg mener, det er øverst til venstre.
Der er virkelig ingen æstetik til det, og så vil jeg stilisere dette
en smule mere som Google, hvis hjemmeside, tilbagekaldelse,
selvom du måske ikke besøge det så tit, ser sådan her ud i dag på Halloween.
Hvis vi i stedet åbne op version 1 af denne fil, søg 1.html, jeg har centreret det.
Stadig temmelig grim, men i det mindste nu jeg er begyndt at kontrollere æstetik denne side,
ikke bare markeringen op herom.
Lad os tage et kig på søgningen 1, og der er virkelig bare en forskel her,
som kan springe ud på dig, eller måske ikke,
men hvad er den ene linje eller uddrag af forskel?
>> Der er denne stil attribut, så viser det sig at i HTML
de fleste elementer, kan de fleste mærker har en stil attribut på dem,
og indersiden af ​​den stil attribut er et børsnoteret streng,
og det citerede streng er CSS.
Du kan sætte overlappende typografiark derinde
ved at angive det som en egenskab navn
efterfulgt af et kolon efterfulgt af en værdi.
Det er lidt af en uheldig design beslutning for nogle år siden
at CSS er et sprog i sig selv,
men syntaktisk det er meget forskelligt fra HTML.
I dette tilfælde ser vi, at indersiden af ​​min webside, der er skrevet i HTML,
Jeg har CSS indersiden af ​​disse citater, og konventionen for CSS
er, at du har, hvad der kaldes en ejendom efterfulgt af, igen, et kolon,
efterfulgt af værdien af ​​den faste ejendom, så der er ingen lighedstegn.
Der er ingen yderligere citater.
Det er bare denne kolonsepareret nøgleværdi par,
og tekstlinie gør præcis hvad den siger.
Det bringer teksten i brødteksten på siden, som er virkelig modet på siden,
i midten.
>> Okay, det endelige resultat så, at være klar, er dette.
Ikke alt, mere sexet, men mindst det er centreret og lidt mere som den virkelige Google.
Men hvad hvis jeg i stedet åbne op version 2 af denne
og påpege hernede et nyt tag helt?
Nu i hovedet på min side, der tidligere kun havde som tag
i alle tidligere eksempler?
Det bare havde det, titlen.
For et øjeblik siden hovedet tag lignede dette.
Nu i stedet det har en stil tag indersiden af ​​det,
og også dette, jeg undskylder, syntaktisk ser meget anderledes fra HTML,
men man vænner sig til det, hvorved indersiden af ​​stil tag
Jeg kan nu faktor ud af, hvad var for et øjeblik siden
en attribut, den stil attribut, og jeg kan sætte det øverst på min side.
>> Hvorfor?
Nå, det er et skridt i retning af rengøring ting op, meget gerne skriftligt C-kode
ville vi undertiden skrive funktioner til faktor ud fælles funktionalitet.
Det er bare en lidt renere at starte factoring ud ting som æstetik
til et centralt sted i stedet for at have det hele intersperse hele din HTML.
Også dette gør hvad det siger, selvom der er lidt af ny syntaks.
Dette her er en selector, og krop betyder bare vælge kropelementet
og anvende følgende egenskaber til den.
Nå, egenskaben er nøjagtig det samme.
For god ordens Jeg har tilføjet et semikolon i slutningen,
som har en tendens til at være konvention, og jeg har pakket hele denne egenskab
i krøllede parenteser, fordi jeg faktisk kunne have forskellige ting her.
Jeg kunne faktisk sige noget lignende farve: blå;
>> Nu er dette også kommer ikke til at være et skridt i retning af noget alt det pænere,
men hvis jeg nu gå tilbage til version 2 har jeg i det mindste nu gjort liget af min
sides tekst helt blå.
Knappen forbliver den samme, fordi det er en indgang. Det er ikke ren tekst.
Men alt andet, der er tekst, ligesom CS50 Søg up top, er i virkeligheden blå.
Igen, er alt hvad vi har gjort nu fjerne fra kroppen tag, varsel,
den stil attribut, og vi har indregnet det ud her.
Dette er ikke en enorm forbedring, men hvis vi tager dette et skridt videre
mærke til, hvad vi kan gøre i denne tredje udgave her.
>> I search3.html websiden er næsten identisk
undtagen for hvad nyt tag nu?
Link, så denne ene er ikke meget rammende navn
fordi du ikke forbinder i betydningen et klikbart hyperlink.
Snarere, du er slags at gøre hvad der svarer til # include i C
hvorved link tag med en href attribut
og en rel attribut siger gå videre
og kopiere indsætte indholdet af en fil kaldet search3.css lige her, det væsentlige.
Det er ikke helt gøre det, men det er ånden i det.
Det siger gå åbent denne fil, search3.css,
og behandle det, som om brugeren havde skrevet det lige her i hovedet på siden
ligesom jeg gjorde i det forrige eksempel.
Search3.css, i mellemtiden, er ret enkel.
Det er virkelig bare indeholder præcis hvad der var for et øjeblik siden
i den stil tag, men jeg har indregnet det ud her til sin egen fil.
>> Selvom vi ikke har brugt meget tid på alle i HTML eller web-programmering
bare intuitivt hvad er motivationen, måske, for factoring ud
denne lille kodestump selv af CSS ind i sin egen fil
og derefter integrere det med dette link tag her?
[Uhørlig student svar]
Okay, det er lettere at læse i den forstand, at du har din CSS i en CSS-fil.
Du har din HTML i din HTML-fil, så det er mere læsbar i den forstand.
Hvad ellers kunne være overbevisende? Yeah.
[Uhørlig student svar]
Ja, så du kan medtage det mange gange, så lige nu har vi laver disse
basale eksempler med enkelte filer, men formoder du faktisk gøre
en reel hjemmeside som du vil for Pset 7 eller din endelige projekt måske,
og du ønsker at have flere websider, som er helt sikkert fælles om
den faktiske World Wide Web, og det ville være slags halt
at skulle kopiere og indsætte den samme blå farve
og den samme tekst justeret center i hver eneste af disse sider.
Snarere giver det mere mening at faktor ud, ligesom vi har gjort i C
med. h-filen, sætte det i ét centralt sted,
i dette tilfælde search3.css og derefter tillade nogen fil
i dit websted til rent faktisk at inkludere denne fil ved hjælp af dette tag her på linje 16.
Som det typisk er tilfældet, vi startede med version 0, hvilken slags værker
men er ikke nødvendigvis den bedste, og med hvert trin,
søgningen 1, søgning 2, og nu søge 3 vi har taget disse små skridt
mod design, der er lidt renere og er mere forberedende
for mere komplekse sider, som vi kan gøre ned af vejen.
>> Lad mig åbne op en sidste eksempel her bare for at vise
en endnu mere stiliseret side, men lad os først se på HTML.
Det er search4.html, og bemærke, at strukturelt det er næsten det samme
bortset fra at indføre en ny kode, div.
Div er en kode, der indfører en opdeling af siden.
Du kan tænke på det som en usynlig firkant.
Den slags skaber en skår af område på websiden
at man kan stilisere på én gang.
Hvad jeg har gjort her er som følger.
Inde i min krop tag, som har været der hele tiden,
Jeg siger skabe en opdeling af siden her via linjerne 45 gennem 47,
og det betyder i realiteten give mig en usynlig firkant øverst på siden.
Så giv mig en anden rektangel, omend usynlig, under dette,
og identificere det ved navn indholdet, og derefter endelig
give mig en tredje division af siden i bunden
kaldes ID.
Vi vil se, hvorfor jeg har gjort dette på bare et øjeblik,
men begrebsmæssigt jeg har en header division.
Jeg har et indhold division, og jeg har en sidefod division af siden
selv om disse er blot i markup.
Brugeren vil ikke se 3 rektangler,
men slags strukturelt der bag kulisserne
de er faktisk til stede.
>> Nu, hvem bekymrer sig? Hvorfor egentlig det?
Alt andet på siden er det samme som vi har set før.
Her er min form. Her er mit input, mit input, et linjeskift og så videre.
Her er et billede, men så må vi se hvor det kom fra i blot et øjeblik.
Her er en sidefod, der er nyt, bare fordi jeg ønskede at introducere
nogle mere indhold her.
Hvis vi ruller op bemærke, at ID for denne div er header.
Id'et på denne div er indhold, og ID for denne ene er footer.
Og som navnet antyder, når du har et ID attribut
i HTML, det per definition skal entydigt identificere
et af de elementer, en af ​​de tags på din side.
Byrden er helt på dig at huske, at du har en header-id allerede.
Du har en sidefod. Du har en indholds-id allerede.
Computeren vil ikke finde ud af hvad en tilgængelig ID er for dig,
så du kunne ved et uheld giver 2 tags en ID på header,
og det ville bare være forkert.
>> Du er nødt til at huske på, hvad du har lavet,
men når du har gjort denne meddelelse, hvad vi kan gøre her.
Jeg kan nu angive i min stil tag øverst
eller ækvivalent i min CSS fil, hvis jeg stadig var ved hjælp denne version
Jeg kan sige # header, og hvad det betyder er, at uanset tag
i denne webside har et id på header
og #, blot ved menneskelig konvention, repræsenterer ID.
Den skarpe tegn eller firkant repræsenterer ID.
Header er det navn, jeg gav det.
Dette betyder anvende denne CSS ejendom
at uanset mærke i denne side bærer en id header.
Samme deal her.
Anvend denne egenskab, der sker for at være det samme, at ethvert element
hvis ID er indhold, og derefter ned her
bemærke, at jeg fik en lidt mere avanceret med footer.
Ethvert element, hvis ID er footer, som der kan være blot én af definition,
gå videre og gøre sin skriftstørrelse mindre,
sin skrifttype vægt fed, dens margin 20 pixels.
>> Hvad betyder det?
Det er bare en margen på toppen, bunden og til venstre og højre.
Det betyder, at give mig en 20-pixel usynlig margin omkring det
bare at skubbe alt andet væk fra det lidt, ligesom du kan gøre i Word,
Microsoft Word eller Pages eller lignende.
Og så tekst justere center.
Lad os se det endelige resultat, og så vil vi gå tilbage til den ene tilbageværende stump CSS dér.
Dette er version 4, vores sidste for de søgeord eksempler, og det er meget, meget sexet.
Nu, i retfærdighed, jeg bare googlede "google font logo generator."
Og det tillod mig at skabe en GIF, et billede format, som ligner den der.
Faktisk kan du gøre dette også.
Vi har "google skrifttyper logo generator."
>> Lad os se, om vi kan gøre det.
Okay, jeg tror, ​​det er hjemmesiden jeg brugte.
Vi kan sige Ec 10, for eksempel, og gøre dem til deres egne.
Du kan spille med dette hele dagen lang og derefter højreklikke på det
og derefter downloade den faktiske GIF, som er alt, jeg gjorde.
Og ja, det er derfor i min HTML, husker herovre
Jeg havde et billede tag, som vi så kortvarigt i sidste uge
hvis kilde er logo.gif.
Og hvad var igen motivationen for at have denne alt-attributten,
dette alternative attribut?
Yeah.
[Uhørlig student svar]
Godt, så 2 grunde virkelig, hvis browseren ikke kan trække op billedet
fordi du har en langsom netforbindelse, eller billedet er beskadiget
eller noget i den stil i hvert fald det menneskelige kan se "CS50 søgning,"
og derefter også for tilgængelighed årsager.
Hvis du har en bruger, der er blind og bruger en skærmlæser
og derfor kan naturligvis ikke se billeder, de kan i det mindste
høre tekst, hvis deres computer taler den til dem.
>> I almindelighed er det bedste praksis, når det kommer til adgangen til sider
så selv brugere i denne situation kan høre eller se, så at sige,
hvad det er, der er på din side.
Der er en anden ting, som jeg gjorde her
hvilket er lidt interessant, og vi vil se mere om dette i problem indstille 7
via en af ​​de shorts ledet af en af ​​de pædagogiske stipendiater.
Men # indhold refererer til tag
hvis ID er indhold, men så er der et mellemrum, og så er der ordet input.
Nå, hvad er interessant ved CSS er, at du kan
henvise til tags på en side slags hierarkisk,
og hvad denne stump CSS midler er at finde tag
hvis ID er indhold, og derefter anvende de følgende egenskaber
til alle de indgående tags, der er efterkommere af indhold,
nemlig at indrykkes inde i den.
Fordybning, igen er kun vigtigt til computeren, ikke til mennesket,
men efter sædvane vi led ting, som vi går dybere ind i en side,
så det betyder anvende en margen på 5 pixels til ethvert input element
Det er et sted inde i eller indlejret i af
elementet, hvis ID er indholdet.
>> Hvem gælder dette for?
Tja, der er faktisk bare disse 2 fyre her.
Bemærk, at indersiden af ​​formen er der 2 indgange,
da der har været for alle disse eksempler.
Men læg mærke til, at disse 2 indgange tilfældigvis er indlejret i,
omend en smule dybt, et par lag af indrykning
indersiden af ​​tag, hvis ID er indhold.
Hvad betyder dette?
Hvis vi går til browseren her kan du se nogensinde så lidt-
Lad mig zoome ind-at der er en smule polstring mellem knappen
og mellem tekstfeltet.
>> Lad mig midlertidigt slå funktionen fra.
Lad mig gå op til min CSS, og lad mig gå videre og blot
ændre denne margen fra 5 pixels til 0 pixel.
Lad mig gå videre derefter og gemme filen, skal du gå tilbage til søgemaskinen
og genindlæs, og se midt på siden.
Alt blev presset sammen, og da jeg først piskede dette eksempel op
Jeg troede, at så dum med tekstfeltet og derefter på knappen umiddelbart under det.
Jeg ønskede at pad det en lille smule, så jeg introducerede marginer.
Hvad vi ikke vil gøre i foredrag er at gå igennem de flere dusin
CSS egenskaber, der findes, fordi igen, der er ting som skriftstørrelse,
font vægt, margin, tekst justeres, og et par dusin andre,
og vi vil henvise dig i problemer indstille 7 til forskellige tutorials online
og referencer, der giver dig mulighed for at samle disse ting op.
Men hvad der er virkelig vigtigt i slutningen af ​​dagen
>> er at forstå, hvordan disse ting anvendes.
Igen, hvis vi har den stil tag inden i hvilken
kan gå selectors, den slags identifikatorer, der angiver
til hvem vil du anvende disse egenskaber,
og derefter du sætte egenskaber som nøgleværdi par
adskilt af et kolon og derefter endte med et semikolon,
eller du kan rippe alt det ud og sætte det i en separat CSS-fil
sig selv.
Okay, nogen spørgsmål om begreberne
eller det store billede af CSS?
Du vil igen se mere af det i Pset 7,
men vi vil holde det generelt temmelig simpelt.
Nej? Ok.
Det er tid til en egentlig programmeringssprog,
og vi vil komme tilbage til en lille smule af CSS i form af et eksempel.
PHP er faktisk et vidunderligt tilgængeligt sprog
idet det er syntaktisk næsten svarer til C.
Med andre ord, hvis du kender C du kender for det meste PHP,
mindst syntaktisk, selv om der er nogle nye funktioner
og nogle nye begreber, vi bliver nødt til at se på.
>> Men for det meste, at vi nu overgang fra C til PHP
de fleste af de nye ting er virkelig i det store billede,
hvordan du bruger et sprog til program på nettet i modsætning til
på kommandolinjen eller i en blinkende prompt som vi har gjort hidtil.
For reference, især med Pset 7 og det endelige projekt og fremefter
må drage fordel af denne webadresse her, hvis du gerne vil læse op på de formaliteter i PHP.
Det er faktisk gerne et gratis online lærebog effektivt,
og du vil også opleve, at hvad der er virkelig rart om PHP
er, at der er hundredvis af funktioner, der kommer med det,
hvorimod i C du ikke nødvendigvis har adgang til
flere funktioner end var i matematik bibliotek, CS50 biblioteket.
I PHP og en masse moderne sprog, Python og Ruby blandt dem,
får du adgang til så mange flere funktioner, hvilket betyder at du kommer til at skrive
en masse mindre kode, fordi du kan stå på skuldrene af andre mennesker
der allerede har skrevet nogle ting for dig.
>> Lad os tage en hurtig rundtur i syntaksen i PHP og derefter skrive et par eksempler.
Hvad er rart om PHP først og fremmest
er der ingen hovedfunktion.
Hvis du ønsker at skrive et program i PHP du bare begynde at skrive kode,
og du behøver ikke at bekymre sig om main.
Der er ingen int. Der er ingen tilbage.
Der er ingen argv, argc, der kræves, når du skriver programmet.
Snarere kan du bare begynde at skrive kode, og det er til dels
fordi PHP er, hvad der kaldes et fortolket sprog.
C blev udarbejdet, og det blev samlet i den forstand, at du starter
med kildekode, køre det igennem Dunk, som er en compiler,
og til sidst efter nogle antallet af trin, du får objekt kode, 0'er og 1'ere.
PHP og Python og Ruby og Pearl m.fl.
er forskellige typer af sprog, som du ikke udarbejder dem.
Du behøver ikke gå fra kildekode til 0'er og 1'ere.
Du skal bare køre kildekoden, og du kører kildekoden
ved at skrive i en sædvanlig tekstfil, der ender på. php i denne sag
i stedet for. c, og hvad programmet gør på din computer
er det bogstaveligt talt fortolker din kode linje for linje for linje.
>> Med andre ord, skriver snarere end et program og køre programmet
direkte du i stedet skrive et program med en fil der ender på. php.
Så kan du køre en egentlig program, der hedder php.exe, hvis du er på Windows,
eller bare PHP, hvis du er på Mac OS eller Linux,
og du giver som input til PHP-programmet din egen kildekode,
og dets formål i livet er at læse din kode top til bund, venstre mod højre,
og gøre, hvad du har fortalt det til at gøre.
>> Lad os se hvad dette vil betyde syntaktisk.
I PHP har vi betingelser.
Denne slide er identisk med hvad du så tilbage i uge 1
fordi syntaktisk forhold, IFS og ellers IFs og helst i PHP
ser nøjagtig sådan ud.
Når det kommer til boolske udtryk de kommer til at se ud præcis som dette.
Når det kommer til AND ting sammen som Booleans det kommer til at se ud præcis som dette.
Skifter ser det samme, og du får den ekstra fordel i PHP
der skifter i C kunne kun tænde en char eller en int.
Du kunne ikke tænde for en streng værdi.
I PHP kan du faktisk få et udtryk
det er en variabel, hvis indhold er en streng,
og du kan faktisk gøre streng sammenligning i den virkelige intuitiv måde,
ikke pointer sammenligning, for at afgøre, om at gøre sagen i eller j eller noget andet.
Vi vil se, at potentielt inden længe.
>> Løkker for vidunderligt er de samme.
For sløjfer har en initialisering, en tilstand, og nogle antallet af opdateringer.
Mens sløjfer findes også i PHP.
Gør mens løkker findes også i PHP,
og arrays eksisterer i PHP, men her er hvor syntaksen begynder at få lidt anderledes,
men koncepterne er de samme, og begreberne virkelig er de samme
som de var i uge 0 med Scratch.
Først og fremmest er det $ tegn.
Det var et design beslutning i PHP hvorved enhver variabel
i PHP ved design starter med $ tegn.
Der er ikke mere X, Y, Z. Det er nu $ X, $ Y, $ Z bare fordi.
Det er noget at holde i tankerne, og nu på højre side
Dette ligner et array,
men vi bruger firkantede parenteser her.
I PHP og i JavaScript, vi som vil i sidste ende se,
at erklære et array du åbne plads beslag og lukket firkantet beslag,
og så har du en kommasepareret liste over værdier, hvad enten int'er
eller strenge eller specialtegn, hvad du vil, inden for dette udtryk dér.
>> Nu vidste hvordan vi gør noget som dette i C?
Hvad var syntaksen for statisk at erklære en række kendte numre?
Det var krøllede parenteser, så lille forskel her, men i både PHP
og i sidste ende JavaScript det bare bruger kantede parenteser, så virkelig
det eneste interessante detalje her er det $ tegn for variabelnavnet
og også de firkantede parenteser, og der er en nysgerrig ting
der er blevet udeladt, og på venstre side af tegnet =.
Hvad mangler at vi har krav i flere uger nu? Yeah.
[Uhørlig student svar]
Størrelsen, så der er ingen omtale af størrelsen af ​​matrixen.
Helt ærligt, er der ingen omtale af firkantede parenteser på venstre side
af tegnet =, og hvad der ellers mangler linjen?
Ja. >> [Uhørlig student svar]
Den type, så hvad er interessant især om PHP
er, at det ikke er en stærkt skrevet sprog som C er
og det er stærkt skrevet i den forstand, at du skal sige char,
du må sige int, skal du sige float.
>> Når som helst du ønsker en variabel, som du er nødt til at fortælle Dunk hvad dens type er.
PHP er lidt lazier.
Det er løst skrevet i den forstand, at
du kan have flåd og specialtegn og strygere
og int'er og så videre, men sproget selv
ikke rigtig ligeglad med, hvad du lægger inde i en variabel.
Du behøver ikke at oplyse det på forhånd, hvad datatype
går i en variabel.
Det er helt op til dig, så det er rart
i, at du ikke behøver at bekymre sig så meget om data skrive
og bekymrende, hvad dine argumenter er, og så videre.
Dette betyder også sidste ende funktioner i PHP vil være i stand til at vende tilbage
enten en int meste af tiden, og måske en gang imellem
de vil returnere en bool, en boolean false, for eksempel, til at betyde, at noget gik galt.
Det giver os nogle upsides, men det vil også gøre os slags ved design
lidt lazier når det kommer til data typebestemmelse.
>> Hvad er der ellers at holde sig for øje her?
Variabler ser helt lide det, så $ s = "hej, verden."
Det er måske udledes af det foregående eksempel,
og vi har en anden type løkke.
Denne ene vil vi faktisk se en gang imellem, da det er ganske handy,
en foreach konstruktion.
I dette tilfælde tager foreach løkke inde i sine parenteser 3 ord typisk,
$ Noget først, hvilket er, hvad opstilling vil du gentage over medlemmerne af,
så bogstaveligt søgeordet som, og så endelig
anden variabel navn, som du får til at vælge.
Det kan være foo, bar, eller element,
og hvad denne konstruktion gør
er, hvis det $ array indeholder 10 elementer
på hver iteration af dette array-ked, på hver iteration af denne løkke
den variable kaldes element vil blive opdateret
at være det første element i arrayet, så det andet element i arrayet,
så det tredje element i array, hvorved behovet
at gøre det lidt irriterende firkantet beslag notation og
$ I med henblik på at indeksere i et array.
PHP gør alt dette arbejde for dig og på hver iteration
bare hænder du den næste element fra arrayet
uden at du behøver at vide om eller bekymre sig om dens numeriske indeks placering.
>> Og så endelig, for nu, er der en anden funktion i PHP
der kommer til at være enormt nyttige, især når vi begynder programmering på internettet,
og det er kendt som et associativt array.
De arrays, som vi kender hidtil som på 20 sekunder siden
og for de sidste 8 uger er numerisk indekseret arrays,
slags traditionelle arrays hvor indeksene er int'er,
0, 1, 2, hele vejen på op.
Associative arrays er meget mere kraftfuld.
De tillader dig at have vilkårlige taster,
vilkårlige indeks og vilkårlige værdier.
Hvorimod i en traditionel opstilling, det er 0, 1, 2,
i et associativt array du kan have et indeks
eller en nøgle Foo hvis værdi er bar.
Du kan derefter have en anden nøgle, hvis navn er baz og hvis værdi er qux.
>> Igen dumme datalogistuderende generiske variabelnavne her,
men pointen er, at dette array ikke har beslag 0 eller beslag 1.
Det er i stedet nødt til konsollen foo og beslag baz.
Dette er en meget mere alsidig i at vi vil være i stand til at knytte
ord med andre ord, nøgler med værdier helt vilkårligt,
og vi vil være i stand til at få disse værdier tilbage i konstant tid
fordi under hætten hvad et associativt array
virkelig er en hash tabel.
Husk på, at en hash tabel giver dig mulighed for at sætte nogle input
gerne sættes i ord, David, hvis du vil indsætte David til en slags ordbog,
og derefter får du tilbage nogle værdi typisk.
I tilfælde af speller, sandt eller falsk.
David eller hvad ord er i eller ikke er i ordbogen.
Et associativt array er egentlig bare en hash tabel,
men det er en meget mere brugervenlig inkarnation af det.
Som vi vil se, det vil give os mulighed for at gøre nogle ting
meget, meget let.
>> Lad os tage et kig på nogle grundlæggende PHP
eksempler og se, hvad vi kan gøre med dette sprog.
Lad mig gå videre og åbne op i vores kildebibliotek i dag
en fil kaldet hello1.php.
Denne fil er mere kommentar end det er konkrete kode
så lad mig rent faktisk at fjerne alle kommentarer fra filen
og nuværende for dig måske den enkleste PHP-programmet lige her.
5 linjer, og nogle af dem er hvide rum,
så mærke til nogle af de vigtigste forskelle her.
Filen hedder hello1.php.
Den allerførste linje, er dog <? Php.
Tilsvarende i ånden til HTML,
denne række tegn fortæller computeren
"Hey, computer, her kommer et program, som vi er i i PHP."
Det gør sikker på, det er ikke forvirret, at det er nogle andre sprog.
Linje 2 er et interessant hvide rum.
Linje 3 er vores gamle ven printf,
denne gang i forbindelse med PHP.
PHP har sin egen version af printf som opfører sig nøjagtig det samme,
så dette er bare at udskrive "Hello, world."
Og så denne modsatte tag her,?> Betyder, at er det for min PHP kode.
>> Lad os se, hvordan du køre dette.
Jeg har tænkt mig at gå tilbage til min terminal vindue her.
Jeg har tænkt mig at gå ind i mit PHP bibliotek.
Bemærk, at vi har en hel masse filer, den første hvoraf den ene er hello.php.
Lad mig gå videre og køre dette, hello1.php, skal du indtaste.
Tilladelse nægtet. Okay.
Hvordan har vi faste ting som dette i fortiden?
Hvad er det? >> [Uhørlig student svar]
Vi har brug for læse og skrive, men lad mig gøre ls-l.
Husk dette noget kryptiske udgang, hvorved hello1
ser ud til at kunne læses og skrives af mig
men kan læses af alle andre.
Det viser sig, dette er faktisk ikke et skridt i den rigtige retning.
Forskellen, igen med et fortolket sprog
er du ikke køre programmet direkte.
Du i stedet køre en tolk og aflevere det koden
at du har skrevet, så den kan fortolke det linie for linie.
I dette tilfælde jeg tolken eller programmet faktisk ønsker at køre
er bogstaveligt talt kaldes PHP.
>> Et eller andet sted på denne harddisk af apparatet er der et program
en anden skrev kaldet PHP, eller på Windows php.exe.
Hvad jeg har tænkt mig at gøre her, er jeg har tænkt mig at rent faktisk at køre PHP
men giver det som et kommandolinjeparameter den kode, jeg skrev,
og så vil jeg zoome ud og tryk enter.
Det kører mit program for mig, top til bund, venstre mod højre.
Lad mig gå videre og åbne op for en lille varians af dette.
I hello2.php varsel, at dette også
er for det meste kommentarer, så lad mig slippe af med dem, som en distraktion,
og hvad der er klart anderledes nu om denne fil?
Der er denne nye linje, lidt kryptisk øverst.
I linje 1 er det #! / Bin / php.
Bin er en konvention om Linux og Mac OS til binære filer,
så / bin betyder det er en mappe, der indeholder en masse binære filer
der er programmeret, hvoraf den ene er PHP.
The #! har tilnavnet molevitten,
som er den hurtig måde at sige det, og hvad det betyder
er, at når du kører dette program nu er der en antydning i toppen af ​​filen
der fortæller computeren, hvad tolken til at bruge.
>> Det bliver lidt irriterende, hvis du var nødt til at fortælle dine brugere og dine kunder
"Hey, vi skrev dette program kaldet hello1.php."
Alt du skal gøre er evigt køre PHP og derefter navnet på dette program.
Helt ærligt, det ville bare være pænere at køre hello1.php,
og ja, kan vi, hvis vi gør følgende.
Lad mig gå videre og gøre ls-l, og meddelelse i hello2 det er stadig bare læse skrive
og derefter læse læse, så jeg kan endnu ikke gøre dette, hello2.php.
Men vi indført denne nogensinde så kortvarigt sidste gang, kommandoen chmod.
Hvis jeg gør chmod a + x, hvilket betyder alle plus gennemførelsesskrivelsen,
og derefter hello2.php og derefter gøre ls-l igen mærke til hvad der er ændret.
Den ene er Linux viser mig filnavnet i grønt for at formidle det budskab
at det er eksekverbar, men endnu vigtigere, på den venstre side
bemærke, at bit repræsenterer x for eksekverbar nu er blevet indstillet.
Hvad dette betyder nu, er jeg kan køre ./hello2.php som sædvanlig,
tryk enter, og på grund af molevitten på toppen af ​​filen
det er en antydning, igen, til Linux, der siger
bruge denne tolk til at køre denne fil.
Må ikke bekymre dig om at tvinge brugeren til rent faktisk at skrive det.
>> Og hvad der er rart nu er det er lidt irrelevant til mine kunder eller mine venner
hvilket sprog jeg skrev dette program i, så jeg kan gå videre med mv
og omdøbe denne ting til hello2, for eksempel.
Og nu, hvis jeg gør ./hello2
og zoome ud mit program fortsætter med at køre.
Disse filtypenavne er en menneskelig konvention, som er nødvendig
for noget som Dunk og Make hvem lede efter dem.
Men for PHP, kunne jeg kalde denne fil udvidelse hvad jeg vil.
Jeg kunne snyde verden til at tro, at jeg er virkelig god til Ruby,
og jeg kunne skrive hello2.rb og derefter køre dette,
og voila, nu har jeg det Ruby version, som er en komplet løgn.
Men filtypenavne er meningsløse
hvis filen er eksekverbar, og har denne særlige antydning øverst i filen.
>> Nu, som en sidebemærkning, lad mig vise dig hurtigt version 3,
der er en slags nyttige trick til at vide.
I hello3 Jeg gjorde noget lidt forkert
at jeg vil opdatere kildekoden online.
I version 3 er det viser sig, at på de fleste Linux-computere
der er et program kaldet env for miljø,
og hvad du kan gøre her er, hvis du har ingen idé om hvor PHP
er installeret på den lokale harddisk, fordi faktisk det kunne variere baseret på computeren
at nogen bruger, env bare siger kører env,
der er på de fleste systemer, og finde ud af hvor PHP er.
Bare en fælles trick, så du ikke behøver at bekymre sig om at finde ud af, hvor et program er.
Men hvis du ligeglad med at finde ud af, hvor et program er, og du ikke har plejet hidtil
du kan bruge hvilken kommando.
>> Lad mig zoome ud og type, som php,
og bemærk det fortæller mig det er faktisk i usr / bin / php.
Det er lidt af en løgn. Det er også i bin.
Det er bare at vise mig den første hit.
Hvis du nogensinde spekuleret over, hvor Dunk er, hvilken Dunk, det er i usr / bin / klang,
som gør, usr / bin / gøre, og hvad det betyder er al denne tid
De kunne have været at skrive usr / bin / klang ind for at køre Dunk,
men det er lidt besværligt at gøre det, så nogle mapper
ligesom usr / bin og bin antages at være defaults
så computeren ved at kigge i dem for dig.
Eventuelle spørgsmål om at skrive en super, super simpelt Hello World program
i PHP, og derefter kører det?
Fordi vi nu vil begynde at indføre mere overbevisende syntaks.
Okay, here we go.
Disse programmer vi har set faktisk alle af dem før.
>> Hvis jeg åbner op, for eksempel, lad os gøre beer1.php,
vi vil ikke gå igennem flere versioner af dette, men hvad jeg gjorde
blev jeg satte mig ned og hældte det eller konverteret
min C-kode til PHP-kode her.
Det meste af den øverste del af filen er kommentarer her.
Det viser sig, der er en ny funktion vi har brug kaldet readline.
GetString, tilbagekaldelse, fra uge 0 og fremefter var en CS50 ting.
PHP kommer med sin egen brugervenlige funktion kaldet readline
der tager 1 argument, som angiver prompt
som du ønsker at vise til brugeren, og hvilke readline gør
er den returnerer uanset brugeren i.
I dette tilfælde, jeg erklære en variabel kaldet $ n.
Jeg lagring i det returværdien af ​​readline
efter at spørge brugeren med denne streng.
Bare for at bakke op, for at køre denne ting, lad mig gå videre
og køre php beer1.php.
Hvor mange flasker vil der være? Lad os bare gøre 2 denne gang.
Enter. Det er alt.
>> Programmet er funktionelt identisk med den C-version fra uger siden.
Men syntaktisk lad os se, hvad der er anderledes.
Efter jeg får en int fra brugeren meddelelse om, at jeg gør noget fejlkontrol,
og hvis n er mindre end 1 jeg sagde op, og jeg udskrive
en ked besked til brugeren og afslut med 1.
Også dette er en lidt anderledes.
I C hvad gjorde vi? I C vi returneres 1.
I PHP du afslutter med 1, som ærligt talt er jeg tænke lidt mere intuitiv
fordi du bogstaveligt talt er at afslutte programmet.
Okay, og derefter ned her den irriterende sang er identisk syntaktisk
undtagen for den variable, så her nede i linje 24 og fremefter
mærke min for-løkke er næsten den samme,
men jeg har $ foran i og n,
og hvad der mangler også linje 26, som vi har haft i det forløbne
når han angiver en variabel i?
Der er ingen type.
Det er forkert i PHP til at sige int.
Du skal blot behøver ikke at gøre det.
Computeren, tolken PHP er smart nok til at indse
at hvis du sætter et nummer i $ jeg vil behandle det
som et tal for dig.
Og så hernede vi tilslutte $ i, $ i, $ i - 1.
Alt dette er det samme, og derefter ned her, vi laver en "Wow, det er irriterende" printf
og derefter afslutte (0).
>> Igen takeaway her er, at selv om vi kommer til at tilbringe forholdsvis
lidt tid på PHP, i hvert fald i forhold til hvad vi gjorde på C,
det er næsten det samme, og så hvad vi vil gøre i dag og i næste uge
og videre er fokus virkelig på nogle af de nye ideer.
Bare for at se, at en anden ting er at oversætte over fra C,
dette var et super simpelt program, vi gjorde i uge 1
eller 2 som kubik en værdi.
Men hvad var interessant på det tidspunkt om dette program er, at det
introducerede begrebet en brugerdefineret skriftlig funktion, som vi selv skrev.
Syntaksen i PHP er næsten den samme.
Her er mit program op øverst.
Bemærk igen fraværende er enhver forestilling om main.
Jeg begynder at skrive kode, og det er, hvad der kommer til at blive henrettet af tolk.
Jeg udskrive x er nu 2, formentlig.
Så jeg hævder Cubing ...
Så jeg kalde terningen funktion og passere i $ x
og tildele returværdien til $ x.
Så jeg hævder, at det er cubed, og så siger jeg det, som forhåbentlig
vil sige x er nu 8.
Syntaksen for funktionen i PHP er nogensinde så lidt anderledes.
Igen mangler, er returtype.
Igen mangler er returtype og også mangler, er hvad anden type?
[Uhørlig student svar]
Nå, okay, det er godt. Lad os vende tilbage til om et øjeblik.
>> Vi har ikke for eksempel her int.
Vi ikke, for eksempel int har her fordi, igen, i PHP
du simpelthen ikke behøver at og ikke bør gøre det,
men snarere der er denne nye søgeord kaldet funktion.
I PHP er det næsten lidt klarere, fordi når du ønsker en funktion
du bogstaveligt talt sige funktion, du giver det et navn og derefter en kommasepareret liste
hvis nogen af ​​sine argumenter.
Ingen grund til at sige ugyldig eller noget lignende, og derefter vende tilbage er den samme,
$ A * $ a * $ en.
Der mangler også? Sammy påpegede dette her.
Øverst i filen fuldstændigt fraværende i PHP også er en prototype.
Også dette er tilsigtet.
Sprog og tolke som PHP er klogere end C nogensinde var
i compilers som Dunk.
>> Husk på, at Dunk, hvis du ikke fortælle det, terning eksisterer,
hvis du ikke fortælle det, at printf eksisterer som med en prototype
eller med en # include, godt, var det kommer til at råbe på dig og ikke engang kompilere din kode.
PHP og mere moderne sprog er meget klogere, når det kommer til dette.
De vil tage det på sig at læse gennem alle din kode
og derefter yell på du kun, hvis den finder terning ingen steder.
Det betyder ikke noget, hvis terningen er i bunden eller toppen eller endda i nogle separat fil.
PHP og lignende sprog er nu smart nok til at se fremad
ved alt før anse dig for at have lavet en fejl.
Hvor står vi så?
>> Lad os gøre et sidste eksempel her under forhold,
og hvis jeg åbner conditions2.php varsel for
syntaks her er næsten den samme.
Jeg bruger readline stedet for GetString, men denne linie er den samme som før,
"Jeg vil gerne et heltal venligst."
Jeg har derefter en hvis betingelse, en else if, og derefter en anden,
men funktionelt dette program er også identisk med det, vi gjorde uger siden,
så hvis jeg kører denne ting, php af betingelser2,
og jeg giver det et nummer som 23 -
Jeg plukket et positivt tal. Hvis jeg giver det -1 jeg plukket et negativt tal.
Hvis jeg giver det 0 jeg faktisk plukket 0.
Så hvem bekymrer sig om alt dette?
Tja, en af ​​de sjove slags øvelser her
for mig i det mindste var at gå tilbage og se, hvor hurtigt jeg kunne gennemføre Pset 5,
den stavefejl Pset.
Husk på, at der var denne fil kaldet speller.c,
og der var en fil kaldet dictionary.c.
Hvad jeg gjorde, var jeg slags brugte et par minutter, og jeg omdannede C-kode
til PHP-kode, og vi vil ikke bruge meget tid på speller
fordi ligesom i Pset 5 du ikke virkelig har brug for
bruger meget tid på speller selv, fordi din opmærksomhed var på ordbog.
>> Det er nok at sige, at hvis du læser igennem speller,
denne fil her, det er temmelig meget svarende til C-kode
vi gav dig for Pset 5.
Jeg har lige tilføjet nogle $ steder.
Jeg har ændret visse funktionskoder navne, hvis de ikke eksisterede i PHP.
Der er en ekstra ting her, preg_match,
som er lidt mere avanceret måde at gøre noget, men vi vil komme tilbage til at i sidste ende.
Men kort sagt, er speller næsten identiske, og hvis man ser på den allernederst
hvad det i sidste ende spytter ud, er det her,
ord stavet forkert, ord i ordbogen, ord i teksten.
Okay, så hvad er interessant nu, er følgende.
På toppen af ​​min fil jeg kræver dictionary.php.
Ligesom C har # include PHP har en speciel funktion kaldet kræve
at stort set gør de samme ting, kræver en fil kaldet dictionary.php.
Hvordan kan jeg gå om gennemførelsen Pset 5?
Lad mig gå videre og åbne en fil her.
Lad mig tage et lille henvisning her.
Og lad mig oprette en ny fil, og begynde at kalde dette dictionary.php.
Lad mig sige det i en anden mappe, så vi kan gøre det live.
Og nu vil jeg zoome ind
Jeg har tænkt mig at starte min PHP fil med åben beslag php lukket beslag.
Og så herinde der var et par funktioner jeg nødvendige for at gennemføre for Pset 5,
så lad mig begynde at gennemføre nogle af dem,
så funktionen check, som måtte tage et ord i som et argument.
Vi vil gøre det og komme tilbage til det om et øjeblik.
>> Der var funktion belastning, som tog i hvad som argument?
Dictionary, så den fil, jeg rent faktisk ønskede at indlæse.
Der var funktionen størrelse, som ikke tog nogen argumenter
og der var funktion-hvad var den anden?
Unload, som ikke tog nogen argumenter enten.
Disse er de 4 funktioner, som jeg vil være nødvendigt at nu gennemføre i PHP,
og hvad jeg har tænkt mig at gøre, er at gå videre og gøre det.
En masse af jer brugte en hash tabel i Pset 5,
så lad mig gå videre og oprette en hash tabel i PHP.
Udført.
Det giver mig en hash tabel. Tja, hvorfor?
Den ene er variabel kaldet $ bord, bare for at fremmane tanken om en hash tabel.
De kantede parenteser, dog huske, repræsenterer hvad?
Et array, men i PHP arrays behøver ikke at være numerisk indekseret.
De kan også være associative arrays,
hvilket betyder, at du kan have vilkårlige nøgler og værdier.
>> Meget gerne i Pset 5, de af jer, der gjorde hash tabellen implementeringer
du sandsynligvis indsat ordet og derefter indsat den i en kæde af sammenkædede lister,
eller du gemt værdien af ​​sand eller andet sted, eller noget i den retning.
Du eller anden måde huskede det faktum, at ordet var der.
For nu, er der vil være min hash tabel,
og så nu at gå om at gennemføre check funktion
Jeg bare nødt til at se indersiden af ​​denne hash tabel
og se om et ord er der.
Hvad jeg har tænkt mig at gøre, er jeg har tænkt mig at sige, hvis-
lad os sige isset, som er en PHP funktion, der bogstaveligt betyder bare er nøglen sæt,
så isset ($ tabel [$ word],
og i så fald returnere sandt.
Det er det. Det er Pset 5 i PHP.
Tja, i retfærdighed,. Ok
Else returnere false, så det er der ikke.
Hvad der virkelig foregår her?
Tja, hvis tabel-eller hash tabel her mere generelt-
er et associativt array, der betyder, at du kan indeksere ind i det
med et ord som "Ordet", og du er nødt til at komme tilbage en vis værdi.
>> Vi er sådan at få et skridt foran os selv.
Det ville være lidt rart, hvis vi rent faktisk indlæst filen først,
så belastningen er ikke helt så simpelt, men lad mig gå videre og pisk op
en virkelig hurtig implementering af belastning.
Lad mig gå videre og sige ord får fil ordbog.
Den fil-funktionen i PHP åbner en fil
og vender tilbage til dig en vifte af alle de ord i denne fil,
bare hænder dem til dig.
Det var en stor smerte også, var det ikke?
Nu foreach, dette er vores nye konstruktion, foreach ($ ord som $ word).
Denne sløjfe vil begynde iteration over array ord
og tildele $ ordet variablen hvert ord i filen
fra den første til den anden til den tredje til den fjerde hele vejen
så jeg ikke behøver at gøre det irriterende [i] notation og lignende.
Og hvad jeg simpelthen tænkt sig at gøre for hvert af disse ord
er gemme det i min tabel ved indeksering i tabel
og derefter gøre sandt, fordi at huske
at et ord er i min ordbog alt jeg virkelig nødt til at gøre
er slags vende en smule og sige dette ord i min hash tabel er der, sandt.
Og hvis det ikke er der, jeg har ikke til eksplicit sætte falske,
ellers ville jeg nødt til at sætte falske for alle mulige ord i universet.
>> Det er tilstrækkeligt for mig bare at sætte en indeksværdi
til sand hvis et ord er faktisk i mit hash tabel.
Nu, jeg skære et par hjørner her, at jeg vil vinke mine hænder på for nu,
men nu belastningen funktion er gjort.
Jeg indlæse alle de ord fra filen ind i et array.
I gentage over denne matrix, og for hvert ord i sættet
Jeg sætter det ind i min hash tabel med 1 linje kode.
Det er sjovt. Du ved, hvordan vi kan gennemføre størrelse nu?
Nå, størrelse er altid temmelig let, i retfærdighed.
Her kan vi bare returnere optælling af bordet.
Det er ret nemt også tælle antallet af ting i tabellen.
Det er faktisk sådan ikke den mest effektive.
Jeg burde nok have en variabel kaldet størrelse, så vi kan gøre det
i konstant tid, at men er temmelig let.
Åh, og derefter losse, hvis vi virkelig ønsker at være anal her
vi kan sige det er hvordan du losse noget.
Du skal bare indstille den variable svarende til et tomt array,
og det bliver fjernet alt, hvad der var der.
Ingen grund til at ringe gratis.
>> Igen, jeg har skåret nogle hjørner, og jeg undskylder for tildeling problem sæt 5
måske i C, men hvis vi nu gå videre og køre dette,
Jeg har tænkt mig at rent faktisk at køre den version, jeg skrev på forhånd
bare så jeg ikke foretage nogen syntaktiske fejl overhovedet.
Lad mig gå videre og køre stavekontrol. Brugen er den samme.
Her er en ordbog fil, som netop indeholder ordet foo.
Her er en tekstfil, der bare indeholder foo bar.
Lad os stavekontrol dette, så speller, ved hjælp af denne ordbog fil på denne tekstfil.
Der er en forkert stavede ord, bar, og voila.
Udført med Pset 5.
Lad os tage en 5-minutters pause her, og vi vil komme tilbage og mere på PHP.
Okay, vi er tilbage.
Lad os gøre-hade mig for et stykke tid.
Lad os nu rent faktisk se, om det ikke var en positiv
faktisk gennemførelse af denne ting i PHP.
Ydet, det tog 45 sekunder at gennemføre.
>> Men lad os gå videre nu og køre tingene.
Lad mig gå videre og køre en C-udgave
af speller, og vi vil køre det på en af ​​de største filer,
som er King James Bible.
Og det her er in-lad os gå ind i vores C folder,
speller på King James 5th.
En masse forkert stavede ord.
Okay, så det er outputtet du sandsynligvis fået selvom tiderne er lidt anderledes,
hvis du fik alt fungerer korrekt, og så tiden i alt til stavekontrol
King James Bible var 0,38 sekunder, så temmelig godt med, at gennemførelsen.
Lad mig nu gå ind i PHP version, som vi lige har skrevet.
Lad mig køre speller på King James.
Whoops, ignorere denne fejl. Jeg er i den forkerte mappe.
Speller på King James 5th.
Næsten færdig.
>> Okay, vil den snu observatør indse der var mere end 3 sekunder der.
Det er den sande køretid.
Det viser sig, at det tager tid at spytte masser af tekst ud
på grund af buffer problemer, men lang historie kort,
der var 3,15 sekund af maskinens, CPU-tid,
versus hvad var det for et øjeblik siden?
Ligesom 0,3.
Jeg mener, det er en størrelsesorden langsommere, så hvor er det
latterlige afmatning kommer fra?
Tja, som det har været tilfældet med de fleste ethvert design beslutning vi har lavet
i klassen i løbet af de sidste 9 uger er der næsten altid denne afvejning.
Sommetider mellem bare rum, nogle gange mellem rum og tid
rum, tid og udviklingsindsats, og faktisk her, selv om
vi gemt en enorm mængde af tid, måske potentielt 10-20-30 timer
af udvikling tid at gennemføre stavekontrollen
ved piskning det op i blot 45 sekunder med dette sprog
den pris, vi betaler, er, at det er en størrelsesorden langsommere som et resultat,
og dette er normalt tilfældet med de fleste helst fortolket sprog,
PHP, Python, Ruby, Pearl eller andre, hvorved
hvis du kommer til at køre det gennem en tolk og få den læst din kode
linje for linje, top til bund, venstre mod højre,
at mellemmand kommer til at tage lidt tid for sig selv,
og hvad du følte her i de 3 sekunder i modsætning til .3 sekunder
er det faktum, at der er denne mellemmand, der har til bogstaveligt fortolke vores kode
linje for linje, og Gud forbyde, hvis du er inde i en løkke
med en enorm fil, der indeholder hundredtusinder af ord.
>> Denne hovedhøjde kommer til at tilføje op og tilføje op og tilføje op og tilføje op.
For et værktøj som dette er det nok ikke det bedste sprog at bruge til at gennemføre
en stavekontrol hvis umiddelbarhed er af interesse for dine brugere og til dig.
Men den luksus, vi har i et øjeblik er, hvis du
bruge et sprog som PHP eller en masse fortolkede sprog
i forbindelse med internettet, for den sags skyld har du fordelen
at internettet er en meget langsommere end de fleste computere.
Du har en GHz CPU i computeren, 2 GHz, måske endda mere i disse dage.
Men virkeligheden er på internettet er der en stor mængde af latency
hvorved en browser til at tale med en server, selvom vi oplevede i sidste uge
at det er temmelig hurtigt, halvt et millisekund eller deromkring,
det også kommer op, og hvis du henter ting som et billede
eller en Facebook-billede eller få onlinemeddelelser over Facebook snak,
Gchat eller lignende, alle disse returtider
mellem browseren og serveren begynder at tilføje op,
som gør netop din valg af sprog i mange tilfælde
ikke alle, at det er relevant, så du har det fint med en lidt langsommere sprog
som PHP eller Python eller Ruby
men hvor der er enorme upsides til dig og dine kolleger
og dine venner, fordi du kan gennemføre tingene så, så meget hurtigere.
Og desuden, du har langt mindre risiko for visse sikkerhedshuller.
Der er ingen pejlemærker i PHP.
Der er ingen SEG fejl, som du nemt kan fremkalde
på samme måde, som du kunne i C.
Med C er du super tæt på hardware.
Med PHP og lignende sprog, du er en slags højere niveau, så at sige,
med en masse forsvar mellem dig og hvad der rent faktisk sker
inde i maskinen, og det er bare en afvejning.
>> Vi har fået til det punkt at have disse mere moderne, højt niveau sprog
som PHP grund af erfaringerne i sprog som PHP i C.
Men hvis du ikke forstår hvad der er foregået på under hætten al denne tid
du kan bestemt ikke træffe de rigtige beslutninger vedrørende design,
og i hvert fald når det kommer til at arbejde på et sted som Facebook eller Google
eller nogen af ​​disse steder, der i stigende grad spiller med store datasæt
selvom du gå tilbage og gøre premed og arbejder med nogle MD
på nogle store datasæt inddragelse af patienter og læger
og lignende ved hjælp af de rette værktøjer er enormt overbevisende
fordi ellers din analyse af nogle datasæt kan tage sekunder,
eller det kan bogstaveligt talt tage timer.
Dette er blot ét eksempel, ikke at frustrere dig med hvor meget større indsats
det var i C, men for at hjælpe dig forstå, at når du gennemfører noget i C
du virkelig forstår, eller i teorien, forstår virkelig
hvordan alting er eller bør arbejde, og du har næsten fuld kontrol
over, hvad der foregår under kølerhjelmen, med og disse højere niveau sprog
du er nødt til at opgive mere kontrol til de mennesker, der opfandt dem
og er underlagt mere til deres design beslutninger end din.
Men hvis vi tager for givet, at udførelsen
er ikke helt så vigtigt på nettet på grund af disse andre spørgsmål,
bare netværkshastigheder er lidt langsommere end CPU hastigheder alligevel,
så vi kan sortere i råd til at bruge en lidt langsommere sprog
hvis upsides er vi kan udvikle ting 10 gange hurtigere eller mere.
>> Lad os se, hvordan vi kan begynde at bruge dette.
Lad mig gå ind i en mappe
blandt nutidens eksempler kaldet frosh.ims,
og dette blev faktisk personligt motiveret af det faktum, at det allerførste
Jeg skrev til Web år siden efter at have taget CS50 og CS51
var en hjemmeside for Frosh IMS-programmet, freshman intramurale sport,
som på det tidspunkt var nok år siden, at på tidspunktet
Der var ingen hjemmeside for programmet, selv om der var en web,
og i stedet var der en Proctor i Wigglesworth hvorved hvis du ønskede
at tilmelde volleyball eller fodbold eller hvad du ville udfylde et stykke papir.
Du ville derefter gå over gården.
Du vil derefter banke på deres dør og slide i deres dør eller hånd til Proctor
et stykke papir med dit navn på det, uanset om du ønsker at være en holdkaptajn,
hvad sport du ønskede at gøre, og hvad dorm du var i.
Det var en slags en gammel skole måde at gøre tingene på, og dette var en førsteklasses
mulighed for at automatisere en masse af denne proces.
Du skal blot gå til hjemmesiden. Du skriver noget i.
Du får en e-mail bekræftelse, og bom, er du færdig.
>> Det var det allerførste, jeg gjorde, omend i et sprog kaldet Pearl,
men det er relativt nemt at gøre i PHP, og det er en slags repræsentativ
af de problemer, du kan begynde at løse, når du kan udtrykke dig selv
programmatisk og behøver ikke at stole på ting som Google-websteder
eller Excel eller værktøjer, der er udleveret til dig.
Du fyre har nu mulighed for at gøre ting som dette.
Dette er en super grimme version af en formular,
men lad os bare bruge det til begyndelsen af ​​samtalen, hvor dette er
omtrent, hvad den form lignede år siden for os
at sætte folk på nettet for at tilmelde dig Frosh infrastrukturforvaltere.
Vi bad om et navn, et afkrydsningsfelt til, hvorvidt de ønskede at være kaptajn,
mand eller kvinde, og hvad så dorm de var i,
og så ville de sende denne formular.
Lad os først se under kølerhjelmen på HTML, der repræsenterer denne webside.
Lad mig gå ind i froshims0,
og som en sidebemærkning, for Pset 7 jeg tager for givet
de mapper og mapper, som jeg sætte ting i.
Vi vil lede dig gennem præcis, hvor ting skal gå i apparatet,
som mod-kommandoer, du er nødt til at køre, så du skal ikke bekymre dig om alle de
dumme detaljer synkronisering fra get-go her.
>> Okay, her er froshims0.php.
Lad mig rulle ned, og hvad der er nysgerrig her,
Dette er en PHP-fil, men hvad der er inde i det, klart?
Det er en hel masse HTML, og faktisk, PHP sin oprindelse
virkelig var for at være en web-centreret sprog.
For et øjeblik siden vi har brugt det til at gennemføre øl eksempel,
de betingelser, fx den hello eksempel, og det er fint.
Du kan bruge PHP som et scriptsprog
hvor et script er egentlig bare den nomenklatur, givet til en hurtig og beskidt program
eller noget, som du skriver i en scripted eller mere generelt et fortolket sprog.
PHP er super nyttigt for det, fordi du har set, hvor hurtigt
relativt vi kan piske op programmer i PHP.
Men det var virkelig designet til at blive brugt til internettet,
og designet til nettet i den forstand, at opsigelsesvarsel op her i toppen af ​​filen
Jeg begynder med <? Php.
Så jeg har en masse ubrugelige tildelte kommentarer, men da jeg lukker PHP mode.
Men da jeg falde ind i HTML-tilstand.
>> Hvad er interessant ved PHP er, selvom filen ender på. Php
det er generelt beregnet til at blive blandet sammen med HTML,
nogle PHP-kode, nogle HTML.
Og vi vil se til sidst, at vi kan begynde at drille dem fra hinanden
og holde vores HTML adskilt fra vores PHP helt,
men oprindelsen af ​​PHP virkelig skulle give dig denne fleksibilitet,
at hvis du vil nogle HTML bare skrive det, og det vil være
spytte ud identisk med browseren.
Men hvis du har brug for nogle programmerings teknik,
nogle programmeringskode, kan du også sætte det ind i samme nøjagtige fil, som vi snart vil se.
Her er min HTML.
Jeg har en titel af dette for Frosh infrastrukturforvaltere.
Jeg har en krop tag, der har fået nogle CSS på det at centrere alt i midten,
og derefter ned her jeg har en form, der tilsyneladende vil blive forelagt
til en ny fil kaldet register0.php, så vi vil se, at om et øjeblik.
Det er ved hjælp af en metode kaldet post, som vi vil vende tilbage til så godt.
Så jeg har en vis form indgange, en kaldet navn, hvis type er tekst,
en, hvis navn er kaptajn, hvis type er afkrydsningsfelt,
og dette har vi ikke set det før, men det gør præcis hvad den siger.
Du vil få et afkrydsningsfelt i stedet for en tekstboks.
Hernede har du en radio knap, som er en af ​​de cirkulære knapper
at du enten kan vælge denne ene eller det ene.
>> Bemærk at det er bevidst, at jeg gav begge radioknapper navn køn.
Dette er, hvordan du får gensidig udelukkelse, hvor du skal klikke
enten den ene eller den der, og ved at klikke på den anden
det unchecks den anden, så du er nødt til at give dem samme navn
hvis du vil have dem til at være gensidigt udelukker sådan.
Og så for dorm, tror jeg ikke, vi har set det endnu, men det er en udvalgt menu, en drop-down menu.
Mærkaten for det er valgt.
Du kan derefter give drop-down menuen et navn,
og så har du en hel bunke af disse muligheder.
Den første, bare for æstetik, er en tom streng.
Jeg ville bare drop down at være tom som standard,
og så er der Apley, Canaday, Grays, og så videre.
Og bemærk dikotomi her.
Muligheden i drop down har en værdi,
men så det har en menneske-kaldenavn, som i dette eksempel
er identisk, men hvis vi virkelig ønskede at være anal vi kunne have
værdien af ​​denne drop down bare være den korte version,
Grays, men vi virkelig kunne sige Grays Hall at det menneskelige faktisk ser,
men det er ikke alt, interessant, så jeg bare holdt det simpelt og gjorde dem identiske.
Derefter ned i bunden har vi en submit knap
som vi har set før, men bemærker jeg lige gav det et andet ord.
I stedet for CS50 søgning gav jeg mærket "Registrer".
>> Slutresultatet er denne webside her, og igen,
Hvor kommer dette bliver forelagt?
Det bliver sendt til nogle fil, værdien af ​​aktionen attribut,
som var register0.php.
Lad os se, hvad der faktisk sker her.
Lad mig gå videre og udfylde denne formular, siger David,
mand, Matthews, og så vil jeg sige registrere.
Lad mig zoome ud og klik registrere.
Okay, så slags ubrugelig, men lad os se, hvad der rent faktisk sker.
Bemærk, at webadressen er ændret til at være register0.php.
Hvad er mærkeligt fraværende fra webadressen, selv om, selv om vi lige har sendt en formular?
[Uhørlig student svar]
Okay, det er bare Chrome er brugervenlig disse dage.
Det er faktisk dér. De bare skjule det for at spare plads.
Men god tanke, god tanke.
Mod den anden ende af URL'en, selv om er hvad mangler? Yeah.
[Student] søgestrengen.
Søgestrengen, så husker fra vores simpel Google-søgning eksempler.
Så snart jeg klikker på send-knappen URL'en
tog mig til Google, men så var der? q = datalogi eller hvad jeg havde skrevet i.
Det er fordi vi brugte get-metoden med søgningen eksempel.
>> Denne gang vi bruger hvilken metode i stedet?
Sende, og en af ​​de umiddelbare sondringer
mellem GET og POST er, at stillingen ikke sætte brugerens input i webadressen.
Det skjuler det. Det stadig sender den.
Faktisk har vi hvad ser i browseren her, som vi vil afsløre om et øjeblik
ved at se på register0, bliver jeg bare at se indholdet
af arrayet, der blev indgivet fra browseren til serveren.
Men URL'en ikke har en?, Ikke har nogen nøgleord
eller værdier i det, og hvorfor er det?
Nå, post giver dig mulighed for stadig indsende data fra formularen til en server,
men det gør ikke sætte det i webadressen, så hvad slags oplysninger er post
særligt egnet til måske, når du beder brugeren om at
indtaste input til en formular?
Noget som en adgangskode, noget i retning af hvad ellers?
Kreditkortnumre.
Alt, hvad der er mildt følsom du sandsynligvis ikke ønsker at ende op i URL'en
om ikke andet fordi det betyder, at din roommate eller et familiemedlem kan bare trold igennem
din internet historie og derefter bogstaveligt talt se dine adgangskoder,
bogstaveligt se dine kreditkortnumre, fordi de fleste browsere
Husk i historien, uanset webadresser, du har været på,
så hvis blot fordi det ville være en dårlig idé.
Brug indlæg huder, at detaljer fra brugeren.
>> Også, hvordan kan du uploade et billede til Facebook?
Nå, de kun 2 mekanismer, du virkelig kan bruge,
selvom der er et par andre mere mystiske dem, er at komme og skrive.
Hvordan kan du muligvis uploade et foto via en URL?
Du kan faktisk gøre det.
Du kan tage en JPEG-eller bitmap eller GIF, og du kan repræsentere det i hexadecimal
eller noget, der hedder basis 64.
I stedet for basen 16 du bruger basen 64, som i det væsentlige ligner
ASCII-tegn, og du kan faktisk uploade et billede via en URL
efter et spørgsmålstegn, men der er generelt størrelsesgrænser.
De fleste browsere tvinger webadresser til at være ikke mere end 1.000 tegn,
måske 2.000 tegn eller lignende, så du kan ikke uploade
en 10 MB Facebook foto.
For at du bruger indlæg så godt, så for nu får sætter parametrene i webadressen,
hvilket er rart og nyttige nogle gange, men for noget følsom eller store
stillingen er vejen at gå.
Hvad er register0 egentlig laver her?
Tja, hvis jeg åbner register0 meddelelse om, at dette er en super simpel side,
men det er viser det faktum, at jeg kan samarbejde blande sig, for bedre eller værre,
HTML med PHP.
Hele denne fil, med undtagelse af de kommentarer i toppen, er HTML
bortset fra denne fyr her.
>> Bemærk i midten af ​​min PHP kode,
i midten af ​​min HTML, har jeg slags midlertidigt
indtastet PHP mode.
Jeg ringer en speciel funktion kaldet print r.
Det betyder udskrive rekursiv, og hvad det gør, er det rekursivt udskrives
uanset variabel, du afleverer den, semikolon, frakørsel PHP mode.
Og før tag giver dig pre-formateret tekst,
mono space tekst, så hver plads du faktisk se det.
Det forsvinder ikke. Hvad er post?
Nå, hvad er interessant og overbevisende om PHP
er, at når du sender en formular ved hjælp GET eller POST
noget, der er forelagt til dig af en browser
PHP selv finder ud af, hvad de centrale værdi par er,
tal ud, hvis der er lighedstegn, figurer ud af, om der er et spørgsmålstegn.
Det gør alt det hårde arbejde for dig, og så er det hænder du et associativt array
indeholder alt, hvad brugeren har indtastet i formularen.
Nå, hvad gjorde felter denne formular have?
>> Det havde fire felter.
Den ene var et tekstfelt kaldet navn.
Den ene var et flueben kaldet kaptajn.
Den ene var en radio knap kaldet køn,
og en var en drop-down menu der hedder dorm,
så mærke til, når jeg udskriver rekursivt
indholdet af denne særlige variabel.
Dette er en særlig global variabel kaldet bogstaveligt $ _POST i alle hætter.
Dette er en speciel global variabel som PHP bare skaber for dig
og hænder til dig, så du kan få adgang til alt
der blev fremlagt via en formular af en bruger.
Og ved at ringe print r på det, ville du ikke gøre det på en normal anvendelse.
Vi gør dette for at se indersiden af ​​denne variabel,
og hvad er inde i det, ja, 4 taster,
4 http parametre, så at sige,
navn, kaptajn, køn, dorm, og derefter de værdier, som brugeren
skrives med en enkelt undtagelse.
Jeg gjorde type D-A-V-I-D.
Jeg tjekkede kassen, men for mandlige, som tilsyneladende forelagt en værdi
af bare m for at være kortfattet.
>> Da jeg valgte Matthews det er den værdi, der blev valgt,
og dette er en lidt dum, men det er konventionen.
Når jeg kontrolleret boksen, en værdi på om, "på", blev fremlagt for afkrydsningsfeltet.
Hvis jeg ikke havde tjekket det, ville ingen værdi er blevet sendt overhovedet.
Dette er bare at give os et indblik i, hvad der er inde i denne særlige global variabel,
og det er så specielt, at det kaldes en super global variabel.
Den findes overalt for dig i din kode, så du kan faktisk få adgang til det.
Det er ikke så overbevisende, så lad os faktisk bruge super global
og faktisk forsøge at registrere nogen.
I froshims1 Jeg har tænkt mig at lave en ændring.
Jeg skifter handlingen til at være register1.php,
og jeg gør en anden ting.
Jeg var lidt flov over kvaliteten af ​​min webside der.
Det er temmelig hæslige, ærligt, så viser det sig
som du kan bruge meget nemt på nettet
andre folks JavaScript-kode, andre folks CSS
at de har skrevet og åbne kilder og stilles til rådighed som et bibliotek,
så at sige, og for eksempel jeg her jeg bruger en frit tilgængelig bibliotek,
en flok kode, som en anden skrev.
>> Twitter sket at skrive denne kode, og det hedder bootstrap bibliotek,
og det er bare en flok CSS style sheets, en flok. css filer
at en anden skrev og regnede ud, hvordan at få alt nice og temmelig
så folk som os kan bekymre lidt mindre om æstetik og fokusere meget mere
på logik og selve programmeringen.
Ved at sammenkæde det med det tag, som er den samme tag jeg brugte huske styles3.css tidligere,
Jeg har nu adgang til en fil, der hedder bootstrap.min.css.
Min bare betyder, at de har minified det, og de har fået fjernet al det hvide rum og så videre
bare for at sikre de ikke sende mig flere byte end jeg egentlig har brug for.
Men i der er en hel bunke af CSS, så hvis jeg nu åbne op version 1 af Frosh infrastrukturforvaltere
bemærke, at min fil er absolut pænere.
Nu er det stadig bare sort og hvid, men bemærke, at ved blot at bruge deres stil ark
og bruge bestemte funktioner i det på min form er det ikke fantastisk,
men det er absolut renere end det var før, og projektoren ikke gør det retfærdighed.
Der er små grå linjer omkring knapperne og omkring tekstfeltet lige her,
men det er absolut renere end det var før.
>> Nu, i retfærdighed, jeg er nødt til at ændre min markup en smule.
Dette er version 1, og læg mærke til, at jeg har brugt et par nye tags,
og ærligt, jeg havde ingen idé om, hvordan du gør dette, indtil jeg læste dokumentationen
for Twitters bootstrap bibliotek, og de fortalte mig, hvis du ønsker at bruge vores bibliotek
bruge en fieldset element inde i din form,
sætte det ord, du ønsker at vise ved siden af ​​et felt inde i en etiket tag,
så giv dit input et navn, ligesom før,
og dernæst for afkrydsningsfeltet, ikke kun du pakke den ind i en etiket element,
du bruger noget, der hedder en klasse, så vi har ikke set det før,
men du vil se dette i et af Pset 7 s shorts.
En klasse i CSS lader dig gøre noget meget lig den ID,
men før da vi havde et id med symbolet #
Det var for én og kun én element.
Hvad er rart om en klasse, er, at flere elementer kan have den samme klasse
eller den samme CSS stuff anvendt i den.
>> Men igen, der er mere på dem på kort, og resten af ​​dette blot kopiere og indsætte
fra deres dokumentation, hvor jeg har tilføjet en etiket her og der.
Og i slutningen, fordi jeg har inkluderet link tag øverst,
alt ser pænere automatisk
ved blot at have markeret op min side på en måde,
Twitter forventet, og der er så mange forskellige måder
at gøre dette, og det er faktisk meget passende.
På dette tidspunkt i semestret, som du vil se i Pset 7 s spec
Googling rundt, læse op på biblioteker, ved hjælp af andre folks CSS
og JavaScript til at løse accessoriske problemer
på problemet indstillede sig selv er bestemt fremmes, og er den måde
Web er bygget i disse dage, ved at stå på andres skuldre
så du virkelig kan fokusere på de nye og interessante problemstillinger.
Men lad os nu fokusere på, igen, logikken.
>> Det var en hurtig omvej på æstetik bare for at vise dig i hvilken retning du kan gå.
Jeg har tænkt mig at vende tilbage til den grimmere én for nu bare fordi
der er ingen distraktioner med Twitter stuff, og lad mig gå videre og åbne op
froshims2, som igen adskiller sig kun i den sag, register2.php,
og lad os tage et kig på, hvad effekten er her.
Lad mig gå videre og skrive i David.
Jeg vil ikke være kaptajn denne gang.
Jeg vil sige han, Matthews, register.
Fandens. Okay, det er en skrue op på min side.
Stand by.
Register2, linie 22, hvis tom eller-undskyld.
Lad os genindlæse.
Okay, ved at indsende denne formular hvad skete der lige?
Jeg har skrevet i David, kontrolleret mand, klikkede Matthews, register.
Du er registreret. (Nå, ikke rigtig.)
Dette er helt klart et skridt videre end blot at udskrive indholdet af nogle variable,
men hvad denne fil egentlig gør?
I register2.php
bemærke, at jeg har nogle nye kode.
Inde i min krop tag jeg har hovedsagelig en hvis ellers konstruere,
men fordi jeg sammenblanding dette med nogle HTML
Jeg er nødt til at gå ind og ud PHP mode frem og tilbage, så lad os se, hvad jeg laver.
>> I den første linje her jeg siger, hvis det er tilfældet
at stillingen super global er tom for nøglen af ​​navn,
så med andre ord, hvis brugeren ikke gav mig en værdi for navn i form,
derefter tom vil returnere sand, fordi værdien er tom.
Or-mærke de lodrette bjælker-hvis køn er tom
indersiden af ​​denne særlige super global, som igen repræsenterer indholdet af form,
eller dorm er tom, så jeg har tænkt mig at gå videre og råbe på brugeren.
Hvordan? Nå, bemærker jeg har tænkt mig at sige, at du skal give dit navn, køn og dorm.
Lad os faktisk fremkalde den fejl.
Lad mig gå tilbage til min form. Lad mig genindlæse at slette den.
Og jeg vil bare give dem David, og de behøver ikke at vide, hvor jeg bor.
Register. Tilsyneladende jeg behøver at fortælle dem, hvor jeg bor.
Du skal oplyse dit navn, køn og dorm. Gå tilbage.
>> Og jeg kunne klikke for at gå tilbage til den form, men hvorfor så det?
Tja, i dette tilfælde navn var ikke tom, men køn var, og dorm var,
så denne hele udtrykket evalueres til sand, og selvom syntaksen er lidt nyt,
igen, vi går ind i PHP mode, velkendt hvis udsagn,
men den nye del her er netop denne kolon, og jeg havde skruet op ved at udelade en parentes
ved et uheld, varsel, men tyktarmen, og det betyder
selvom vi afslutter PHP mode alt
der følger bør spytte ud ordret til browseren
indtil du ser en anden blok, som vi gør her,
i hvilket tilfælde du skal i stedet spytte dette ud
indtil du ser endif, så nogle lidt ny syntaks
som giver mig mulighed for at skifte mellem HTML og PHP.
Vi kan rydde op i sidste ende, men for nu,
det er lidt af en overbevisende måde fejlkontrol formularen.
>> Nu siger jeg, at du ikke rigtig registreret, fordi vi naturligvis har gjort noget, men de data,
så lad os faktisk forsøge at gøre noget cool.
I froshims3 den eneste forskel er jeg har tænkt mig at underkaste sig register3,
så HTML er den samme.
I register3 bemærke dette.
Denne ene er en slags sexet.
Øverst jeg bruger et krav erklæring, så det er ligesom # include.
Denne gang er det ikke stdio.h eller sådan noget.
Det er en PHP bibliotek, og denne ene kaldes PHPMailer.
Hvordan vidste jeg at inkludere netop denne streng i anførselstegn?
Jeg læste det i dokumentationen, så når de fortalte mig sætte dette øverst på filen
hvis du ønsker at bruge en speciel bibliotek kaldet PHPMailer der gør hvad det siger.
Det giver dig mulighed for at sende e-mail via PHP.
Lad os nu rulle ned yderligere.
>> Meddelelse at begynde jeg i PHP mode hele denne tid,
så nu mærke til hernede efter import biblioteket,
så at sige, jeg laver nogle sanity checks.
Hvis det er tilfældet, at navnet ikke er tom
og køn er ikke tom-mærke til de udråbstegn-
og dorm er ikke tom, så brugeren har logisk udfyldt formularen, i hvert fald nok.
Jeg er ligeglad med, om de er kaptajn eller ej. Jeg skal bare have deres navn, køn og dorm.
Hvis de har udfyldt dem ud, så ingen af ​​disse felter er tomme
dette er lidt ny syntaks.
PHP, som en sidebemærkning, er et objektorienteret programmeringssprog
som nogle af jer måske husker fra APCS eller lignende.
For nu, hvis uvant bare vide, at for at bruge dette bibliotek
du er nødt til at skrive en linje kode som denne bruger et nyt søgeord,
bogstaveligt talt et nyt søgeord kaldet ny.
Men ud over det, har vi nogle velkendte syntaks.
Det er en pil operatør, hvilket svarer til, hvad vi brugt til struct i forbindelse med pointere.
For i dag PHP ikke har pegepinde,
men ved for nu at indersiden af ​​post variable
er i det væsentlige sådan en pegepind til et fagbibliotek
at en anden skrev, og hvis jeg ønsker at få adgang til specifikke funktioner
indersiden af ​​det bibliotek jeg, ligesom i C, skal du bruge pil operatør,
selv om disse ikke faktisk pegepinde.
Det er lidt PHP egen version deraf.
Det betyder, gå ind på biblioteket og kalder IsSMTP funktion.
SMTP, tilbagekaldelse, fra vores Warriors of the Net henviser til e-mail,
og det betyder bare bruge en e-mail-server til denne Frosh IM registrering.
>> Hvilken host ønsker jeg at bruge?
Tja, Harvard, hvis du Google rundt, har en e-mail-server kaldet smtp.fas.harvard.edu.
Hvis du spiller sammen derhjemme, eller du bor på en Comcast netværk
det kunne være noget i retning af smtp.comcast.net.
Det helt afhænger af, hvor du bor og hvem din ISP er.
Efter at jeg har tænkt mig at indstille min fra adresse vilkårligt at være jharvard@cs50.net.
Jeg derefter gå til at indstille at tage for at være jharvard@cs50.net.
Den eneste måde, jeg vidste, at disse funktioner blev kaldt SetFrom og AddAddress
er, igen, jeg læse dokumentationen.
Dette er ikke slags magisk kendt af alle programmører.
Så jeg sat et emne til "registrering."
Og nu denne linie er lidt grimt, fordi det betyder prik operatør betyder i PHP?
Alle kender?
Sammenkæde.
I C er det en smerte i nakken til at sammenkæde 2 strenge sammen.
Du er nødt til at beskæftige sig med malloc eller realloc eller hele denne ting
bare for at forlænge en streng.
I PHP, i JavaScript og andre sprog
du kan normalt gøre dette med en enkelt karakter.
I dette tilfælde betyder dot tage denne streng her
og tilføje til det denne streng.
>> Åh, og ved den måde, føje til det denne streng,
der sker for at være en variabel inde i det super global.
Så tilføje til det en ny linje, så alle disse prikker blot betyder
holde gør en større og større og større streng,
og du behøver ikke at bekymre sig overhovedet om malloc eller lignende i et sprog som denne,
og der er andre måder at gøre dette, men dette er en af ​​de hurtigste
måder at lægge det ud.
Hvad er dette gør?
Det skaber en e-mail organ, der kommer til at sige Navn: Captain: Køn: Dorm:
alle på separate linjer, og derefter endelig
én linje kode, og jeg har tænkt mig at ignorere dette for nu.
Hvis == falsk bare betyder, at hvis noget gik galt,
men magien opstår her.
Mail Send betyder Send denne e-mail.
Lad os se hvad nettoresultatet er.
I bunden af ​​filen, mærke det vil sige, at du er registreret rigtigt
hvis jeg får så langt.
Men hvis brugeren skruer op, bemærke, at vi startede denne
hvis betingelse op her, hvis det ikke er tomme og ikke tomme
og ikke tømme vi sende mailen.
Ellers vil vi sende denne linje kode,
som vil have den virkning, som du vil se i Pset 7, for at omdirigere brugeren
tilbage til hvor de kom, froshims3.php.
>> Krydsede fingre, ellers det vil være den mest skuffende demo i dag.
Her går vi.
Lad mig åbne min e-mail indbakke for jharvard i Gmail.
Ingen e-mail lige nu. Ok.
Lad mig nu åbne froshims3, som er den tredje og sidste eksempel vil vi se på her.
Okay, here we go.
Nate, han vil være kaptajn, mandlige, fra, siger, Apley.
Register. Okay, du er registreret rigtigt.
Nu, hvis jeg ruller over til min e-mail, åh, min Gud.
Jeg har netop dynamisk sendt en e-mail på internettet.
>> Lad os overlade til notatet.
En video er forestående for foredraget vi forpasset. Se dig næste uge.
[CS50.TV]