[Powered by Google Translate] [Afsnit 8] [mindre behagelig]
[Nate Hardison] [Harvard University]
[Dette er CS50.] [CS50.TV]
>> Velkommen til vores andet til sidste afsnit.
I denne uge vil vi snakke om PHP, og derefter næste uge
vi vil gøre en lille anmeldelse til Quiz 1.
Vi vil starte på side 3 af problemet sætter pack,
og vi vil arbejde gennem den del af spørgsmålene forholdsvis hurtigt.
På side 3, begynder vi at tale om denne forskel mellem C og PHP
i den forstand, at PHP er et dynamisk skrevet sprog,
hvorimod C statisk indtastes,
og har nogen virkelig hurtigt gjort nogen kodning i noget som PHP
eller Python eller Ruby før, JavaScript?
Helt nyt? Okay.
>> Alle disse sprog, som jeg lige har nævnt
er meget forskellige fra sprog som C og C + + og Java
i den forstand, at når du angiver en variabel, du ikke nødt til at erklære
hvilken form for variabel det er, så i C vi var fast at skulle altid sige
dette vil være en int variabel, eller det vil være en char * variabel,
hvorimod med PHP, med Python, med Ruby,
med en masse af disse mere moderne sprog, du ikke behøver at gøre det på alle.
Du skal bare erklære din variabel, og i tilfælde af PHP
De erklærer, at det er en variabel ved forudfastsætte det med en $ tegn,
og derefter typen af ​​variablen afhænger af den værdi det er holder,
der er lidt cool.
For at spille rundt med det en lille smule, har vi prøve PHP-kode lige her
i mellem start og slut tags.
Vi bruger denne form for som HTML i den forstand, at
vi har fået disse vinkelbeslagene her for at åbne og lukke.
Du vil se dette med HTML.
Du vil se den samme slags syntaks med XML også.
>> Dette indikerer begyndelsen af ​​en PHP blok.
Dette? Php er specifik for PHP.
Vi lukker alt med en?> Så godt.
Lad os åbne op for en fil i vores apparatet ved hjælp uanset hvad du gerne vil.
I denne pakke den siger at kalde dynamic.php.
I sandhed, kan du kalde det hvad du vil, men filnavnet vil komme op
og være vigtigt senere, så bare huske hvad du kalder det.
Jeg har tænkt mig at skifte over til apparatet,
og jeg har tænkt mig at lave en mappe til
§ 9 Jeg tror, ​​vi er på nu.
Og vi vil gå ind i afsnit 9,
og jeg har tænkt mig at bruge gedit.
Lad os se, gedit, og jeg har tænkt mig at kalde mine dynamic.php.
Boom.
Inden dynamic.php, dette da er en PHP-fil
og jeg vil køre dette gennem PHP tolk
Jeg er nødt til at starte det hele ud med disse åbne tags,
så jeg har tænkt mig at starte dem med det samme,
give mig selv en lille plads i mellem tags,
og derefter pointen med denne øvelse var at lege med
denne funktion kaldet getType, så getType, denne funktion lige her.
>> Bemærk, at der ikke er understregning eller mellemrum eller bindestreg eller noget lignende
adskille de 2 ord, og få skrive, bare ét ord helt.
Men hvad dette vil gøre, er, hvis jeg passere i en variabel til getType,
sige $ var eller $ x,
Dette vil fortælle mig slags i en debugging format
hvad navnet på denne type er.
Vi vil eksperimentere her.
Især, hvis du ser tilbage på Pset spec
vi har fået et par forskellige linjer kode her.
I den første linje kode vi initialisere denne variabel, $ var,
at være lig med 7, og så har vi denne printf linje
der siger hey, printf var tomt.
Printf er en af ​​de mange måder, vi kan udskrive ting i PHP.
Ofte vil du se ekko funktion, der bruges i stedet for printf,
men printf vi kender alle have været kodning i C for et stykke tid.
Hvad du rent faktisk kan gøre, er at Lad os se om kopiere og indsætte værker.
Jeg har tænkt mig at give det en chance.
Vi vil gå tilbage over til apparatet.
Okay, og der går vi.
Og afstanden er lidt funky, men here we go.
Vi har fået denne kode herinde.
>> [Student] Er det ikke god stil at fane det?
Undskyld?
[Student] Er det almindeligt at fane det?
Højre, så Sam spørger, om det er konvention til fane det eller ej.
Typisk ja.
I dette tilfælde har jeg valgt at lade være.
Ærligt, vil du se forskellige ting mellem forskellige programmører.
PHP bruges typisk ofte i kombination med HTML
og andre sprog, og så nogle gange udskrivningen vil se lidt funky
hvis du led i PHP start og slut tags.
Det er virkelig afhænger af.
I dette tilfælde kopiere og indsætte ikke indsætte fanerne i for mig,
men det helt sikkert gør, som du sagde, gør det klarere.
Okay, hvis du gemmer denne kode i dynamic.php
så hvad du kan gøre, er at komme ned til din terminal vindue hvor jeg er lige hernede
i gedit, og gøre hvad der svarer til compile
hjælp gøre og derefter kører din kode i C
alt hvad du skal gøre med PHP-fil er at starte op PHP tolk,
der er et lille program kaldet PHP,
og det argument, du giver til tolken er den fil, du vil fortolke.
I dette tilfælde dynamic.php.
Whoops, hvor har jeg sige det?
Åh, jeg sætte det i afsnit 9, og her er jeg. Det er derfor.
>> Nu hvis jeg løber det igen
vi se, at i min første getType funktionskald
VaR er et heltal.
I det næste var er en streng, og derefter i den tredje var en boolean.
Hvad er interessant ved dette er, hvis vi rulle tilbage op ser vi, at
disse er typer, svarende til dem, som vi havde i C.
Vi havde int'er i C.
Vi slags havde strenge i C,
så strenge var ikke en helt legit type i den forstand, at
vores CS50 streng var virkelig hvad?
Undskyld? Missy?
[Missy] Char *.
Ja, det var denne char * vi bruges.
I begyndelsen af ​​semestret vi brugte strengen type,
men det var virkelig en char * under kølerhjelmen.
Vi har lige typen defineret det, mens det i PHP disse strenge er en egentlig type.
Der er ikke mere af denne char * type stuff.
>> Du vil se, at vi kan gøre mange flere ting med strygere
meget lettere i PHP, end vi kunne i C,
og så endelig, har vi denne boolean type, og den store forskel her er, at
hvis vi rulle tilbage ned ser vi, at navnet på disse typer
er nu heltal, streng, og boolean i stedet for int og bool,
og da du afhenter forskellige programmeringssprog,
det antages, at på et tidspunkt i jeres liv, vil du komme i kontakt med
forskellige dem, du vil opdage særheder som denne
hvor C kalder heltal int'er.
Nogle kalder det heltal.
Der er andre udtryk, som du vil løbe ind.
Big int vi så i dag i SQL.
Der er også nummer og derefter bool, boolean,
alle mulige forskelle der.
>> Det er ikke frygtelig interessant, men nu vil jeg give dig en lille smule tid-
Hvis vi ind igen ud-at arbejde gennem denne øvelse nederst på side 3
hvor den beder hvilke typer svarer til disse værdier her nederst.
Vi har 3.50.
Vi har denne ting lige her, der er interessant.
Vi har ikke set det før, men hvis du har fulgt med i foredrag
du sikkert allerede ved, hvad det er.
Så har vi det, som det er lidt funky.
Du anerkender dette.
Hvad er det i C?
Sam? Hvad ville det give dig i C?
Det ville åbne en fil kaldet dynamic.php og gøre det læsbart.
Ja, og hvad vil være den type variabel, at vi ville overdrage dette til? >> File stjerne.
Præcis, vi ville overdrage denne til en fil stjerne.
Det er legitimt PHP også.
Kør det. Se hvad der sker, når du passerer det ind i getType.
Og så også tjekke ud af, hvad null er, hvad der kan være i PHP.
Jeg vil give dig et par minutter.
Du kan bogstaveligt talt kopiere og indsætte disse værdier i,
og så vil vi gøre lidt tilfældig samtale på dig
og se, hvad du fik.
>> [Student] Jeg har et spørgsmål. << Yeah.
I en af ​​de foredrag David sagde, at der er noget, du kan sætte på toppen af ​​din fil
så du ikke behøver at skrive i PHP hver gang.
Hvad var det?
Han var sandsynligvis tale om pund bang, hash bang.
Det er et direktiv, hvis du markerer din fil som eksekverbar
så hvad det gør, er, når du køre filen
det vil fortælle skallen program
at bruge PHP tolk til at fortolke indholdet af filen.
Spørgsmålet er, hvad der var denne særlige linje
at vi kunne omfatte øverst på vores PHP-filer til ikke at medtage
dette PHP linje eller denne PHP kommando, når vi ønsker at køre filen?
Og du kan faktisk gøre dette med en masse forskellige filer.
Jeg tror, ​​det afhænger af, hvor PHP binære er gemt,
men ofte usr / bin / php er et godt sted at starte.
Du kan finde ud af dette netop ved at gå tilbage til dit apparat
og skrive ud som php.
Den hvilken kommando tal ud, når du udfører binære
eller en kommando, hvor den tilsvarende fil er.
Det fortæller mig, at PHP er virkelig aliasing denne binære fil
der er gemt i usr / bin, hvilket er hvor en masse af systemets binære filer er installeret.
For eksempel, hvis jeg ruller op til toppen, nu hvor jeg har lagt dette # linje i here
Jeg kan rulle ned, og jeg kan prøve at køre
dynamic.php, men jeg får denne fejl om tilladelse nægtes,
og hvad det betyder, er, at denne fil ikke i øjeblikket give eksekverbare tilladelser.
Det er ikke markeret som en fil, at nogen kan køre.
>> Når du kørte foretager eller Dunk og du fik en eksekverbar fra det
compileren var smart nok til at vide, at hey, jeg bygger en eksekverbar.
Du har sikkert ønsker at udføre det, så det ville automatisk konfigurere
tilladelserne til dig.
Dette er ikke tilfældet, selv om, når du opretter en normal fil fra bunden,
Årsagen er typisk, du ikke ønsker at have nogen fil på dit system være eksekverbar,
så du faktisk nødt til at gå ind og manuelt gøre det.
Den nemmeste måde at gøre det på er med kommandoen chmod,
og chmod + x siger tilføje eksekverbare bit
fordi der er read bit, skrivebeskyttelsen bit og eksekverbare bit,
r, w og x,
og siger chmod + x vil tænde den eksekverbare bit
for derefter filen som vi angiver, hvilket i dette tilfælde vil være dynamic.php.
>> [Student] Er der tændt for alle?
Lad os kontrollere dette ud, så hvordan ville jeg tjekke at se tilladelser?
Ved du hvordan jeg ville kontrollere at se tilladelserne for en fil?
[Uhørlig student svar]
Undskyld? >> [Student] XSD.
XSD giver os filen i hacks.
En liste over alle de filer,-l, vil vise mig alle filer i mit bibliotek
slags i deres lange, ordrige notering, og så her ser vi, at
denne dynamic.php fil
blev senest ændret 5. november kl 16:21.
Ejeren af ​​denne fil er jharvard.
Det er den bruger, der er logget ind
Det er brugeren arbejder jeg som,
og hvis du er også i apparatet, du arbejder også som bruger jharvard.
Du er i de studerende i gruppen
og disse er ting, du vil se ofte nok.
>> Vi kan gå ind i en masse detaljer her,
men for det meste hvad du ønsker at se på, når du søger at se
, om en fil er eksekverbar primært
den bruger, der ejer filen, ejer,
så denne jharvard, og så har vi
tilladelserne bits herovre til venstre,
og den måde at læse dette er, at den sidste bit
typisk anvendes til mærkning også i hvert fald i dette tilfælde
denne sidste bit vil ofte være indstillet til ad for at angive
at filen er et katalog og ikke bare en normal fil.
Så de følgende 3 bit lige her
fastlægge de tilladelser, som ejeren af ​​filen har,
så i dette tilfælde jharvard som ejer af filen, læse og kan skrive denne fil,
men der er en streg siger, at jharvard ikke kan eksekvere denne fil.
De næste 3 bit er for gruppen, så dette er den studerende i gruppen
så hvis der var flere brugere på min apparat,
og vi havde flere brugere som en del af de studerende i gruppen
så kan de alle læse denne fil, men de kan ikke skrive det,
og ligeledes andre, verden
kan kun læse denne fil så godt.
Der er en god, lang writeup om dette,
så du kan læse online.
I det problem indstillede spec vi går ind i dette i flere detaljer.
>> [Student] Er 218 henviser til verden?
De 218 er-off toppen af ​​mit hoved, jeg glemmer,
men ingen.
Lad os se. Jeg afblænding på det lige nu.
Tilbage til hvad vi var ved at gøre med dette chmod + x
hvor vi ønskede at give dynamic.php eksekverbare tilladelser,
og spørgsmålet var, hvorvidt dette ville give eksekverbare tilladelser til alle
eller bare jharvard, og vi kan se dette ved
kører kommandoerne og skrive ls-l,
og nu ser vi, at den er markeret som eksekverbar.
Du kan se, at der var en farveændring.
Nu dynamic.php er opført i grøn,
og det ligner svaret på spørgsmålet er, hvad, Charlotte?
[Charlotte] Kun jharvard. >> Only jharvard, yeah.
>> Hvis vi ønskede at vende den eksekverbare smule på for alle
hvordan kan vi gøre det?
Nogen tanker? >> A + x?
Ja, præcis.
Charlotte sagde vi kan gøre chmod af a + x af dynamic.php,
og nu, hvis vi kører ls-l ser vi, at de eksekverbare bits
er faktisk tændt for alle.
Og du kan faktisk gøre det modsatte af dette, så du kan slå den fra for alle
ved hjælp minus.
Nu er det slukket, og nu kan vi slå det til igen for jharvard
således at vi rent faktisk kan køre det nu,
og nu kan du se, når vi kører koden denne særlige #! linje øverst,
#! linje, fortalte skallen,
fortalte vores terminal hey, når denne fil køres,
bruge / usr / bin / php til at fortolke denne fil
og derefter udskrive output.
[Uhørlig student spørgsmål]
Sure, lad mig rulle op igen. Ligesom dette.
Du kan se alle disse direktiver starte med denne pund og derefter udråbstegn,
undertiden kaldes en molevitten, hash bang.
>> [Student] Hvordan kan vi køre det med php dynamic.php før vi gør det eksekverbar?
Spørgsmålet var, hvordan kan vi køre denne bruger PHP binære
mens dynamic.php ikke er eksekverbar?
Det er super vigtigt, fordi det er præcis, hvordan
det kommer til at arbejde, når du skriver problem set 7.
Det meste af tiden PHP-filer er ikke direkte eksekverbar.
Den måde, der virker, er fordi det er den PHP binære fil, der er eksekverbar.
Tolken er den ting, der bliver henrettet,
og så hvad det gør bogstaveligt talt slurping i hele indholdet
af vores dynamic.php fil og går linje for linje
og udføre disse kommandoer, så det er ved hjælp af vores PHP-fil
som en liste over instruktioner.
Det er ikke direkte at udføre det.
Det er, hvor vi siger, at disse filer er fortolket på kørselstidspunktet.
Det er en køretid sprog i stedet for noget, der er fastlagt påkompileringstidspunktet,
ikke et kompileret sprog som C.
>> Er der en måde at få en køretid sprog til at handle, som om det er en kompilere tid sprog,
gerne, hvis du har alle driften gøres på serveren
snarere end du ved hvad jeg mener?
Ja, så spørgsmålet er
er der en måde at få drifttid sprog til at handle mere som påkompileringstidspunktet typer sprog?
Og der er, mener jeg, det er et aktivt forskningsområde for en masse af disse selskaber.
Jeg tror, ​​Facebook har gjort et stort arbejde med PHP
og kompilere den ned, hvilket gør det hurtigere, optimering det
eftersom deres site er bygget på PHP.
Hvis du har fulgt node.js på alle,
der er lidt af en JavaScript-fortolkeren
at være i stand til at køre JavaScript uden for browseren, uden for din web-browser,
fordi der traditionelt JavaScript ville bare køre inde i Firefox eller Chrome,
og det vil blive anvendt til at lave fede animationer ske på en webside
og gør din webside dynamisk.
Det er blevet bygget på en masse arbejde, som Google har gjort
at gøre JavaScript og C + +
binde sammen, så der er en masse af aktiv forskning til
få disse sprog til at interagere og optimere dem,
primært fordi så mange mennesker kan kode i PHP og JavaScript
fordi det er meget nemmere.
Det er meget pænere. Du har ikke pointers.
Du har ikke typer, svæver rundt.
De ønskede at opnå fordelene ved disse påkompileringstidspunktet sprog
med alle typekontrol og hastigheden og den nedre hukommelse og alt dette
samtidig bibeholde fleksibiliteten og brugervenligheden af ​​disse nyere.
>> Tilbage til vores oprindelige plan for angreb.
Vi har et par af disse spørgsmål her i vores problem set spec.
Lad os gå igennem dem virkelig hurtigt, og vi vil gå rundt i lokalet.
Charlotte, hvilken type er 3,50?
[Charlotte] Det er en dobbelt. >> Det er en dobbelt.
Jimmy, hvad er det næste? >> Et array.
Et array, awesome, og Jared, hvad er fopen?
[Jared] Det er en ressource. >> Det er en ressource.
Det er lidt en ny, ikke en fil stjerne, ikke en fil.
Det er en ressource er den type i PHP,
og jeg er ked af det, Ella, den sidste null er hvad?
Null.
Null, hvordan er det staves i PHP? >> På samme måde.
På samme måde, hovedstæder? >> Yeah.
Ja, okay.
Her går vi, vi har en dobbelt, så har vi en matrix,
har vi en ressource, og så har vi null.
Lad os se nu har du set,
lad os se, så nu jeg gætte, hvad jeg også vil gøre, er trække op
denne webside lige her, denne php.net / manual,
så hvis du fyre kopiere det og åbne en webbrowser.
Jeg har tænkt mig at trække op Chrome, sætte det i.
Jeg vil gerne vise dig dette ikke bare fordi
vi kan snakke hele dagen om typer og alt det sjove
men snarere fordi det er den PHP manual,
og der er en masse af PHP programmører derude.
Der er en masse af PHP hjemmesider derude,
og som et resultat er der meget dokumentation PHP,
og manualen, denne php.net, er et rigtig godt sted at gå
når du har spørgsmål om, hvad er den bedste måde at gøre X i PHP
eller hvad betyder en funktion ud?
Bare slags blive fortrolig med hvordan det ser ud, fordi
du vil komme her ofte, lidt for problem indstille 7.
>> Hvis du ender med at gøre et afsluttende projekt, der bruger PHP
dette vil være et sted, du vil blive meget godt bekendt med.
Ofte den måde, folk gøre dette er de bruger Google til at søge efter webstedet,
og de ikke bruge søgefeltet, der er heroppe i øverste højre, som er form for lille.
Hvis du google rundt efter noget at gøre med PHP og du kan se
en af ​​de manuelle links poppe op, kan du typisk påberåbe sig denne
som en temmelig god ressource.
Awesome, så ud af disse typer, lige ud af nysgerrighed,
hvilke har vi ikke set?
Noget vi ikke har set her?
[Student] Resource. >> Vi oplevede ressource med fopen opkaldet.
[Student] Objekter. >> Objekter, vi ikke har set i sikker.
Noteringer vi ikke har set.
Der er nogle af disse pseudo-typer.
Vi definitivt kun oplevede heltal og dobbelt.
Vi ikke se nogle af de andre, så hvis vi klikker på heltal
vi kan se, er der andre heltal, som de har her?
Er de alle-så heltal, integer, heltal.
Nogle sprog har større integer typer,
ligesom vi så på MySQL i dag var der int og derefter stor int.
Cool.
>> Så, PHP manual.
Lad os gå tilbage til vores problem set spec, og vi vil nu rulle ned til side 4.
En af de ting, der sker, når du får disse sprog
der ikke har denne statiske skrive, så disse sprog, hvor du er nødt til at erklære
typen af ​​en variabel op foran
er du får de tilfælde, hvor du kan begynde at få variabler af forskellige typer
interagere med hinanden,
og PHP gør denne ting, hvor den forsøger at gøre
hvad det anser for at være den mest fornuftige ting at gøre
når du har 2 forskellige typer interagerer med hinanden.
For eksempel, hvis vi ser på disse linjer kode lige her
du se, at vi har, hvad der sker, når
vi forsøger og tilføje snor 1 til det hele tal 2.
Hvad sker der, hvis vi prøver og tilføje en streng, der ikke er en numerisk værdi
men snarere faktiske tegn, CS til tallet 50?
Så må vi se, er der noget anderledes, der sker, når
stedet for at tilføje en streng til et tal vi tilføjer et nummer til en streng,
og så videre og så videre til det punkt, hvor vi kommer
en slags underlige ting lige her, hvor vi har fået 7 + sandt.
Hvad dælen betyder det?
>> Hvis du fyre gå videre og indsætter noget af denne kode i dit apparat.
Du kan holde den i dynamic.php.
Vi får se, hvad der sker.
[Student] Bare bruge print, ikke printf?
Ja, så vil du opdage, at print er også en gyldig funktion til udskrivning i PHP.
Der er mange forskellige måder at gøre det.
Vi vil se med et par af de eksempler senere, når vi begynder at tale
om den unikke problem, at vi kommer til at skrive
og derefter koncentrationerne problem, at vi kommer til at skrive
at selv om vi har fopen og fclose
Det er ofte ikke den enkleste måde at læse på indholdet af en fil.
PHP har en masse af disse C-lignende holdovers.
[Student] Når jeg sætter i alle 6 af de ting jeg kun får ét nummer som et output.
[Nate H.] Når du lægger i alle 6 af disse ting.
Lad os se, er det, fordi det er muligvis,
én ting er, at disse print opkald ikke bliver afsluttet ved udgangen af ​​nye linjer.
Der er ingen ny linje, der adskiller hver af disse trykte opkald,
så måske du får en stort antal,
og det er egentlig bare amalgam af nye linje tegn.
[Student] Okay, hvordan kan jeg være sikker-
Nå, der er en masse forskellige måder.
Du kan manuelt sætte i en udskrift af en ny linje karakter,
et ekko af en ny linje karakter,
udskrivning af ny linje.
[Student] Så ekko er det samme som printf?
>> Printf er ligesom C printf
hvor du udskriver en formateret streng.
Du leverer det format string og derefter alle pladsholderen variabler.
Det er ofte noget, der ikke bruges,
lad os se, som en ansvarsfraskrivelse,
Jeg er mindre fortrolige med PHP, end jeg er med andre web-sprog,
og når jeg har programmeret i PHP jeg typisk ikke bruger printf
fordi jeg finder det hurtigere at bruge strengen interpolationsfiltre kapaciteter, at det har,
som vi vil gå ind og jeg vil vise dig på bare et sekund,
hvorimod i C vi slags nødt til at gøre dette Hacky ting at få det til at udskrive korrekt.
Du kan faktisk sætte variabler direkte ind strenge i PHP.
Printf er slags alt for lang for hvad jeg plejer at gøre. Ja, Ella.
[Ella] Normalt, hvis du får tolkningsfejl betyder det-
ligesom på C det ikke fortælle dig præcis, hvor fejlen er, og hvad det er,
så betyder det udseende gennem hele din kode og finde ud af det?
Det er typisk mere målrettet end det.
Jeg tror i dette tilfælde var det en smule off,
så jeg tror i dette tilfælde vi mangler et semikolon.
Det forsøgte at få mening ud af alt,
så ligesom disse fortolkede sprog, er tolk vil forsøge
og gøre sit bedste for at få det hele til en passende arbejdsdeling.
>> Du vil se, for eksempel i JavaScript
Du vil ofte-line udsagn ende med et semikolon ligesom de gør i PHP,
ligesom de gør i C.
I JavaScript nogle af JavaScript-tolke
i en masse af de browsere vil sætte i semikoloner for dig
hvis du tilfældigvis til at mangle dem.
De vil forsøge at rumme for nogle sjusk fra din side.
Det er, hvor det kan være at forsøge og forsøger og forsøger at gøre tingene til at fungere,
og så endelig det vil komme til et punkt, hvor der står okay,
Jeg kan ikke gøre tingene fungerer på at redde, og det er her du får et linjenummer
der kan synes en smule off fra det nøjagtige sted.
Okay, så lad os gå igennem dette virkelig hurtigt.
Vi slap med Ella, så lad os gå over til Missy,
og Missy, hvad print af streng 1 plus tallet 2 give dig?
[Missy] 3. >> 3.
Giver det mening? Sortering af?
Betyder det give dig et nummer? Betyder det give dig en streng?
[Missy] En række. >> Det er et tal.
Men det er at udskrive det, så det kommer til at give dig en form for snor.
>> Én ting vi kan gøre for at kontrollere dette
er, hvis vi gør $ var = 1 + 2
og så siger vi ekko af getType,
så vi bruger en tredje slags udskrivning her.
Nu kan vi se hvad der sker her.
Her hvad vi har, er vi fik et heltal ud af dette.
Selvom vi tilføje denne streng til et tal,
vi ikke fik en streng ud af det, ligesom Missy sagde.
Vi fik et heltal.
Okay, så lad os se, næste op, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Giver det mening?
[Kevin] Yeah.
[Nate H.] Hvorfor? Hvorfor giver det mening for dig?
[Kevin] Fordi det bare er at have strengen, der talværdi nul.
Ja, godt.
Kind of tvetydige situationer, men det er godt at vide, hvad der sker.
Stella, hvad der sker næste med nummer 1 + streng 2?
[Stella] 3. >> 3 igen.
Og i dette tilfælde, får vi en streng eller et tal?
>> Lad os give det en chance.
Nogen hurtigere end mig med at få svaret? Charlotte?
Åh, jeg didn't-okay, lad os se, vi kommer til at gøre det samme slags ting
hvor vi har fået et nummer plus en streng, og vi vil gentage den type,
se, hvad vi får.
Vi får også et heltal.
Det er ligegyldigt, hvilken en er den streng, hvoraf den ene er nummeret.
Vi vil stadig få et heltal.
Det er stadig kommer til at gøre, hvad vi kunne forvente.
Okay, så Sam, hvad omkring 90 + 9 flasker øl på væggen?
[Sam] 99. >> 99.
Ingen flasker øl på væggen, selv om.
Det giver os lidt mere information om hvad der sker.
[Sam] Hvis du havde skrevet 9 i breve
så ville du have 90, right?
[Nate H.] Yeah.
Spørgsmålet var, om vi havde skrevet 9 ud som N-I-N-E
ville vi have fået 99 eller 90?
Vi ville få 90.
Det er bogstavelig talt lige på udkig efter cifrede tegn.
Det er ikke smart nok til at genkende tal ord og den slags. Ja.
>> [Student] Er der sådan en ting som typecasting i PHP?
Der er, og det er præcis den måde, du ville gøre det i C.
Hvad med 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Yeah, så hvad kan være overraskende om dette?
Hvad ville der ske, hvis du gjorde det samme slags ting i C,
hvis du gjorde 10/7 i C?
[Charlotte] Det vil kun give dig, afhængigt af hvordan du typecasted jeg gætte
det ville give dig kun et begrænset antal cifre efter kommaet.
Ja, så et begrænset antal cifre efter kommaet.
Hvad ellers kunne være, ville det give dig eventuelle cifre efter kommaet?
Ofte ikke, så igen, afhængigt af hvordan du typecasting det
det måske eller måske ikke konvertere det til et decimaltal.
Her var det lidt rart, at det gjorde.
Havde vi vist dig denne tilbage, når vi startede med at lave denne slags ting i C
det sandsynligvis ville have gjort lidt mere mening
at det ikke bare gå til 1.
Og så endelig, Jamie, hvad 7 + sandt?
[Jamie] 8. >> 8.
Hvad betyder det?
Jeg tror det bare giver sande værdi af 1.
Yeah. Hvad sker der, hvis vi ændrer det til falsk?
[Student] 7.
Ja, så huske, hvor vi taler om disse binære værdier,
1 er på, hvor 0 er slukket?
Nu har vi sandt, er 1, 0 er falsk,
og du måske ikke har set det i C eksempler, vi har gjort dette tidligere semester,
men historisk bool type i C har ikke været en reel type,
så folk har brugt 0 og 1 i stedet for sandt og falsk.
Dette er en manifestation af denne.
>> Okay, så den ene vigtig del om alt dette
er, at vi har disse forskellige typer.
De kan interagere med hinanden.
De kan ofte interagerer med hinanden på måder, som er rart, som vi har set her.
Det er rart at være i stand til at have snor 1 og nummer 2, føje dem sammen og få 3.
Det giver mening.
Men når du skriver hjemmesider, og især når du behandler
brugerinput, så siger du har skrevet en webformular
der indsamler oplysninger fra brugeren og derefter går til at behandle det
på bagsiden ende, på serveren side i din PHP-kode
Hvis du forventer, at værdi, som brugeren har skrevet i og indsendes
til formularen til at være et heltal eller at være et decimaltal eller sådan noget
skal du eksplicit kastede den
og derefter gøre nogle type kontrol.
>> Du ønsker ikke at bare stole på denne type jonglering system til at gøre tingene fungerer ud,
især af sikkerhedsmæssige årsager, og bare for robustheden af ​​din hjemmeside.
Bare noget at huske på, at når du håndterer formulardata,
noget, der kommer med posten eller få superglobals
sørg for, at du altid validere det og omdanne det og typecast det.
Og ligesom vi talte om for et øjeblik siden, at typecasting
i PHP er nøjagtig den samme som i C, hvor du har parenteserne
og derefter typen.
Hold det i tankerne.
En funktion, der vil komme i handy, når du gør dette
er vi har brugt-og det er slags som en sidebemærkning-
vi har brugt denne getType funktion lige her
at finde ud af, hvilken type af en variabel,
og mens dette er praktisk til debugging og at se, hvad en variabels type er
du ikke ønsker at bruge denne, for eksempel i en tilstand, hvor
du tjekker for at se om getType af $ var = heltal gøre noget.
Det er skidt, dårlige, dårlige.
I stedet er der disse funktioner kaldes, er heltal, er streng,
er array, som du vil bruge i stedet, så i dette tilfælde
hvad jeg ønsker at gøre i stedet for denne fyr lige her
er at bruge, er heltal var.
Og de er ofte omtales, er is_ * i den forstand, at du kunne erstatte * med heltal,
streng, et cetera, og bare for at sikre virkelig hurtig
Dette er int php.
Ligner du kan gøre enten er int eller at der er heltal så godt?
Ja, alias, så int heltal aliaser.
Cool.
>> Hvordan gør vi?
Lad os afhente tempoet en lille smule.
Nu skal vi til at tale om arrays, så du kan se
i den næste del af spec, vi taler om, hvordan arrays i PHP
er lidt anderledes end i C.
I sandhed, de er sådan en blanding af
de arrays, du er kommet til at kende og elske i C
hvor alt er af samme type
opbevaret fortløbende og tilstødende i hukommelsen,
og du har disse numeriske indeks.
Du har indeks 0, indeks 1, indeks 2,
og du kan gemme værdier i disse indeks.
Du kan også i C, da du skrev Speller, en masse af jer
gjorde hash tabellen tilgang, og du så, at der havde vi
en anden slags opbevaring, hvor vi var kortlægning
en nøgle til en værdi, så når du forsøgte at gemme noget i hashtabel
De var nødt til at angive, at du ønsker at gemme den med en bestemt nøgle,
og at nøglen bestemmes placeringen af ​​værdi, og hvor det lagres.
Du har slags fik både af disse begreber sker på samme tid i et PHP array,
og som et resultat, vi ofte kalder disse associative arrays
hvor vi forbinder en nøgle i en værdi.
I denne næste del vi taler om en simpel PHP array
hvor vi har nøgler a, b og c,
alle strenge, kortlægning til de hele tal 1, 2, og 3..
Og du kan få nøgler af forskellige typer.
>> Du kan have nogle nøgler, der strenge, nogle nøgler, der er heltal.
Kan have værdier af forskellige typer.
Du kan have en værdi, der er en streng, en værdi, der er et heltal,
en værdi, der er en genstand eller et andet array, for eksempel
alle i samme array objekt, hvilket er lidt underligt.
Du behøver ikke at have et array, der er lige fået én type element i det.
Du kan have mange forskellige ting foregår derinde.
Den anden ting at bemærke er, at når du ser noget som dette i din kode,
som er gyldig PHP at erklære et array ligesom dette, 0, 1, 2, 3, 4, 5,
der vil erklære en initialiseret $ arr at være denne array.
Men hvad du faktisk får under kølerhjelmen er denne form for implicit
generation af nøgler, hvor vi har fået fra 0 til 0, 1 til 1, 2 til 2, 3 til 3.
Og det viser sig, at selv hvis du har et array som denne fyr op her
hvor man har a, b og c som tasterne
og så du begynder at bruge array push-metoden til at begynde at bruge dette array som en stak,
så du kan se, at dette array objekt, er denne opstilling virkelig bliver overbelastet.
Vi kan bruge det som en matrix. Vi kan bruge det som en hash-tabel.
Vi kan bruge det som en stak.
Når du begynder at skubbe tingene på denne opstilling
den første ting du skubber på dette vil være indeks 0 og derefter index 1 og index 2.
Du kan få denne form for implicit generation af nøgler
medmindre du angiver dem eksplicit.
Den måde du angiver nøglerne eksplicit selvfølgelig er ved hjælp af dette beslag notation,
, der svarer til arrays undtagen i stedet for kun at tillade
heltal indeks i her, nu vi tillader noget.
Hvis du vil have din nøgle til at være en streng, ville du angive det på denne måde.
Hvis du ønsker det skal være en int, angiver du det med int, du vil bruge.
>> Spørgsmål om det indtil videre?
En af de gode ting om denne idé
er, at du kan altid kun have én værdi er gemt med en særlig nøgle.
Hvis vi går tilbage over til vores appliance-lad mig slette nogle af disse ting.
Og lad os sige jeg initialisere et array til at være 0, 1, 2, gjort.
Hvis jeg nu ved, at for eksempel, hvis jeg echo $ arr. [0]
Jeg har tænkt mig at få værdien 0 printes ud,
og da der kun kan altid være en værdi lagret i en bestemt tast
hvis jeg gemmer noget på $ arr [0], siger en,
så jeg ved, når jeg echo $ arr. [0] igen
Jeg har ikke tænkt mig at få 0 printes ud som før.
Jeg vil kun få en.
Så dette er dybest set siger, at jeg ikke kan få $ arr. [0] lagre 2 forskellige værdier.
Det kan ikke gemme både 0 og strengen a, som denne bogstaveligt erstatter
hvad der var på $ arr [0] tidligere.
Grunden jeg bringe dette op køres det, se hvad der sker.
Se her, at jeg fik 0 printes ud og derefter en hernede.
Der er ingen nye linje der, fordi jeg var doven og ikke sætte det i.
Hvad er fedt ved dette er, at vi kan bruge dette som en måde
at fange denne idé om et sæt
hvor vi ikke kan få flere nøgler i et array.
Vi kan ikke have identiske nøgler i et array.
Jeg kan ikke have tasten 0, og værdien 1 og tasten 0 og værdien af ​​en
eller tast 0 og værdi sandt.
Tasterne er all-der er kun 1 nøgle i array.
Selvom du kan have den samme lagrede værdi
flere gange i opstillingen under forskellige nøgler
det er ikke muligt at have ens nøgler flere gange i din PHP array.
>> Hvis vi ser på det næste problem, unique.php,
hvor vi ønsker at åbne op for en PHP-fil
indeholder en liste af strenge, en streng pr linje,
og vi ønsker at finde alle de unikke strenge i denne fil
alt, hvad vi skal gøre er at bruge en af ​​disse PHP arrays
og bruge de strenge i filen som nøglerne til dette array
og holde opdatere vores array som vi gemme disse nye nøgler.
Når vi læser hver linje ud af den fil, vi kan gemme det i array,
og i slutningen vi vil have som vores nøgler i vores array
alle de unikke strenge i filen.
Giver det mening?
Lad os se hvordan det virker.
Vi skal åbne op, ifølge spec, en ny fil kaldet unique.php.
Åbn. Ups, undskyld, ny fil.
Vi vil starte det ud med det samme start og slut tags.
Vi kommer til at gemme det i afsnit 9, og vi vil kalde det unique.php.
Okay, nu zoome ind
Idéen her er åbne en fil,
læse i filen linje for linje.
For hver linje i fil
vi vil have et array, hvor vi har
den linje, som vores nøgle.
Og så når vi kommer til slutningen her
$ Arr. har taster er de unikke linjer
af sagens akter, da vi ved, at hvis jeg sætter linje i dette array
flere gange det vil bare holde tvingende den gamle værdi,
og vi kan faktisk sætte array-linje i som selv bare sådan.
>> Det er lidt underligt.
Vi lagre samme nøgleværdi par igen og igen og igen,
men da vi er garanteret, at der kun vil være 1 nøgle kaldet linie
så hvis vi har en fil, der siger, en fil med dyrelyde og det har woof, woof,
mjave, mjave, muh, muh, og hver gang vi læser et dyr støj ud
ligesom woof og vi gemme det i vores array vi får woof, og derefter anden gang
vi opbevarer woof det overskriver den første gang, at vi gemt det.
I sidste ende vil vi kun have én indgang i arrayet
for hver af de dyrelyde i vores dyrelyde fil.
Tror du fyre føler tillid til, at du kan tackle åbningen af ​​en fil i PHP?
En måde at gøre det på-lad os gå over dette hurtigt-én måde at gøre det
er med fopen, som vi så tidligere.
Kan fopen some_file.txt.
Du kan åbne den i skrivebeskyttet tilstand, ligesom i C.
Det er én perfekt god måde at gøre det.
Du er også derefter til læsning i filen linje for linje
har de samme funktioner, mange af dem, som du gjorde i C.
Du har fgets.
Du har feof, selvom vi ikke kan lide at bruge denne
fordi husk, det var ikke stor i C.
Du kan gøre det på samme måde,
men her er en virkelig cool ting.
Undskyld, jeg ikke ønsker at gøre $ fil, men der er en funktion kaldet fil i PHP,
og denne funktion lige her er cool, fordi den læser hele indholdet
på den fil, du angiver, så some_file.txt,
læser hele indholdet af denne fil i et array
og derefter kan du gentage over det, som er temmelig smart.
>> Hvis vi går for eksempel til vores web browser
og vi ser på Google for PHP-fil
du kan se her, at vores manual siger, at fil læser hele filen ind i et array,
og vi kan file_get_contents at returnere indholdet af en fil som en streng,
men typisk bare få det som en matrix er virkelig rart, fordi hvad det gør
er det bryder den op, så at hvert element
i sættet er en linje af filen,
så hvis vi ser på fil 0, det er den første linje af filen.
Fil 1, anden linje, fil 2, tredje linje, og så videre og så videre.
Ville det ikke være rart, hvis det var alle du havde at gøre i C?
Temmelig smart.
David viste dette i foredrag, og det formsprog, han viste var
at der ud over vores standard for loop-in PHP, vi havde at
for ($ i = 0; i <10; i + +),
og du kan gøre dette i PHP også samme ting-
vi har også denne cool konstruktion kaldet foreach.
Foreach er virkelig praktisk, når iteration over arrays eller disse datastrukturer
fordi det giver dig mulighed for at trække sig ud hvert element i matrixen
uden at skulle manuelt gøre indekseringen selv,
uden at skulle manuelt at oprette et indeks variabel tilvækst det,
trække sig ud af værdien i arrayet på dette punkt, fordi det er en meget almindelig ting at gøre.
>> Du har sikkert gjort det tonsvis af gange, når du lavede C stuff
i løbet af semestret med så denne foreach
vi kan sløjfe over denne fil matrix,
og syntaksen er, at vi gerne vil nu sløjfe over dette array
og angive, at den variabel, vi vil bruge til at gemme
Den del af dette array lokalt, gælder for anvendelsesområdet for denne foreach løkke,
er vi vil kalde det linie.
Hvis det er en fil med blot ord, og der er et ord i en linje
Vi kunne kalde det ord så godt, egentlig bare du give dette et navn,
hvad du vil kalde det,
og derefter inde i løkken, du kan gøre hvad du vil med denne variable linje.
Hvis det ikke er nok til at få værdien af ​​array, og du også ønsker at få
indekset sammen med det du kan angive et navn til indekset
samt værdien, og nu har du adgang til 2 variabler.
Du har $ i og linje
hvor $ i er indekset i arrayet,
og er den linje, du har hentet fra filen.
For eksempel, hvis vi ønskede at udskrive echo linie 0 i filen som dette
vi kunne gøre det ligesom dette, "Line $ i af filen er $ linje,"
og her er noget, vi har heller ikke set endnu enten
hvor jeg har bare helt springes over hele denne% s% d forretning
at vi skulle beskæftige sig med i C, og i stedet har jeg gået direkte til
skrive variablerne i linje i min streng.
>> Dette kaldes variabel interpolation, string interpolation
hvor du udstopning variablerne ret i, og PHP tolk
er smart nok, når det er læsning gennem en streng, der begynder med anførselstegn-
ikke enkelt citationstegn, med enkelte børsnoterede strenge du kan ikke gøre dette,
men med strenge med dobbelte anførselstegn som det lyder igennem den leder variabler.
Det er at jage dem ned, og hvis det ser variabler det vil tage værdien af ​​variablen
og fylde den i strengen, hvis den kan konvertere den til en streng repræsentation,
som er temmelig smart.
For nu, lad os udkommentere resten af ​​alt,
gemme denne, og hvad vi kan gøre nu, er at vi kan åbne op for en fil
at vi kan kalde some_file.txt-let 's oprette en ny fil-
og vi kan sætte i en masse nonsens ting her bare for at teste alt ud,
gemme det, kalder det some_file.txt, som jeg gør heroppe på toppen,
og nu, hvis jeg zoome ud blot at sørge for alt er i samme bibliotek,
det ser ud som jeg har unique.php og some_file.txt i samme mappe.
Hvis jeg kører php unique.php
se, hvordan det udskrives hver linje i min fil, og hvad linjen er?
>> Det er temmelig kraftig, right?
Se, det tog 3 linjer kode til at åbne en fil.
Nå, 4 linjer kode. Jeg kan ikke tælle i dag, klart.
Men virkelig kun 2 interessante linjer kode, fordi de andre 2 var de krøllede parenteser,
men i dette meget kode var vi i stand til at åbne en fil, gentage gennem det,
trækkes ud linjenummer og linjen selv
og printe det ud.
Cool stuff. Charlotte.
[Charlotte] Jeg har et spørgsmål om syntaksen.
Så foreach beskæftiger sig med hver enkelt linje på den fil, du åbner,
og derefter, når du ønsker at gøre ting med hver enkelt linje du bare gøre det som
og derefter knytte værdien.
[Nate H.] Hvad du kan gøre lige her-spørgsmålet var
Den foreach har at gøre med arrayet, så den foreach syntaks
er virkelig foreach, og bemærk, at der ikke er nogen plads
eller noget mellem for og hver.
De skal gå helt ved siden af ​​hinanden,
og så det tager i et array,
og så har du det andet søgeord indkaldt som der skal være der,
og derefter efter som du kan enten sætte en variabel navn,
i hvilket tilfælde du kommer til at trække værdierne af array,
ikke de indekser, eller hvis du gør det, som vi har skrevet under
får du nøglerne og de værdier.
Du har foreach element i array eller et par matrixen som fastkilet til værdi
eller som lige værdi.
Afhængigt af hvad du har brug for, hvis du ikke har brug tasterne,
så kan du gå med værdien.
Hvis du vil have de taster, du kan gå med dem også.
>> [Charlotte] Jeg indså også vi aldrig erklæret i eller linje.
Hvordan det selv ved, hvad de er?
[Nate H.] Hvad mener du med erklære?
[Charlotte] Vi har aldrig fortalt dem hvad jeg eller linje betyder.
[Nate H.] Vi har aldrig fortalt computeren, hvad jeg eller linje betyder i form af-
[Charlotte] At de er indekseret, eller at they're-
[Nate H.] Vi har aldrig fortalt det, at det formodes for at være det indeks eller nøglen, og værdien,
og det er fordi det er den PHP tolk.
Dette tjener som erklæringen og siger okay, er nøglen vil være
en variabel kaldet jeg gemt i en variabel kaldet i.
Værdien vil blive lagret i en variabel kaldet linie,
så dette tjener som erklæringen af ​​disse variabler
og siger $ i er en nøgle, og $ linje er en værdi.
Ja, Ella.
[Ella] Hvis tasterne er ikke gjort numerisk
hvordan kan det beslutte hvilken rækkefølge det kommer til at udskrive alt?
Er det ligesom den rækkefølge, det er opført i?
[Nate H.] Lad os give det en chance.
Lad os oprette en variabel kaldet arr.,
og vi kan gøre en går til 7.
Lad os sige 0 går til et andet array med 1, 2 eller æble.
Lad os sige 7 går til 1, b går til 2,
og 3 går til 4.
Det er lidt af en vanvittig leder eksempel fordi vi blande
strygere og heltal over det hele.
Der er ingen reel for at denne array.
Jeg mener, vi kunne bestille alt i alfabetisk rækkefølge efter nøglerne.
Vi kunne bestille alt alfabetisk efter værdien.
>> Vi kunne forsøge at tage hensyn til, at nogle er strenge, nogle er int'er,
og vi kunne prøve og konvertere dem alle til den samme type og se hvad der sker,
eller vi kunne overveje dem i værdien, som vi allerede indtastet dem
hvor vi sætter denne fyr i første, denne fyr på andenpladsen, denne fyr i tredje,
denne fyr i fjerde, et cetera.
Lad os se hvad der sker, når vi kører denne kode.
Hvis vi rulle ned og gøre det samme slags ting,
og her er det ikke udskrivning af nye linjer.
Når det læste ting ud af den fil, det var også de nye linjer i de værdier,
hvilket var grunden til det udskrives pænt, hvorimod her det gjorde ikke,
så det er derfor alt er smushed sammen.
Lad os tilføje i den nye linje bare for at gøre tingene nice.
Lad os køre det, og så her
se på, hvad der skete.
Det trykte alt ud i den rækkefølge, som vi sætter det ind i array.
Det er opretholde orden i den forstand.
>> Går tilbage til dette problem med uniques
hvor vi ønsker at være i stand til at gentage over en fil,
og vi vil give det some_file.txt,
og vi vil gentage over det på denne måde.
Vi sagde, at vi ønskede at bruge et array til at sikre, at vi havde fået alle de
unikke linjer ud derfra, og vi kunne gøre det rigtig nemt
ved blot lagring i et array, som vi naturligvis erklære uden for en løkke,
og vi sagde, at hvis vi brugte linjerne i filen som nøglerne i vores array
hvis vi gik ind i en dobbelt linje, vi ville gribe ind i den tidligere værdi.
Det er ikke altid muligt at have 2 nøgler, som er identiske i samme array.
Vi kan gøre netop det.
Vi vil slippe af med denne ekko erklæring lige her.
Her vil vi opbevare linje i filen i vores array
bruger sig selv som nøgle.
Intet at det, og det viser sig, at vi ikke engang behøver denne nøgle.
Vi behøver ikke at jeg variabel.
På dette tidspunkt, hvis vi skulle lave en anden foreach løkke
og vi var at sløjfe over hver arr.
og linje nu, hvis vi ekko-oops, sorry.
Vi kan ikke bruge komma. Vi er nødt til at bruge dette som søgeord.
Nu, hvis vi echo linje, vi bør få alle de unikke ord i filen.
Hvis vi går op til some_file.txt,
og lad os sige, vi gør æble, banan, æble, æble, banan,
hvis vi udskrive alle de unikke ord i denne fil skal vi kun får
æble og banan at printe ud.
Hvis vi gemme dette, nu her vi vil ind i,
php unique.php, og ta-da.
Vi har med succes uniqued filen.
>> Den sidste del af dette problem beder dig om at sortere dette array, før du udskrives det ud
fordi der i dette simple eksempel, som vi lige har gjort
vi var heldige i den forstand, at fil-
vi gjorde dette konstruerede eksempel med æbler og bananer.
Det blev allerede sorteret.
Men ved hjælp af den simple slags funktion, du kan sortere et array, som er temmelig smart.
Den sidste ting jeg ønskede at tale med jer om virkelig hurtigt
er, at denne form for PHP er alt sammen meget godt, og det er super handy
at vide, hvordan man skal gøre, hvis du nogensinde brug for at gøre små, hurtige ting programmering.
For eksempel, hvis jeg har brug for at skrive et program, der siger
sætter alle i sektioner Jeg har ikke tænkt mig at gå og skrive det i C.
Det kommer til at være lang.
Det kommer til at være lidt af en smerte, især hvis der er involveret filer,
Ligesom du fyre har set.
Det er så rart at med netop dette meget kode lige her
vi var i stand til at rippe gennem en fil, skal du trække alle de unikke værdier
og udskrive dem ud igen.
>> Men for dine opgaver, for dine projekter
hvis du bygger hjemmesider med PHP strømmen er at
vi kører vores PHP-filer gennem denne tolk,
og tolken behandler alt inden for PHP tags,
forlader alt andet uberørt og spytte ud resultaterne.
Vi kan gøre dette for at opbygge HTML programmering.
Hvis vi nu går tilbage til spec, det sidste problem i spec
taler om denne idé om fusioner
og skabe en drop-down menu,
som du måske eller måske ikke ønsker at gøre, afhængigt af hvad dit endelige projekt gør,
som tillader brugeren at vælge på en liste over alle mulige koncentrationer
deres én koncentration.
Nu, dette er sådan en smerte at skrive dette ud
og er nødt til at gøre alt dette manuelt, især når du har for at sikre,
at du har alle de vinkelbeslagene på det rigtige sted og alle citater i det rigtige sted,
så med PHP kan du gøre dette programmeringsmæssigt, og du kan gøre dette virkelig hurtigt.
>> Lad os se, hvordan du gør dette.
Vi vil åbne op for en ny fil.
Vi kommer til at sætte i vores PHP tags.
Vi vil kalde det concentrations.php,
og nu når du gør dette, at sådan en god ting at tænke over
når du forsøger at mikse og matche din PHP og din HTML
er at finde ud, okay, hvad er den del, jeg ønsker at programmeringsmæssigt generere?
Hvad er den del, jeg programmatisk kan generere?
Det er sandt, at du kan gøre alle dine HTML
indersiden af ​​PHP blokke.
Du kan gentage alle HTML som strenge.
For eksempel, hvis jeg ønsker at begynde at gøre de udvalgte mærker inde i PHP
Jeg kan sige ekko, siger vælge navn = koncentration,
og derefter ned under jeg kunne have en anden echo tag
eller en anden ekko kaldet luk vælge.
Dette er en måde at gøre det, fordi hvad dette bogstaveligt vil gøre
er udskrive denne streng, når det køres gennem PHP tolk,
så resultatet bliver HTML.
Hvis jeg gemme denne fil, da det er lige nu
og jeg kører php concentrations.php
se på, hvad jeg fik.
Jeg fik denne open Luk Vælg tag.
>> Hvis jeg skulle gøre det, og jeg skulle gemme dette resultat til en fil,
sige, concentrations.html-vent, det ligner l er gået over til den anden side,
nu, hvis jeg åbner op her concentrations.html du se, at jeg har en gyldig HTML-fil.
Er det lidt underligt?
Vi bruger PHP til at skabe HTML, skal du oprette gyldig HTML.
Den måde vi gør det, er vi bare have PHP print
HTML, som vi ønsker det for at udskrive.
Det er bogstaveligt talt hvordan PHP hjemmesider fungerer.
Når du besøger et websted, der sender dig til noget lignende
noget, noget, noget dot com slash index.php
computeren er bogstaveligt talt ringer op index.php,
kører det gennem PHP tolk, og hvad junk kommer ud
det er at sende tilbage til browseren og sige hey, browser, fortolke det som HTML.
Det gode er, at det kan være en smerte konstant at skrive ekko, ekko, ekko, ekko
og vedlægge alt i citater som dette, så hvis du ønsker at skrive
HTML, der kommer til at være statisk dig selv, du kan gøre det på denne måde,
sætte det udenfor, luk det,
og så her du kun sætte inde i PHP tags, som du kender
du ønsker at programmæssigt generere, og i dette tilfælde er det disse optioner tags
der er en smerte at generere.
>> For eksempel kunne vi generere tusind option tags
ved at gøre noget som dette, $ i <1000, i + +
og siger ekko option value = $-Ups, jeg kan ikke gøre det.
Nå, lad os give det en chance og se hvad der sker.
$ I og derefter sige $ i </ option.
Snarere end at skulle skrive, at option tag tusind forskellige tidspunkter
Jeg bruger PHP kode til at generere det automatisk, programmeringsmæssigt.
Kind of fiks. Yeah.
Jeg husker dette bliver nævnt i enten foredrag eller walkthrough,
men hvad er forskellen mellem anførselstegnene,
de normale og disse enlige ting?
Det er faktisk noget, som jeg har gjort forkert her, at jeg skulle til at vise dig.
De enkelte citater tillader ikke nogen særlige tegn,
så alt i en enkelt streng i anførselstegn fortolkes bogstaveligt.
Hvis jeg havde en \ n inde i enkelte anførselstegn, og jeg gemmer dette, for eksempel,
og nu vil jeg gå ned her og køre det-
oops, hvor skal jeg hen?
Åh, det er fordi jeg glemte $.
>> Nu hvis jeg åbner op-faktisk, her, vil vi slippe af med den skrive det til en fil.
Vi vil bare læse den.
Her kan du se, at jeg har fået denne bogstavelig \ n i strengen, ligesom ikke en egentlig ny linie,
og ligeledes, i stedet for faktisk at interpolere værdien af ​​denne variabel
det gav mig $ i sig selv, hvilket er lidt af en smerte.
Den måde omkring dette er at bruge dobbelte anførselstegn,
og så når du bruger anførselstegn det rent faktisk vil
korrekt interpolere værdierne af alle disse variabler i her
og anerkender også denne \ n til at være den nye linje, at det er
og ikke \ n.
Brug af enkelt dem er rart, når du har
tegn, der kan fortolkes som specialtegn, fordi så du ikke behøver at
undslippe dem konstant.
Ting kan få rodet, og ofte den måde jeg gør det,
bare for at gøre tingene let, er, at hvis jeg har tænkt mig at have noget
HTML gerne i min kode jeg vil omfatte edit indenfor enkelte anførselstegn
og derefter bruge denne Sammenkædningsoperator
til at sammenkæde de variable i.
Dette er en anden måde at gøre det
hvor vi har fået den prik, der kommer til at forbinde det er en streng
med det med dette med dette,
og nu har jeg ikke behøver at undslippe disse dobbelte anførselstegn.
Jeg behøver ikke at bruge denne fyr til at flygte.
De vil bogstaveligt talt blive udskrevet ud som anførselstegn og derefter denne fyr lige her.
Dette er en anden måde at blande det hele sammen.
>> [Student] Også, når du gentog getType var der ingen anførselstegn på alle.
Højre, så ekko er lidt speciel i den forstand, at du ikke behøver parenteser.
Du behøver ikke at have anførselstegnene nødvendigvis omkring variabler,
ligesom det er gyldigt at sige echo $ i, og det kommer til at fortolke dette som en streng.
Det kommer til at gøre det stemmer, så vi kunne gøre dette, og det er gyldigt også, men vi har ikke brug for det.
Det er valgfrit.
I denne uges problem set se ud for en masse af den slags ting
hvor du mikse og matche HTML med PHP
ligesom dette, nu og hvis vi rulle tilbage og vi kører dette
kan vi se, at vi har en hel bunke af optionsværdier
der er lige blevet udskrevet.
Vi har alt dette HTML, der fik skabt virkelig hurtigt for os.
Jeg vil overlade det som en øvelse.
Det er meget lig den fil læsning, som vi gjorde tidligere.
>> Der er en concentrations.txt fil, som du kan trække ned fra CDN,
og du kan åbne den ved hjælp af samme foreach trick, som vi gjorde tidligere,
og foreach du bare nødt til at gentage en indstilling og tilslutte
de relevante værdier, de passende taster og indekser,
og derefter får du en drop down, der bogstaveligt talt skaber
programmatisk for dig alle de forskellige koncentrationer på Harvard.
En praktisk ting at have.
Der er en masse af konfiguration ting til denne opgave.
Hvis du ikke allerede har gjort det tage den næste halve time, time,
nogen tid i aften definitivt sikker,
gå gennem det problem indstillede spec,
se, hvad der sker med etablering af de vhosts, den lokale vært, alt det der.
Én ting at påpege lige nu er, at
i de fleste problemområder sæt vi har stået i din Dropbox mappe
og derefter downloade det problem indstillede zip-fil og udpakke den.
For dette problem sæt, du ikke vil.
Du ønsker at gå ind i denne vhosts bibliotek.
Du ønsker at gå ind vhosts og gå ind i den lokale vært bibliotek i det,
og det er her, du ønsker at trække ned zip-filen,
unzip det, og gør dig klar til at gå.
Du bliver nødt til at følge trinene nøje.
>> Hvis du har spørgsmål, send en mail, lægge det på Diskuter, kommer til kontortid.
Tak fyrene. I næste uge vil vi have en anmeldelse session for quizzen.
Nyd din sidste problem sæt. Jeg håber, at det hele går rigtig godt.
[CS50.TV]