Doug LLOYD: zato smo naredil veliko delo v C, in C je res kul jezik, saj vam daje sposobnost res potop nizka raven v svoje programe. Smo dobili storiti stvari, kot res minute kot manipulacijo Posamezne bajtov pomnilnika. Spomnimo se, da kazalci res nam je omogočilo, da je fleksibilnost. Ampak ne bomo vedno morali imeti da je raven fino zrno podrobnosti v naših programih? Verjetno ne, kajne? In če bomo imeli kompromis med biti sposoben narediti res, res minute stvari in res, res velike stvari, da ne bomo imeli, da razmišljajo o tem, mi ne bi bilo treba izvajati te res velike ideje če oni so že zgrajena za nas, na splošno za gradnjo velike programi ali veliki projekti, bomo verjetno bo napačno na strani imajo več jezikov stvari zgrajena v Za nas, namesto da bi stuff nizko raven. In to je, če PHP res pride. Zdaj, eden izmed razlogov da učimo PHP v CS50 je, da je to v veliki meri zgleduje po C. In v resnici, po mojem mnenju, tam so res dva predniških jeziki so zelo pogosti danes. C in LISP. In oni matičnih jezikov ker vsak drugi sodobni programiranje jezik, ki se je razvila od takrat se zgleduje z eno ali drugo sintaktično. PHP je zelo podobna skladenjsko do C, medtem ko jezikih, kot so sheme, na primer, ki je ste morda slišali, se močno zgleduje po jeziku imenovano LISP, ki je starejši jezik. Torej je razlog učimo PHP v CS50 je, da s poznavanjem C kot bistveno kot vi na tej točki, pobiral PHP, ki daje vam sposobnost delati veliko višje stvari ravni kot C počne, ni da veliko oviro, ker že imajo Osnovna ideja sintakse. C je bila približno za skoraj 45 let na tej točki. PHP je bila približno za približno 20 let. In v tem, da 25 let med, programerji ugotovil, da bi jih veliko raje imajo višje sposobnosti ravni, in napake in boji od 20 let med privedla do PHP in drugih sodobnih jezikih. PHP velika izbira jezik za programsko opremo da allow-- za Programska oprema that-- kjer vas morali delati stvari, ki v C so dejansko zapletena. Tako na primer, delovne z vrvicami v C je zelo zapleten, ker kot vemo, godala v C so res samo nizi znakov. To ni vgrajen podatkovni tip. Ali pa morda bolj bistveno, nekaj, kar ne pokriva niti v C, Kaj pa, če morate storiti nekateri Računalniška omrežja? V redu? C ima sposobnost, da to storite, ampak to je tako Skrivnosten in tako težko dejansko storiti. Ali ne bi bilo lepo, če jezik je imel vgrajen, enostaven način izvajati mreženje? In PHP je jezik, ki omogoča, da ali omogoča, da precej malo več. Kot sem rekel, PHP je zelo močno zgleduje s C sintaksa je zelo podobna. In tako naj bi, upajmo, da Prehod iz ene v drugo malo mehkejše kot nekateri drugih jezikov lahko. Če želite začeti pisati PHP, samo odpirajo datoteka z .php končnico datoteke. Tehnično to ni dejansko potrebno, ampak, če hočeš stvari, kot so sintaksa poudarkom na IDE, tako da ta tip imena ali imena spremenljivke, funkcije, veste, ključne besede iz jezika so poudarjen v posebno barvo, ki jih običajno želeli, da ime datoteke z posebno pripono. Tako smo poimenovali našo datoteko z Php podaljšek, nato pa tudi s PHP, vse PHP kodo smo napisali, da Datoteka mora biti zaprti v teh PHP Ločila, ki jih vidimo tukaj na zaslonu. Pritrdilni kotnik? Php za začetek. Potem smo napisali vse naše PHP Koda, ki jih želimo v med. In potem ? Kot nosilec zapreti. Če tega ne bomo storili, potem kaj se bo zgodilo? To ne bo crash. To se ne bo res pokvaril naš program. Ampak to se ne dogaja, da imajo učinek, ki ga želimo. Kaj se bo zgodilo, res, je da, ko smo poskušali zagnati ta program, vse, kar ni med temi ločila se bo izpisal dobesedno. To se ne bo dejansko izvrši kodo, to se dogaja, samo ga natisnite dobesedno. Zdaj, zakaj je tako? Torej C je tisto, kar je znano kot sestavljenih jeziku. Vi ste verjetno seznanjeni z korak za izdelavo vaših programov, obračanja .c datotek in .h datotek v enem samem izvršljiv z znamko, zlasti z uporabo Jek kot naš prevajalnik. PHP, čeprav ne imajo to enakovredno. PHP je tisto, kar imenujemo razlaga jezik. In kaj to pomeni? No, to pomeni, da nimamo za pretvorbo naša izvorna koda na ničel in enic vnaprej. Namesto, da je program, ki se prav tako imenuje PHP, da razume, PHP in lahko nekako uspelo na letenje. To ni res ravno točni, ampak to je zelo dobra analogija o tem, kaj se dogaja. To je tolmačenje tistih, ničel in tisti na letenje. In tako, če ne veste, kako obdelati nekaj, če ne veš, kako Proces PHP, ste verjetno Želeli bi dal, da je besedilo v tam, kajne? Boste verjetno želeli postaviti kodo v tam, tudi če je ni med PHP-- PHP ločila. Ampak-- tako da to ne bo da jo izbrišete za vas, to je le, da bo to v bistvu zavreči. Tako se dogaja, da natisnete ven na zaslon. To se zdi kot, da je slaba stvar, ampak dejansko je bo res dobra stvar, saj bomo glej, ko govorimo o Razvoj spletnih PHP, ker to pomeni, da smo lahko Razasuti PHP in HTML. Lahko jih uporabite skupaj ustvariti bolj dinamično spletno stran. Ampak več o tem v video na spletni razvoj PHP. Torej, kaj je sintaksa PHP? To je tisto, kar ta video je vse okoli. Pogovorimo se o tem. Torej začeti, spremenljivke. Obstajajo PHP spremenljivke. Obstajata samo dve veliki Razlike iz C. Prvi je, da je nobena vrsta določilo. Nimamo reči int, char, float, vse te stvari. Nimamo storiti več. PHP je sodoben jezik. To lahko ugotovimo, kaj ste poskuša narediti ali narediti najbolje ugibati, kaj skušaš narediti. Torej, to je zelo lepo. Druga stvar je, da vse spremenljivke Imena se morajo začeti s znak za dolar. To je samo nekaj, da se navadiš. To je malo čudno, ker to je tako, da lahko PHP razumeli kaj je spremenljivka in kaj ne. Zato je vsaka spremenljivka ime Začne se z znak za dolar. Torej, v C lahko rečemo nekaj kot je ta, int x = 54. Nimamo storiti več v PHP. Lahko samo povem, $ x = 54. In lahko rečemo, na primer, v C, če smo funt vključevala CS50 .h header datoteke, lahko rečemo, Niz stavek = "To je CS50." Ne bomo morali storiti, da v PHP, čeprav. Lahko samo rečem $ stavek = "To je CS50." In dejansko niz je sedaj vgrajen podatkovni tip v PHP, oziroma PHP razume kakšen niz. To je ločen od matrike znakov, kot je to v C. Vse vaše najljubše pogojni stavki iz C so še vedno na voljo za vas, da uporabite. Torej ni nič prehod tam. Mi lahko say-- lahko imamo če izjavami, kot je ta. če $ y 43, ali $ z = 15. Torej, to je precej preprosta. Imamo lahko, če in drugje. Imamo če in drugega, če lahko. In opazili nekaj zelo lepo tukaj, in to nekako enega od tistih Prednosti PHP primerjavi C, obvestila kakšno funkcijo smo ne uporabljate tukaj? Mi smo z uporabo == da primerjati spremenljivka, $ ime, v niz. Mi ne bi mogel storiti, da v C, kajne? Smo morali uporabiti funkcijo imenovano StrComp ali StrEndComp ali kateri koli od njenih povezanih bratranci. In tako že vidimo te prednosti. Nimamo nekaj storiti kot neumno ali morda unintuitive kot poklicati funkcijo imenovano StrComp če želim preizkusiti ali je vrednost enaka niz. Jaz lahko samo uporabljati enaka enaka, kot sem mogel storiti ničesar drugega. Tako da je prednost. Včasih, mimogrede, boste morda glej else if kot eno besedo, elseif stavkih. In to je v redu v PHP, kot dobro. Tako da včasih morda videti. To ni slovnične napake. PHP dejansko razume elseif stavkih. Ne vem, zakaj so odločila za izvajanje, da ampak kot smo videli že večkrat vsej naši videov doslej, smo programerji je všeč, če moremo narediti stvari hitro, tako da se znebi tega prostora je očitno velika prednost. Torej, to je, če in elseif stavkih. Imamo tudi trikomponentne operaterja, Odpoklic vprašaj debelega črevesa, za res skrajšani obliki, če je ostalo ali pogojno razvejane. In očitno je v tem, kar smo poskušali narediti tukaj se dodeli spremenljivko $ pismo bodisi resnična ali neresnična, odvisno od tega, ali $ var je abecedna znak. Torej, to je precej podobna isalpha da smo seznanjeni z od C. To je nekako v protivrednosti v PHP. Funkcija je očitno imenuje ctype_alpha, ampak to je, kako to počnemo v PHP. Torej, vse to se dogaja, da se je, če $ var je pismo, $ pismo je res. Če $ var ni pismo, $ pismo je napačen. Imamo tudi izjave stikal vedno. Se spomnimo tistih, od C, kot tudi. Na samem vrhu tam, to je, kako delamo nekaj podobnega get int ali dobili niz. Torej PHP je, da je zgrajena v. Mi ne potrebujemo knjižnico CS50 več. Mi lahko uporabite samo funkcijo readline. Kaj se dogaja, da storiti, je print iz sporočila, "Vaša država, please, "in nato utripa poziv čakanja na uporabnika na vhodu nekaj informacij. Zdaj opazili kaj drugega lahko storimo s stikalom. Če ste ga uporabili prej, se morda spomniš, da stikalo je omejena precej na cela števila in znaki, zdaj pa lahko uporabite strune. In v resnici, je izjava stikalo v PHP je precej malo bolj fleksibilno kot njegov bratranec od C Zank. Tako kot pogojnih, vse vaši stari favoriti so še vedno tam. Imamo while zanke, ki računajo od 1 do 100 v tem primeru. Smo storili, ko zank to šteje od 1 do 100, in imamo za zanke to šteje od 1 do 100. Torej ni velik preskok tam. Sintaksa je precej veliko popolnoma enako, razen zdaj smo s pomočjo znak za dolar spremenljivka namesto o razglasitvi celoštevilskih spremenljivk ali nekaj podobnega, da je za naše števci. Tukaj je, kjer se stvari veliko bolje kot C, čeprav. Polja. Torej, spomnimo, ko smo bili govorimo o C, da za nas, da raste in psihiater sklopov informacij smo morali razvrstiti neplačila na to idejo, povezanega seznama, ker nizi C so bile določene velikosti. Mi jih ne bi psihiater. Mi jih ne bi rasla. Imeli smo, da prerazporedi spomin in vso to norost ali uporabite povezane sezname, ki zavzamejo zelo malo več prostora. Toda v PHP, nizi so ni določen v velikosti več. Prav tako lahko rastejo in se lahko skrči. Torej še enkrat, ti 20 let, ki je obstajala med prvo sprostitvijo C in prvim PHP sproščanjem, smo se odločili, da veste, to bi bilo res super če bi lahko to naredili. In tako smo se to izvaja. Torej so PHP nizi ni določena velikost, in ker PHP ne res imajo programer prednja pojmi tipov, bomo lahko mix podatkovnih tipov v naših nizi, preveč. Torej nimamo niti uporabljati vse cela ali vse plavajoče točke, imamo lahko mešanica vseh različne vrste v enem nizu. Razglasitvi matrika je precej preprosta. To je tako kot vsako drugo spremenljivko. $ nums = array (1, 2, 3, 4), matrika predstavlja funkcijo ki je vgrajen v PHP, ki bo ustvarila niz za vas. To ustvarja niz štirih vrednosti, Številke v tem primeru, ki se imenuje $ nums. In tam je več kot en način, da to storite. In bomo glej to je veliko v PHP. PHP je razvil veliko različnih ljudje in raste in raste in raste. Tam je ponavadi ne samo dva ali trije načini, da storite nekaj v PHP, tam je ponavadi kot 10 ali 20. Tukaj je samo še ena skupna način, da se razglasi array. $ nums = kvadratnih nosilec 1, 2, 3, 4. Torej, to je nekako podobno kota C je Br- zavit oklepaj zapis, ne. $ - ali bi bilo int nums square oklepaja enaka kodrasti oklepaja 1, 2, 3, 4. V PHP je $ nums = square nosilci 1, 2, 3, 4. Ampak oba primerov tukaj mi daje niz štirih v tem primeru celih števil. Kaj pa, če želim prečenje nekaj na zdaj? No, jaz lahko samo rečem $ nums 4, ki spet smo še vedno šteje od 0 tukaj v PHP, bi bila peta element matrike. Jaz lahko samo povem, da. Ne bom utrpel SEG kriv, ker je moj matrika je pravkar dogaja, da raste, da sprejme to. To je zelo lepo, kajne? In v resnici, mi ni treba niti določite, kam želim, da ga proda. Jaz lahko samo povem to in samo je prečenje desno na koncu, ali sem lahko tudi samo pravijo, $ nums 20 ali 1000. To sploh ni pomembno. To je še vedno le, da bo je prečenje desno na koncu. Tako sem lahko rastejo in as-- smo Ne bo ga pokriva tukaj, vendar sem lahko podaljšujte ali trak elementi od matrike, kot tudi, in array skrči za sprejem ki zdaj manjka ali je prazen prostor. Obstaja še en način za prečenje nekaj na vrsto, ki je funkcija imenuje array_push. Torej še enkrat, samo ta ideja, da so sposoben narediti stvari mnogo različnih načinov. Tako smo videli tri različne načine zdaj za prečenje drug element na paleto. Torej, to dodaja še en element na koncu $ nums matrike. In bomo lahko pomešajo naše vrste podatkov. Torej, jaz bi imela vrsto ne 1, 2, 3, 4, a 1, res, 3, 4, kjer velja je logično, in nato če želim prečenje na drugem elementu na tem polju, morda niz, niz "pet", lahko storim, da. In zdaj bi moj niz je 1, res, 3, 4, pet. Beseda pet, ne pa celo 5. Torej, veliko fleksibilnost tam. Prilagodljivost dobi še bolje, čeprav, ker ima PHP podporo za nečim imenovano asociativno paleto. In smo nekako nejasno govoril o asociativne nize v C v okviru hash tabel, ker kaj asociativne nize so res vse o tem so kar ključ vrednost par preslikave. In v tem primeru, keys-- če da smo seznanjeni z nizi od C, tipke so številke indeksa. 0, 1, 2, 3. In vrednote, kar smo ugotovili, da Niz 0, matrika 1, matrika 2, in tako naprej. Torej tipke so indeksi, in vrednosti kaj je v tej matriki lokaciji, določil tega indeksa. Toda v PHP, nimamo za to Pojem matrike 0, matrika 1, matrika 2 več. Mi lahko zdaj uporabljajo dejanske besede zemljevid tipke za vrednote. In tako bi lahko rekel kaj takega. Jaz lahko ustvarite matriko z uporabo oglati oklepaj sintaksa, kot sledi. $ pizze = square bracket "sir" in nato to neke vrste dvojne puščice zapis, 8.99, "feferoni" arrow 10.99-- 9,99, in tako naprej. In kaj se dogaja tukaj? Kaj sem pravzaprav počne? Jaz sem ustvarjanju ključna vrednost par preslikave. Torej, namesto da bi rekel, na primer, pice 0, koščki 1, pizze 2, Zdaj lahko rečem pice sir, pizze feferoni, in se nanašajo na vrednosti povezane z njimi. Torej, tukaj so naši tipke v zeleni barvi. Sir, feferoni, zelenjave, buffalo piščanca. Tu je puščica, ki omogoča Ta ključna vrednota par kartiranje. In potem tukaj so vrednosti na tej lokaciji diod. Torej, to je, kot pravijo, matrika 0 znaša 8,99. Ključ je 0. Vrednost je 8,99. Zdaj lahko rečem matrično sir, ali ta Primer pizze sir, sir je ključnega pomena, in kaj sem našel na pizze sir je 8,99. To je vrednost, ki se mi zdi tam. Torej lahko rečem, stvari všeč. $ pizza sir = 7,99. Reci Imam prodajo. Hočem dis-- želim spusti cena pice sira. Ali lahko uporabim zelenjave pico kot del pod pogojem, ali sem lahko dodate nov element my matrika, tako kot sem se prej lahko storite. Jaz lahko dodate nov element za to asociativno paleto s tipko "slanina" in vrednost 13.49. Ampak to nekako predstavlja težave, Če menite, da o tem za sekundo. Kako bi Ponovil skozi ta niz? Prav? V C, bi mi samo še zanko, tipično, da bi potekal od 0 do velikost matrike minus 1. Matrika ima n elementov na je veljavni indeksi so od 0 do n minus 1. Tako smo lahko uporabite za zanke korak skozi vsak element. Ampak to ni res velja več, kajne? Zdaj, ko imamo par ključev vrednost preslikave, kjer so tipke besede, kako Ponovil nad vsemi besedami? No, na srečo, PHP ima način, da se ukvarjajo s tem preveč, in tako bomo skoči nazaj da zank za sekundo uvesti četrto vrste zanke, ki obstaja v PHP imenuje foreach zanke. In kaj foreach zanke pa je to je v bistvu ista ideja. Lahko jo uporabite za vse vrste matrike. Ampak to je v bistvu Isto idejo kot za zanke, razen namesto uporabe številke indeksa, ki ste jo pravkar imajo to čudno sintakso kjer pokličete vsak element ime za namene te zanke. Torej v tem primeru, foreach ($ niz kot $ ključu). V bistvu, kot je ta pripomba pojasnili, znotraj tega foreach zanke, to se dogaja, da gredo čez vsak element $ array, ki je običajno bo asociativno matrika, vendar se lahko res vsaka vrsta matrike da želite v PHP. In vsakič, ko v za zanke boste morda so rekli $ zaporedji oglati oklepaj $ i, si lahko samo rečem $ ključ. Tako da $ ključ postane vzdevka za vsak indeks vaše PHP asociativno paleto, zato ga lahko uporabljate tako. Tako, na primer, ki smo jih Zdaj imam našo pice paleto. Sem nekako tako pritegnjen v kotu tako da bomo lahko uporabite narediti hiter primer. Če rečem, foreach ($ pizze kot $ pizza), no, kaj se dogaja? No, jaz grem Ponovil skozi vsako single element matrike $ pice s, in pri tem, bom poklicati vsak element, ko sem notri telesa, ki za zanke, $ pico. Torej, to je neke vrste stand-v, odpoklic, da $ pizza je stand-v za rek $ pice oglati oklepaji $ i če smo bili z uporabo za zanke, kjer smo bi šel od $ i = 0, da je v tem primeru, $ i = 3. Če nismo imeli parov ključev vrednosti tod bi bilo to element 0, 1, 2, 3, in bi jih uporabljamo za zanke, da gredo $ pizze 0, $ pice 1, $ pice 2, $ pizze 3. Torej, zdaj samo $ pizza je nadomeščanje za posamezen ključ. Torej, kaj se to dogaja, da natisnete? Jaz tiskanje $ pico. Kaj bom najti at-- če sem izpisal $ pice, $ i? Prav? Če se bom, da natisnete i-ta element pice, kaj bom za tiskanje? Grem izpisati Vrednosti na tem mestu, kajne? Like, če bomo počeli to v okviru C, mi ponavadi ne uporabite našo iterator spremenljivka, int i = 0, i manj kot 3, i ++, da natisnete 0, 1, 2, 3. Mi tiskanje paleto 0, matrika 1, matrika 2, matrika 3. In kaj to natisne to. To je seznam cen. 8.99, 9.99, 10.99, 11.99. Zdaj pa hitro note tukaj. Foreach zanke ni nujno natisnite stvari v redu. To ni zagotovljena. To ponavadi počne. To je običajno temelji na sklepu kateri elementi so dodani k vrsti, tako da samo imeti v mislih. To ne bi bilo v redu. Ampak bo foreach zanke Ponovil po vsakem posameznem elementu array v vprašanje. V tem primeru spet da array je $ pice. Ne morem spremeniti sintakso, čeprav, če Hočem tako ključ in vrednost. Namesto da bi rekel $ pice kot $ pice, to lahko rečem. In če pogledaš na kaj sem obarvana zeleno tukaj, izgleda, da je ključni vrednost par kartiranja. In tako, če you-- niste četudi povsem prepričan, kaj se dogaja, da ne, si verjetno lahko uganiti da $ prehiteli se dogaja da je ključ v tem primeru in $ cena se bo vrednost. Tako da sem zdaj zamenjavi vsak element od $ pice kot ključni par vrednosti, in zdaj sem lahko nanašajo na ključ in vrednost, ki bi lahko v priročno, na primer, kot sledi. "Cela" - to je veliko tiskanje dogaja here-- "celoto" prehiteli "pizza stane $" ceno, nato pa Sem izpisal obdobje in poševnica nazaj n. Torej sedaj, obvestilo spet imam dostop do ključna, $ prehiteli, in vrednost, $ cena. Torej si lahko uganiti, kaj je to se bo izpisal? Tam je veliko izjav tiskanja vendar pa je le ena poševnica nazaj n, tako se dogaja, da natisnete nekaj na entire-- na eno vrstico kode. Če bi se lahko nanašajo na ključ in vrednost, nato pa zdaj, namesto samo bi mogli natisniti s cenami, Jaz lahko natisnete nekaj takega. "Cel pizza sir stane 8,99 $." In zdaj sem z vsemi keys-- sir, feferoni, zelenjave, buffalo chicken-- in vrednote. 8.99, 9.99, 10.99, 11.99 Torej to je samo drugačen način narediti foreach zanke, ki namesto samo vam daje dostop do vrednot, to samo daje you-- vam daje dostop do tipk in vrednot. Torej tiskanje informacij. Sem že to naredil nekaj različne načine, ste morda opazili. Dve funkciji, ki smo jih v prvi vrsti videla sta tisk in odmev. In za precej vse namene in namene, oni so popolnoma enake. They're-- tam je zelo subtilna Razlika, ki je sploh ni vredno dobili v, ampak v bistvu povsod lahko uporabite print boste verjetno lahko uporabite odmeva, kot dobro. In to ni samo dva. PHP ima veliko drugačna načinov za tiskanje stvari, in ima tudi možnosti za vključitev spremenljivke v sredini niza. Torej spomnite iz C, kajne se spomnite, kaj funkcija lahko uporabimo za nadomestitev spremenljivk v stvari, ki jih želite natisniti ven? Verjetno ste to uporabijo delujejo precej veliko. printf, kajne? Torej, to je tisto, kar smo imeli prej v notranjosti v okviru našega foreach zanke. Imeli smo teh petih ločene izjave za tisk, ker je to edini Tako sem res vedel, v času, ko kako natisniti sporočil. Nisem vedel, kako se povezovale Spremenljivka $ prehiteli v mojo PHP kodo. No, če sem sprejela divji ugibati, printf, da dejansko ne bi delal. printf je funkcija, ki jo lahko uporabite v PHP, tako kot sem ga lahko uporabite v C. In tako nekako takole, printf, spet smo seznanjeni s tem. Prvi% s nadomesti z vrednostjo $ prehiteli. Druga% s nadomesti z vrednostjo $ ceno. In tako sem interpellating, ki je samo fancy način rekel sem zalepi spremenljivke v tej lokaciji. Torej sem priklopom na $ prehiteli kjer rdeča% s $ in cena kjer modro% s je, in potem bi dobili sporočilo, "Cel pizza sir stane 8,99 $." Ni edini način, da lahko to storite, čeprav. Mogoče bi si želel uporabiti to metodo. To je pravzaprav tisto, kar je najpogosteje imenujemo spremenljivka interpelacijo. Lahko uporabite odmev. Sem lahko uporabite tiskanje preveč, saj bomo videli. Toda kaj se dogaja? Najprej moram pobeg znak za dolar. Saj se spomniš, ko smo bili dejansko tiskanje cene za pice, Sem jih dejansko oblikovanje kot denarni zneski z znak za dolar. Vendar smo s pomočjo dolar znake tudi da predstavljajo imena spremenljivk v PHP, in še posebej, ko sem uporabo te metode kodrasti brace spremenljivka Metoda interpelacija, rabim pobegniti svoj znak za dolar, tako da ne Mislim, da govorim o spremenljivko. To se dogaja, da dejansko, dobesedno natisnete znak za dolar. Tako nekako je analogize za kar vidite na koncu tam. To dejansko ne print poševnica nazaj n, kajne? To natisne novo linijo značaj. To is-- to ne dogaja, da print poševnica nazaj znak za dolar, da se bo izpisal samo dolar znak za. Ista ideja. Escape sekvence, kar te stvari se imenujejo. Ampak obvestilo, da ne počnem kakršnakoli% s substitucij, Jaz sem samo dobesedno čepi pri teh spremenljivkah. In tako v this-- kaj bi se zgodilo tukaj je vrednost $ topping-- spet samo vodenje s tem, kar smo bili Govorimo o tako far-- sir bi dobil priključen na električno omrežje tam. In bi $ cena glede na vrednost na pizze, oglati oklepaji, sir, ki je bila 8,99. In tako bi to tudi natisnete "Cel pizza sir stane 8,99 $." In kot sem rekel, sem lahko uporabite natisnete tukaj namesto odmeva, in funkcionalnost biti precej povsem enako. To bi izpisal isto stvar. Obstaja še en način, da to storite, in to je nadaljnja prednost PHP delo s strunami. Mi lahko naredimo niz združevanje. Mi lahko to storite v C, preveč, uporabljate funkcijo imenovano strcat, ampak še enkrat, smo morali pokličite ločene funkcije. To je bil ves ta nered storiti. Imeli smo za funt, vključujejo string.h. To je bila proizvodnja, kajne? Ampak zdaj sem lahko samo uporabljati to dot operaterja za združevanje nizov skupaj. Torej sem concatenating "celoto" in potem ne glede na vrednost $ prelivom je, nato pa še niz "Stroški pizza $" in nato concatenating karkoli vrednost $ ceno, je, nato pa na samem koncu sem prečenjem na obdobje poševnica nazaj n. In tako bi to tudi izpisal "celoto" - še enkrat, če govorimo o prvi element te pizze array-- "Cel pizza sir stane 8,99 $." Obdobje, poševnica nazaj n, še enkrat, z Na $ prehiteli in $ cena nadomeščanjem za tisto, kar smo opredelili v naši foreach zanka kot ključna vrednost paru kartiranja. PHP zmorem funkcij. Naloge so bile neke vrste sestavni C, kot smo videli. Like spremenljivk, ne potrebujemo, da opredelite vrsto povratni funkcije, saj ni važno. In ne bomo se opredelijo Podatkovni tipi vseh parametrov, ker se v resnici ne glede na to, kot smo videli v PHP. Vsak funkcija uvedemo s funkcijo ključno besedo. To je, kako smo se kažejo v PHP, ki kaj smo govoriš je funkcija. In mi ne bi bilo treba Ukvarjamo se z glavne na vse, ker tolmača, PHP tolmač, deluje od vrha do dna, glede na to. Ste, če vidi lahko klic funkcije, se bo poišči klic funkcije, tudi če gre kasneje. Ampak to se dogaja, da se glasi od vrha do dno, tako da nam ni treba določiti, Tukaj je, kjer ste začeli. Začnete na liniji 1 vaš PHP in deluje navzdol od tam. Torej, tukaj je, kako bomo ustvarili funkcija imenuje hard_square. To očitno traja eno parameter, ki kličem $ x. Ta funkcija je zapleteno samo za ponazoritev različne stvari. Še vedno imamo vrednote vračanja. Jaz sem z uporabo zanke for tukaj. Ampak to je v bistvu samo, kaj je to znaša je samo $ x krat $ x. Kaj sem pravzaprav počne je le dodajanje x 0 x-krat ali $ x na nič $ x-krat. Ampak to je dejansko popolnoma Enako kot pomnoži $ x-krat $ x. Jaz lahko še vedno vrne vrednost, v tem primeru $ rezultat, in sem naredila funkcije v PHP. Tukaj je, kako bi ga uporabili v kontekstu. Torej, morda sem znotraj neke PHP datoteke. Opazili v modrem tam, da Uporabil sem svoje PHP ločila, Kot nosilec vprašaj php. Med tistimi so vsi PHP, da želim pisati. Tako da sem očitno dogaja, da get-- Bom poziv uporabniku da mi številko, trgovino, spremenljivka, trgovina v tem spremenljivka $ x, karkoli so mi ga dali. Potem bom odmeva hard_square te vrednosti, in očitno bo za prečenje v novo vrstico kot tudi, in potem kasneje bom opredeliti funkcijo hard_square tako da ko naredim pokličite na hard_square, ve, kaj sem govoril. Zdaj, jaz bi tudi storila kaj takega. To je nekoliko drugačna. To je skoraj povsem enako kot tisto, kar smo videli doslej, razen namesto da bi rekel samo $ x tam kot parameter za hard_square, Pravim $ x = 10. Torej je to primer defenzivno programiranje, varovanje vaših programov pred zlonamernimi uporabniki. To je eden od načinov, da naredite nekaj napako preverjanje, da nismo zares imajo kot možnost v C. Lahko bi nikoli določite privzeto vrednost nečesa. Vedno smo imeli, da preverite ali, na primer, če smo naredili klic GetString, je bilo najbolj pravilno, če takoj, ko preveri, da smo preverili ali niza da nas je uporabnik dal ni enaka NULL, saj ne želimo, da začnete delo z ničelno vrvico. Tu gre pot za zaščito pred tem. Če se uporabnik ne nam zagotavljajo nekaj nekako, kaj bomo storili? No, bomo samo reči karkoli oni nam ne zagotavlja, smo le, da bo namesto tega priključite v 10. Torej, če ga niso nam vrednost, samo uporabo 10 privzeto. In tako sem, opazili, da delam klic k hard_square, vendar ni poziv za uporabnika, kajne? Jaz sem samo tako prazen klic. Ampak moja funkcija hard_square pričakuje parameter. Kaj se to dogaja, da natisnete? To se dogaja, da natisnete 100, kajne? Saj uporabnik ni daj mi ničesar. In tako sem šele tekoč, da prevzame da 10-- 10 je privzeta vrednost. In tako bi to natisnete od 100 v svoji vrstici. PHP datoteke, ne bi bilo treba lahko samo eno datoteko. Lahko združite več datotek skupaj, tako kot si lahko v C. pot smo, da je bilo v C običajno narediti #include dobiti datoteke glave potegnil. Mi tega ne počnemo v PHP. Naredimo nekaj, kar ti require_once. In potem je tu še cela stvar, kaj je to __dir__? To je samo poseben spremenljivka, ali posebna konstanta, res, da določa, kaj vaš trenutni imenik. In tako se dogaja, da poiščete v vašem trenutnem imeniku za datoteke imenovane cs50.php V tem primeru tod in to se dogaja, da se držijo te datoteke na vrhu vašega PHP programa, ob predpostavki, da si dal zahtevajo enkrat črto na vrhu vašega PHP datoteke. Torej se PHP uporablja predvsem, vendar ne izključno, kot jezik za spletno programiranje. To je res, kako je prišlo do tega. Vendar je polna jezik, kot smo videli. Videli smo precej vse stvari da lahko to storite, da so podobna C, in lahko naredi vraga veliko več kot to. Ampak zato, ker je poln jezik in mi lahko storite ukazno programiranje postavo v njej. Mi lahko zagon programov ukazni vrstici. Vse, kar je potrebno za zagon ukaza Program linija, ki je napisana v PHP je, da imate PHP tolmača. Torej, to je nekako analogno ob prevajalnik na vašem sistemu če želite, da pripravijo svoje C kodo da se spremeni v izvršljive datoteke. Morate imeti PHP tolmača da obstaja na vašem sistemu tako da lahko razlagajo PHP datoteke. Ste ob predpostavki, da ne, in ponavadi Ta tolmač se imenuje PHP, in to je ponavadi v paketu z najbolj opreme ali naprav PHP da lahko dobite na spletu, in prav gotovo ime PHP tolmača imamo v CS50, IDE. Vse, kar morate storiti, je tip php datoteke. In kaj je tvoj program, je tekoč storiti, je, da je tekoč teči skozi tolmač, je gre prezreti vse, kar je ne med zadevno mark-- ali, kot nosilec question mark php, PHP oklepaji in ga natisnete, in bo tolmačila in izvršitev Koda znotraj vaših PHP ločila. Torej, kaj je pop prenesejo CS50 IDE in imajo pogled na nekaj PHP datotek, teče nekaj PHP datotek, v ukazni vrstici vmesnik CS50 IDE. Torej, tukaj smo v CS50 IDE, in sem vzel svobodo odpiranja datoteko z imenom hello1.php. In očitno je, da je vsebina tega datoteke so le PHP ločila tam, in vmes, echo ("Hello, world"). To je zelo preprosta PHP programa. Jaz sem šele tekoč, da se pomaknete navzdol na mojo terminalsko okno tukaj, in grem tip php hello1.php, zadeti nastopiti. Pozdravljen, svet. To je verjetno tisto, kar smo bili Pričakoval je, da ne, kajne? Pojdimo in sprejme en pogled na programu. hello2.php. Precej isto stvar, ni veliko dogaja. Ta čas, čeprav, jaz grem na poziv uporabniku, da mi njihova imena. Jaz sem spet uporabljati to funkcijo readline. $ name = readline. To je poziv: "Kako ti je ime?" Očitno sem tiskanje je v svoji vrstici. In potem, da je linija spodaj da bo poziv kjer uporabnik lahko vnesete svoje ime. In potem sem z malo spremenljivka interpelacija tukaj na liniji 3 natisniti "Hello" in ne glede na vrste uporabnikov. Torej, to je analogna rekel, Hello, vejica,% s, če smo bili z uporabo printf v C. Torej, pojdimo in interpretirati ta program. Torej še enkrat, bom se pomaknite navzdol na mojo terminalsko okno. php hello2.php. Kako ti je ime? Doug. Pozdravljeni, Doug. Imam tudi druga datoteka z imenom hello3.php. Grem zbistriti zaslon z nadzorno L, in bom za izvedbo tega. Kako ti je ime? Doug. Pozdravljeni, Doug. Tako ravnanje je identična hello2.php, ampak zakaj je hello3.php? No, tukaj je razlika. V tem primeru obvestilo da je na liniji 1 tukaj, Imam nekaj, kar ne med PHP ločila. Jaz sem samo tiskanje out-- ali I pravkar vnesli, "Kako ti je ime?" Ko je PHP interpreter to vidi, ga nima pojma, kako se razlaga kot PHP, in tako namesto ni, to je le, da bo izpljuni. Tako obvestilo v vrstici 3 zdaj, moj klic readline, ni poziv več. Jaz sem samo dejansko dogaja to-- ko PHP interpreter to vidi, to se dogaja, da natisnete "Kako ti je ime?" Potem pa vidi, oh, OK, here's-- vse ostalo se bo razlagati tako, PHP, tako da je, zakaj to deluje. Nimam za nujno spodbuditi to-- uporabnik znotraj readline, Jaz lahko samo še zunaj od PHP ločila in omogočajo tolmača da ga samo natisnete zame. Tako da dejansko ne samo da imajo en komplet PHP ločila v vašem programu. Lahko dejansko imajo več od njih, odpiranja in zapiranja, kot je potrebno. Torej, vzemimo si oglejte na nekaj programov v CS50 IDE kje smo ponazarjajo to idejo o več sklopov razmejeno PHP. OK, tako da sem odprl datoteko tu imenujejo add1.php. In opazil, kaj se dogaja tukaj. Tako kot prej, imam single PHP niz ločila. Grem izpisati sporočilo, "Prosim, daj mi številko." Potem bom prebral črto in ga shranite v spremenljivko $ num1. Potem grem natisniti znova. Daj mi še eno številko. Preberite črto od uporabnika, trgovina karkoli so vnesli v na $ num2. Dodajte jih skupaj in shranjevanje, ki povzroči spremenljivko z imenom $ vsota, in nato natisnete, "The Vsota teh dveh številk je, "in nato komunicirati je spremenljivka $ vsota. Torej, kaj je samo teči ta preko tolmača potrditi, da je to tisto, kar smo pričakovali. php add1.php. Prosim, daj mi številko, 3. Prosim, daj mi še eno številko, 4. Vsota teh dveh številk je 7. To je 3 plus 4. V REDU? Torej, nič strašno fancy tam. In zdaj pa odpirajo add2.php. Tukaj imam nekaj PHP razmeji kompleti tam, kajne? Lines 1, 3-- linije 1 in 3 nimajo PHP ločila. Torej, ko je tolmač jih vidi, da je samo bo izpljuni točno kaj sem tam tipkal. Torej, to je, kjer sem delaš vse moje česar. Na progah 2 in 4, vidimo zelo seznanjeni $? php nekako ločila, tako da ta dva linije so dogaja, da izvajajo kot PHP. In potem na liniji 5, imam to čudna stvar tukaj, kajne? Ta kot nosilec Vprašanje znak enačaj. Bom še povečate malo dlje. Vidite lahko, da je to tisto, kar sem govorimo o tam, to $? =. Izkazalo se je, da je tako pogost, da Razlog, da smo odprli niz PHP Ločila je izpisal vrednost. In to je vse, kar smo počeli. Ampak tam je tudi okrajšava za to. $? = Je PHP okrajšava za rek nekaj podobnega $? php echo vsota od num1 in num2. Torej, to je samo še en okrajšava za to. Torej, če sem teči ta program, php add2.php. Bom povečavo dol malo. Prosim, daj mi številko, 4. Prosim, daj mi še eno številko. In ker sem v resnici ne skrbi podatkovni tipi v PHP, lahko rečem, 4.8. Vsota teh dveh številk je 8,8. Ta funkcija obnaša precej povsem enako, kot bi pričakovali, kot dobro. In imam eno bolj odprt tu imenuje dice.php. Poskusite to še enkrat. Imam eno tu imenujejo dice1.php, ki je prav tako, glejte, je, da kot nosilec vprašanje označi enačaj zapis tam, ampak obvestilo, da v tem primeru sem kliče funkcijo rand, ki je, kot ste morda pričakovali generira naključno število. "Valjanih Si," in to se dogaja, izračunati nekaj naključno število, mod 6 + 1. Tako, da mi bo dal številko v območju od 1 do 6. Ne pozabite, da bi mod 6 daj mi število v območju od 0 do 5, ampak če sem simuliranje kocke zvitki, ki je to, kar delam tukaj, Nočem te kocke, da gredo od 0 do 5, želim kocke, ki gredo od 1 do 6. In tako je to način, da dobite mi v območju od 1 do 6. To delam dvakrat. Torej, očitno sem valjanje dve kocke v tem programu. Torej bom zbistriti zaslon, in jaz bom naredil php dice1.php. Valjanih si je 4 in 2. In če sem teči program spet si valjanih 5 in 5. Torej, vsakič, ko sem teči program, Dobivam različne številke, ker vsakič, ko naredim Torej, to je nov začetek. To se dogaja, da ustvari novo niz naključnih številk za mene. Torej, če si bomo uporabili za poganjanje programov iz C, smo uporabili za tipkanje ./ ime programa, kajne? To je, kako smo storili vse naših programov v C doslej. To lahko storite v PHP, kot tudi z dodatkom nekaj imenuje shebang na vrhu našega PHP datoteke. Vem, da je nekako neumno besedo. To je okrajšava za hash bang. To je prva dva znaka tam. Zapomni pravimo klicaj pogosto pok v računalništvu. Prav tako bi bilo za oster pok. Obstaja nekaj načinov, da jo razlagajo. Ampak to je v bistvu posebna vrsta poveljevanja, da PHP interpreter razume kot, oh, hočem da izvajajo ta program, ki je očitno / uporabnik / bin / php, ki je pravzaprav kjer PHP tolmač posebej živi v našem sistemu. Torej it's-- kaj se zgodi, tukaj je tolmač razume, oh, Jaz sem očitno moral uporabiti v ta program zagnati to datoteko. In tako vam omogoča, preskočiti preko koraku imajo za povedati php something.php. Tam je ena ulov tukaj, kar je, da če želimo želijo naše programe deluje po pričakovanjih, smo morate narediti nekaj, kar ti sprememba datoteka dovoljenje. In bomo go-- in govorimo malo malo več o datotečnih dovolilnice spremembe V našem video na MVC, ampak je dovolj, da pravijo, da je to tisto, kar morate storiti da bi si .php datoteke izvršljiv. Tako da je lahko pogled na to kot naš končni primer preko v CS50 IDE. Torej, tukaj v IDE Imam dve datoteki v to Imenika PHP da ne kaže, da bi imenuje .php. Imam funkcijo imenovano add-- Imam datoteko z imenom ADD3 in datoteka z imenom dice2. Torej, vzemimo na hitro poglej in odpirajo ADD3. In kot vidite, na začetku moje datoteke imam to shebang, kajne? Ta lojtra klicaj. Zdaj bom tudi morda opazili, da iz nekega razloga, Nimam nobene sintakse poudarjanje več, in to je tisto, kar sem namignil že prej, ki je bil, da če jaz ne imenujem svojo datoteko .php, nimam koristi sintakse poudarjanje več. Ta datoteka je pravkar klical ADD3. Tako, da sem lahko zaženete pozneje z ./ ADD3 in ne ./ add3.php. Torej reason-- je še vedno v redu, je še vedno veljaven PHP, vendar je ne sintaksa poudarjeno, ker Ta datoteka se ne imenuje something.php. To je edina prava razlika tukaj, plus shebang. Torej, da vidimo, kaj se zgodi, ko Sem poskusil in zaženete ta program. ./ ADD3, tako kot sem bi s C. Bash. ./ ADD3 permission denied. To je tisto, kar boste da vidim, če ste pozabili z ukazom chmod spremenite so dovoljenja za datoteko. Kot se je izkazalo, redno PHP Datoteke samo ne more izvršiti. Jih je mogoče razlagati tako, vendar smo delaš nekaj malo drugačnega tukaj. Mi smo ga izvršuje. In tako moram dodati dovoljenja izvršbe, chmod a + x na ADD3. Potem pa lahko rečem ./ ADD3. Prosim, daj mi številko. 5, 6. Vsota teh dveh številk je 11. Podobno sem že chmoded dice2, tako da sem lahko samo tip ./ dice2, ste valjanih 1 in 1, ki jih valjanih 5- in 4, in tako naprej. Tako da je precej Ideja o PHP sintakso, kajne? Tam je veliko priti skozi, vem. Ampak upam, da ste videli sedaj, PHP ni res, da je drugačen od C in res nam daje možnost, vzeti stvari gor zarezo ali dve. Mi res ne bo treba skrbeti Preveč about-- ne bomo res treba skrbeti preveč o Podrobnosti o nizki ravni smo moral skrbeti s C, kajne? Mi lahko osredotočijo na višji raven stvari, PHP nam omogoča, da naredite in da se za samoumevno, da bo to delo za nas. Tako da nam daje možnost, zdaj, prehod iz C v PHP, da bi programe, ki so veliko bolj zapleteni in morda veliko bolj robusten. Torej, upam, da boste zabavali delo s PHP, in sem Doug Lloyd. To je CS50.