DOUG LLOYD: Nii me oleme teinud palju tööd C, ja C on väga lahe keeles, sest see annab teile suudavad sukelduda tõesti madal oma programme. Me saame teha asju nagu tõesti minut nagu manipuleerimine üksikute baiti mälu. Tuletame meelde, et suunanäitajaks tõesti võimaldab meil paindlikkuse. Aga me alati olema et peeneteralist detailsus Meie programmid? Tõenäoliselt mitte, eks? Ja kui me ei kavatse olla kompromiss vahel on võimalik teha tõesti minut asju ja tõesti, tõesti suuri asju, et me ei pea mõtlema umbes, et me ei pea rakendama Nende tõesti suured ideed, kui nad juba ehitatud meile, üldiselt hoone suur programmide või suurte projektide, me ilmselt läheb Syyllistyä millel on rohkem keele värk ehitatud meile, selle asemel, Madala taseme kraami. Ja see, kui PHP tõesti jõuab. Nüüd üks põhjustest et me õpetame PHP CS50 et see on tugevalt inspireeritud C. Ja tegelikult, minu arvates seal on tõesti kaks vereloome keelte on väga levinud tänapäeval. C ja Lisp. Ja nad on vereloome keeles sest iga teine ​​kaasaegne programmeerimine keelt, mis on välja töötatud Alates sellest ajast on inspireeritud ühe või teise lauseehituslikult. PHP on väga sarnane süntaktiliselt C, samas keeles nagu kava näiteks kus olete kuulnud, on tugevalt inspireeritud keeles nimetatakse LISPiga, mis on vanem keelt. Nii et miks me õpetame PHP CS50 on see, teades C fundamentaalselt kui sa sel hetkel, pealevõtmine PHP, mis annab teile võime teha palju kõrgem asju kui C teeb, ei ole et suur osa takistus, sest sul on juba põhiidee süntaks. C on juba peaaegu 45 aastat sel hetkel. PHP on olnud juba umbes 20 aastat. Ja et 25 aastat vahel, programmeerijate kindlaks, et tegemist oleks palju pigem on kõrgema taseme oskusi, ja vigu ja võitlused 20 aastat vahele viinud PHP ja muude kaasaegsete keelte. PHP on suurepärane valik keele tarkvara et allow-- eest tarkvara selle-- kus sa pead tegema asju, mis on C on tegelikult keeruline. Nii näiteks töötab koos stringid C on väga keeruline, sest Nagu me teame, stringid C on tõesti ainult massiive tähemärki. See ei ole sisseehitatud andmete tüübi. Või ehk on põhjapanevam midagi, mida me ei katnud isegi C, Mis siis, kui sa pead tegema mõned arvutivõrgu? Hästi? C on võimeline seda tegema, aga see on nii kauge ja nii raske tegelikult teevad. Kas poleks tore, kui keel oli ehitatud ja lihtne viis rakendada loomist? Ja PHP on keel, mis teeb, et või lihtsustab see, üsna natuke rohkem. Nagu ma ütlesin, PHP on väga tugevalt inspireeritud C. süntaks on väga sarnane. Ja nii see peaks loodetavasti tegema Üleminek ühelt teisele natuke pehmem kui mõned teisi keeli olla. Et alustada kirjalikult PHP, lihtsalt avada on fail Php faili laiend. Tehniliselt see ei ole tegelikult vaja, aga kui sa tahad asju süntaks rõhutades IDE, et seda tüüpi nimed, või muutujad, funktsioonid, sa tead, märksõnadeks keel on rõhutatud konkreetset värvi, siis üldiselt tahan nimetada oma faile Konkreetse faili laiend. Nii et me oleme nimeks meie faili Php laiendamine, aga siis ka PHP, kõik PHP koodi me kirjutame, et dokumendid peavad olema ümbritsetud need PHP piirajaid, et me näeme siin ekraanil. Kinnitusnurgik? Php alustada. Siis me kirjutame kõik meie PHP kood, mis me tahame vahel. Ja siis ? nurksulu sulgeda. Kui me seda ei tee, siis Mis juhtub? Ta ei kavatse krahhi. See ei lähe tõesti rikkuda oma programmi. Aga ta ei kavatse olla kohta, et me tahame. Mis juhtub, tõesti, on et kui me püüame käivitada programmi, kõik ei nende vahel piirajaid läheb välja trükkida sõna-sõnalt. See ei lähe tegelikult ellu kood, see läheb lihtsalt välja trükkida sõna-sõnalt. Nüüd, miks on nii? Nii C, mida on teada kui koostatud keeles. Sa oled ilmselt kursis samm on teha oma programme, keerates .c faili ja .h failid üheks käivitatava koos margi, eriti kasutades Rõkkama meie tõlkija. PHP, aga ei on see samaväärne. PHP on Mis nimetatakse tõlgendada keeles. Ja mida see tähendab? Noh, see tähendab, et me ei pea teisendada Meie lähtekoodi ühtede ja nullide eelnevalt. Pigem on see programm, mida nimetatakse ka PHP, mis mõistab PHP ja saab omamoodi teha seda sõita. See ei ole tõesti just õige, aga see on päris hea analoogia mis toimub. See on tõlgendatud neid nullidega ja need lennult. Ja kui ta ei tea kuidas protsess midagi, kui ta ei tea, kuidas protsessi PHP, siis ilmselt tahtsin panna, et teksti seal, eks? Sa ilmselt tahtis panna koodi seal, isegi kui see ei ole vahel PHP-- PHP piirajaid. Aga-- nii ta ei kavatse kustutada teie jaoks, see on lihtsalt läheb põhimõtteliselt loobuda. Nii see läheb printida see välja ekraanile. See tundub, et see on halb asi, kuid tegelikult on see saab olema tõesti hea, kui me tulen vaata, kui me räägime PHP veebiarendust, sest see tähendab, et saame Lomittaa PHP ja HTML. Me saame neid kasutada koos dünaamilisemaks veebilehel. Aga rohkem, et Video PHP veebiarendust. Mis on süntaksit PHP? Just see video on. Räägime siis. Nii hakata läbi, muutujad. PHP muutujad olemas. On ainult kaks suurt erinevusi C. Esimene on see, et seal on no tüübist specifier. Me ei pea ütlema int, char, float, kõik see kraam. Me ei pea seda tegema enam. PHP on kaasaegne keel. See võib aru saada, mida sa oled püüab teha või teha paremini arvan, et see, mida sa üritad teha. Nii et on päris kena. Teine asi on see, et kõik muutuva nimed on alustada dollari märk. See on lihtsalt midagi, et harjuda. See on natuke imelik, sest see on nii, et PHP ei saa aru Mis on varieeruv ja mis mitte. Nii et iga muutuja nimi algab dollari märk. Nii C võib öelda midagi niimoodi, int x = 54. Me ei pea seda tegema enam PHP. Me saame vaid öelda $ x = 54. Ja võib öelda, näiteks C, kui oleksime naela-hõlmas CS50 .h päisefail, võiksime öelda string lause = "See on CS50." Me ei pea seda tegema PHP, kuigi. Me saame vaid öelda $ fraasi = "See on CS50." Ja tegelikult, string on nüüd sisseehitatud andmete tüübi PHP, või pigem PHP mõistab Mis string on. See on eraldi massiivi märke, nagu see on C. Kõik teie lemmik tingimisi avaldusi C on ikka olemas, kus saab kasutada. Nii ei ole suur üleminek olemas. Me ei say-- saame Kui avaldused niimoodi. kui $ y 43 või $ z = 15. Nii et on üsna lihtne. Me võime olla, kas ja mujal. Me võime olla, kas ja teine, kui. Ja märkate midagi päris kena siin, ja see on omamoodi üks neist eelised PHP versus C, teate Mis funktsiooni me ei kasuta siin? Me kasutades == võrrelda muutuja $ nimi, string. Me ei saanud seda teha C, eks? Meil oli kasutada funktsiooni nimetatakse StrComp või StrEndComp või temaga seotud nõod. Ja nii juba näeme neid eeliseid. Meil ei ole midagi teha rumal või ehk unintuitive kui kõne funktsioon nimega StrComp kui ma tahan katsetada kas väärtus on string. Ma võiks lihtsalt kasutada võrdne võrdsete, nagu ma võiks teha midagi muud. Nii et eelis. Vahel, muide, võite vaata muidu, kui üks sõna, elseif. Ja see on OK PHP samuti. Nii et mõnikord võid näha. See ei ole kirjaviga. PHP tegelikult mõistab elseif. Ma ei tea, miks nad otsustanud rakendada, et kuid nagu me oleme näinud palju kordi kogu meie videoid seni, me programmeerijad armastan seda, kui me saame teha asju kiiremini, nii vabaneda, et ruumi on ilmselt suur eelis. Nii et see, kas ja elseif. Meil on ka kolmekomponendiliste operaator, tagasikutsumise küsimärk koolon jaoks tõesti lühikese vormi kui mujal või tingimisi hargnevate. Ja ilmselt selles, mida me üritame teha siin on määrata muutuja $ kirjas kas õige või vale, sõltuvalt sellest, kas $ var on tähte. Nii et see on üsna sarnane isalpha et me oleme tuttavad C. See on omamoodi ekvivalent PHP. Funktsioon on ilmselt nimetatakse ctype_alpha, kuid see, kuidas me seda teeme PHP. Nii et kõik see saab olema on, kui $ var on kirjas, $ kirjas, on tõsi. Kui $ var ei ole kirjas, $ kirjas on vale. Meil on ka switch väited ikka. Tuletame meelde need, C samuti. Tipus on see, kuidas me seda teeme midagi get int või saada string. Nii PHP on see ehitatud. Me ei pea CS50 raamatukogu enam. Me võime lihtsalt kasutada funktsiooni readline. Mis see tegema hakkab on print välja sõnumi: "Sinu riik palun, "ja siis vilgub kiire ootab kasutajal sisestada mõned andmed. Nüüd Märka veel me saame teha lüliti. Kui olete kasutanud enne, ehk mäletate, et lüliti on piiratud päris palju täisarvud ja tegelased, kuid nüüd saame kasutada stringe. Ja tegelikult, lüliti avaldusega PHP on üsna natuke paindlikumad kui tema nõbu C. Loops. Just nagu conditionals kõik Teie vanad lemmikud on endiselt olemas. Meil on samas silmuseid, et loota 1-100 sel juhul. Oleme teha, kui silmad et loota 1-100, ja meil on silmad et loota 1-100. Nii ei ole suur hüpe seal. Süntaks on päris palju täpselt sama, va nüüd me kasutame dollari märk muutuja asemel deklareerimise täisarv muutujad või midagi sellist meie lugejad. Siin, kus asju saada Palju parem kui C, kuigi. Massiivid. Nii meenub, kui olime Rääkides C, et meil kasvada ja kahaneb komplekti saamiseks meil vaja sorteerida maksejõuetuse Selle idee ahelloend, sest C massiivid olid fikseeritud suurusega. Me ei saanud kahaneb neid. Me ei kasva neid. Me pidime ümber mälu ja seda kõike hullumeelsus või kasutada ahelloendid, mis võtavad üsna natuke rohkem ruumi. Aga PHP, massiivid on ole fikseeritud suurus enam. Nad võivad kasvada ja nad saavad kahaneb. Nii jälle need 20 aastat, mis eksisteeris vahel esimese versiooni C ja esimese versiooni PHP, Me otsustasime, et sa tead, oleks väga tore kui me võiks seda teha. Ja nii me rakendanud. Nii PHP massiivid ei fikseeritud suurus, ja kuna PHP ei ole tegelikult on programmeerija näoga sõidusuunas mõisted tüüpi, saame segada andmetüübid Meie massiivid, liiga. Nii et me isegi ei pea kasutama kõiki täisarvud või kõik ujuvad punktid, meil on mix kõik erinevaid ühe massiivi. Kuulutatakse massiivi on üsna lihtne. See on nagu iga teine ​​muutuja. $ nums = array (1, 2, 3, 4), massiiv on funktsioon mis on ehitatud PHP, et loob massiivi teile. See loob hulgaliselt neli väärtust, numbrid sel juhul nimetatakse $ nums. Ja seal on rohkem kui üks võimalus seda teha. Ja me ei kavatse vaata seda palju PHP. PHP on välja töötatud palju erinevaid inimesed ja kasvab ja kasvab ja kasvab. Seal ei ole tavaliselt vaid kaks või kolm võimalust teha midagi PHP, seal on tavaliselt nagu 10 või 20. Siin on ainult üks ühine kuidas kuulutada massiivi. $ nums = nurksulg 1, 2, 3, 4. Nii et see on omamoodi sarnane C nurka br-- lokkis traksidega märke, pigem. $ - või oleks int nums ruut Sulgudes on võrdne lokkis traksidega 1, 2, 3, 4. PHP on $ nums = ruut Sulgudes 1, 2, 3, 4. Aga nii need näited siin mulle massiivi neli sel juhul täisarvud. Mis siis, kui ma tahan tack midagi nüüd? Noh ma lihtsalt öelda $ nums 4, mis uuesti, oleme endiselt lugedes 0 siin PHP, oleks viienda element massiivi. Võin öelda, et. Ma ei hakka kannatama seg süü, sest minu massiiv on lihtsalt läheb kasvama, et mahutada seda. See on päris kena, eks? Ja tegelikult, ma isegi ei pea täpsustada, kus ma tahan panna. Ma lihtsalt ütlen seda ja lihtsalt tack see otse lõpuni, või suutsin isegi ainult öelda $ nums 20 või 1000. See ei ole tegelikult küsimus. See on ikka lihtsalt läheb tack see otse lõpuni. Nii et ma ei kasva, ja kui-- me oleme ei kavatse katta see siin, aga ma ei Liimida või ribadena elemendid välja massiivi samuti, ja massiivi kahaneb mahutada mis nüüd puudu või tühi ruum. On veel üks võimalus tack midagi peale massiivi, mis on funktsioon nimega array_push. Nii jälle, just see idee on võimeline tegema asju mitmeti. Nii oleme näinud kolmel erineval viisil nüüd tack teise elemendi peale massiivi. Nii et see lisab teise elemendi kuni lõpuks $ nums massiivi. Ja me ei ajaks segamini meie andmetüüpe. Nii et ma võiks olla hulga ole 1, 2, 3, 4, kuid 1, tõsi, 3, 4, kus tõsi on Boole'i ​​ja seejärel kui ma tahan tack teise elemendi Selle massiivi, ehk string, string "viis" Ma ei suutnud seda teha. Ja nüüd minu rida oleks olla 1, tõsi, 3, 4, viie. Sõna viis, mitte täisarv 5. Nii palju paindlikkust seal. Paindlikkust saab isegi parem, kuigi sest PHP on toetust midagi nimetatakse assotsiatiivne massiiv. Ja me justkui ähmaselt rääkis umbes assotsiatiivne massiivid C kontekstis räsitabeli, sest Mis assotsiatiivne massiivid on tõesti kõik umbes teevad võti väärtus paar kaardistamisel. Ja sel juhul on keys-- kui me oleme tuttavad massiivide C, võtmed on indeksi numbrid. 0, 1, 2, 3. Ja väärtused, mida me leiame, et massiivi 0, String 1, 2, ja nii edasi. Nii võtmed indeksid, ja väärtused on Mis on selle massiivi asukohta, määratud, et indeks. Aga PHP, me ei pea seda tegema mõiste massiivi 0, String 1, 2 enam. Nüüd on võimalik kasutada tegelikke sõnu kaardistada võtmed väärtusi. Ja nii ma võiks öelda midagi sellist. Ma ei suutnud luua massiivi abil nurksulg süntaks on järgmine. $ pitsad = nurksulg "juust" ja seejärel selline topelt nool märke, 8.99 "pepperoni," nool 10.99-- 9,99, ja nii edasi. Ja mis siin toimub? Mida ma tegelikult teeb? Ma loon põhiväärtus paari kaardistamisel. Nii et selle asemel, et öelda, näiteks, pitsad 0 tükki 1, pitsad 2, Nüüd saan öelda pitsad juust, pitsad pepperoni, ja esitada Euroopa väärtused nendega. Nii et siin on meie võtmed roheline. Juust, pepperoni, köögiviljade, pühvlid kana. Siin on nool, mis muudab Selle võtme väärtus paar kaardistamine. Ja siis siin on väärtused sel massiivi asukohta. Nii et see on nagu öelda massiivi 0 võrdub 8,99. Oluline on 0. Väärtus on 8,99. Nüüd saan öelda massiivi juust, või selle Juhul pitsad juust, juust on võti, ja mida ma teada kell pitsad juust on 8.99. See on väärtus, mida sealt leian. Nii et ma ei saa öelda asju meeldib. $ pizza juustu = 7,99. Ütle mul on müügiks. Ma tahan dis-- tahan langeda hind juustu pitsa. Või saan kasutada taimsed pitsa osana tingimusel, või võin lisada uus element minu massiiv, nagu ma võiks teha varem. Võin lisada uus element sellele assotsiatiivne massiiv võtmega "peekon" ja väärtus 13,49. Aga selline tutvustab probleem, kui mõtled seda teist. Kuidas me korrata läbi selle massiivi? Õigus? In C, me lihtsalt olla silmus, tüüpiliselt, et läheks 0 kuni suurus massiivi miinus 1. Array on n elementi juures on kehtib indeksid on 0 kuni n miinus 1. Nii et me võiks kasutada for loop sammult läbi iga element. Aga see ei ole tõesti puhul enam, eks? Nüüd, kus meil on põhiväärtus paari kaardistamisel, kus võtmed on sõnad, Kuidas me Käi kõik sõnad? Noh, õnneks PHP on viis käsitleda seda ka ja nii me hüpata tagasi to ring teist kehtestada neljas selline loop et olemas PHP nimetatakse foreach loop. Ja milline foreach loop teeb, on see on põhimõtteliselt sama idee. Võite kasutada ükskõik millist valikut. Aga see on põhimõtteliselt Sama idee jaoks silmus, Kuid selle asemel, et kasutada indeksid, sa lihtsalt on see imelik süntaks, kus helistate iga element nimi Käesolevas loop. Nii sel juhul foreach ($ array $ võti). Põhimõtteliselt, kuna see kommentaar märkmed sees, et foreach loop, see saab minna üle iga element $ massiiv, mis on tavaliselt saab olema assotsiatiivne massiiv, kuid võib tõesti olla mingeid massiivi mis sa tahad PHP. Ja iga kord, et jaoks silmus võite on öelnud $ massiiv nurksulgudes $ i, siis võiks öelda $ võti. Nii et $ võti muutub alias iga indeks oma PHP assotsiatiivne massiiv, ja nii saab seda kasutada sellist. Nii näiteks oleme Nüüd sain oma pitsa massiivi. Olen selline tõmmatud see nurka seal nii et me ei kasuta seda teha kiire näide. Kui ma ütlen foreach ($ pitsad $ pizza), hästi, mis toimub? Noh, ma lähen itereerima läbi iga ühe elemendi massiivi $ pitsad, ja seda tehes, ma lähen kutsun iga element, kui ma olen sees keha selle jaoks silmus, $ pizza. Nii et omamoodi stand-in, meenutada, et $ pizza on stand-in öelda, $ pitsad nurksulgudes $ i kui olime kasutades silmus, kus me võiks minna alates $ i = 0, antud juhul, $ i = 3. Kui meil poleks põhiväärtus paari Siit oleks see element 0, 1, 2, 3, ja me kasutame jaoks silmus minna $ pitsad 0, $ pitsad 1, $ pitsad 2, $ pitsad 3. Nüüd ainult $ pitsa asendades eest, et üksikute võti. Mis see läheb välja printida? Ma väljatrükk $ pizza. Mida ma leida at-- kui ma välja printida $ pitsad, $ i? Õigus? Kui ma lähen välja printida nda osa pitsad, Mis ma nüüd välja printida? Ma lähen välja printida väärtused selles kohas, eks? Nagu siis, kui me teeme Käesoleva kontekstis C, Me ei kasuta tavaliselt meie iteraatoris varieeruv, int i = 0, i on väiksem kui 3, i ++, välja trükkida 0, 1, 2, 3. Me printida massiivi 0, String 1, 2, massiiv 3. Ja mis see prindib see. See on hinnakirja. 8,99, 9,99, 10,99, 11,99. Nüüd kiire märkus siin. Foreach loop ei pruugi välja printida asju järjekorras. See ei ole tagatud. Tavaliselt teeb. See on tavaliselt põhineb järjekorras millised elemendid lisatakse massiivi, nii lihtsalt meeles pidada. See ei pruugi olla selleks. Aga foreach loop itereerima üle iga element massiivi küsimus. Sel juhul jällegi et massiiv on $ pitsad. Ma ei muuda süntaks, aga kui Ma tahan nii võti ja väärtus. Selle asemel, et öelda: $ pitsad kui $ pizza, võin öelda. Ja kui te vaatate, mida ma olen esile tõstetud roheline siin, tundub põhiväärtus paari kaardistamine. Ja nii kui sina-- isegi kui sa ei ole täiesti kindel, mida ta tegema hakkab, saab ilmselt vist et $ destillatsiooniseadmetest läheb olla võti sellisel juhul ja $ hind saab olema väärtus. Nii et ma asendades nüüd iga element of $ pitsad põhiväärtus paari, ja nüüd ma ei viita võti ja väärtus, mis võib abiks, näiteks järgmiselt. "Terve" - ​​see on palju trükkimine toimub siin-- "Terve" destillatsiooniseadmetest "pizza maksab $" hind, ning seejärel Ma printida jooksul ja kaldkriips n. Nüüd, teate uuesti Mul on juurdepääs oluline, $ kattega ja väärtus, $ hind. Nii saab ära arvata, mida see läheb välja printida? Seal on palju print avaldused, kuid seal on ainult üks kurakriips n, nii see läheb printida midagi entire-- ühe rida koodi. Kui ma ei saa viidata võti ja väärtus, siis nüüd, selle asemel, et lihtsalt on võimalik välja trükkida hinnad Võin välja printida midagi sellist. "Terve juustu pizza maksab $ 8,99." Ja nüüd ma kasutan kõik keys-- juust, pepperoni, köögiviljade, Buffalo chicken-- ja väärtusi. 8,99, 9,99, 10,99, 11,99 Nii see on lihtsalt teistmoodi teha foreach loop, et selle asemel, et lihtsalt annab teile juurdepääsu väärtused, see lihtsalt annab sina-- see annab teile juurdepääsu võtmed ja väärtused. Nii väljatrükk informatsiooni. Olen seda juba teinud paar erinevalt, siis võib-olla märganud. Need kaks funktsiooni me oleme peamiselt näinud on print ja kaja. Ja päris palju kõik kavatsused ja eesmärkidel, nad täpselt sama. They're-- seal on väga peen erinevusega, et ei ole isegi väärt sattumist, kuid põhimõtteliselt kõikjal saate printida saab ilmselt kasutada Kaja samuti. Ja see ei ole ainult kaks. PHP on palju erinevaid kuidas printida asju teha, ja see on ka võimalusi integreerida muutujad keset string. Nii mäletate C, sa mäleta, mida funktsioon saame kasutada, et asendada muutujad arvesse asju, mida me tahame välja printida? Sa ilmselt kasutada seda toimida üsna palju. printf, eks? Nii et see on see, mis meil oli enne sees konteksti meie foreach loop. Meil oli neid viis Eraldi print avaldused, kuna see oli ainus Kuidas ma tõesti teadis ajal kuidas printida välja sõnumeid. Ma ei tea, kuidas integreerida muutuja $ kerkinud minu PHP koodi. Noh, kui ma lihtsalt võtnud huupi, printf, et tegelikult oleks teinud. printf on funktsioon, et ma ei kasuta PHP, nagu ma seda kasutada C. Ja nii midagi sellist, printf, jälle, me oleme tuttavad, et. Esimene% s asendatakse väärtusega $ kattega. Teine% s asendatakse väärtusega $ hind. Ja nii ma interpellating, mis on lihtsalt fancy viis öelda ma kleepuvad muutujad selles kohas. Nii et ma ühendades $ kärpimine red% s on ja $ hind, kui sinine% s on, ja siis ma saan sõnumi, "Terve juustu pizza maksab $ 8,99." Mitte ainult nii ma ei saa seda teha, kuigi. Võib-olla ma ei tahaks seda meetodit kasutada. See on tegelikult see, mis on kõige sagedamini nimetatakse muutuva arupärimise. Oskan kasutada kaja. Ma võiks kasutada print liiga, sest me näeme. Aga mis siin toimub? Esiteks, ma pean põgeneda dollari märk. Sest mäletan, kui me olime tegelikult väljatrükk hinnad pitsad, Ma olin tegelikult vormingu neid rahalisi näitajaid dollari märk. Aga me kasutame dollar märke ka esindada muutuja nimed PHP, eriti kui ma olen seda meetodit kasutades lokkis traksidega muutuja Arupärimine meetod, ma vajan põgeneda oma dollari märk, et see ei ole arvan, et ma räägin muutuv. See läheb tegelikult, sõna otseses mõttes trükkida dollari märk. Nii omamoodi analogize seda mida sa näed lõpus seal. See ei ole tegelikult print kurakriips n, eks? See prindib reavahetusmärki. See on-- see ei kavatse print kurakriips dollari märk, see saab printida ainult dollari märk iseloomu. Sama mõte. Paojada, mida need asjad on nn. Aga teate, et ma ei tee mingit% s asendust Ma lihtsalt sõna otseses mõttes kõrvaldamine Nende muutujaid. Ja nii see-- mis juhtuks siin on selle väärtus $ topping-- uuesti, lihtsalt hoida seda, mida me oleme räägi nii far-- juustu saaksin ühendatud on. Ja $ hind oleks ükskõik väärtus on kell pitsad, nurksulgudes, juust, mis oli 8,99. Ja nii see ka välja printida "Terve juustu pizza maksab $ 8,99." Ja nagu ma ütlesin, ma kasutan prindi siin, mitte kaja, ja funktsionaalsust olla päris palju täpselt sama. Oleks välja printida sama asi. On veel üks viis seda teha, ja see on veel üks eelis PHP töötavad stringid. Me ei saa teha stringi liitmise tehe. Me võiksime seda teha C Ka kasutades funktsiooni nimetatakse strcat, aga jälle, pidime kutsuda erinevaid ülesandeid. See oli kogu see jama teha. Me pidime naela-hõlmavad string. See oli tootmise, eks? Aga nüüd ma lihtsalt kasutada seda dot operaator to concatenate stringid koos. Nii et ma concatenating "kogu" ja siis iganes väärtus $ destillatsiooniseadmetest on, ja siis veel string, "pizza maksab $" ja siis concatenating iganes väärtus $ hind on ja siis päris lõpus ma olen laveerimine perioodi kurakriips n. Ja nii see oleks ka prindi välja "Terve" - ​​jälle, kui me räägime esimesest element, mis pitsasid array-- "Terve juustu pizza maksab $ 8,99." Periood, kurakriips n, jälle koos on $ kattega ja $ hind asendava mida olime nimetatud meie foreach loop kui põhiväärtus paari kaardistamine. PHP saavad hakkama funktsioone. Funktsioonid olid omamoodi lahutamatu C, nagu me nägime. Nagu muutujad, me ei pea määrata tüübi tagastamise funktsiooni, sest see ei ole tegelikult küsimus. Ja me ei täpsusta andmetüübid tahes parameetreid, sest nad tõesti ei asi, nagu oleme näinud PHP. Iga funktsioon on sisse funktsiooniga märksõna. See, kuidas me näitavad PHP, et mida me räägime on funktsioon. Ja me ei pea tegeleda peamised üldse sest tõlk, PHP tõlk, toimib ülevalt alla, sõltumata. Kui ta näeb saate funktsioon kõne, siis see minna leida funktsioon kõne, isegi kui see on hilisem. Aga see läheb lugeda ülevalt alt, nii et me ei vaja täpsustada, Siin on koht, kus hakkate. Hakkad real 1 oma PHP ja tööd sealt alla. Nii et siin on, kuidas me looks funktsioon nimega hard_square. See ilmselt võtab ühe parameeter, mis ma helistan $ x. See funktsioon on keeruline lihtsalt illustreerimaks erinevaid asju. Meil on veel tagasipöördumist väärtusi. Ma kasutan silmus siin. Aga see on põhimõtteliselt ainult, mida see ulatub on just $ x korda $ x. Mida ma tegelikult seda on lihtsalt lisades x 0 x korda või $ x null $ x korda. Aga see on tegelikult täpselt sama korrutades $ x korda $ x. Ma ei saa ikka tagasta väärtust, sel juhul $ tulemus, ja ma tegin funktsiooni PHP. Siin on, kuidas sa võiksid seda kasutada kontekstis. Ehk ma olen sees mõned PHP fail. Teate sinine seal, et Olen kasutanud minu PHP piirajaid, nurksulu küsimärk php. In nende vahel on kõik PHP, et ma tahan kirjutada. Nii et ma olen ilmselt läheb get-- Ma lähen kiire kasutaja mulle number, pood varieeruv, kaupluse, et muutuja $ x, mida iganes nad andsid mulle. Siis ma lähen kaja hard_square selle väärtust, ja ilmselt läheb tack uuele reale samuti, ja siis hiljem ma tulen määrab funktsiooni hard_square nii et kui ma teen helistage hard_square, ta teab, mida ma räägin. Nüüd, ma võiks ka teha midagi sellist. See on veidi erinev. See on peaaegu täpselt sama, mida me nägime enne, Kuid selle asemel, et öelda lihtsalt $ x seal parameetrina hard_square, Ma räägin $ x = 10. Nii et see on näide kaitsev programmeerimine, valve oma programmides pahatahtliku kasutajad. See on üks viis seda teha mõni viga kontrollides, et me ei ole tegelikult on ühe variandina C. Me ei tohtinud määrata vaikeväärtus midagi. Oleme alati olnud kontrollida kas näiteks kui me teinud kõne getString, see oli kõige sobivam, kui kohe pärast me kontrollida, et me kontrollisime kas string et kasutaja andis meile ei ole võrdne null, sest me ei taha hakata töötavad null string. Siin on see viis kaitsevad seda. Kui kasutaja ei anna meile midagi kuidagi, mida me saame teha? Noh, me lihtsalt öelda, mida iganes nad ei anna meile, me lihtsalt läheb pistik 10 asemel. Nii et kui nad ei ole meile väärtus, lihtsalt kasutada 10 vaikimisi. Ja nii siin, märgata, et ma teen Kõne hard_square, kuid seal ei ole kiire kasutajale, eks? Ma lihtsalt tegemist tühja kõne. Aga minu funktsioon hard_square ootab parameeter. Millega see välja printida? See saab välja trükkida 100, eks? Kuna kasutaja ei anna mulle midagi. Ja nii ma lähen lihtsalt eeldada, et 10-- 10 on vaikeväärtus. Ja nii see printida välja 100 oma rida. PHP faile ei pea olla ainult üks fail. Võite ühendada mitu faili kokku, lihtsalt meeldib saad C. viis me tegime, et C oli tavaliselt teha #include saada päisfailid tõmmata. Me ei tee seda PHP. Me teeme midagi, mida nimetatakse require_once. Ja siis on see kogu asi, mis see __dir__? See on lihtsalt eriline muutuja, või spetsiaalsed pidev, tõesti, mis määrab, milline Sinu praegune kataloog on. Ja nii see läheb otsima oma praeguse kataloogi faili nimega cs50.php Selles näites siin, ja siis läheb kinni, et faili ülaosas oma PHP programm, eeldades, et paned vaja kui joone peal oma PHP fail. Nii PHP kasutatakse peamiselt, kuid mitte ainult kasutada, keele veebipõhiste programmeerimine. See on tõesti, kuidas ta sai olla. Aga see on täielik keeles, nagu me oleme näinud. Me oleme näinud päris palju kõike et seda saab teha, mis on sarnased C, ja seda saab teha Heck palju rohkem. Aga kuna see on täis keeles ja me saab teha käsurea programmeerimine ta. Meil saab sõita käsureaprogrammis. Kõik, mida on vaja käivitada käsku line programm, mis on kirjutatud PHP on see, et teil on PHP tõlk. Nii et see on omamoodi analoogne võttes tõlkija oma süsteemis Kui soovid kompileerida C koodi muuta see käivitatava faili. Sa pead olema PHP tõlk et on olemas oma süsteem nii et võite tõlgendada PHP faile. Eeldades, te, ja tavaliselt Selle tõlk nimetatakse PHP, ja see on tavaliselt komplekteeritud kõige downloads või rajatiste PHP et saad online, ja kindlasti nimi PHP tõlk meil CS50, IDE. Kõik, mida tegema, on tüüpi php faili. Ja mida teie programmi lähen tegema, on see läbiks tõlk, see on läheb ignoreerida kõike, mis on mitte vahel küsimus mark-- või nurksulu küsimärk php, PHP piirajaid ning välja printida, ja ta tõlgendab ja täidab koodi sees oma PHP piirajaid. Nii saab pop üle CS50 IDE ja on pilk mõned PHP faile, töötab paar PHP faile, in käsurea liides CS50 IDE. Nii et siin me oleme CS50 IDE, ja ma olen võtnud vabaduse avada fail nimega hello1.php. Ja ilmselt sisu käesoleva faili on lihtsalt PHP piirajaid seal, ja vahel, kaja ("Hello, world"). See on üsna lihtne PHP programm. Ma lihtsalt kerige minu terminal window siin ja ma lähen kirjutada php hello1.php, vajuta enter. Tere, Maailm. See on ilmselt see, mida me olime ootasin seda teha, eks? Lähme üles ja võtta teise vaadata programmi. hello2.php. Päris palju sama asi, ei ole palju siin toimub. Seekord küll, ma lähen kiire kasutaja anda mulle oma nime. Ma kasutan selle readline uuesti funktsiooni. $ name = readline. See on kiire, "Mis su nimi on?" Ilmselt ma olen trükkimine see on oma rida. Ja siis, et joon alla mis saab olema kiire kus kasutaja saab sisestada oma nime. Ja siis ma kasutan natuke muutuja arupärimise siin on line 3 välja printida "Tere" ja olenemata kasutaja liigid. Nii et see on analoogne öeldes Tere, koma,% s, kui olime kasutades printf C. Nii lähme ja tõlgendada seda programmi. Nii jälle, ma keri minu terminali aknas. php hello2.php. Mis on Sinu nimi? Doug. Tere, Doug. Mul on ka teine fail nimega hello3.php. Ma kustutan oma ekraan kontroll L, ja ma lähen täita selle. Mis on Sinu nimi? Doug. Tere, Doug. Nii käitumist on identne hello2.php, kuid miks on see hello3.php? Noh, siin on vahe. Sel juhul teatamata et real 1 siin, Mul on midagi, mis ei ole vahel PHP piirajaid. Ma lihtsalt printimisel out-- või ma lihtsalt kirjutada, "Mis su nimi on?" Kui PHP tõlk näeb seda, et ei tea, kuidas seda tõlgendada kui PHP, ja nii, mitte ei suuda, see on lihtsalt läheb sülitada. Nii märkate real 3 nüüd, minu kõne readline, pole kiiret enam. Ma lihtsalt tegelikult läheb mina-- kui PHP tõlk näeb seda, see saab välja trükkida "Mis on Sinu nimi?" Siis ta näeb, oh, OK, here's-- kõik muu läheb tõlgendada kui PHP, nii sellepärast see töötab. Ma ei pea tingimata kiire kasutaja mina-- sees readline, Võin lihtsalt seda väljaspool PHP piirajaid ja võimaldavad tõlk lihtsalt printida välja minu jaoks. Nii et sa tegelikult ei ainult on üks komplekt PHP piirajaid oma programmi. Võite tegelikult on mitu, avamise ja sulgemise neid vajatakse. Võtame pilk at paar programmide in CS50 IDE kus me Selle idee illustreerimiseks, millel mitu komplekti piiritletud PHP. OK, nii et ma olen avatud faili siin nimetatakse add1.php. Ja pane tähele, mis siin toimub. Just nagu enne, mul on ühe PHP komplekt piirajaid. Ma lähen välja printida sõnum: "Palun anna mulle number." Siis ma loen rida ja pange see muutuja $ num1. Siis ma lähen välja trükkida uuesti. Andke mulle teine ​​number. Loe rida kasutaja, poest mida iganes nad kirjutasid in $ num2. Lisa need kokku ja hoidke, et tulemuseks muutuja nimega $ Kokkuvõttes ja siis välja printida, et " summa need kaks numbrit on, "ja siis aru pärima seal muutuja $ summa. Nii saab lihtsalt käivitada läbi tõlgi kinnitada, et see on see, mida me ootame. php add1.php. Palun andke mulle number, 3. Palun andke mulle teine ​​number 4. Summa need kaks numbrit on 7. See on 3 pluss 4. OKEI? Nii midagi kohutavalt meeldib seal. Ja nüüd lähme avada add2.php. Siin on mul paar PHP piiritletud komplekti seal, eks? Liinid 1, 3-- read 1 ja 3 ei ole PHP piirajaid. Nii et kui tõlk näeb neid, see on lihtsalt läheb sülitama täpselt mida ma olen siin annad. Nii et kus ma olen teeme kõik minu õhutusel. On rida 2 ja 4, näeme väga tuttav $? php omamoodi piirajaid, Nii et need kaks rida on läheb täide kui PHP. Ja siis rida 5, mul on see imelik asi siin, eks? See nurksulu küsimärk võrdusmärk. Ma isegi suurendada natuke edasi. Näete see, mida ma olen räägime seal, see $? =. Selgub, et see on nii tavaline, et põhjusel, et me avada kogum PHP piirajaid on välja trükkida raha. Ja see on kõik, mida me teeme. Aga seal on ka stenografist eest. $? = On PHP lühendvormina öelda midagi $? php echo summa of num1 ja num2. Nii et see on lihtsalt üks stenografist eest. Nii et kui ma saan selle programmi, php add2.php. Ma suurendada veidi allapoole. Palun andke mulle number, 4. Palun andke mulle teine ​​number. Ja kuna ma tõesti ei hooli andmetüübid PHP, võin öelda 4.8. Summa need kaks numbrit on 8.8. See funktsioon käitub päris palju täpselt sama ootame, samuti. Ja mul on veel üks avatud siin nimetatakse dice.php. Proovige seda uuesti. Mul on veel üks siin nimetatakse dice1.php, mis ka näha, on, et nurksulu küsimus märgi võrdusmärk märke seal, kuid teade, et sel juhul ma olen kutsutakse funktsioon rand, mis, nagu te Võib eeldada, genereerib juhusliku arvu. "Sa veeretas," ja see läheb arvutada mingi suvaline number, mod 6 + 1. Nii et sa annad mulle number vahemikus 1 kuni 6. Pea meeles, et mod 6 annaks mulle number vahemikus 0 kuni 5, aga kui ma simuleerib täringuviskeid, mis on see, mida ma siin teen, Ma ei taha neid täringut minna 0 5 Ma tahan täringut, et minna 1-6. Ja nii see on võimalus saada mulle jääb vahemikku 1 kuni 6. Ma teen seda kaks korda. Nii ilmselt ma olen jooksvalt kaks täringut selles programmis. Nii et ma kustutan oma ekraanil, ja ma teen php dice1.php. Sa veeretas 4 ja 2. Ja kui ma saan programmi uuesti, siis veeretas 5 ja 5. Nii et iga kord, kui ma käivitada programmi, Saan erinevat arvu, sest iga kord, kui ma seda teha Nii, see on hakanud üle. See saab genereerida uus määratud juhuslike arvude minu jaoks. Nii et kui me oleme harjunud programmide käivitamise C, oleme harjunud kirjutama ./ nimi programm, eks? See, kuidas me oleme teinud kõik Meie programmid C siiani. Me saame seda teha PHP samuti lisada midagi, mida nimetatakse Jutt üles meie PHP fail. Ma tean, et see on selline tobe sõna. See on lühike hash paugu. See on esimene kaks märki seal. Pea meeles, me nimetame hüüumärk Sageli paugu infotehnoloogia. Samuti võib olla terav pauk. Seal on paar võimalust tõlgendada. Aga see on põhimõtteliselt eriline omamoodi Käsu et PHP tõlk mõistab nii, oh, ma tahan sa programmi käivitamiseks, mis on ilmselt / user / bin / php, mis tegelikult, kui PHP tõlk spetsiaalselt elab meie süsteemi. Nii it's-- mis juhtub siin tõlk mõistab, oh, Ma ilmselt peaks kasutama Selles programmis käivitada seda faili. Ja nii see võimaldab vahele üle sammu võttes öelda php something.php. On veel üks saak Siit, mis on, et kui me tahame, et meie programmid töötada ootuspäraselt, oleme pead tegema midagi, mida nimetatakse faili luba muutus. Ja me go-- ja me räägime veidi veidi rohkem faili loata muutusi meie video MVC, kuid piisab, kui öelda, et see on see, mida sa pead tegema et muuta oma Php faile käivitatava. Võtame pilk seda Meie lõplik näiteks üle CS50 IDE. Nii et siin on IDE Mul on kaks faile selles PHP kataloog, mis ilmselt ei oleks nimetatakse Php. Mul on funktsioon nimega add-- Mul on fail nimega ADD3 ja fail nimega dice2. Võtame kiire otsida ja avada ADD3. Ja nagu näete, alguses minu faili Mul on see Jutt, eks? See hash mark hüüumärk. Nüüd saate ka võibolla märgata, et mingil põhjusel Mul ei ole mingeid süntaks rõhutades enam, ja see on see, mida ma vihjas varem mis oli see, et kui ma ei nimeta oma faili Php, ma ei ole kasu süntaksi esiletõstmine enam. See fail kuulub just helistas ADD3. Nii et ma saan kasutada seda hiljem koos ./ ADD3 ja ei ./ add3.php. Nii reason-- see on ikka fine, see on veel kehtiv PHP, Aga see ei ole süntaksit esile, sest Selle faili ei kutsuta something.php. See on ainus tõeline erinevus siin, pluss Jutt. Vaatame, mis juhtub siis, kui Püüan ja käivitada programmi. ./ ADD3, nagu ma oleks koos C. Bash. ./ ADD3 luba keelduda. See on see, mida sa lähed et näha, kas te unustate kasutada chmod käsk muuta õigused faili. Nagu selgub, regulaarne PHP faile ei saa lihtsalt täide. Neid võib tõlgendada, kuid me oleme midagi natuke erinev siin. Me käivitamata. Ja nii ma pean lisama loata täitmise, chmod a + x ADD3. Siis ma ei saa öelda ./ ADD3. Palun andke mulle number. 5, 6. Summa need kaks numbrit on 11. Samuti olen juba chmoded dice2, nii et ma ei kirjuta ./ dice2, sa veeretas 1 ja 1, siis valtsitud 5 ja 4, ja nii edasi. Nii et päris palju Idee PHP süntaksit, eks? Seal on palju läbi saama, ma tean. Aga loodetavasti olete näinud nüüd, et PHP ei ole tegelikult nii erinev C ja tõesti annab meile võime võtta asju pügala või kaks. Me tõesti ei pea muretsema liiga palju about-- me tõesti ei pea muretsema liiga palju Madala taseme üksikasju me pidid muretsema C, eks? Me saame keskenduda suurem tasemel värk, et PHP võimaldab meil teha ja võtta vastu antud, et ta töötab meie jaoks. Nii et see annab meile võime nüüd, üleminekutel C PHP, teha programme, mis on palju rohkem keeruline ja võib-olla palju tugevam. Nii et ma loodan, et teil on lõbus töö PHP, ja ma olen Doug Lloyd. See on CS50.