[Powered by Google Translate] [§ 8] [mindre komfortable]
[Nate Hardison] [Harvard University]
[Dette er CS50.] [CS50.TV]
>> Velkommen til vår nest siste avsnitt.
I denne uken skal vi snakke om PHP, og så neste uke
vi vil gjøre en liten gjennomgang for Quiz 1.
Vi kommer til å starte på side 3 av problemet setter pack,
og vi vil arbeide gjennom den delen av spørsmålene ganske raskt.
På side 3, begynner vi å snakke om denne forskjellen mellom C og PHP
i den forstand at PHP er et dynamisk skrevet språk,
mens C er statisk skrevet,
og har noen veldig raskt gjort noen koding i noe som PHP
eller Python eller Ruby før, JavaScript?
Helt nytt? Okay.
>> Alle disse språkene som jeg nettopp nevnte
er svært forskjellig fra språk som C og C + + og Java
i den forstand at når du deklarerer en variabel du ikke nødt til å erklære
hva slags variabel det er, så i C vi ble sittende fast å måtte alltid si
dette kommer til å bli en int variabel, eller dette kommer til å bli en char * variabel,
mens med PHP, med Python, med Ruby,
med mange av disse mer moderne språk du ikke trenger å gjøre det i det hele tatt.
Du bare deklarerer variabelen, og i tilfelle av PHP
du erklærer at det er en variabel med prefikset med en $ tegn,
og deretter type variabelen er bestemt av hvilken verdi det er å holde,
som er litt kult.
Å leke seg med dette litt, har vi prøve PHP-kode her
mellom start og slutt tagger.
Vi bruker denne typen som HTML i den forstand at
vi har disse vinkelparentesene her for å åpne og lukke.
Du vil se dette med HTML.
Du vil se den samme typen syntaks med XML også.
>> Dette indikerer starten på en PHP-blokk.
Dette? Php er spesifikk for PHP.
Vi stenger alt med en> også.
La oss åpne opp en fil i apparatet vi bruker hva du vil.
I denne pakken står det å ringe dynamic.php.
I sannhet, kan du kalle det hva du vil, men filnavnet vil komme opp
og være viktig senere, så bare husk hva du kaller det.
Jeg kommer til å bytte over til apparatet,
og jeg kommer til å gjøre en katalog for
§ 9 Jeg tror vi på nå.
Og vi vil gå inn i § 9,
og jeg kommer til å bruke gedit.
La oss se, gedit, og jeg kommer til å ringe meg dynamic.php.
Boom.
Innen dynamic.php, siden dette er en PHP-fil
og jeg ønsker å kjøre dette gjennom PHP tolk
Jeg trenger å starte alt av med de åpne koder,
så jeg kommer til å starte de med en gang,
gi meg selv en liten plass i mellom kodene,
og da poenget med denne øvelsen var å spille rundt med
denne funksjonen kalles getType, så getType, denne funksjonen her.
>> Legg merke til at det har understrek ingen eller mellomrom eller bindestrek eller noe sånt
skille 2 ord, få og skrive, bare ett ord helt.
Men hva dette vil gjøre er hvis jeg passerer i en variabel til getType,
si $ VAR eller $ x,
Dette vil fortelle meg slags i en debugging format
hva navnet på denne typen er.
Vi kommer til å eksperimentere her.
Spesielt hvis du ser tilbake på pset spec
Vi har et par forskjellige linjer med kode her.
I den første linjen i koden initialisere vi denne variabelen, $ var,
å være lik 7, og så har vi denne printf linjen
som sier hei, er printf Var blank.
Printf er en av mange måter vi kan skrive ut ting i PHP.
Ofte vil du se ekko funksjonen brukes i stedet for printf,
men printf vi er alle kjent med å ha blitt koding i C for en stund.
Hva du faktisk kan gjøre er å la oss se om kopier og lim fungerer.
Jeg kommer til å gi dette en sjanse.
Vi vil gå tilbake over til apparatet.
Ok, og der vi går.
Og avstanden er litt funky, men her vi går.
Vi har fått denne koden her.
>> [Student] Er det ikke god stil til fane det?
Beklager?
[Student] Er det vanlig å fane det?
Høyre, så Sam spør om det er konvensjonen til fane det eller ikke.
Vanligvis ja.
I dette tilfellet har jeg valgt å la være.
Ærlig, vil du se forskjellige ting for forskjellige programmerere.
PHP er vanligvis brukes ofte i kombinasjon med HTML
og andre språk, og så noen ganger utskriften vil se litt funky
Hvis du innrykk innen PHP start og slutt tagger.
Det avhenger egentlig.
I dette tilfellet kopier og lim ikke lime inn kategoriene i for meg,
men det definitivt ikke, som du sa, gjør det klarere.
Greit, hvis du lagrer denne koden i dynamic.php
så hva du kan gjøre er å komme ned til din terminal vindu der jeg er akkurat her nede
i gedit, og å gjøre tilsvarende kompilere
bruke sminke og deretter kjører koden i C
alt du trenger å gjøre med PHP-filen er å starte opp PHP tolk,
som er et lite program som heter PHP,
og argumentet du gir tolken er filen du ønsker å tolke.
I dette tilfellet, dynamic.php.
Whoops, hvor fikk jeg plassere den?
Oh, la jeg det i § 9, og her er jeg. Det er derfor.
>> Nå hvis jeg kjører det igjen
Vi ser at i mitt første getType funksjon samtale
Var er et heltall.
I den neste Var er en streng, og deretter i den tredje Var er en boolsk.
Hva er interessant om dette er hvis vi rulle opp ser vi at
disse er typer som ligner på de som vi hadde i C.
Vi hadde ints i C.
Vi måtte liksom strenger i C,
så strenger var ikke en helt legit type i den forstand at
vår CS50 streng var virkelig hva?
Beklager? Missy?
[Missy] Char *.
Ja, det var dette char * vi brukte.
Helt i begynnelsen av semesteret brukte vi strengen type,
men det var virkelig en char * under panseret.
Vi bare skriver definert det, mens i PHP disse strengene er en faktisk type.
Det er ikke mer av dette char * type ting.
>> Du vil se at vi kan gjøre mange flere ting med strenger
mye lettere i PHP enn vi kunne i C,
og så til slutt har vi dette boolean type, og den store forskjellen her er at
hvis vi blar ned ser vi at navnet på disse typene
er nå heltall, streng, og boolean istedenfor int og bool,
og som du plukker opp forskjellige programmeringsspråk,
forutsatt at på et tidspunkt i livet vil du komme i kontakt med
ulike de du vil legge merke til små quirks som dette
der C kaller heltall ints.
Noen kaller det heltall.
Det er andre ord som du vil kjøre inn.
Big int vi så i dag i SQL.
Det er også tall og deretter bool, boolean,
alle slags forskjeller der.
>> Dette er ikke veldig interessant, men nå skal jeg gi dere en liten bit av tid-
hvis vi zoome ut igjen for å arbeide gjennom denne øvelsen nederst på side 3
der den ber hvilke typer svarer til disse verdiene her nederst.
Vi har 3,50.
Vi har denne tingen her, noe som er interessant.
Vi har ikke sett det før, men hvis du har fulgt med i forelesning
du sannsynligvis allerede vet hva det er.
Så har vi dette, som dette er slags funky.
Du kjenner igjen dette.
Hva er dette i C?
Sam? Hva ville dette gi deg i C?
Det ville åpne en fil som heter dynamic.php og gjøre den lesbar.
Ja, og hva ville være den type variabel som vi ville tildele dette til? >> File stjerne.
Nøyaktig, ville vi tildele denne til en fil stjerne.
Dette er legitim PHP også.
Kjør det. Se hva som skjer når du passerer det i getType.
Og deretter også sjekke ut hva null er, hva som kan være i PHP.
Jeg skal gi deg et par minutter.
Du kan bokstavelig talt kopiere og lime inn disse verdiene i,
og så får vi gjøre litt tilfeldig samtale på deg
og se hva du har.
>> [Student] Jeg har et spørsmål. << Ja.
I en av forelesningene David sa at det er noe du kan sette på toppen av filen
slik at du ikke trenger å skrive i PHP hver gang.
Hva var det?
Han var sannsynligvis snakker om pund bang, hash smell.
Det er et direktiv om at hvis du merker en fil som kjørbar
så hva den gjør er når du kjøre filen
det vil si skallet program
bruke PHP tolken til å tolke innholdet i filen.
Spørsmålet blir hva var dette spesiell linje
at vi kunne inkludere øverst av våre PHP-filer til ikke å inkludere
Dette PHP linje eller denne PHP-kommandoen når vi ønsker å kjøre filen?
Og du kan faktisk gjøre dette med en haug med forskjellige filer.
Jeg tror det avhenger av hvor PHP binære er lagret,
men ofte usr / bin / php er et bra sted å starte.
Du kan finne ut av dette akkurat ved å gå ned igjen til apparatet
og skrive ut hvilke php.
Den hvilken kommando tallene ut når du utfører binære
eller en kommando der tilsvarende filen er.
Dette forteller meg at PHP er virkelig aliasing dette binærfil
som er lagret i usr / bin, som er der mye av systembinærfiler er installert.
For eksempel, hvis jeg blar opp til toppen, nå som jeg har satt dette #! linje her
Jeg kan bla nedover, og jeg kan prøve å kjøre
dynamic.php, men jeg får denne feilen om tillatelse nektes,
og hva det betyr er at denne filen ikke er for tiden å gi kjørbare tillatelser.
Det er ikke merket som en fil som noen kan kjøre.
>> Når du kjørte foreta eller Clang og du fikk en kjørbar fra det
kompilatoren var smart nok til å vite at hei, jeg bygger en kjørbar.
Du sannsynligvis vil utføre det, så det ville automatisk konfigurere
tillatelsene for deg.
Dette er ikke tilfelle, men når du oppretter en normal fil fra bunnen av,
grunnen blir vanligvis du ikke ønsker å ha noen fil på systemet ditt være kjørbare,
slik at du faktisk nødt til å gå inn og manuelt gjøre det.
Den enkleste måten å gjøre det på er med chmod kommandoen,
og chmod + x sier legge den kjørbare bit
fordi det er skrivebeskyttet bit, skrive litt og kjørbare bit,
R, W og X,
og si chmod + x vil slå på den kjørbare bit
for deretter filen som vi angir, som i dette tilfellet vil være dynamic.php.
>> [Student] Er det slått på for alle?
La oss sjekke ut dette, så hvordan skulle jeg sjekke for å se tillatelsene?
Vet du hvordan jeg ville sjekke for å se rettighetene til en fil?
[Uhørlig student respons]
Beklager? >> [Student] XSD.
XSD gir oss filen i hacks.
Liste over alle filene,-l, vil vise meg alle filene i katalogen min
slags i sine lange, ordrik notering, og så her ser vi at
Dette dynamic.php fil
ble sist endret 5 november kl 16:21.
Eieren av denne filen er jharvard.
Det er brukeren som er logget inn
Det er brukeren jeg jobber som,
og hvis du er også i apparatet du også jobbe som bruker jharvard.
Du er i studenter gruppen,
og dette er ting som du ser ofte nok.
>> Vi kan gå inn i mange detaljer her,
men for det meste hva du ønsker å se på når du ønsker å se
hvorvidt en fil er kjørbar er først og fremst
brukeren som eier filen, eieren,
så dette jharvard, og da har vi
tillatelsene biter over her til venstre,
og måten å lese dette er at den siste bit
vanligvis brukes for merking hvorvidt-i det minste i dette tilfelle
denne siste bit vil ofte være satt til ad for å indikere
at filen er en katalog og ikke bare en vanlig fil.
Deretter følgende tre biter rett her
bestemme tillatelsene som eieren av filen har,
så i dette tilfellet jharvard, som eier av filen, kan lese og skrive denne filen,
men det er en dash sier at jharvard ikke kan kjøre denne filen.
De neste tre biter er for gruppen, så dette er studentene i gruppen
så hvis det var flere brukere på maskinen min,
og vi hadde flere brukere som en del av studentene gruppen,
så de kan alle lese denne filen, men de kan ikke skrive det,
og likeledes noen andre, verden
kan bare lese denne filen også.
Det er en god, lang writeup om dette,
slik at du kan lese på nettet.
I oppgavesettet spec går vi inn i dette i mer detalj.
>> [Student] Er 218 henviser til verden?
Den 218 er-på toppen av hodet mitt jeg glemmer,
men nei.
La oss se. Jeg blanking på det akkurat nå.
Tilbake til hva vi var i ferd med å gjøre med dette chmod + x
der vi ønsket å gi dynamic.php kjørbare tillatelser,
og spørsmålet var hvorvidt dette ville gi kjørbare tillatelser til alle
eller bare jharvard, og vi kan se dette ved å
kjører kommandoene og skrive ls-l,
og nå ser vi at det er merket som kjørbar.
Du se at det var en fargeendring.
Nå dynamic.php er oppført i grønt,
og det ser ut som svaret på spørsmålet er hva, Charlotte?
[Charlotte] Bare jharvard. >> Bare jharvard, ja.
>> Hvis vi ønsket å slå den kjørbare litt på for alle
hvordan kan vi gjøre det?
Noen tanker? >> A + x?
Ja, akkurat.
Charlotte sa vi kan gjøre chmod av en + x av dynamic.php,
og nå hvis vi kjører ls-l ser vi at de kjørbare biter
er faktisk slått på for alle.
Og du kan faktisk gjøre det motsatte av dette, slik at du kan slå den av for alle
bruker minus.
Nå er det slått av, og nå kan vi slå den på igjen for jharvard
slik at vi faktisk kan kjøre den nå,
og nå kan du se når vi kjører koden denne spesielle #! linje på toppen,
#! linje, fortalte skallet,
fortalte vår terminal hei, når denne filen kjøres,
bruke / usr / bin / php å tolke denne filen
og deretter skrive ut resultatet.
[Uhørlig student spørsmål]
Jada, la meg rulle opp. Akkurat som denne.
Du vil se alle disse direktivene starte med dette pund og deretter utropstegn,
noen ganger kalt en shebang, hash smell.
>> [Student] Hvordan kan vi kjøre den med php dynamic.php før vi gjør det kjørbar?
Spørsmålet var hvordan kan vi kjøre dette ved hjelp av PHP binære
mens dynamic.php er ikke kjørbar?
Dette er super viktig fordi dette er nøyaktig hvordan
det kommer til å fungere når du skriver oppgavesettet 7.
Mesteparten av tiden PHP-filer er ikke direkte kjørbar.
Den måten som fungerer er fordi det er den PHP binære som er kjørbar.
Tolken er ting som blir henrettet,
og så hva det gjør er bokstavelig talt slurping i hele innholdet
av vår dynamic.php fil og går linje for linje
og gjennomføring disse kommandoene, så det er ved hjelp av vår PHP-fil
som en liste med instruksjoner.
Det er ikke direkte utfører det.
Det er der vi sier at disse filene er tolket under kjøring.
Det er en løpe tid språk i stedet for noe som er bestemt ved kompilering,
ikke et kompilert språk som C.
>> Er det en måte å få en kjøretid språk til å handle som om det er en kompilering språk,
som om du har alle kjører gjort på serveren
snarere enn du vet hva jeg mener?
Ja, så spørsmålet er
er det en måte å få kjøre tid språk for å opptre mer som kompilering typer språk?
Og det er, jeg mener, det er et aktivt område av forskning for mange av disse selskapene.
Jeg tror Facebook har gjort mye arbeid med PHP
og sammenstille det ned, noe som gjør det raskere, optimalisere det
siden deres nettsted er bygget på PHP.
Hvis du har fulgt node.js det hele tatt,
som er en slags JavaScript tolk
å kunne kjøre JavaScript utenfor nettleseren, utenfor nettleseren,
fordi tradisjonelt JavaScript ville bare kjøre inne i Firefox eller Chrome,
og det vil bli brukt til å lage kule animasjoner skje på en webside
og gjøre din nettside dynamisk.
Som er blitt bygget på en mye arbeid som Google har gjort
å lage JavaScript og C + +
binde sammen, så det er mye aktiv forskning for å
få disse språkene til å arbeide og optimalisere dem,
først og fremst fordi så mange mennesker kan kode i PHP og JavaScript
fordi det er mye enklere.
Det er mye hyggeligere. Du har ikke pekere.
Du har ikke typer flyter rundt.
De ønsket å få fordelene av disse kompilering språk
med alle typesjekking og hastigheten og nedre minnebruk og alle som
samtidig opprettholde fleksibilitet og brukervennlighet av disse nyere.
>> Tilbake til vår opprinnelige plan for angrep.
Vi har noen av disse spørsmålene her i vårt problem set spec.
La oss gå gjennom dem veldig raskt, og vi vil gå rundt i rommet.
Charlotte, er hva slags 3,50?
[Charlotte] Det er en dobbel. >> Det er en dobbel.
Jimmy, hva er dette neste? >> En rekke.
En matrise, fantastisk, og Jared, hva er fopen?
[Jared] Det er en ressurs. >> Det er en ressurs.
Det er litt av en ny en, ikke en fil stjerne, ikke en fil.
Det er en ressurs er den type i PHP,
og jeg beklager, Ella, er den siste null hva?
Null.
Null, hvordan er det staves i PHP? >> Den samme måte.
På samme måte, hovedsteder? >> Ja.
Ja, greit.
Here we go, vi har en dobbel, har vi en matrise,
vi har en ressurs, og så har vi null.
La oss se nå har du sett-
la oss se, så nå er jeg gjette hva jeg ønsker også å gjøre er å trekke opp
denne nettsiden her, dette php.net / manual,
så hvis dere kopierer det og åpne opp en nettleser.
Jeg kommer til å trekke opp Chrome, sette det i.
Jeg ønsker å vise deg dette ikke bare fordi
vi kan snakke hele dagen om typer og alt det morsomme ting
men heller fordi dette er PHP manualen,
og det er mange PHP programmerere der ute.
Det finnes en rekke PHP-nettsider der ute,
og som et resultat, er det en masse dokumentasjon på PHP,
og den manuelle, dette php.net, er et veldig bra sted å gå
når du har spørsmål om hva som er den beste måten å gjøre X i PHP
eller hvordan ser en funksjon ut?
Bare slags bli kjent med hvordan dette ser ut, fordi
du vil komme hit ofte, satt litt for problem 7.
>> Hvis du ender opp med å gjøre et avsluttende prosjekt som bruker PHP
Dette vil være et sted du vil bli svært godt kjent med.
Ofte måten å gjøre dette er at de bruker Google til å søke etter nettstedet,
og de ikke bruke søkeboksen som er her oppe i øvre høyre, som er slags liten.
Hvis du Googling rundt etter noe å gjøre med PHP og du ser
en av de manuelle koblinger dukker opp kan du vanligvis stole på at
som en ganske god ressurs.
Awesome, så ut av disse typene, bare ut av nysgjerrighet,
hvilke har vi ikke sett?
Noe vi ikke har sett her?
[Student] Resource. >> Vi så ressurs med fopen samtalen.
[Student] Objekter. >> Objekter vi ikke har sett for sikker.
Tilbakeanrop vi ikke har sett.
Det er noen av disse pseudo-typer.
Vi definitivt bare så heltall og dobbel.
Vi fikk ikke se noen av de andre, så hvis vi klikker på heltall
vi kan se er det noen andre heltall som de har her?
De er alle-så heltall, heltall, heltall.
Noen språk har større heltall typer,
som vi så på MySQL dag var det int og deretter stor int.
Cool.
>> Så, PHP manualen.
La oss gå tilbake til vårt problem sett spec, og vi vil nå bla ned til side 4.
En av de tingene som skjer når du får disse språkene
som ikke har denne statisk skrive, så disse språkene hvor du må erklære
typen en variabel opp foran
er at du får tilfeller der du kan begynne å ha variabler av ulike typer
samspill med hverandre,
og PHP gjør denne tingen der den prøver å gjøre
hva den anser å være den mest fornuftige tingen å gjøre
når du har samhandle to forskjellige typer med hverandre.
For eksempel, hvis vi ser på disse linjene med kode her
ser du at vi har fått det som skjer når
Vi prøver å legge til strengen 1 til heltall 2.
Hva skjer hvis vi prøver å legge en streng som ikke er en numerisk verdi
men heller faktiske tegn, CS til nummeret 50?
Så får vi se er det noe annet som skjer der
stedet for å legge en streng til et tall vi legger et nummer til en streng,
og så videre og så videre til et punkt der vi får
en slags rare ting her hvor vi har 7 + sant.
Hva pokker betyr det?
>> Hvis dere går videre og lime litt av denne koden apparatet.
Du kan holde den i dynamic.php.
Vi får se hva som skjer.
[Student] Bare bruke print, ikke printf?
Ja, så vil du finne at utskriften er også en gyldig funksjon for utskrift i PHP.
Det er mange forskjellige måter å gjøre det.
Vi får se med et par av eksemplene senere når vi begynner å snakke
om den unike problemet som vi kommer til å skrive
og deretter konsentrasjoner problem som vi kommer til å skrive
at selv om vi har fopen og fclose
det er ofte ikke den enkleste måten å lese i innholdet i en fil.
PHP har mange av disse C-lignende restene.
[Student] Når jeg satt i alle 6 av de tingene jeg bare får ett nummer som en utgang.
[Nate H.] Når du putter i alle 6 av disse tingene.
La oss se er det fordi det er muligens-
en ting er at disse trykte anrop ikke blir avsluttet på slutten med nye linjer.
Det er ingen ny linje skille hver av disse trykte samtaler,
så kanskje du får en stort antall,
og det er egentlig bare amalgam av nye linje tegn.
[Student] Ok, hvordan kan jeg være sikker på-
Vel, det er en haug med forskjellige måter.
Du kan manuelt sette i en utskrift av en ny linje karakter,
et ekko av en ny linje karakter,
ut av ny linje.
[Student] Så ekko er det samme som printf?
>> Printf er som C printf
hvor du skriver en formatert streng.
Du leverer det formatet strengen og deretter alle plassholderdata variabler.
Det er ofte noe som ikke brukes,
la oss se, som en ansvarsfraskrivelse,
Jeg er mindre kjent med PHP enn jeg er med andre web språk,
og når jeg har programmert i PHP jeg vanligvis ikke bruker printf
fordi jeg synes det er raskere å bruke streng interpolering evner som den har,
som vi vil gå inn i, og jeg vil vise deg i løpet av et sekund,
mens i C slags vi har å gjøre dette hacky ting å få det til å skrive ut riktig.
Du kan faktisk sette variabler direkte inn strenger i PHP.
Printf er slags altfor lang for hva jeg vanligvis gjør. Ja, Ella.
[Ella] Vanligvis hvis du får parse error betyr det at-
som på C det ikke fortelle deg nøyaktig hvor feilen er, og hva det er,
så betyr det at utseende gjennom hele koden og finne ut av det?
Det er vanligvis mer målrettet enn det.
Jeg tror i så fall var det litt av,
så jeg tror i så fall vi manglet et semikolon.
Det prøvde å gjøre følelse av alt,
så liker disse tolket språk, er tolken skal prøve
og gjøre sitt beste for å gjøre alt arbeidet på riktig måte.
>> Du vil se, for eksempel i JavaScript
Du vil ofte Online uttalelser ender med et semikolon akkurat som de gjør i PHP,
akkurat som de gjør i C.
I JavaScript noen av JavaScript tolker
i mange av nettleserne vil sette i semikolon for deg
Hvis du tilfeldigvis til å mangle dem.
De vil prøve å få plass til noen sloppiness på din del.
Det er der det kanskje prøver og prøver og prøver å gjøre ting fungerer,
og så til slutt vil det komme til et punkt der det står greit,
Jeg kan ikke gjøre ting fungerer på bailing, og det er der du får en linje nummer
som kan virke litt off fra det eksakte stedet.
Ok, så la oss gå gjennom dette veldig raskt.
Vi slapp med Ella, så la oss gå over til Missy,
og Missy, hva print av strengen 1 pluss nummer 2 gir deg?
[Missy] 3. >> 3.
Gjør det fornuftig? Liksom?
Betyr det gir deg et nummer? Gir det deg en streng?
[Missy] En rekke. >> Det er et tall.
Men det er skrive den ut, så det kommer til å gi deg noen form for streng.
>> En ting vi kan gjøre for å sjekke dette ut
er hvis vi gjør $ var = 1 + 2
og så sier vi ekko av getType,
så vi bruker en tredje form av utskrift her.
Nå kan vi se hva som skjer her.
Her er hva vi har er at vi fikk et heltall ut av dette.
Selv om vi var å legge denne strengen til et tall,
Vi fikk ikke en streng ut av det, akkurat som Missy sa.
Vi får et heltall.
Ok, så la oss se, neste opp, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Gjør det fornuftig?
[Kevin] Yeah.
[Nate H.] Hvorfor? Hvorfor gjør det fornuftig for deg?
[Kevin] Fordi det er bare å ha strengen, har tallverdi null.
Ja, flott.
Slags tvetydige situasjoner, men det er godt å vite hva som skjer.
Stella, hva skjer neste med nummer 1 + string 2?
[Stella] 3. >> 3 igjen.
Og i dette tilfellet, får vi en streng eller et nummer?
>> La oss gi dette en sjanse.
Noen raskere enn meg får svar? Charlotte?
Åh, jeg didn't-okay, la oss se, vi kommer til å gjøre det samme slags ting
hvor vi har fått en rekke pluss en streng, og vi kommer til å ekko typen,
se hva vi får.
Vi får også et heltall.
Det spiller ingen rolle hvilken som er streng, som en er nummeret.
Vi fremdeles kommer til å få et heltall.
Det er fortsatt kommer til å gjøre hva vi kan forvente.
All right, så Sam, hva 90 + 9 flasker øl på veggen?
[Sam] 99. >> 99.
Ingen flasker øl på veggen, skjønt.
Det gir oss litt mer informasjon om hva som skjer.
[Sam] Hvis du hadde skrevet 9 i brev
så ville du ha 90, ikke sant?
[Nate H.] Yeah.
Spørsmålet var om vi hadde skrevet 9 som N-I-N-E
ville vi ha fått 99 eller 90?
Vi ville få 90.
Det er bokstavelig talt bare ute etter siffer tegn.
Det er ikke smart nok til å innse antall ord, og at ting. Ja.
>> [Student] Er det noe slikt som typecasting i PHP?
Det er, og det er akkurat slik du ville gjøre det i C.
Hva om 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Yeah, så hva kan være overraskende om dette?
Hva ville skje hvis du gjorde dette samme slags ting i C,
hvis du gjorde 10/7 i C?
[Charlotte] Det ville bare gi deg-avhengig av hvordan du typecasted Jeg antar
det vil gi deg bare et begrenset antall sifre etter desimaltegnet.
Ja, så et begrenset antall sifre etter desimaltegnet.
Hva annet kan være-vil det gi deg noen sifre etter desimalen?
Ofte ikke, så igjen, avhengig av hvordan du typecasting det
det kan eller ikke kan konvertere den til et flyttall.
Her var det slags hyggelig at det gjorde.
Hadde vi vist deg dette tilbake når vi begynte å gjøre denne typen ting i C
det sannsynligvis ville ha gjort litt mer fornuftig
at det ikke går bare til en.
Og så til slutt, Jamie, hva 7 + sant?
[Jamie] 8. >> 8.
Hva betyr det?
Jeg antar det bare gir sanne verdien av en.
Ja. Hva skjer hvis vi endrer det til false?
[Student] 7.
Ja, så husk hvor vi snakker om disse binære verdier,
1 er på, 0 blir av?
Nå har vi sant er 1, er 0 false,
og du kanskje ikke har sett dette i C eksempler på at vi har gjort det siste semesteret,
men historisk bool type i C ikke har vært en reell type,
slik at folk har brukt 0 og 1 i stedet for sant og usant.
Dette er en manifestasjon av det.
>> Ok, så en viktig del om alt dette
er at vi har disse forskjellige typer.
De kan kommunisere med hverandre.
De kan ofte samhandle med hverandre på måter som er hyggelig, som vi har sett her.
Det er hyggelig å kunne ha streng 1 og nummer 2, legge dem sammen og få 3.
Det er fornuftig.
Men når du skriver nettsteder, og spesielt når du behandler
brukerundersøkelser, så si at du har skrevet et webskjema
som samler informasjon fra brukeren, og deretter går å behandle den
på baksiden slutten, på serversiden i PHP-koden
Hvis du forventer at verdien som brukeren har skrevet inn og sendt
i skjemaet for å være et heltall eller for å være et flyttall eller noe sånt
du må eksplisitt kaste det
og deretter gjøre noen type kontroll.
>> Du ønsker ikke å bare stole på denne typen sjonglering system for å gjøre ting fungerer,
spesielt for sikkerhetsmessige årsaker, og bare for robusthet av nettstedet ditt.
Bare noe å huske på at når du håndterer skjemadata,
noe som kommer i posten eller få superglobals
sørg for at du alltid validere den og konvertere den og typecast det.
Og akkurat som vi snakket om et øyeblikk siden at typecasting
PHP er nøyaktig den samme som i C hvor du har parentes
og deretter den typen.
Holde det i tankene.
En funksjon som vil komme godt med når du gjør dette
er vi har brukt, og dette er typen som en side-
Vi har brukt denne getType funksjonen her
å finne ut hvilken type en variabel,
og mens dette er nyttig for feilsøking og å se hva en variabel type er
du ikke ønsker å bruke dette, for eksempel i en tilstand der
du sjekke for å se om getType på $ var = heltall gjøre noe.
Dette er dårlig, dårlig, dårlig.
I stedet er det disse funksjonene kalles er heltall, er streng,
er array som du ønsker å bruke i stedet, så i dette tilfellet
hva jeg ønsker å gjøre i stedet for denne fyren her
er å bruke er heltall var.
Og de er ofte referert er is_ * i den forstand at du kan erstatte * med heltall,
string, et cetera, og bare for å sørge for at virkelig rask
Dette er int php.
Ser ut som du kan gjøre er enten int eller det er heltall også?
Ja, alias, så int heltall aliaser.
Cool.
>> Hvordan gjør vi det?
La oss plukke opp tempoet litt.
Nå skal vi snakke om matriser, slik at du kan se
i neste del av spec snakker vi om hvordan arrays i PHP
er litt annerledes enn de er i C.
I sannhet, de er slag av en blanding av
matriser som du har lært å kjenne og elske i C
der alt er av samme type
lagret fortløpende og contiguously i minnet,
og du har disse numeriske indekser.
Du har indeks 0, 1 indeksen, 2 indeks,
og du lagre verdier på disse indeksene.
Du kan også i C, når du skrev Speller, mange av dere
gjorde hash table tilnærming, og du så at det vi hadde
en annen type lagring hvor vi kartlegge
en nøkkel til en verdi, så når du prøvde å lagre noe i hash table
du måtte oppgi at du ønsket å lagre den med en bestemt nøkkel,
og at nøkkelen bestemmes plasseringen av verdi og hvor det vil bli lagret.
Du har slags fikk begge disse begrepene skjer på samme tid i en PHP array,
og som et resultat, vi ofte kaller disse assosiative arrays
hvor vi knytte en nøkkel i en verdi.
I neste del snakker vi om en enkel PHP matrise
hvor vi har nøkler a, b, og c,
alle strenger, tilordning til heltallene 1, 2, og 3.
Og du kan ha nøkler av forskjellige typer.
>> Du kan ha noen nøkler som er strenger, noen nøkler som er heltall.
Du kan ha verdier av forskjellige typer.
Du kan ha en verdi som er en streng, en verdi som er et heltall,
en verdi som er en gjenstand eller annen matrise, for eksempel
alle i samme rekke objekt, som er slags merkelig.
Du trenger ikke å ha en matrise som er akkurat en type element i den.
Du kan ha mange forskjellige ting som skjer der inne.
Den andre ting å merke seg er at når du ser noe som dette i koden,
som er gyldig PHP å erklære en matrise akkurat som dette, 0, 1, 2, 3, 4, 5,
som vil erklære en initialisert $ arr å være denne tabellen.
Men hva du faktisk får under panseret er denne typen implisitt
generasjon av nøkler hvor vi har fått 0-0, 1-1, 2-2, 3-3.
Og det viser seg at selv om du har en rekke som denne fyren her oppe
der du har a, b og c som nøklene
og deretter begynne å bruke matrisen trykk metoden for å begynne å bruke denne tabellen som en stabel,
slik at du kan se at denne matrisen objektet, er denne tabellen virkelig bli overbelastet.
Vi kan bruke den som en matrise. Vi kan bruke den som en hash table.
Vi kan bruke den som en stabel.
Når du begynner å presse ting på denne tabellen
det første du presse på dette vil være indeksen 0 og deretter indeks 1 og indeks 2.
Du kan få denne typen implisitt generasjon av nøkler
med mindre du angir dem eksplisitt.
Måten du angir tastene eksplisitt, selvfølgelig, er ved hjelp av denne braketten notasjon,
som er lik matriser unntatt i stedet for å bare tillate
heltall indekser i her, nå er vi la noe.
Hvis du vil at nøkkelen til å være en streng, ville du angi det som dette.
Hvis du vil at det skal være en int, angir du den med int du vil bruke.
>> Spørsmål om det så langt?
En av de fine ting om denne ideen
er at du kan bare trenger én verdi lagret med en bestemt nøkkel.
Hvis vi går tilbake til vår appliance-la meg slette noen av disse greiene.
Og la oss si at jeg initialisere en matrise for å være 0, 1, 2, gjort.
Hvis jeg nå vet at for eksempel hvis jeg echo $ arr [0]
Jeg kommer til å få verdien 0 skrives ut,
og siden det bare kan være noen en verdi lagret for en bestemt nøkkel
hvis jeg lagre noe på $ arr [0], sier en,
så jeg vet når jeg echo $ arr [0] en gang
Jeg kommer ikke til å få 0 skrives ut som før.
Jeg bare kommer til å få en.
Så dette er i utgangspunktet si at jeg ikke kan ha $ arr [0] lagring 2 forskjellige verdier.
Det kan ikke lagre både 0 og strengen a, som dette bokstavelig erstatter
hva var på $ arr [0] tidligere.
Grunnen til at jeg tar opp dette er kjøre den, se hva som skjer.
Se her at jeg fikk 0 skrives ut og deretter en ned her.
Det finnes ingen ny linje der fordi jeg var lat og ikke sette det i.
Hva er kult om dette er kan vi bruke dette som en måte
å fange opp denne ideen om et sett
hvor vi ikke kan ha flere nøkler i en matrise.
Vi kan ikke ha identiske nøkler i en matrise.
Jeg kan ikke ha 0 tasten og verdien 1 og 0 for og verdien en
eller tast 0 og verdien sant.
Tastene er all-det er bare 1 nøkkel i tabellen.
Selv om du kan ha den samme verdien som er lagret
flere ganger i matrisen under ulike nøkler
det er ikke mulig å ha identiske nøkler flere ganger i PHP array.
>> Hvis vi ser på dette neste problem, unique.php,
der vi ønsker å åpne opp en PHP-fil
inneholder en liste over strenger, en streng per linje,
og vi ønsker å finne alle de unike strenger i denne filen
alt vi har å gjøre er å bruke en av disse PHP arrays
og bruke strenger i filen som nøklene til denne tabellen
og holde oppdatere vårt utvalg som vi lagre disse nye nøkler.
Som vi lese hver linje av filen vi kan lagre det i matrisen,
og på slutten vil vi ha som våre nøkler i array vår
alle de unike strenger i filen.
Gjør det fornuftig?
La oss se hvordan dette fungerer.
Vi kommer til å åpne opp, ifølge spec, som kalles en ny fil unique.php.
Åpne. Oops, beklager, ny fil.
Vi kommer til å starte den av med samme start-og slutt-koder.
Vi kommer til å lagre det i § 9, og vi kommer til å kalle det unique.php.
Ok, nå zoome inn
Ideen her er å åpne en fil,
les i filen linje for linje.
For hver linje i filen
vi har en rekke der vi har
linjen som våre viktigste.
Og så når vi kommer til slutten her
$ Arr tastene er de unike linjer
fra filen siden vi vet at hvis jeg legger linje inn i denne matrisen
flere ganger vil det bare fortsette å overstyre den gamle verdien,
og vi kan faktisk sette matrise linje inn som seg selv bare sånn.
>> Dette er slags merkelig.
Vi lagrer samme nøkkel verdi-paret igjen og igjen og igjen,
men siden vi er garantert at det vil være bare en nøkkel kalt linje
så hvis vi har en fil som sier-en fil av dyrelyder og det har vaff, vaff,
meow, meow, moo, moo, og hver gang vi leser et dyr støy ut
som woof og vi lagre den i matrisen vår får vi vaff, og deretter andre gang
vi lagrer woof det vil overskrive første gang at vi lagret det.
Til slutt vil vi bare ha én oppføring i rekken
for hver av de dyr lyder i vårt dyrelyder fil.
Gjør dere føle deg trygg på at du kan takle åpningen av en fil i PHP?
En måte å gjøre det-la oss gå over dette raskt-én måte å gjøre det
er med fopen, som vi så tidligere.
Du kan fopen some_file.txt.
Du kan åpne den i lesemodus, akkurat som i C.
Det er en perfekt god måte å gjøre det.
Du også da for å lese i filen linje for linje
har de samme funksjonene, mange av dem, som du gjorde i C.
Du har fgets.
Du har feof, selv om vi ikke liker å bruke det
fordi, husk, det var ikke stor i C.
Du kan gjøre det på samme måte,
men her er en veldig kul ting.
Beklager, jeg ønsker ikke å gjøre $ fil, men det er en funksjon som heter fil i PHP,
og denne funksjonen rett her kult fordi den leser hele innholdet
av filen som du angir, så some_file.txt,
leser hele innholdet i denne filen inn i en matrise
og lar så iterere over det, som er ganske kjekk.
>> Hvis vi går, for eksempel, til vår web browser
og vi ser på Google for PHP-fil
du kan se her at vår manuelle sier at filen leser hele filen inn i en matrise,
og vi kan file_get_contents å returnere innholdet i en fil som en streng,
men vanligvis bare å få det som en matrise er virkelig fint fordi hva det gjør
er det bryter det opp slik at hvert element
i matrisen er en linje av filen,
så hvis vi ser på fil 0, er at den første linjen i filen.
Fil 1, andre linje, fil 2, tredje linje, og så videre og så videre.
Ville det ikke vært fint hvis det var alt du måtte gjøre i C?
Ganske kjekk liten.
David viste dette i foredraget, og idiom han viste var
som i tillegg til vår standard for loop-in PHP hadde vi at
for ($ i = 0; i <10; i + +),
og du kan gjøre dette i PHP også, samme ting-
vi har også denne kule konstruere kalt foreach.
Foreach er veldig praktisk når iterating i matriser eller disse datastrukturer
fordi det tillater deg å trekke ut hvert element i matrisen
uten å måtte manuelt gjøre indekseringen selv,
uten å måtte manuelt lage en indeks variabel, øke den,
trekke ut verdien i matrisen på det punktet, fordi det er en veldig vanlig ting å gjøre.
>> Du har sannsynligvis gjort det tonnevis av ganger når du gjorde C stuff
løpet av semesteret, så med dette foreach
vi kan sløyfe over denne filen array,
og syntaksen er at vi ønsker å nå sløyfe over denne matrisen
og angi at variabelen vi skal bruke til å lagre
elementet av denne matrisen lokalt, lokale for omfanget av denne foreach loop,
er vi kommer til å kalle det linje.
Hvis det er en fil av bare ord, og det er ett ord på en linje
Vi kan kalle det ordet også, egentlig bare du gi denne et navn,
hva du vil kalle det,
og deretter inne i loopen kan du gjøre hva du vil med denne variabelen linje.
Hvis det ikke er nok til å få verdien i matrisen, og du vil også få
indeksen sammen med det du kan angi et navn for indeksen
samt verdien, og nå har du tilgang til 2 variabler.
Du har $ i og linje
der $ i er indeksen i matrisen,
og linje er linjen som du hentet fra filen.
For eksempel, hvis vi ønsket å skrive ut echo linje 0 av filen som dette,
vi kunne gjøre det akkurat som dette, "er Line $ i av filen $ linje,"
og her er noe vi heller ikke har sett ennå enten
der jeg har bare helt hoppet over hele denne% s% d virksomhet
at vi måtte håndtere i C, og i stedet har jeg gått rett til
skrive variablene i linje string min.
>> Dette kalles variabel interpolering, string interpolasjon
hvor du stuffing variablene rett i, og PHP tolk
er smart nok når det er lesing gjennom en streng som begynner med anførselstegn,
ikke apostrof, med enkle siterte strenger du ikke kan gjøre dette,
men med doble sitert strenger slik det står gjennom den ser etter variabler.
Det jakte dem ned, og hvis det ser variabler det vil ta verdien av variabelen
og dytte i strengen hvis det kan konvertere den til en streng representasjon,
som er ganske kjekk.
For nå, la oss kommentere ut resten av alt,
lagre dette, og hva vi kan gjøre nå er at vi kan åpne opp en fil
som vi kan kalle some_file.txt-la oss lage en ny fil-
og vi kan sette i en haug med tull ting her bare for å teste alt ut,
lagre det, kaller det some_file.txt, som jeg gjør her oppe på toppen,
og nå om jeg zoome ut bare for å kontrollere at alt er i samme katalog-
det ser ut som jeg har unique.php og some_file.txt i samme katalog.
Hvis jeg kjører php unique.php
se hvordan det skrives ut hver linje i filen min og hva linjen er?
>> Det er ganske kraftig, ikke sant?
Se, det tok 3 linjer med kode for å åpne opp en fil.
Vel, 4 linjer med kode. Jeg kan ikke telle i dag, klart.
Men egentlig bare 2 interessante linjer med kode, fordi de andre 2 var klammeparentes,
men i dette mye kode kunne vi åpne en fil, iterate gjennom det,
trekke ut linjenummer og selve linjen
og skrive det ut.
Kule ting. Charlotte.
[Charlotte] Jeg har et spørsmål om syntaks.
Så foreach avtaler med hver enkelt linje av filen som du åpner,
og når du ønsker å gjøre ting med hver enkelt linje du bare gjøre det som
og deretter knytte verdien.
[Nate H.] Hva du kan gjøre akkurat her-spørsmålet var
den foreach har å gjøre med tabellen, så foreach syntaks
er foreach egentlig, og merker at det ikke er plass
eller noe mellom for og hver.
De må gå rett ved siden av hverandre,
og så tar det i en matrise,
og da har du dette andre søkeord kalt som må være der,
og deretter etter som du kan enten sette en variabel navn,
i så fall kommer til å trekke ut verdiene i tabellen,
ikke indeksene, eller hvis du gjør det som vi har skrevet under
du får nøklene og verdiene.
Du har foreach element i matrisen eller par av tabellen som tastet til verdi
eller som bare verdi.
Avhengig av hva du trenger, hvis du ikke trenger nøklene,
så kan du gå med verdien.
Hvis du vil tastene du kan gå med dem også.
>> [Charlotte] Jeg har også innsett at vi aldri erklærte jeg eller linje.
Hvordan det engang vet hva de er?
[Nate H.] Hva mener du med fortolle?
[Charlotte] Vi har aldri fortalt dem hva jeg eller linje betyr.
[Nate H.] Vi har aldri fortalt datamaskinen hva jeg eller linje betyr i forhold til-
[Charlotte] At de indeksert eller at they're-
[Nate H.] Vi har aldri fortalt at dette er ment å være indeksen eller nøkkelen og verdien,
og det er fordi det er PHP-tolken.
Dette fungerer som erklæringen og sier OK, er nøkkelen til å bli
en variabel kalt jeg lagret i en variabel kalt jeg.
Verdien skal lagres i en variabel kalt linje,
så dette fungerer som erklæringen av disse variablene
og sier $ i er en nøkkel, og $ linjen er en verdi.
Ja, Ella.
[Ella] Hvis tastene ikke er gjort numerisk
Hvordan bestemmer det hvilken rekkefølge det kommer til å skrive ut alt?
Er det akkurat som den rekkefølgen det er lagt inn i?
[Nate H.] La oss gi det et forsøk.
La oss lage en variabel kalt arr,
og vi kan gjøre en går til 7.
La oss si 0 går til en annen tabell med 1, 2 eller eple.
La oss si 7 går til en, går b til 2,
og 3 går til 4.
Dette er en slags sprø jakt eksempel fordi vi blande opp
strenger og heltall over alt.
Det er ingen reell for å denne tabellen.
Jeg mener, vi kunne bestille alt i alfabetisk rekkefølge etter nøklene.
Vi kunne bestille alt alfabetisk etter verdien.
>> Vi kan prøve og ta hensyn til at noen er strenger, noen er ints,
og vi kan prøve og konvertere dem alle til samme type og se hva som skjer,
eller vi kan vurdere dem i verdien som vi allerede har angitt dem
der vi legger denne fyren i første, denne fyren i andre, denne fyren i tredje,
denne fyren i fjerde, et cetera.
La oss se hva som skjer når vi kjører denne koden.
Hvis vi blar du ned og gjøre det samme slags ting,
og her er det ikke som skrives ut de nye linjene.
Når den lese ting ut av filen ble inkludert de nye linjene i verdiene,
som var grunnen til det skrives ut pent, mens her er det ikke,
så det er derfor alt er smushed sammen.
La oss legge til i den nye linjen bare for å gjøre det hyggelig.
La oss kjøre det, og så her
se på hva som skjedde.
Det skrives alt ut i den rekkefølgen vi sette det inn i matrisen.
Det bevarer orden i den forstand.
>> Kommer tilbake til dette problemet med uniques
der vi ønsker å være i stand til å iterere over en fil,
og vi vil gi den some_file.txt,
og vi kommer til å iterere over det som dette.
Vi sa at vi ønsket å bruke en matrise for å sørge for at vi hadde fått alle de
unike linjer ut av det, og vi kunne gjøre det veldig lett
ved å bare lagre i en matrise som vi selvfølgelig erklære utenfor en loop,
og vi sa at hvis vi brukte linjene i filen som nøklene i array vår
hvis vi gikk inn i en duplikatlinje vi skulle overstyre den forrige verdien.
Det er ikke alltid mulig å ha to nøkler som er identiske i samme rekke.
Vi kan gjøre nettopp det.
Vi vil bli kvitt denne ekko uttalelse her.
Her er vi lagrer linjen i filen i matrisen vår
bruker seg selv som nøkkelen.
Ingenting til det, og det viser seg at vi ikke engang trenger denne nøkkelen.
Vi trenger ikke at jeg variabel.
På dette punktet hvis vi skulle gjøre en annen foreach loop
og vi var å sløyfe over hver arr
og linje nå hvis vi ekko-oops, beklager.
Vi kan ikke bruke komma. Vi må bruke dette som søkeord.
Hvis vi nå ekko linje vi skulle få alle de unike ordene i filen.
Hvis vi går opp til some_file.txt,
og la oss si at vi eple, banan, eple, eple, banan,
hvis vi skriver ut alle de unike ordene i denne filen vi skal bare få
eple og banan for å skrive ut.
Hvis vi lagre denne, nå her vi vil zoome tilbake i,
php unique.php, og ta-da.
Vi har med hell uniqued filen.
>> Den siste delen av dette problemet er som ber deg å sortere denne tabellen før du skrev det ut
fordi i dette enkle eksempelet som vi nettopp har gjort
Vi var heldig i den forstand at fil-
vi gjorde dette contrived eksempel med epler og bananer.
Det var allerede sortert.
Men ved hjelp av den enkle typen funksjonen kan du sortere en array, som er ganske kjekk.
Den siste tingen jeg ønsket å snakke med dere om veldig raskt
er at denne typen PHP er vel og bra, og det er super praktisk
å vite hvordan du skal gjøre hvis du noen gang trenger å gjøre små, raske ting programmatisk.
For eksempel, hvis jeg trenger å skrive et program som for eksempel
setter alle i seksjoner jeg ikke kommer til å gå og skrive det i C.
Det kommer til å bli lang.
Det kommer til å bli en slags smerte, spesielt hvis det er filer som er involvert,
akkurat som dere har sett.
Det er så hyggelig at med bare dette mye kode her
vi var i stand til å rippe gjennom en fil, trekke ut alle de unike verdiene
og skrive dem ut igjen.
>> Men for dine oppgaver, for dine prosjekter,
hvis du bygger nettsteder med PHP strømmen er at
vi kjører våre PHP-filer gjennom denne tolk,
og tolken behandler alt innen PHP-koder,
forlater alt annet urørt og spytter ut resultatene.
Vi kan gjøre dette for å bygge HTML programmatisk.
Nå, hvis vi går tilbake til spec, det siste problemet i spec
snakker om denne ideen om konsentrasjoner
og skape en drop-down menyen,
som du kanskje eller kanskje ikke ønsker å gjøre, avhengig av hva det endelige prosjektet gjør,
som lar brukeren velge fra en liste over alle mulige konsentrasjoner
deres en konsentrasjon.
Nå er denne typen av en smerte å skrive dette ut
og må gjøre alt dette manuelt, spesielt når du har for å sikre at
at du har alle de vinkelparenteser på rett sted og alle sitater på rett sted,
så med PHP kan du gjøre dette programmatisk, og du kan gjøre dette veldig raskt.
>> La oss se hvordan du gjør dette.
Vi kommer til å åpne opp en ny fil.
Vi kommer til å sette i vår PHP-koder.
Vi kommer til å kalle det concentrations.php,
og nå når du gjør dette, slik en god ting tenke
når du prøver å mikse og matche din PHP og HTML
er å finne ut, ok, hva er den delen som jeg ønsker å programmatisk generere?
Hva er den delen som jeg kan programmatisk generere?
Det er sant at du kan gjøre alt i HTML
innsiden av PHP blokker.
Du kan ekko alle HTML som strenger.
For eksempel, hvis jeg ønsker å begynne å gjøre de utvalgte koder innsiden av PHP
Jeg kan si ekko, sier velg name = konsentrasjon,
og deretter ned under kunne jeg ha en annen ekko tag
eller en annen ekko kalt lukke velge.
Dette er en måte å gjøre det fordi det er dette bokstavelig talt kommer til å gjøre
er skrive ut denne strengen når det kjøres gjennom PHP tolk,
så resultatet vil være HTML.
Hvis jeg lagre denne filen som det er akkurat nå
og jeg kjører php concentrations.php
se på hva jeg fikk.
Jeg fikk denne åpne Lukk Velg tag.
>> Hvis jeg skulle gjøre dette, og jeg skulle redde dette resultatet til en fil,
si, concentrations.html-vent, det ser ut som jeg har gått over til den andre siden-
nå hvis jeg åpner opp her concentrations.html du ser at jeg har en gyldig HTML-fil.
Er den slags rare?
Vi bruker PHP for å lage HTML, lage gyldig HTML.
Måten vi gjør det er vi bare ha PHP print
HTML som vi ønsker den skal skrive ut.
Dette er bokstavelig talt hvordan PHP-nettsider virker.
Når du besøker en nettside som sender deg til noe sånt
noe, noe, noe dot com slash index.php
datamaskinen er bokstavelig talt kalle opp index.php,
kjører det gjennom PHP tolk, og hva junk kommer ut
det er å sende tilbake til nettleseren og si hei, nettleser, tolke dette som HTML.
Det fine er at det kan være smertefullt å stadig skrive ekko, ekko, ekko, ekko
og legge alt i sitater som dette, så hvis du ønsker å skrive
HTML som kommer til å være statisk selv kan du gjøre det slik,
sette det utenfor, lukke den,
og her du bare sette inn PHP koder som du vet
Vil du programmatisk generere, og i dette tilfellet er det de alternativ tags
som er en smerte å generere.
>> For eksempel kan vi generere tusen alternativ tags
ved å gjøre noe som dette, $ i <1000, i + +
og sier ekko alternativ value = $-whoops, jeg kan ikke gjøre det.
Vel, la oss gi det en sjanse og se hva som skjer.
$ I og deretter si $ i </ option.
Snarere enn å måtte skrive ut det alternativet tag tusen forskjellige tider
Jeg bruker PHP-koden til å generere den automatisk, programmatisk.
Kind of nifty. Ja.
Jeg husker dette blir nevnt i enten forelesningen eller gjennomgang,
men hva er forskjellen mellom anførselstegnene,
de normale og disse enkle ting?
Det er faktisk noe som jeg har gjort feil her at jeg skulle vise deg.
De enkle anførselstegn tillater ikke noen spesielle tegn,
så alt i én sitert streng tolkes bokstavelig.
Hvis jeg hadde en \ n innsiden av apostrof og jeg lagre denne, for eksempel,
og nå går jeg ned hit og kjøre it-
oops, der jeg kommer?
Åh, det er fordi jeg glemte $.
>> Nå hvis jeg åpner opp faktisk, her vil vi bli kvitt den skrive til en fil.
Vi vil bare lese den.
Her ser du at jeg har fått denne bokstavelige \ n i strengen, som ikke en faktisk ny linje,
og likeså, i stedet for faktisk interpolere verdien av denne variabelen
det ga meg $ i seg selv, som er en slags smerte.
Veien rundt dette på er å bruke anførselstegn,
og når du bruker doble anførselstegn det faktisk vil
skikkelig interpolere verdiene av alle disse variablene i her
og også innse dette \ n å være den nye linjen som det er
og ikke \ n.
Bruke enkle de er hyggelig når du har
tegn som kan tolkes som spesialtegn fordi da du ikke trenger å
unnslippe dem hele tiden.
Ting kan bli rotete, og ofte slik jeg gjør det,
bare for å gjøre ting enkelt, er at hvis jeg skal ha noe
HTML liker i min kode jeg skal ta edit innen apostrof
og deretter bruke denne sammensetning operatør
å sette sammen de variablene i.
Dette er en annen måte å gjøre det
hvor vi har fått prikk som kommer til å koble dette er en streng
med dette med dette med dette,
og nå har jeg ikke trenger å unnslippe disse anførselstegn.
Jeg trenger ikke å bruke denne fyren til å flykte.
De vil bokstavelig talt bli skrevet ut som doble anførselstegn og deretter denne fyren her.
Dette er en annen måte å blande alt sammen.
>> [Student] Også når du gjentok getType var det ingen anførselstegn i det hele tatt.
Høyre, så ekko er slags spesiell i den forstand at du ikke trenger parentes.
Du trenger ikke å ha anførselstegnene nødvendigvis rundt variabler,
som det er gyldig å si echo $ i, og det kommer til å tolke dette som en streng.
Det kommer til å gjøre det kastet, slik at vi kunne gjøre dette, og det er gyldig også, men vi trenger ikke det.
Det er valgfritt.
I denne ukens oppgavesettet se opp for mye av denne typen ting
hvor du mikse og matche HTML med PHP
akkurat som dette, og nå hvis vi bla tilbake og vi kjører dette
Vi kan se at vi har en hel haug med opsjonsverdier
som bare fikk skrevet ut.
Vi har alt dette HTML som fikk generert veldig raskt for oss.
Jeg skal la det som en øvelse.
Det er svært lik den filen lesing at vi gjorde tidligere.
>> Det er en concentrations.txt fil som du kan trekke ned fra CDN,
og du kan åpne den med det samme foreach triks som vi gjorde tidligere,
og foreach du må bare ekko et alternativ og plugg i
de aktuelle verdiene, de aktuelle tastene og indekser,
og da får du en rullgardin som bokstavelig talt skaper
programmatisk for deg alle de ulike konsentrasjoner ved Harvard.
En hendig ting å ha.
Det er mye av konfigurasjon ting for dette oppdraget.
Hvis du ikke har gjort det allerede ta den neste halvtimen, time,
litt tid i kveld definitivt sikkert,
gå gjennom oppgavesettet spec,
se hva som skjer med å sette opp vhosts, den lokale verten, alt det der.
En ting å peke ut akkurat nå, er at
i de fleste oppgavesett har vi gått inn i Dropbox-mappen
og deretter laste oppgavesettet zip-filen og utpakking av det.
For dette problemet sett ikke du vil.
Du ønsker å gå inn i denne vhosts katalogen.
Det er lurt å gå inn vhosts og gå inn den lokale verten katalog i det,
og det er her du ønsker å trekke ned zip-filen,
pakk den, og gjør deg klar til å gå.
Du må følge trinnene nøye.
>> Hvis du har noen spørsmål, send e-post, legge det ut på Diskuter, kommer til kontortiden.
Takk folkens. Neste uke skal vi ha en gjennomgang session for quiz.
Nyt siste oppgaven. Jeg håper alt går veldig bra.
[CS50.TV]