DOUG LLOYD: Svo að við höfum gert mikið af vinnu í C, og C er mjög flott Tungumál því það gefur þér getu til að kafa í raun lágt í áætlunum þínum. Við fáum að gera hlutina eins og virkilega mínútu sem notfæra einstök bytes af minni. Muna að ábendingum raun leyfa okkur að sveigjanleiki. En þurfum við alltaf að hafa fínn-korn nákvæmnina í áætlunum okkar? Sennilega ekki, ekki satt? Og ef við erum að fara að hafa málamiðlun milli þess að vera fær um að gera virkilega, virkilega fullkomna hluti og virkilega, virkilega stór hluti sem við höfum ekki að hugsa um, höfum við ekki að framkvæma þessi mjög stór hugmyndir ef þeir eru nú þegar innbyggður í fyrir okkur, almennt til að byggja stór forrit eða stór verkefni, við erum líklega að fara að skjátlast á hlið af því að hafa fleiri tungumál efni byggt í fyrir okkur, í stað þess að hafa lágmark-láréttur flötur efni. Og það er þar sem PHP kemur virkilega í. Nú, einn af þeim ástæðum að kenna PHP í CS50 er að það er mikið innblásin af C. Og í raun, að mínu mati, það eru í raun tveir forstigsfrumur tungumál sem eru mjög algeng nú á dögum. C og Lisp. Og þeir eru blóðmyndandi tungumál því annað hvert nútíma forritun tungumál sem hefur þróast síðan er innblásin með því að einn eða annan syntactically. PHP er mjög svipuð setningafræðilega til C, en tungumál eins Scheme, til dæmis, sem þú gætir hafa heyrt um, er mjög innblásin af tungumáli heitir Lisp, sem er eldri tungumál. Þannig að ástæða sem við kennum PHP í CS50 er að með því að vita C í grundvallaratriðum eins og þú gera á þessum tímapunkti, tína upp PHP, sem gefur þér Hæfni til að gera mikið meiri hluti en C er, er ekki að mikið af hindrun, því þú ert nú þegar Grunnhugmyndin um setningafræði. C hefur verið í kring fyrir næstum 45 ára á þessum tímapunkti. PHP hefur verið í kring um 20 ár. Og í því 25 ár á milli, forritari ákveðið að þeir myndu miklu frekar hafa meiri hæfileika, og mistök og barátta af 20 ár í milli leiddi til PHP og öðrum nútíma tungumálum. A mikill val PHP er af tungumál fyrir hugbúnað sem allow-- fyrir hugbúnaður that-- hvar þú þarf að gera það sem í C eru í raun flókið. Svo til dæmis, að vinna með strengi í C er mjög flókið, því eins og við vitum, strengir í C eru í raun bara fylki af stöfum. Það er ekki innbyggður-í gögn tegund. Eða kannski meira í grundvallaratriðum, eitthvað sem við vissum ekki einu sinni ná í C, hvað ef þú þarft að gera sumir tölva net? Allt í lagi? C hefur getu til að gera það, en það er svo yfirnáttúrulegt og svo erfitt að raunverulega gera. Væri ekki gott ef Tungumál hafði innbyggður-í, auðveld leið að innleiða net? Og PHP er tungumál sem gerir það, eða auðveldar að töluvert meira. Eins og ég sagði, PHP er mjög þungt innblástur af C. The setningafræði er mjög svipuð. Og svo það ætti vonandi að gera umskipti frá einum til annars svolítið mýkri en sumir önnur tungumál gæti verið. Til að byrja að skrifa PHP, bara opna skrá með .php skrá eftirnafn. Tæknilega er þetta ekki raunverulega þörf, en ef þú vilt það eins setningafræði áherslu í IDE, þannig að tegund nöfn eða breytilegum nöfn, aðgerðir, þú veist, leitarorð í tungumálinu eru undirstrikuð í tilteknum lit, þú almennt langar að nefna skrár með sérstaklega skrá eftirnafn. Þannig að við höfum nefnt skrá okkar með .php eftirnafn, en þá líka með PHP, allt PHP kóðann hér skrifa að skrá þarf að fylgja í þessum PHP delimiters sem við sjáum hér á skjánum. Oddklofi? PHP til að byrja. Þá erum við að skrifa allar PHP okkar kóða sem við viljum á milli. Og svo ? oddklofi að loka. Ef við gerum þetta ekki, þá hvað er að fara að gerast? Það er ekki að fara að hrun. Það er ekki að fara að virkilega eyðileggja kerfi okkar. En það er ekki að fara að hafa áhrif sem við viljum. Hvað er að fara að gerast, í raun er, að þegar við reynum og keyra þetta forrit, allt ekki milli þessara afmarkararnir er að fara að prenta út orðrétt. Það er ekki að fara að reyndar framkvæma kóðann, það er að fara að bara prenta það út orðrétt. Nú hvers vegna er málið? Svo er C það er vitað sem unnin tungumál. Þú ert líklega kunnugt skrefið að gera forrit, snúa .c skrár og .h skrá í einni executable með að gera, sér í lagi með því að nota Clang sem þýðanda okkar. PHP, þó, er ekki hafa þetta samsvarandi. PHP er það sem er kallað túlkað tungumál. Og hvað þýðir það? Jæja, það þýðir að við þurfum ekki að breyta uppspretta okkar kóða til núllum og sjálfur fyrirfram. Frekar, það er forrit, sem er einnig kallaður PHP, sem skilur PHP og getur konar gera það á flugu. Það er í raun ekki nákvæmlega rétt, en það er nokkuð góð samlíking hvað er að gerast. Það er túlkun þeirra zeroes og sjálfur á flugu. Og svo ef það veit ekki hvernig á að vinna eitthvað, ef það veit ekki hvernig á að ferli PHP, þú sennilega vildi setja þessi texti í það, ekki satt? Þú vildir líklega að setja kóðann í það, jafnvel ef það er ekki á milli PHP-- PHP delimiters. But-- svo það er ekki að fara til að eyða það fyrir þig, það er bara að fara að í grundvallaratriðum að fleygja því. Svo það er að fara að prenta það út á skjáinn. Þetta virðist eins og það er slæmt hlutur, en í raun er það að fara að vera mjög gott, eins og við munum sjá þegar við tölum um PHP vefur þróun, því það þýðir að við getum intersperse PHP og HTML. Við getum notað þá saman til að búa til fleiri dynamic vefur blaðsíða. En meira um það í vídeó á PHP vefur þróun. Svo er það setningafræði PHP? Það er það sem þetta myndband er allur óður í. Við skulum tala um það. Svo til að byrja út, breytur. PHP breytur til. Það eru bara tvö stór munur frá C Hið fyrra er að það er ekki er gerð specifier. Við þurfum ekki að segja int, bleikju, fljóta, öll þessi efni. Við þurfum ekki að gera það lengur. PHP er nútíma tungumál. Það er hægt að reikna út hvað þú ert reyna að gera eða gera bestu giska um hvað þú ert að reyna að gera. Svo er það nokkuð gott. The annar hlutur er að allir breytu nöfn verða að byrja með dollaramerki. Það er bara eitthvað að venjast. Það er svolítið skrýtið, því það er svo sem PHP skil hvað er breytilegt og það er ekki. Svo hvert breytuheiti byrjar með dollaramerki. Svo í C við gætum sagt eitthvað svona, int x = 54. Við þurfum ekki að gera það lengur í PHP. Við getum bara sagt $ x = 54. Og við gætum sagt til dæmis, í C, ef við hefðum pund-innifalinn CS50 .h haus skrá, getum við sagt string setningu = "Þetta er CS50." Við þurfum ekki að gera það í PHP, þó. Við getum bara sagt $ setningu = "Þetta er CS50." Og í raun, band er nú a innbyggður-í gögn gerð í PHP, eða öllu heldur PHP skilur hvað band er. Það er aðskilið frá fjölda stafi eins og það er í C. Allt uppáhalds skilyrt yfirlýsingar frá C eru enn í boði fyrir þig að nota. Svo ekki stór umskipti þar. Við getum say-- við getum haft ef yfirlýsingar eins og þetta. ef $ y 43, eða $ z = 15. Svo er það frekar einfalt. Við getum haft ef og annað. Við getum haft ef og annað hvort. Og taka eitthvað nokkuð gott hér, og þetta er tegund af einum af þeim Kostir PHP móti C, tilkynningu hvað virka við erum ekki að nota hér? Við erum að nota == til að bera saman a breyta, $ nafn, í streng. Við gætum ekki gert það í C, ekki satt? Við þurftum að nota fall sem kallast StrComp eða StrEndComp eða tengdra frænkum sínum. Og svo þegar við sjáum þessa kosti. Við þurfum ekki að gera eitthvað eins kjánalegt eða kannski unintuitive og kalla fall sem kallast StrComp ef ég vil bara að prófa hvort gildi er band. Ég gæti bara notað jafngildir jafngildir, eins og ég gæti gert neitt annað. Svo er það kostur. Stundum, við the vegur, þú gætir sjá annað hvort sem eitt orð, elseif. Og það er allt í lagi í PHP eins og heilbrigður. Svo stundum þú gætir séð það. Það er ekki prentvilla. PHP skilur í raun elseif. Ég veit ekki hvers vegna þeir ákveðið að innleiða það, en eins og við höfum séð oft um myndbönd okkar svo langt, við forritarar elska það ef við getum gert hlutina hratt, svo að losna við þessi rými er greinilega stór kostur. Svo er það ef og elseif. Við höfum einnig þríþætt rekstraraðila, muna spurningarmerki ristill, fyrir mjög stuttu formi ef annað eða skilyrt tré. Og virðist, í þessu, það sem við erum að reyna að gera hér er úthluta breytu $ bréf annaðhvort satt eða ósatt, eftir því hvort $ var er bókstaf. Svo er þetta nokkuð svipað isalpha sem við erum kunnugir frá C. Þetta er tegund af jafngildi PHP. Fallið er greinilega heitir ctype_alpha, en það er hvernig við gerum það í PHP. Svo allt þetta er að fara að vera er, ef $ var er bréf, $ bréf er satt. Ef $ var er ekki bréf, $ bréf er falskur. Við höfum einnig skipta yfirlýsingar enn. Við muna þá úr C eins og heilbrigður. Á the mjög toppur þar, það er hvernig við gerum eitthvað eins og Fá INT eða fá band. Svo hefur PHP sem byggð í. Við þurfum ekki CS50 bókasafn lengur. Við getum bara notað virka readline. Hvað það er að fara að gera er að prenta út skilaboðin, "ástand þitt, vinsamlegast, "og þá blikka hvetja bíða eftir notanda til að slá einhverjar upplýsingar. Nú taka hvað við getum gert með rofa. Ef þú hefur notað það áður, Þú manst kannski að skipta takmarkast ansi mikið að heiltölur og stafir, en nú getum við notað strengi. Og í raun, skiptir yfirlýsingu í PHP er töluvert sveigjanlegri en frændi hennar frá C. Lykkjur. Rétt eins conditionals, öll Old Favorites eru enn þarna. Við höfum meðan lykkjur sem telja frá 1 til 100 í þessu tilfelli. Við höfum að gera á meðan lykkjur að telja frá 1 til 100, og við höfum fyrir lykkjur að telja frá 1 til 100. Svo ekki stór stökk þar. The setningafræði er nokkuð mikið nákvæmlega það sama, nema nú erum við að nota dollaramerki breyta staðinn af lýsa tölustafi breytur eða eitthvað svoleiðis fyrir teljara okkar. Hér er þar sem hlutirnir fá mikið betri en C, þó. Fylki. Svo muna þegar við vorum að tala um C, til þess fyrir okkur til að vaxa og skreppa sett af upplýsingum, við þurftum að raða á vanskilum að þessari hugmynd um tengda listanum, vegna C fylki var fastur í stærð. Við gátum ekki minnka þær. Við gátum ekki vaxa þær. Við þurftum að endurúthluta minni og gera allt þetta brjálæði eða nota tengist listum, sem taka upp töluvert meira pláss. En í PHP, eru fylki ekki föst stærð lengur. Þeir geta vaxið og þeir geta skreppa saman. Svo aftur, þessi 20 ára sem fyrir hendi á milli fyrstu útgáfu af C og fyrsta útgáfa PHP, við ákváðum að, þú veist, það væri mjög mikill ef við gætum gert þetta. Og svo við framkvæmd þessa. Svo PHP fylki eru ekki föst í stærð, og vegna þess að PHP er í raun ekki hafa forritari framan-vísi hugmyndir um tegundir, getum við blandað gagnatög í fylki okkar, líka. Svo við gerum ekki einu sinni að nota allt heiltölur eða allt fljótandi stig, við getum haft blöndu af öllum mismunandi tegundir í einum array. Lýsa fylki er frekar einfalt. Það er bara eins og allir aðrir breytu. $ nums = array (1, 2, 3, 4), array vera fall sem er byggt inn í PHP sem mun skapa fjölda fyrir þig. Þetta skapar fjölbreytta fjórum gildum, tölur í þessu tilfelli, sem heitir $ nums. Og það er meira en ein leið til að gera það. Og við erum að fara að sjá þetta mikið í PHP. PHP hefur verið þróuð af mörgum mismunandi fólk og vex og vex og vex. Það er yfirleitt ekki bara tveir eða þrjár leiðir til að gera eitthvað í PHP, það er oftast eins 10 eða 20. Hér er bara annar sameiginlegur leið til að lýsa fylki. $ nums = hornklofi 1, 2, 3, 4. Svo er þessi tegund af líkur til horn C er br-- hrokkið Brace merki, frekar. $ - eða það væri int nums ferningur sviga jafngildir hrokkið Brace 1, 2, 3, 4. Í PHP er það $ nums = ferningur sviga 1, 2, 3, 4. En bæði þessi dæmi hér að gefa mér fylki af fjórum í þessu tilfelli heiltölur. Hvað ef ég vil að tittur eitthvað núna? Jæja ég get bara sagt $ nums 4, sem aftur, við erum enn að telja frá 0 hér í PHP, væri fimmta þáttur í fylkinu. Ég get bara sagt að. Ég ætla ekki að fara að þjást seg kenna, vegna þess að array minn er bara að fara að vaxa til móts sem. Það er nokkuð gott, ekki satt? Og í raun, ég er ekki einu sinni að tilgreint hvar ég vil setja það. Ég get bara sagt þetta og bara tittur það rétt á til enda, eða ég gæti jafnvel bara segjum $ nums 20 eða 1.000. Það skiptir ekki máli. Það er samt bara að fara að tittur það rétt á að enda. Svo ég get vaxa, og as-- við erum ekki að fara að taka það í hér, en ég get splæsa eða ræmur Efnin í fylkinu eins og heilbrigður, og array mun skreppa til móts sem nú vantar eða tómt rúm. Það er önnur leið til að tittur eitthvað á fjölda, sem er fall sem heitir array_push. Svo aftur, bara þessi hugmynd um að vera fær um að gera hlutina marga mismunandi vegu. Þannig að við höfum séð þrjár mismunandi leiðir nú að tittur annar þáttur á fylki. Svo bætir þetta annar þáttur til loka $ nums fylkisins. Og við getum blandað upp gagnatög okkar. Þannig að ég gæti hafa fjölbreytta ekki 1, 2, 3, 4, en 1, satt, 3, 4, þar satt er Boolean, og þá ef ég vil tittur á annar þáttur að þessi fylking, kannski strengur strengurinn "fimm" Ég gæti gert það. Og nú array minn myndi vera 1, satt, 3, 4, fimm. Orðið fimm, ekki heiltala 5. Svo mikið af sveigjanleika þar. Sveigjanleiki fær jafnvel betra, þó, vegna þess að PHP hefur stuðning fyrir eitthvað kallað tengin array. Og við svoleiðis óljóst talað um tengin fylki í C í tengslum við kjötkássa matskeið, því hvað tengin fylki eru í raun allt um eru að gera takkann gildi par kortlagning. Og í þessu tilviki, er keys-- ef við erum kunnugir fylki frá C, takkarnir eru vísitölu tölur. 0, 1, 2, 3. Og þau gildi eru það sem við komumst að því array 0, array 1, array 2, og svo framvegis. Svo takkarnir eru vísitölur, og gildin eru hvað er í því fylki stað, tilgreinir vísitölu. En í PHP, þá höfum við ekki að gera þetta hugtakið array 0, array 1, array 2 lengur. Við getum nú notað raunverulegt orð að kortinu takkana gildum. Og svo ég gæti sagt eitthvað eins og this. Ég gæti búið til fylki með því að nota hornklofi setningafræði sem hér segir. $ pizzur = ferningur krappi "ostur" og þá Þessi tegund af tvöfaldur ör merki, 8.99, "pepperoni," arrow 10.99-- 9,99, og svo framvegis. Og svo það sem er að gerast hér? Hvað er ég að gera í raun og veru? Ég er að skapa helstu gildi par kortlagning. Svo í stað þess að segja, til dæmis, pizzur 0, stykki 1, pizzur 2, Ég get nú sagt pizzur ostur, pizzur pepperoni, og vísa til gildum í tengslum við þá. Svo hér eru lyklar okkar í grænu. Ostur, pepperoni, grænmeti, Buffalo kjúklingur. Hér er ör sem gerir þetta lykill gildi par kortlagning. Og þá eru hér gildin á þeim array stað. Svo það er eins og að segja array 0 er 8.99. Lykillinn er 0. Gildi er 8,99. Ég get nú sagt array ostur, eða í þessu Málið pizzur ostur, ostur er lykillinn, og það sem ég finn í pizzur ostur er 8.99. Það er gildi að ég finn það. Svo ég get sagt það eins. $ pizza ostur = 7,99. Segja að ég ætla að hafa til sölu. Ég vil dis-- Ég vil falla verð á osti pizza. Eða ég get notað grænmeti Pizza sem hluti af því ástandi sem, eða ég get bætt við nýjum þáttum að mínum array, bara eins og ég gæti gert áður. Ég get bætt við nýjum þáttum að þetta tengin array með lykill "beikoni" og verðmæti 13.49. En þessi tegund af kynnir vandamál, ef þú hugsar um það fyrir a second. Hvernig myndum við árétta gegnum þennan fjölda? Ekki satt? Í C, myndum við bara hafa fyrir lykkju, yfirleitt, að myndi hlaupa frá 0 til Stærð fylkisins mínus 1. The array hefur n þætti í á, sem Gildir Vísitölur eru 0 til n mínus 1. Þannig að við gætum notað fyrir lykkju til skref í gegnum hvert einasta þáttur. En það er í raun ekki raunin lengur, ekki satt? Nú þar sem við höfum lykill gildi par kortlagning þar sem takkarnir eru orð, hvernig eigum við að árétta yfir öll orðin? Jæja, sem betur fer, PHP hefur leið til að takast á við þetta líka, og svo við munum stökkva aftur að lykkjur í annað að kynna fjórða konar lykkju sem er í PHP kallað framhandleggur lykkja. Og hvað framhandleggur lykkja gerir er það er í rauninni það sama. Þú getur notað það til hvers konar fylkisins. En það er í grundvallaratriðum Sama hugmynd og fyrir lykkju, nema í stað þess að nota vísitölu tölur, þú bara hafa þetta undarlegt setningafræði hvar þú kalla hvern einasta þáttur nafn að því er varðar þessa lykkju. Þannig að í þessu tilfelli, framhandleggur ($ array eins og $ lykill). Í grundvallaratriðum, sem að athugasemd skýringum, inni í því framhandleggur lykkja, það er að fara að fara yfir hvert einasta þáttur $ array, sem er yfirleitt að fara að vera tengin array, en geta í raun verið hvers konar fylking sem þú vilt í PHP. Og í hvert sinn sem í fyrir lykkju þú gætir hafa sagt $ array hornklofum $ i, þú gætir bara sagt $ lykill. Þannig að $ lykill verður til samheiti fyrir hvert Vísitala PHP tengin array þinn, og svo þú getur notað það eins og þessi. Svo til dæmis, höfum við nú fékk pizzur array okkar. Ég hef svona matur það í horni þar svo við getum notað það til að gera a fljótur dæmi. Ef ég segi framhandleggur ($ pizzur og $ pizza), Jæja, hvað er að gerast? Jæja, ég ætla að árétta í gegnum alla einn þáttur af array $ pizzur, og svo að gera, ég ætla að hringja hver þáttur, þegar ég er inni um líkama sem fyrir lykkju, $ pizzu. Svo er þessi tegund af a standa í, muna, að $ pizza er a standa-í fyrir að segja $ Pizzur hornklofum $ i ef við værum að nota fyrir lykkju, þar sem við gæti farið úr $ i = 0 til, í þessu tilfelli, $ i = 3. Ef við ekki hafa lykilinn gildi pör Hér, þetta myndi vera þáttur 0, 1, 2, 3, og við myndum nota fyrir lykkju til að fara $ pizzur 0, $ pizzur 1, $ Pizzur 2, $ pizzur 3. Svo nú bara $ pizza er skipta fyrir einstaklinginn takkann. Svo hvað er þetta að fara að prenta út? Ég er að prenta út $ pizzu. Hvað er ég að fara að finna at-- ef ég prenta út $ pizzur, $ i? Ekki satt? Ef ég er að fara að prenta út sem ith þáttur pizzum, hvað er ég að fara að prenta? Ég ætla að prenta út gildi á þeim stað, ekki satt? Eins og ef við vorum að gera þetta í samhengi við C, við gerum ekki venjulega notað Iterator okkar breyta, int i = 0, i er minna en 3, Ég ++, til að prenta út 0, 1, 2, 3. Við erum að prenta út array 0, array 1, array 2, array 3. Og svo er það þetta prentar út er þetta. Það er listi yfir verð. 8.99, 9.99, 10.99, 11.99. Nú a fljótur í huga hér. A framhandleggur lykkja er ekki endilega prenta út hlutina í röð. Það er ekki tryggt. Það gerir venjulega. Það er yfirleitt miðað við þess í hvaða þættir eru bættist, svo bara að hafa það í huga. Það gæti ekki verið í lagi. En framhandleggur lykkja mun kunnugt yfir hverjum einasta þætti fylkisins sem um ræðir. Í þessu tilviki, aftur, sem array er $ pizzur. Ég get breytt setningafræði, þó, ef Ég vil bæði á takkann og gildi. Í stað þess að segja $ pizzum og $ pizzu, get ég sagt þetta. Og ef þú horfir á það sem ég hef lögð áhersla á grænt hér, það lítur út eins og lykill gildi par kortlagning. Og svo ef you-- jafnvel ef þú ert ekki alveg viss um hvað það er að fara að gera, þú geta sennilega giska sem $ úrvals er að fara að vera lykill í þessu tilfelli og $ verð er að fara til vera the gildi. Þannig að ég ætla að skipta núna hvert þáttur á $ pizzur sem lykill gildi par, og nú get ég vísa á takka og gildi, sem gæti vel, til dæmis, eins og hér segir. "A heild" - þetta er mikið af prentun gerast here-- "A heild" topping "pizza kostar $" verð, og þá Ég prenta út tímabilið og sviga n. Svo nú, tilkynning aftur ég hef aðgang að lykill, $ úrvals, og gildi, $ verð. Svo er hægt að giska hvað þetta er að fara að prenta út? There 'a einhver fjöldi af prenta yfirlýsingar, en það er bara ein sviga n, svo það er að fara að prenta eitthvað á An entire-- á einni línu af kóða. Ef ég get átt á takka og gildi, þá nú, í stað þess bara að vera fær um að prenta út verð, Ég er að prenta út eitthvað eins og this. "A heild ostur pizza kostar $ 8,99." Og nú er ég að nota alla keys-- ostur, pepperoni, grænmeti, Buffalo chicken-- og gildin. 8.99, 9.99, 10.99, 11.99 So það er bara önnur leið að gera framhandleggur lykkja að í stað þess bara að gefa þér aðgang að þeim gildum, það gefur bara you-- það gefur þér aðgang að lyklunum og gildi. Svo prenta út upplýsingar. Ég hef þegar gert það nokkrum mismunandi leiðir, þú gætir hafa tekið eftir. Tvær aðgerðir sem við höfum fyrst og fremst séð eru prenta og bergmál. Og fyrir ansi mikið alla intents og tilgangi, þeir nákvæmlega það sama. They're-- það er mjög lúmskur Mismunurinn sem er ekki einu sinni þess virði fá inn, en í grundvallaratriðum alls staðar þú getur notað prenta þú getur sennilega nota echo eins og heilbrigður. Og það er ekki aðeins tvær. PHP hefur a einhver fjöldi af mismunandi leiðir til að prenta það út, og það hefur einnig leiðir til að samþætta breytur í miðjum streng. Svo muna úr C, gera þér muna hvað virka við getum notað til að skipta breytur í það sem við viljum prenta út? Þú notar sennilega þetta virka alveg fullt. printf, ekki satt? Svo er þetta það sem við höfðum áður inni á samhengi framhandleggur lykkja okkar. Við höfðum þessum fimm aðskilin yfirlýsingar prenta, því það var eina Eins og ég vissi í raun á þeim tíma hvernig á að prenta út skilaboð. Ég vissi ekki hvernig á að samþætta breyta $ úrvals í PHP númerið mitt. Jæja, ef ég tekið bara villtur giska, printf, reyndar það hefði virkað. printf er fall sem ég get notað í PHP, alveg eins og ég get notað það í C. Og svo eitthvað eins og þetta, printf, aftur, við erum kunnugir því. Fyrsti% s er skipt með verðmæti $ úrvals. Annað% s er skipt með verðmæti $ verði. Og svo ég interpellating, sem er bara fínt leið að segja ég er stafur sem breytur í þeim stað. Þannig að ég ætla að tengja í $ úrvals þar sem rauður% s er og $ verð þar sem blár% s er, og þá myndi ég fá skilaboð, "A heild ostur pizza kostar $ 8,99." Ekki eina leiðin sem ég get gert það, þó. Kannski myndi ég vilja nota þessa aðferð. Þetta er í raun það sem er oftast heitir breyta interpellation. Ég get notað bergmál. Ég gæti notað prenta líka, eins og við munum sjá. En hvað er að gerast hér? Fyrst af öllu, ég verð að flýja dollaramerki. Vegna þess að muna, þegar við vorum í raun prentun út verð á pizzum, Ég var reyndar að forsníða þá eins peningamálum tölur með dollaramerki. En við erum að nota dollara merki einnig að tákna breytilegum nöfn í PHP, einkum þegar ég er nota þessa aðferð á hrokkið Brace breyta interpellation aðferð, þarf ég að flýja dollara minn merki svo það er ekki held ég að tala um breytu. Það er að fara að raunverulega, bókstaflega prentað dollaramerki. Svo konar analogize það til það sem þú sérð í lok þar. Það er í raun ekki prenta sviga n, ekki satt? Það prentar út nýja línu staf. Þetta is-- það er ekki að fara að prenta sviga dollaramerki, það er að fara að prenta út bara a dollaramerki staf. Sama hugmynd. Flýja röð, hvað þessir hlutir eru kallaðir. En eftir því að ég er ekki að gera hvers konar% s leikmannaskipti Ég er bara bókstaflega að tengja þessara stærða. Og svo í this-- hvað myndi gerast hér er að verðmæti $ topping-- aftur, bara að halda við það sem við höfum verið að tala um svo far-- osti vildi fá tengt í það. Og $ verð væri hvað sem gildi er á pizzur, hornklofum, ostur, sem var 8,99. Og svo þetta myndi líka prentað út "A heild ostur pizza kostar $ 8,99." Og eins og ég sagði, ég gæti notað prenta hér í stað þess echo, og virkni vera nánast nákvæmlega það sama. Það myndi prenta út það sama. Það er önnur leið til að gera það, og þetta er annar kostur PHP vinna með strengi. Við getum gert band samtenging. Við gætum gert þetta í C, of, með fall sem kallast strcat, en aftur, við þurftum að kalla sérstakar aðgerðir. Það var allt þetta sóðaskapur að gera. Við þurftum að pund-fela string.h. Það var framleiðslu, ekki satt? En nú get ég bara nota þetta punktur rekstraraðila til concatenate strengi saman. Þannig að ég ætla concatenating "A heild" og þá hvað gildi $ úrvals er, og þá annað band, "pizza kostar $" og þá concatenating hvað gildi $ verð er og þá á mjög lok ég klísturvamandi á tímabili sviga n. Og svo þetta myndi einnig prenta út "A heild" - aftur, ef við erum að tala um fyrsta þáttur þess Pizzur array-- "A heild ostur pizza kostar $ 8,99." Tímabil, sviga n, aftur, með the $ úrvals og $ verð Stað fyrir það sem við höfðum fram í framhandleggur okkar lykkja sem lykill gildi par kortlagning. PHP ræður aðgerðir. Aðgerðir voru konar óaðskiljanlegur C, eins og við sáum. Eins breytur, þurfum við ekki að tilgreina aftur gerð á hlutverki, vegna þess að það skiptir ekki máli. Og við tilgreinir ekki gagnatög af hvaða breytur, vegna þess að þeir gera ekki raunverulega Sama, eins og við höfum séð í PHP. Sérhver aðgerð er kynnt með virka leitarorð. Það er hvernig við benda á PHP sem hvað við erum að tala um er fall. Og við þurfum ekki að takast á við helstu yfirleitt, vegna þess að túlkur, PHP túlkur, vinnur frá toppi til botn, óháð. Ef það sér að þú getur gert fall kalla, verður það fara að finna virka símtalinu, jafnvel ef það kemur síðar. En það er að fara að lesa frá toppi til botn, þannig að við þurfum ekki að tilgreina, hér er þar sem þú byrjar. Þú byrjar á 1. línu þinn PHP og vinna niður þaðan. Svo hér er hvernig við viljum búa fall sem heitir hard_square. Það tekur greinilega einn breytu, sem ég er að hringja $ x. Þessi aðgerð er flókið bara til að sýna ýmislegt. Við höfum enn aftur gildi. Ég er að nota fyrir lykkju hér. En það er í rauninni bara, hvað þetta nemur er bara $ x sinnum $ x. Það sem ég er í raun að gera er bara að bæta x til 0 x sinnum eða $ x í núll $ x sinnum. En það er í raun nákvæmlega sama og margfalda $ x sinnum $ x. Ég get samt skila gildi, í þessu tilfelli $ vegna og ég hef gert fall í PHP. Hér er hvernig þú getur notað það í samhengi. Svo kannski er ég inni af einhverjum PHP skrá. Tilkynningar í bláum þar sem Ég hef notað PHP delimiters mínum, oddklofi spurningarmerki PHP. Á milli þeirra eru allt PHP sem ég vil skrifa. Þannig að ég ætla greinilega að fara að get-- Ég ætla að hvetja notandann að gefa mér númerið verslun sem breyta, geyma í því breyta $ x, hvað sem þeir gáfu mér. Þá ætla ég að enduróma hard_square þess virði, og virðist fara að tittur á nýja línu eins og heilbrigður, og þá seinna á ég ætla skilgreina hlutverk hard_square svo að þegar ég gera kalla til hard_square, það veit hvað ég er að tala um. Nú gæti ég líka gert eitthvað eins og þetta. Þetta er aðeins öðruvísi. Það er nánast nákvæmlega sama og það sem við sáum áður, nema í stað þess að segja bara $ x þar sem breytu til hard_square, Ég er að segja $ x = 10. Svo er þetta dæmi um varnar forritun, vörð forrit gegn skaðlegum notendum. Þetta er ein leið til að gera sumir villa eftirlit með því að við gerðum í raun ekki hafa sem valkost í C. Við gætum aldrei tilgreina sjálfgefið gildi eitthvað. Við höfðum alltaf að athuga hvort, til dæmis, ef við hringdi til GetString, það var mest viðeigandi ef strax eftir að við athugað að, merkt við hvort band sem notandinn gaf okkur er ekki jafn null, vegna þess að við viljum ekki að byrja vinna með núll streng. Hér, þetta er leið til að verja gegn því. Ef notandi hefur ekki veitt okkur eitthvað einhvern veginn, hvað við erum að fara að gera? Jæja, við verðum bara að segja hvað þeir vildu ekki veita okkur, við erum bara að fara að stinga í 10 í staðinn. Þannig að ef þeir vildu ekki gefa okkur gildi, bara nota 10 sjálfgefið. Og svo hér, eftir því að ég er að gera a kalla til hard_square, en það er engin hvetja til notenda, ekki satt? Ég ætla bara að gera tóma hringja. En hlutverk mitt hard_square er von á breytu. Hvað er þetta að fara að prenta út? Það er að fara að prenta út 100, ekki satt? Vegna þess að notandi hafi ekki gefa mér neitt. Og svo ég ætla bara að fara að gera ráð fyrir að 10-- 10 er sjálfgefin. Og svo þetta myndi prenta út 100 í sinni línu. PHP skrár þurfa ekki að vera bara einn skrá. Þú getur sameinað margar skrár saman, bara eins og þú getur í C. leið við gerðum það í C var yfirleitt að gera a #include að fá header skrár dreginn í. Við gerum það ekki í PHP. Við gerum eitthvað sem heitir require_once. Og þá er það þetta allt hlutur, hvað er þetta __dir__? Það er bara sérstakt breyta, eða sérstökum stöðug, í raun, sem skilgreinir hvað núverandi möppu er. Og svo það er að fara að líta í núverandi möppuna að skrá sem heitir cs50.php í þessu dæmi hér, og það er að fara að standa að skrá efst á PHP program, að því gefnu að þú setur þurfa einu sinni línu efst á PHP skrá. Svo PHP er aðallega notað, en ekki eingöngu notað, sem tungumál fyrir vefur-undirstaða forritun. Það er í raun hvernig það kom til að vera. En það er fullt tungumál, eins og við höfum séð. Við höfum séð nokkuð mikið allt það að það er hægt að gera sem eru svipaðar C, og það geta gera a Heck af mikið meira en það. En vegna þess að það er fullt tungumál og við getur gert stjórn lína forritun í það. Við getum keyrt skipanalínu forrit. Allt sem þarf til að keyra skipun lína forrit sem er skrifað í PHP er að þú ert með PHP túlkur. Svo það er tegund af hliðstætt hafa þýðanda á vélinni þinni ef þú vilt að safna saman C númerið þitt til að snúa það inn í executable skrá. Þú þarft að hafa a PHP túlkur sem er á vélinni þinni þannig að þú getur túlkað PHP skjöl. Miðað við að þú gerir, og yfirleitt þetta túlkur heitir PHP, og það er yfirleitt búnt með flest niður eða innsetningar á PHP sem þú getur fengið á netinu, og vissulega nafn PHP túlkur við höfum í CS50, IDE. Allt sem þú gera er að slá PHP skrá. Og hvaða forrit þinnar að fara að gera það er að fara að keyra í gegnum túlkurinn, það er að fara að hunsa allt sem er ekki á milli viðkomandi mark-- eða, oddklofi spurningarmerki PHP, PHP delimiters, og prenta það út, og það mun túlka og framkvæma númer innan PHP afmarkararnir þínum. Svo skulum skjóta yfir CS50 IDE og hafa a líta á nokkrar af PHP skrá, keyra nokkra PHP skrá í stjórn lína tengi af CS50 IDE. Svo hér erum við í CS50 IDE, og ég hef leyft mér þess að opna skrá sem heitir hello1.php. Og virðist, innihald þetta skrá eru bara PHP delimiters þar, og þar á milli, echo ("Halló, heimur"). Þetta er frekar einfalt PHP forrit. Ég ætla bara að fara að fletta niður til stöðvarinnar gluggann minn hér, og ég ætla að slá php hello1.php, högg koma inn í. Halló heimur. Það er líklega það sem við vorum von á því að gera, ekki satt? Við skulum fara upp og taka annars líta á dagskrá. hello2.php. Laglegur mikill the sami hlutur, ekki mikið að gerast hér. Í þetta sinn, þó, ég er að fara að hvetja notandinn að gefa mér upp nöfn þeirra. Ég er að nota þessi readline virka aftur. $ name = readline. Það er að hvetja, "Hvað heitir þú?" Apparently ég prentun það á eigin línu. Og þá, svo línan neðan sem verður hvetja þar sem notandinn getur slegið inn nafn. Og þá er ég að nota smá breyta interpellation hér á línu 3 að prenta út "halló" og hvað notandinn slær. Svo er þetta hliðstætt segja, Hello, komma,% s ef við værum að nota printf í C. Svo skulum við fara og túlka þetta forrit. Svo aftur, ég skruna niður til stöðvarinnar gluggann minn. PHP hello2.php. Hvað heitir þú? Doug. Halló, Doug. Ég hef líka annað skrá sem heitir hello3.php. Ég ætla að hreinsa minn skjár með Control L, og ég ætla að framkvæma það. Hvað heitir þú? Doug. Halló, Doug. Svo er hegðun eins og hello2.php, en hvers vegna er það hello3.php? Jæja, hér er munurinn. Í þessu tilviki, tilkynning að á línu 1 hér, Ég hef eitthvað sem er ekki á milli PHP afmarkararnir. Ég ætla bara að prenta out-- eða ég bara slegið, "Hvað heitir þú?" Þegar PHP túlkur sér þetta það hefur ekki hugmynd um hvernig á að túlka það eins og PHP, og svo í stað þess að láta hjá líða, það er bara að fara að spýta það út. Svo eftir á línu 3 hafa köllun mína til að readline, það er engin hvetja lengur. Ég ætla bara að í raun að fara to-- þegar PHP túlkur sér þetta það er að fara að prenta út "Hvað heitir þú?" Þá sér það, ó, OK, here's-- allt annað er að fara að vera túlka sem PHP, svo það er hvers vegna þetta virkar. Ég þarf ekki að endilega hvetja notandi to-- inni readline, Ég get bara haft það fyrir utan af PHP afmarkararnir og leyfa túlkur bara prenta það út fyrir mér. Svo þú ert ekki í raun aðeins hafa að hafa eitt sett af PHP afmarkararnir í forritinu. Þú getur raunverulega hafa nokkrir af þeim, opna og loka þeim eftir þörfum. Svo skulum taka a líta á nokkra forritum í CS50 IDE þar sem við skýra þessa hugmynd af having mörg sett af afmarkast PHP. OK, þannig að ég hef opnað skrá hér kallað add1.php. Og taka eftir hvað er að gerast hér. Rétt eins og áður, ég er með einn PHP setja af afmarkararnir. Ég ætla að prenta út skilaboð, "Gef mér að tala." Þá er ég að fara að lesa línu og geyma það í breytu $ num1. Þá er ég að fara að prenta út aftur. Gefðu mér annað númer. Lesa línu frá notanda, verslun hvað þeir slegið á í $ num2. Bæta þeim saman og geyma það leitt til breytu sem heitir $ summa, og síðan prentað út, "The Summa þessara tveggja talna er, "og þá interpellate það breytu $ summa. Svo skulum hlaupa bara þetta gegnum túlk til að staðfesta að þetta er það sem við gerum ráð fyrir. PHP add1.php. Vinsamlegast gefið mér nokkur, 3. Vinsamlegast gefið mér annað númer, 4. Summa þessara tveggja talna er 7. Það er 3 plús 4. OK? Svo ekkert hræðilega ímynda það. Og nú skulum opna add2.php. Hér hef ég fengið nokkrar PHP afmarkast setur það, ekki satt? Línur 1, 3-- línur 1 og 3 hafa engin PHP delimiters. Svo þegar túlkur sér þá, það er bara að fara að spýta út nákvæmlega það sem ég hef slegið það. Svo er það þar sem ég er gera allt mitt vekur. Á línum 2 og 4, sjáum við mjög þekki $? PHP konar afmarkararnir, svo þessir tvær línur eru að fara að framkvæma og PHP. Og þá á línu 5, hef ég þetta undarlegt hlutur hérna, ekki satt? Þetta oddklofi spurningarmerki merkið. Ég jafnvel stækka svolítið lengra. Þú getur séð þetta er það sem ég er að tala um þarna, þetta $? =. Það kemur í ljós að það er svo algengt að ástæðan fyrir því að við opna upp sett af PHP delimiters er að prenta út gildi. Og það er allt sem við erum að fara að gera. En það er jafnvel styttingin fyrir það. $? = Er PHP styttingin fyrir að segja eitthvað eins og $? php echo summan af num1 og num2. Svo er þetta bara annað styttingin fyrir það. Þannig að ef ég keyra þetta forrit, php add2.php. Ég stækka niður smá. Vinsamlegast gefið mér nokkur, 4. Vinsamlegast gefið mér annað númer. Og þar sem ég er ekki alveg sama um gagnatög í PHP, get ég sagt 4.8. Summa þessara tveggja talna er 8,8. Sem virka hagar ansi mikið nákvæmlega það sama og við myndum búast við, einnig. Og ég hef eitt opnað upp hér kallað dice.php. Reyna þetta aftur. Ég hef eitt hér kallað dice1.php, sem einnig sjá, hefur þessi oddklofi spurningu merkja merkið tákn í það, en taka eftir því að í þessu tilfelli er ég hringja í fallinu rand, sem eins og þú gæti búist býr handahófi númer. "Þú vals a," og það er að fara að reikna sumir af handahófi númer, mod 6 + 1. Þannig að ætla að gefa mér númerið á bilinu 1 til að 6. Mundu að unga fólkið 6 myndi gefa mér a tala á bilinu 0 til 5, en ef ég er að líkja teningar rúlla, sem er það sem ég er að gera hér, Ég vil ekki þetta teningar til að fara frá 0 5, ég vil teningar sem fara frá 1 til 6. Og svo er þetta leið til að fá mig á bilinu 1 til að 6. Ég er að gera þetta tvisvar. Svo virðist ég veltingur tveir teningar í þessari áætlun. Svo ég ætla að hreinsa skjáinn minn, og ég ætla að gera PHP dice1.php. Þú velti 4 og 2. Og ef ég hlaupa the program aftur, þú velti 5 og 5. Svo í hvert skipti sem ég hlaupa the program, Ég fæ mismunandi tölur, því í hvert skipti sem ég geri svo, að það er að byrja á. Það er að fara að búa til nýja Sudoku setja af handahófi tölur fyrir mig. Þannig að ef við erum að nota til keyrandi frá C, við erum að nota til að skrifa ./ á nafn af a program, ekki satt? Það er hvernig við höfum gert allt forrit okkar í C ​​svo langt. Við getum gert þetta í PHP sem með því að bæta eitthvað sem kallast a klabbið til the toppur af PHP skrá okkar. Ég veit að það er góður af a kjánalegt orð. Það er stutt fyrir kjötkássa Bang. Það er fyrsta tvo stafi þar. Mundu að við köllum upphrópunarmerki oft Bang í tölvunarfræði. Einnig mætti ​​vera fyrir beittum Bang. Það er a par leiðir að túlka það. En það er í rauninni sérstakt konar af stjórn sem PHP túlkur skilur eins, ó, ég vil þú þarft að framkvæma þessa áætlun, sem er greinilega / notandi / bin / PHP, sem er í raun þar sem PHP túlkur sérstaklega býr á kerfinu okkar. Svo it's-- hvað gerist hér er túlkurinn skilji, ó, Ég virðist eiga að nota í þessari áætlun til að keyra þessa skrá. Og svo það gerir þér að sleppa yfir skref þess að þurfa að segja PHP something.php. Það er eitt annað veiða hér, sem er að ef við vilt áætlanir okkar til sem skyldi, við þarf að gera eitthvað sem kallast skrá leyfi breyting. Og við munum go-- og við tala svolítið aðeins meira um File permission breytingar í vídeó okkar á MVC, en nægja að segja að þetta er það sem þú þarft að gera í því skyni að gera þinn .php skrá executable. Svo skulum taka a líta á þetta sem endanleg dæmi okkar yfir í CS50 IDE. Svo hér í IDE ég hafa tvær skrár í þetta PHP skrá sem virðast ekki vera kallað .php. Ég hef fall kallast add-- Ég er með skrá sem heitir add3 og skrá sem heitir dice2. Svo skulum taka a fljótur útlit og opna add3. Og eins og þú geta sjá, í upphafi af skrá minn ég hef þetta klabbið, ekki satt? Þetta kjötkássa merki upphrópunarmerki. Nú, þú munt einnig kannski taka eftir því að fyrir sumir ástæða, Ég hef ekki neina setningafræði auðkenning lengur, og þetta er það sem ég vék að áðan, sem var að ef ég nefna ekki skrá minn .php, ég hef ekki gagn af setningafræði auðkenning lengur. Þessi skrá er bara kallað add3. Svo að ég get keyrt það síðar með ./ add3 og ekki ./ add3.php. Svo reason-- það er samt fínn, það er enn í gildi PHP, en það er ekki setningafræði hápunktur, því þessi skrá er ekki kallað something.php. Það er eini raunverulegur munur hér, auk klabbið. Svo skulum sjá hvað gerist þegar Ég reyni og keyra þetta forrit. ./ Add3, alveg eins og ég vildi með C. Bash. ./ Add3 aðgangi hafnað. Þetta er það sem þú ert að fara til að sjá hvort þú gleymir að nota chmod skipunina til að breyta aðgangsstýringar á skrá. Eins og það kemur í ljós, venjulegur PHP skrá er ekki bara að framkvæma. Þeir geta að túlka, en við erum gera eitthvað svolítið öðruvísi hér. Við erum keyrður. Og svo ég þarf að bæta leyfi framkvæmd, chmod a + x til add3. Þá get ég sagt ./ add3. Vinsamlegast gefið mér númer. 5, 6. Summa þessara tveggja talna er 11. Á sama hátt, ég hef nú þegar chmoded dice2, svo ég get bara slegið ./ dice2, þú velt a 1 og 1, þú velti 5 og 4, og svo framvegis. Svo er það ansi mikið að Hugmyndin um PHP setningafræði, ekki satt? There 'a einhver fjöldi til að komast í gegnum, ég veit. En vonandi að þú hefur séð nú að PHP er í raun ekki að öðruvísi C og raunverulega gefur okkur möguleika að taka það upp hak eða tvö. Við í raun ekki að hafa áhyggjur of mikið about-- við í raun ekki að hafa áhyggjur of mikill óður lágmark-láréttur flötur upplýsingar sem við þurfti að hafa áhyggjur af með C, ekki satt? Við getum áherslu á hærri stigi efni sem PHP gerir okkur kleift að gera og að taka fyrir sjálfsagðan hlut að það mun virka fyrir okkur. Svo það gefur okkur möguleika núna, breyting frá C til PHP, að gera áætlanir sem eru mikið meira flókið og kannski mikið öflugri. Svo ég vona að þú hafir gaman að vinna PHP, og ég er Doug Lloyd. Þetta er CS50.