Doug LLOYD: pa smo učinjeno puno posla u C, i C je stvarno cool jezik, jer vam daje sposobnost za ronjenje stvarno niska razina u svoje programe. Mi smo dobili za napraviti stvari kao stvarno minuta kao manipulaciju pojedinačne bajta memorije. Podsjetimo da je naputke stvarno dopustite nam da fleksibilnost. Ali mi je uvijek trebate imati da razina fino zrno detalje u našim programima? Vjerojatno ne, zar ne? A ako ćemo imati trade-off između biti u mogućnosti to učiniti jako, jako minute stvari i stvarno, stvarno velike stvari koje mi ne moramo razmišljati O, ne moramo provoditi ti stvarno velika ideja ako su već ugrađeni u nas, uglavnom za izgradnju velike programe ili velike projekte, mi smo vjerojatno će griješiti na strani da su više jezika stvari izgrađen u za nas, umjesto da low-level stvari. I tamo PHP stvarno dolazi u. Zatim, jedan od razloga da učimo PHP u CS50 je da je jako inspiriran C. A u stvari, po mom mišljenju, postoje zapravo dva ishodišne ​​jezici koji su vrlo česte u današnje vrijeme. C i LISP. I oni su ishodišne ​​jezika jer svaki drugi modernog programiranje jezik koji je razvio od tada je inspirirala jedan ili drugi sintaktički. PHP je vrlo sličan sintaktički na C, dok jezicima kao sheme, na primjer, koji je možda ste čuli, je jako inspiriran jeziku zove LISP, što je starija jezik. Dakle, razlog učimo PHP u CS50 je da, znajući C kao temeljno kao što učiniti u ovom trenutku, branje gore PHP, što vam daje sposobnost učiniti mnogo višu razinu stvari nego C ne, ne da je mnogo prepreka, jer već imaju Osnovna ideja sintakse. C je bio oko za gotovo 45 godina u ovom trenutku. PHP je bio oko za oko 20 godina. A da je 25 godina U međuvremenu, programera utvrđuje se da neće mnogo a imaju više razine sposobnosti, i pogreške i borbe od 20 godina između dovelo do PHP i druge suvremene jezike. PHP je veliki izbor jezik za softver da allow-- za Softver that-- gdje vas trebate učiniti ono što je u C su zapravo komplicirano. Tako, na primjer, rade sa žicama u C je vrlo komplicirano, jer kao što znamo, žice u C su stvarno samo nizovi znakova. To nije ugrađeni tip podataka. Ili možda važnije, nešto što nije ni pokriti u C, što ako je potrebno učiniti Neki umrežavanje računala? U redu? C ima sposobnost za to, ali to je tako arcane i tako teško zapravo učiniti. Zar ne bi bilo lijepo ako je Jezik je imao izgrađen-in, jednostavan način provesti umrežavanje? I PHP je jezik koji omogućuje da se, ili olakšava da, vrlo malo. Kao što sam rekao, PHP je vrlo teško nadahnuta C. Sintaksa je vrlo sličan. I tako bi trebalo nadamo napraviti Prijelaz iz jednog u drugi malo mekši od nekih drugi jezici mogu biti. Za početak pisanja PHP, samo otvori datoteka s datotečnim nastavkom .php. Tehnički to nije zapravo je potrebno, ali ako želite stvari poput sintakse isticanje u IDE, pa taj tip imena ili promjenjive imena, funkcije, znate, ključne riječi iz jezika su istaknute u specifična boja, općenito želim naziv datoteke s određena ekstenzija datoteke. Tako smo nazvali našu datoteku s php produžetak, ali onda i sa PHP, sve PHP kod pišemo u tome Datoteka mora biti zatvoren u tim PHP razdvojnike koje vidimo ovdje na zaslonu. Kut nosač? Php za početak. Zatim pišemo sve naše PHP kod koje želimo između. I onda ? kut nosača zatvoriti. Ako to ne učinite, onda što će se dogoditi? To se neće srušiti. To neće stvarno uništiti naš program. Ali to neće imati učinak koji želimo. Što će se dogoditi, stvarno je da kad smo probati i pokrenuti ovaj program, sve što nije između onih razdvojnike će se ispisati doslovno. To neće zapravo izvršavanje koda, to će samo isprintajte ju doslovno. Sad zašto je tako? Dakle C je ono što je poznato kao sastavio jeziku. Vjerojatno ste upoznati s korak izrade svoje programe, okrećući .c datoteka i .h datoteke u jednu izvršnu s make, posebno primjenom Zveket kao naš prevodilac. PHP, ipak, ne ima tu ekvivalent. PHP je ono što se naziva tumači jezikom. A što to znači? Pa, to znači da ne moramo pretvoriti naš izvorni kod nula i jedinica unaprijed. Umjesto toga, tu je program, koji se također zove PHP, koji razumije PHP i može nekako bi ga na letjeti. To zapravo nije točno točno, ali to je prilično dobra analogija onoga što se događa. To je tumačenje onih nula i one na letu. I tako, ako se ne zna kako obraditi nešto, Ako ne znate kako Proces PHP, vjerojatno htio staviti taj tekst tamo, zar ne? Vjerojatno je htio staviti kod u tamo, čak i ako to nije između PHP-- PHP razdvojnike. But-- pa to neće da ga izbrisati za vas, to je samo idući u osnovi ga odbaciti. Dakle, to će ispisati je na zaslonu. To se čini kao da je to loša stvar, ali zapravo je to će biti jako dobra stvar, kao što ćemo vidjeti kada govorimo o PHP web development, jer to znači da možemo poprskati PHP i HTML. Možemo ih koristiti zajedno stvoriti više dinamičke web stranice. No, više o tome u Video o PHP web development. Dakle, ono što je sintaksa PHP? To je ono što ovaj video je sve o tome. Razgovarajmo o tome. Dakle, za početak se, varijable. PHP varijable postoje. Postoje samo dva velika razlike od C. Prvi je da postoji Nema kategorije specifikator. Nemamo reći int, char, float, sve to. Mi ne moramo učiniti više. PHP je moderna jezik. To mogu shvatiti što si pokušava učiniti ili napraviti najbolji Pretpostavljam da ono što pokušavate učiniti. Dakle, to je prilično lijepo. Druga stvar je da sve varijable imena moraju početi s znak za dolar. To je samo nešto što se naviknuti. To je malo čudno, jer to je tako da se može razumjeti PHP Što je varijabla, a što nije. Tako je svaki naziv varijable počinje s znak za dolar. Tako je u C, mogli bismo reći nešto ovako, int x = 54. Ne morate to učiniti više u PHP. Mi samo možemo reći $ x = 54. A moglo bi se reći, na primjer, u C, ako smo pound-uključen CS50 .h zaglavlje datoteke, mogli bismo reći niz fraza = "Ovo je CS50." Ne morate to učiniti u PHP-u, iako. Mi samo možemo reći $ izraz = "Ovo je CS50." A u stvari, niz je sada ugrađeni vrsta podataka u PHP, odnosno PHP razumije što je string. To je odvojeno od niza likova kao što je to u C. Sve vaše omiljene uvjetne izjave C su još uvijek dostupni za uporabu. Dakle, nije velika tranzicija tamo. Možemo say-- možemo imati ako je izjava kao što je ovaj. ako je $ y 43 ili $ z = 15. Dakle, to je prilično jednostavan. Možemo li i drugo. Možemo li i drugi, ako. I primijetite nešto prilično lijepo ovdje, a to je vrsta jedna od onih Prednosti PHP odnosu C, najave što je funkcija da ne koristite ovdje? Mi smo pomoću == za usporedbu promjenjiva, $ ime, u nizu. Nismo mogli to učiniti u C, zar ne? Morali smo koristiti funkciju pod nazivom StrComp ili StrEndComp ili bilo njegovih povezanih rođaka. I tako već vidimo ove prednosti. Ne morate učiniti nešto kao blesav ili možda unintuitive kao poziv funkciju pod nazivom StrComp ako samo želite testirati da li je vrijednost jednaka niz. Mogao sam samo koristiti jednako jednakima, kao što sam mogao učiniti bilo što drugo. Dakle, tu je prednost. Ponekad, usput, možda vidim drugo ako je kao jednu riječ, elseif. I to je u redu u PHP kao dobro. Dakle, ponekad ćete možda vidjeti. To nije pogreška pri upisu. PHP zapravo razumije elseif. Ne znam zašto su odlučio provesti da, ali kao što smo vidjeli mnogo puta tijekom našeg videa do sada, mi programeri to ljubav ako možemo raditi stvari brzo, tako uzimajući osloboditi od taj prostor je očito velika prednost. Tako da ako i elseif. Također smo ternarnog operatera, Podsjetimo upitnik debelog crijeva, za jako kratko obliku ako drugi ili uvjetno grananje. I očito, u tome, ono što mi pokušavamo učiniti ovdje se dodijeliti varijablu $ pismo bilo istinito ili lažno, ovisno o tome je li $ var je slovo abecede. Dakle, to je prilično sličan isalpha da smo upoznati s iz C. To je vrsta protuvrijednosti u PHP. Funkcija je očito zove ctype_alpha, ali to je kako ćemo to učiniti u PHP. Dakle, sve ovo će biti je, ako $ var je pismo, $ pismo je istinito. Ako $ var nije pismo, $ pismo je lažna. Također imamo prekidač izjave dalje. Podsjećamo one iz C, kao dobro. Na samom vrhu tamo, to je kako radimo nešto poput GET int ili dobiti niz. Dakle, PHP ima da izgrađen u. Ne treba CS50 knjižnicu više. Mi samo možemo koristiti funkciju readline. Što to će učiniti je ispisati iz poruke "Vaše stanje, molim ", a zatim treperi upit čekajući korisnika za unos neke informacije. Sada primijetiti što drugo možemo učiniti s prekidačem. Ako ste ga koristili prije, Vi svibanj podsjetiti da prekidač ograničena prilično mnogo brojeva i likovi, ali sada možemo koristiti nizove. A u stvari, izjava prekidač u PHP je vrlo malo fleksibilniji od svog bratića iz C. Petlje. Baš kao kondicional, sve Vaši stari favoriti su još uvijek tu. Imamo while petlje koje se računaju od 1 do 100 u ovom slučaju. Mi smo učiniti dok petlje koji strani od 1 do 100, i imamo za petlje kako brojati od 1 do 100. Dakle, ne postoji veliki skok. Sintaksa je lijepa više isti, osim sada smo pomoću Dolar znak varijabla umjesto proglašavanja cjelobrojne varijable ili nešto slično našim šalterima. Evo gdje se stvari dobiti puno bolje nego C, ipak. Nizovi. Dakle podsjetiti kad smo bili govori o C, kako bi za nas rasti i smanjiti seta podataka, moramo vrsta zadane ovoj ideji popisu povezane, jer C polja su fiksne veličine. Nismo ih mogli smanjiti. Nismo ih mogli rasti. Imali smo da doznači memorije i učiniti sve ovo ludilo ili koristiti povezane liste, koje zauzimaju vrlo malo prostora. Ali u PHP-u, nizovi su Ne fiksne veličine više. Oni mogu narasti i oni mogu smanjiti. Pa opet, ti 20 godina da je postojala između prvog objavljivanja C a prvo izdanje PHP, odlučili smo da, znate, bilo bi stvarno super ako smo mogli učiniti. I tako smo proveli ovo. Dakle, PHP nizovi nisu fiksne u Veličina i zato PHP ne stvarno imaju programer prednja pojmovi tipa, možemo miješati vrste podataka u našim polja, previše. Dakle, ne morate koristiti sve cijeli brojevi ili sve plutajuće točke, možemo imati kombinaciju svega različite vrste u jednom nizu. Proglašavanje niz je prilično jednostavan. To je baš kao i bilo koje druge varijable. $ Nums = array (1, 2, 3, 4), niz se funkcija koji je izgrađen u PHP da će stvoriti niz za vas. To stvara niz od četiri vrijednosti, brojevi u ovom slučaju, pozvao $ Nums. I tu je više nego jedan način da to učinite. I idemo vidjeti puno u PHP. PHP je razvijen od strane mnogo različitih ljudi i raste i raste i raste. Tu je obično nije samo dvije ili Tri načina da se nešto učini u PHP, tu je obično kao 10 ili 20. Evo samo još jedan zajednički način da se proglasi niz. $ Nums = uglata zagrada 1, 2, 3, 4. Dakle, ovo je vrsta slična kasiopejske kuta br-- kovrčavu Brace zapis, a. $ - ili bi bilo INT Nums kvadrat zagrade jednak kovrčave vitice 1, 2, 3, 4. U PHP je $ Nums = kvadrat Nosači 1, 2, 3, 4. No, oba ova primjera ovdje mi dati niz od četiri u ovom slučaju prirodnih brojeva. Što ako želim sklepati nešto na sada? Pa ja mogu samo reći Nums $ 4, koji je opet, mi smo još uvijek računajući od 0 ovdje u PHP-u, bio bi peta element polja. Ja samo mogu reći da. Neću trpjeti seg kvara, jer je moj polje je samo će rasti smjestiti taj. To je prilično lijepo, zar ne? A u stvari, ja ni ne trebaju navesti gdje želim ga staviti. Ja samo mogu reći ovo i samo tack to pravo na kraju, ili sam mogao čak samo kažu $ Nums 20 ili 1.000. To zapravo ne smeta. To je još uvijek samo će tack to pravo na kraju. Dakle, ja mogu narasti i as-- smo ne ide to pokriti ovdje, ali mogu pletenica ili traka elementi izvan polja te, a polje će se smanjiti za smještaj da je sada nedostaje ili prazan prostor. Postoji još jedan način da tack nešto na niz, koja je funkcija zove array_push. Pa opet, samo ta ideja da bude mogućnosti za napraviti stvari mnogo različitih načina. Dakle, vidjeli smo tri različita načina sada letati još jedan element na polje. Dakle, to dodaje još jedan element na kraju $ Nums polja. I možemo pomiješati naše vrste podataka. Tako sam mogao imati niz ne 1, 2, 3, 4, a 1, istina, 3, 4, gdje istina je logička, a zatim ako želim tack na drugom elementu na to polje, možda niz, string "pet", mogao sam to učiniti. A sada moj polje bih biti 1, istina, 3, 4, pet. Riječ pet, a ne broj 5. Dakle, puno fleksibilnosti tamo. Fleksibilnost dobiva čak i bolje, iako, jer PHP ima podršku za nečim zove asocijativni niz. A mi nekako neodređeno govorio O asocijativne polja u C u kontekstu hash tablica jer što asocijativne nizove stvarno sve O čine ključ Vrijednost par preslikavanja. I u ovom slučaju, ako keys-- mi smo upoznati s polja iz C, tipke su indeks brojeva. 0, 1, 2, 3. A vrijednosti su ono što mislimo da je Niz 0, polje 1, polje 2, i tako dalje. Tako su ključevi indeksi, te vrijednosti što je u tom položaju polja, određeno tog indeksa. Ali u PHP-u, ne moraš to učiniti Pojam niza 0, polje 1, polje 2 više. Sada možete koristiti stvarne riječi mapirati tipke na vrijednosti. I tako bih mogao reći nešto poput ovoga. Mogao bih stvoriti niz pomoću uglata zagrada sintaksu kako slijedi. $ pizze = uglata zagrada "sir", a zatim ova vrsta dvostruke strelice zapis, 8,99 ", feferoni," strelica 10.99-- 9,99, i tako dalje. I tako ono što se ovdje događa? Što ja zapravo radim? Izrađujem ključna vrijednost parova preslikavanja. Dakle, umjesto da se kaže, na primjer, pizze 0, komada 1, 2, pizze Ja sada mogu reći pizze sir, pizze feferoni, i odnosi se na vrijednosti povezane s njima. Dakle ovdje su naši tipke u zelenom. Sir, feferoni, povrća, piletina bizona. Ovdje je strelica koja čini Ova vrijednost ključa par mapiranje. A onda tu su vrijednosti na toj lokaciji polja. Dakle, to je kao da kažete niz 0 jednak 8,99. Ključ je 0. Vrijednost je 8,99. Ja sada mogu reći array sir, ili to Slučaj pizza sir, sir je ključ, i što ne mogu naći na pizza sir je 8,99. To je vrijednost koja sam tamo naći. Dakle, ja mogu reći stvari poput. $ pizza sir = 7.99. Recimo imam prodaju. Želim dis-- želim da ispadne cijena od sira pizza. Ili mogu koristiti povrće pizza kao dio stanja, ili ja mogu dodati novi element mom polje, baš kao što sam mogao učiniti prije. Ja mogu dodati novi element ovo asocijativni niz s ključem "slanine" a vrijednost 13,49. No, ova vrsta uvodi problem, Ako mislite o tome na trenutak. Kako bi se ponoviti kroz ovaj niz? Pravo? U C, što bi samo imati for petlja, obično, da će se izvoditi od 0 do veličina polja minus 1. Niz ima n elemenata u po je važeći indeksi 0 do n minus 1. Tako bismo mogli koristiti za petlju na korak kroz svaku elementa. Ali to zapravo nije slučaj više, zar ne? A gdje smo ključnu vrijednost par preslikavanja gdje su ključevi riječi, Kako ćemo ponoviti tijekom sve riječi? Pa, srećom, PHP ima način nositi s tim previše, pa ćemo skočiti natrag do petlje za sekundu uvesti četvrtu vrstu petlje da postoji u PHP naziva foreach petlju. A što foreach petlje se je to je u osnovi ista ideja. Možete ga koristiti za bilo koju vrstu polja. No, to je u osnovi ista ideja kao for petlje, osim umjesto korištenja indeks brojeve, samo ima tu čudnu sintaksu gdje vas poziva svakog pojedinog elementa naziv za potrebe ove petlje. Dakle, u ovom slučaju, foreach ($ polje kao $ ključ). Uglavnom, kao da komentar bilješke, unutar tog foreach petlje, to će ići preko svaki element $ niz, što je obično će biti asocijativni niz, ali stvarno može biti bilo kakav niz što želite u PHP-u. I svaki put da je u for petlja vas možda rekao $ array četvornih zagrade $ ja, možeš samo reći $ ključ. Tako da $ ključ postaje pseudonim za svaki Indeks PHP asocijativni niz, i tako da možete ga koristiti kao što je to. Tako, na primjer, imamo Sada je dobio naše pizze niz. Ja sam vrsta zataknuo u kutu tamo tako da možemo ga koristiti za napraviti brzo primjer. Ako kažem foreach ($ pizze kao $ pizzu), dobro, što se događa? Pa, ja ću ponoviti kroz svaku Jedan element niza $ pizza, i na taj način, ja ću nazvati svaki element, kad sam unutra od tijela da za petlje, $ pizzu. Dakle, to je neka vrsta stand-u, podsjetimo, da je $ pizza je stand-in za rekavši $ pizze četvornih zagrade $ i ako su pomoću for petlje, gdje smo može ići od $ i = 0 do, u ovom slučaju, $ i = 3. Ako nismo imali ključne parova vrijednosti Ovdje, to će biti elementi 0, 1, 2, 3, a mi bi koristiti za petlje ići $ pizze 0, $ pizze 1, $ 2, pizze $ pizze 3. Tako sada samo $ pizza zamjenom za tu ključem. Pa što se to događa na ispis? Ja sam ispis $ pizzu. Što ću naći at-- ako sam isprintati $ pizze, $ ja? Pravo? Ako ću ispisati i-tog elementa pizza, što ću ispisati? Idem ispisati Vrijednosti na tom mjestu, zar ne? Kao da smo radili to u kontekstu C, mi obično ne koriste naše iteratora promjenjiva, int i = 0, ja je manji od 3, i ++, otisnuti 0, 1, 2, 3. Mi ispis niza 0, polje 1, polje 2, polje 3. I što to ispisuje je to. To je popis cijena. 8,99, 9,99, 10,99, 11,99. Sada brzo bilješku ovdje. Foreach petlje ne mora nužno ispisati stvari u red. To nije zajamčena. To obično radi. Obično se temelji na red u koji elementi dodaju u nizu, pa samo imati to na umu. To ne može biti u redu. Ali foreach petlje će ponoviti preko svakog pojedinog elementa niza u pitanju. U tom slučaju, jednom, to polje je $ pizze. Ja mogu promijeniti sintaksu, iako, ako Želim oba ključ i vrijednost. Umjesto govoreći $ pizze kao $ pizzu, ja mogu reći. A ako pogledate što sam označen zelenom bojom ovdje to izgleda kao ključnog vrijednost par mapiranje. I tako, ako you--, čak i ako niste posve sigurni što će učiniti, vjerojatno možete pogoditi da $ preljev ide biti ključno u ovom slučaju i $ cijena će biti vrijednost. Tako sam zamjenom sada svaki element od $ pizze kao ključnog vrijednost para, i sad ja mogu odnositi na ključ i vrijednost, što bi moglo u ruci, na primjer, kao što slijedi. "Cijela" - to je puno tisak događa here-- "u cjelini" arogantan "pizza košta $" cijenu, a zatim Ja ispisati razdoblje i kose crtice n. Tako sada, obavijest opet imam pristup ključ, $ arogantan i vrijednost, $ cijena. Dakle, možete li pogoditi što je ovo će ispisati? Postoji mnogo ispis izvještaja, ali postoji samo jedan backslash nje, tako da će ispisati nešto na entire-- na jednu liniju koda. Ako mogu odnositi na ključ a vrijednost, tada i sada, umjesto da samo bude u mogućnosti za ispis cijene, Ja mogu isprintati nešto ovako. "Cijela sir pizza košta 8,99 $." I sada sam koristeći sve keys-- sir, feferoni, povrća, Buffalo chicken-- i vrijednosti. 8.99, 9.99, 10.99, 11.99 Pa to je samo drugačiji način napraviti foreach petlju da umjesto Samo što vam daje pristup vrijednostima, ona samo daje you-- vam daje pristup tipkama i vrijednosti. Dakle, ispis podataka. Već sam to učinio nekoliko različitih načina, možda ste primjetili. Dvije funkcije imamo svega vidi se ispis i odjek. A za gotovo sve namjere i svrhe, oni su potpuno isti. They're-- postoji vrlo suptilna razlika koja nije ni vrijedna uzimajući u, ali u osnovi svugdje možete koristiti print vjerojatno možete koristiti jeka, kao dobro. I to ne samo dvije. PHP ima puno drugačije načini za ispis stvari, i ona također ima načina da se integriraju varijable u sredini niza. Pa sjećam iz C, zar ne Sjeti se što je funkcija možemo koristiti za zamijeniti varijable u stvari želimo ispisati? Vjerojatno koristiti ovaj funkcionira dosta. printf, zar ne? Dakle, to je ono što smo imali prije iznutra konteksta naše foreach petlje. Imali smo ovih pet odvojena ispis izvješća, jer je to bio jedini Način na koji sam nije znao na vrijeme Kako ispisati poruke. Nisam znala kako da se integriraju varijabla $ preljev u mom PHP koda. Pa, ako sam samo uzeti divlje pogoditi, printf, to bi zapravo radili. printf je funkcija koje mogu koristiti u PHP-u, baš kao i ja mogu ga koristiti u C. I tako nešto kao što je ovaj, printf, opet, mi smo upoznati s tim. Prvi% s je zamijenjen u vrijednosti od $ preljevom. Drugi% s zamjenjuje u vrijednosti od $ cijenu. I tako sam interpellating, koji je samo fancy način govoreći sam lijepljenje varijable u tom mjestu. Tako sam priključivanja $ preljev gdje crvena% s je i $ cijena gdje je plava% s je, a onda bih dobiti poruku, "Cijela sir pizza košta 8,99 $." Nije jedini način na koji ja mogu to učiniti, iako. Možda bih želite koristiti ovu metodu. To je zapravo ono što je najčešće zove varijabla interpelacije. Mogu koristiti jeku. Mogao sam koristiti print previše, kao što ćemo vidjeti. No, što se događa ovdje? Prije svega, moram pobjeći znak za dolar. Jer zapamtite, kad smo bili zapravo ispis cijena pizza, Zapravo sam ih formatiranja kao novčana figure s znak za dolar. Ali mi smo pomoću dolar znakovi da predstavljaju varijabilne imena u PHP-u, a osobito kad sam koristite ovu metodu vitičasta braće varijabla Metoda interpelaciju, moram pobjeći moj znak za dolar tako da ne mislim Govorim o varijablu. To će zapravo, doslovno ispisati znak za dolar. Pa kakve to analogize se ono što vidite na kraju tamo. To zapravo ne Ispis backslash nje, zar ne? Ona ispisuje novi red karakter. To is-- to neće Ispis backslash dolar znak, to će ispisati samo jedan dolar znak znak. Ista ideja. Escape sekvence, što te stvari su pozvani. Ali primijetite da ja ne radim bilo kakve% s supstitucija, Ja sam samo doslovno plugging u tim varijablama. I tako u this-- što će se dogoditi ovdje je da je vrijednost topping-- $ opet, Samo skladu s onim što smo bili govori o tako far-- sir će dobiti priključen tamo. A $ cijena bi bila ono što je vrijednost na pizze, uglatim zagradama, sir, što je 8,99. I tako to bi također ispisati "Cijela sir pizza košta 8,99 $." I kao što sam rekao, mogao sam koristiti ispisati ovdje umjesto jeke, i funkcionalnost se prilično točno isti. Bilo bi ispisati istu stvar. Postoji još jedan način da to učinite, i to je još jedna prednost PHP raditi sa žicama. Mi možemo učiniti niz ulančavanje. Mogli bismo to učiniti u C, također, koristite funkciju pod nazivom strcat, ali opet, morali smo pozvati zasebne funkcije. To je cijela ova zbrka učiniti. Morali smo funta-su string.h. Bio je to proizvodnja, zar ne? Ali sada ja mogu samo koristiti ovaj dot operator da spojite žice zajedno. Tako sam nadovezivanjem "cjelini" i tada bez obzira na vrijednost $ arogantan je, a zatim još jedan string "troškovi pizza $" a zatim nadovezivanjem god vrijednost $ cijena je, a onda na samom kraju sam letanja na razdoblje obrnute kose crte n. I tako to bi također ispisati "u cjelini" - opet, Ako govorimo o prvi element tog pizza array-- "Cijela sir pizza košta 8,99 $." Razdoblje, backslash nje, opet, s od $ arogantan i $ cijena Zamjenski za ono što je navedeno u našem foreach petlje kao ključna vrijednost par mapiranje. PHP se može nositi funkcije. Funkcije su vrsta sastavni C, kao što smo vidjeli. Kao varijable, mi ne trebaju navesti vrstu funkciji povratka, jer zapravo ne smeta. A mi ne navesti vrste podataka o svim parametrima, jer oni ne stvarno ma, kao što smo vidjeli u PHP. Svaka funkcija je uveden s funkcijom ključnu riječ. Tako smo ukazati da PHP ono što mi govorimo o je funkcija. I nemamo se bave glavna uopće, jer tumača, PHP prevoditeljica, djeluje od vrha do dna, bez obzira. Ako se vidi možete napraviti funkcija poziva, to će ići pronaći funkciju poziv, čak i ako je riječ kasnije. Ali to će se čitati od vrha do dno, tako da ne morate navesti, ovdje gdje početi. Možete početi na liniji 1 od Vaše PHP i rad dolje od tamo. Dakle ovdje je kako bi stvorili funkcija zove hard_square. To očito traje jedan parametar koji Zovem $ x. Ova funkcija je komplicirano samo ilustrirati različite stvari. Mi još uvijek imamo vrijednosti povratka. Ja sam koristeći for petlje ovdje. Ali to je zapravo samo, što je to iznosi se samo $ x $ x puta. Ono što sam zapravo radi se samo dodavanje x 0 x puta ili $ x $ x nula puta. No, to je učinkovito točno isto kao i množenjem $ x $ x puta. Ja još uvijek mogu vratiti vrijednost, u ovom slučaju $ rezultat, a ja sam napravio funkciju u PHP-u. Evo kako možete ga koristiti u kontekstu. Dakle, možda sam u neke PHP datoteke. Obavijest u plavom tamo Ja sam se moje PHP razdvojnike, kut nosača upitnika php. Između onih koji su sve PHP da želim pisati. Dakle, ja sam očito će get-- Idem brz korisnik da će mi dati broj, dućan koji promjenjiva, pohraniti u varijablu $ x, sve što su mi dali. Onda ću jeka hard_square te vrijednosti, i očito ide letati na novoj liniji kao i, a onda kasnije ću definirati funkcije hard_square tako da kada sam napraviti poziv na hard_square, ona zna što sam pričaju. Sada, ja mogu učiniti nešto kao ovo. To je malo drugačiji. To je gotovo točno isto kao što smo vidjeli prije, osim umjesto rekavši samo $ x postoji kao parametar hard_square, Govorim $ x = 10. Dakle, ovo je primjer obrambeni programiranje, čuvajući svoje programe od zlonamjernih korisnika. To je jedan od načina da učinite nešto pogrešku provjeru da mi zapravo nije imaju kao opciju u C. Mi nikada ne bi mogao odredite zadanu vrijednost nečega. Uvijek smo morali provjeriti li, na primjer, ako smo napravili poziv GetString, bilo je najispravnije ako se odmah nakon što smo provjeriti da ćemo provjeriti je li string da korisnik nam je dao nije jednako null, jer ne želite pokrenuti rad s null string. Evo, ovo je način kako bi zaštitio protiv toga. Ako korisnik ne pruža nam nešto nekako, što ćemo učiniti? Pa, samo ćemo reći što god nisu nam daju, samo ćemo se priključiti 10 umjesto. Dakle, ako su nam ne daju vrijednost, samo koristiti 10 po defaultu. I tako ovdje, primijetiti da sam izradu poziv na hard_square, ali nema upit korisniku, zar ne? Ja sam samo što praznu poziv. Ali moj funkcija hard_square očekuje parametar. Što se to događa na ispis? To će ispisati 100, zar ne? Jer korisnik nije daj mi ništa. I tako ja samo ću pretpostaviti da 10-- 10 je zadana vrijednost. I tako bi to ispisati iz 100 u svojem redu. PHP datoteke ne morate biti samo jedna datoteka. Možete kombinirati više datoteka zajedno, baš kao što možete u C. put smo da je u C bio obično se učiniti #include dobiti zaglavlje datoteke izdvajali u. Mi to ne radimo u PHP. Mi radimo nešto što se zove require_once. A tu je i cijela ova stvar, što je ovo __dir__? To je samo poseban promjenjiva ili posebna konstantna, stvarno, koji specificira što Vaš trenutni katalog je. I tako to ide gledati u trenutnoj imenik za datoteke zove cs50.php Ovdje ovom primjeru, i to će ostati tu datoteku na vrhu vašeg PHP program, uz pretpostavku da ste stavili zahtijevaju Jednom linije na vrhu vašeg PHP datoteke. Dakle, PHP se prvenstveno koristi, ali ne isključivo koristi, kao jezik za web-based programiranje. To je stvarno kako je došao da bude. Ali, to je pun jezik, kao što smo vidjeli. Vidjeli smo prilično mnogo sve stvari da se može učiniti da su slične C, i to može napraviti pakao od puno više od toga. No, budući da je puna jezik i mi Možete napraviti naredbenog retka programiranje u njoj. Možemo pokrenuti naredbenog retka programa. Sve što je potrebno pokrenuti naredbu crta program koji je napisan u PHP je da imate PHP interpreter. Dakle, to je vrsta analogne ima prevodilac na vašem sustavu ako želite sastaviti svoj C kod da se to pretvorilo u izvršne datoteke. Morate imati PHP tumača koji postoji na vašem sustavu tako da može protumačiti PHP datoteke. Pod pretpostavkom da ne, i obično ovaj prevoditelj zove PHP, i to je obično u paketu s najviše preuzimanja ili instalacije PHP da možete dobiti on-line, a svakako naziv PHP tumača imamo u CS50, IDE. Sve što trebate učiniti je upisati PHP datoteke. A što je vaš program je će učiniti je da je će se izvoditi kroz tumač, to je će zanemariti sve što je ne između pitanje mark-- ili, kut nosač upitnik php, PHP razdvojnike i print it out, i to će protumačiti i izvršiti broj unutar vaše PHP razdvojnike. Tako ćemo pop preko CS50 IDE i imaju pogled na nekoliko PHP datoteke, trčanje par PHP datoteke u komandna linija sučelje CS50 IDE. Dakle ovdje smo u CS50 IDE, i ja sam uzeo slobodu otvaranja datoteku pod nazivom hello1.php. I očito, sadržaj ovog Datoteka su samo PHP razdvojnike tamo, i između, echo ("Hello, World"). To je prilično jednostavan PHP programa. Samo ću se pomaknite prema dolje na moj prozor terminala ovdje a ja ću upisati php hello1.php, pritisnite Enter. Bok svijete. To je vjerojatno ono što smo bili očekujući to učiniti, zar ne? Idemo i uzeti još jedan pogled na programu. hello2.php. Manje-više ista stvar, Nije mnogo događa ovdje. Ovaj put, međutim, ja ću zatražiti korisniku da mi daju njihova imena. Ja sam ponovo na tu funkciju readline. Ime $ = readline. To je brz, "Kako ti je ime?" Očito sam tisak je u svom retku. I onda, kako je linija ispod da će biti brz gdje korisnik može upisati svoje ime. A onda sam koristeći malo varijabla interpelaciju ovdje na liniji 3 za ispis "Hello" i bez obzira na vrstu korisnika. Dakle, to je slično govorio, Pozdrav, zarez,% s, ako smo koristili printf u C. Dakle, idemo i protumačiti ovaj program. Pa opet, ja ću se pomaknite prema dolje na moj prozor terminala. php hello2.php. Kako se zoveš? Doug. Pozdrav, Doug. Imam još jedan Datoteka naziva hello3.php. Idem da razbistrim Zaslon s kontrolom L, i ja ću izvršiti kako. Kako se zoveš? Doug. Pozdrav, Doug. Dakle, ponašanje je identično hello2.php, ali zašto je to hello3.php? Pa, ovdje je razlika. U tom slučaju, obavijest da je na liniji 1 ovdje, Imam nešto što nije između PHP razdvojnike. Ja sam samo ispis out-- ili ja Samo upisali "Kako ti je ime?" Kada PHP tumač vidi ovo, to nema pojma kako to tumače kao PHP, pa umjesto da u nedostatku, to je samo ide da ga ispljune. Dakle, primijetite na liniji 3 sada, moj poziv readline, nema redak više. Ja sam samo zapravo događa kada to-- PHP tumač vidi ovo, to će ispisati "Kako se zoveš?" Tada se vidi, oh, u redu, here's-- sve ostalo će biti tumačiti kao PHP, tako to je razlog zašto se to radi. Ne moraju nužno potaknuti korisnik to-- unutar readline, Ja samo mogu ga vani od PHP razdvojnike i dopustiti tumača samo ga ispisati za mene. Tako da zapravo ne samo imati jedan set PHP razdvojnike u svom programu. Vi zapravo možete imati nekoliko njih, otvaranje i zatvaranje ih po potrebi. Tako ćemo pogledati na par programa u CS50 IDE gdje smo ilustrirali ovu ideju s više kompleta razgraničena PHP. U redu, pa sam otvorio datoteku Ovdje zove add1.php. A primijetiti što se ovdje događa. Baš kao i prije, imam Jedan PHP skup razdvojnike. Idem ispisati Poruka: "Dajte mi broj." Onda ću čitati crtu i pohraniti ga u varijablu $ num1. Onda ću ispisati ponovo. Daj mi drugi broj. Pročitajte liniju od korisnika, trgovine što god oni upisali u u $ num2. Dodajte ih zajedno i spremite da dovesti varijablu pod nazivom $ suma, a zatim ispisati, "The zbroj tih dvaju brojeva je ", a zatim interpelirati postoji varijabla $ zbroj. Pa neka je samo pokrenuti ovo preko tumača potvrditi da je to ono što očekujemo. php add1.php. Molim Vas, dajte mi broj, 3. Molim Vas, dajte mi drugi broj, 4. Zbroj ta dva broja je 7. To je 3 + 4. U REDU? Dakle, ništa strašno sviđa tamo. A sada ćemo otvoriti add2.php. Evo, imam par PHP razgraničena setovi tamo, zar ne? Linije 1, 3-- linije 1 i 3 Nemate PHP razdvojnike. Dakle, kada je tumač vidi ih, to je samo ide pljuvati točno što sam upisali tamo. Dakle, to je gdje sam radi sve moje pitajući. Na linijama 2 i 4, vidimo vrlo upoznati $? php vrsta razdvojnike, tako da te dvije linije su će izvršiti što je PHP. A onda na liniji 5, moram to čudno ovdje, zar ne? Ovaj kut nosač upitnik znak jednakosti. Čak ću povećavanje malo dalje. Možete vidjeti to je ono što sam govori o upravo tamo, ovo $? =. Ispada da je tako uobičajeno da razlog da smo otvoriti skup PHP razdvojnike je ispisati vrijednost. I to je sve što ćemo učiniti. No, tu je i skraćenica za to. $? = Je PHP skraćenica za rekavši nešto kao $? php echo zbroj od num1 i num2. Dakle, ovo je samo još jedan stenogram za to. Dakle, ako sam pokrenuti ovaj program, php add2.php. Ja ću se zumirati malo. Molim Vas, dajte mi broj, 4. Molim Vas, dajte mi drugi broj. A budući da ja ne stvarno stalo vrste podataka u PHP-u, mogu reći 4.8. Zbroj ta dva broja je 8,8. To je funkcija ponaša prilično mnogo točno isto kao što bismo očekivali, kao. I imam još jedno otvoreno ovdje zove dice.php. Pokušajte to opet. Imam još jedan ovdje naziva dice1.php, koji također, vidi, ima tu kut nosača pitanje označiti znak jednakosti zapis u njemu, ali primijetiti da je u ovom slučaju sam pozivanje funkcije randa, koji kao i vi mogli očekivati ​​generira slučajni broj. "Valjane si", a to će izračunati neki slučajni broj, MORH 6 + 1. Tako da će mi dati broj u rasponu od 1 do 6. Zapamtite da mod 6 će mi dati broj u rasponu od 0 do 5, ali ako sam simulacijom kocke role, što je ono što ja radim ovdje, Ne želim ove kockice ići od 0 do 5, želim kocke koje idu od 1 do 6. I tako je to način da se ja u rasponu od 1 do 6. Ovo radim dva puta. Dakle, očito sam valjanje Dvije kockice u ovom programu. Tako ću razbistriti zaslon, i ja ću učiniti php dice1.php. Valjane si 4 i 2. I ako sam pokrenuti program opet, valjane vam je 5 i 5. Dakle, svaki put sam pokrenuti program, Ja sam uzimajući različite brojeve, jer svaki put radim Dakle, to je počevši ispočetka. To će generirati nova skup slučajnih brojeva za mene. Dakle, ako smo nekad pokretanje programa iz C, smo navikli na gumb ./ naziv programa, zar ne? Tako smo učinili sve naših programa u C do sada. Možemo to učiniti u PHP i dodavanjem nešto što se zove stvar na vrhu naše PHP datoteke. Znam da je poput glupog riječi. To je kratica za hash prasak. To je prva dva znaka postoji. Zapamti zovemo uskličnik Često prasak u računalnoj znanosti. To također može biti za oštar prasak. Postoji par načina kako to protumačiti. No, to je u osnovi posebna vrsta zapovjedni da PHP tumač razumije što je, oh, ja želim izvršavanje ovog programa, što je očito / user / bin / php, koji zapravo gdje PHP tumač posebno živi na našem sustavu. Dakle it's-- što se događa ovdje tumač razumije, o, Ja sam očito trebala koristiti u ovom programu pokrenuti ovu datoteku. I tako to vam omogućuje preskočiti korak vlasništvo reći php something.php. Postoji jedna kvaka ovdje, a to je da ako smo Želite naše programe raditi kao što se očekuje, mi trebate učiniti nešto što se zove promjena datoteka dozvolu. A mi ćemo go-- i razgovaramo malo malo više o datotečnim promjene dopuštenja u našem video na MVC, ali ga dovoljno je kažu da je to ono što trebate učiniti kako bi svoje .php datoteka izvršna. Tako ćemo pogledati što je to naš konačni primjer više u CS50 IDE. Dakle, ovdje u IDE Imam dvije datoteke u ovoj PHP katalog koji se pojavljuju da se ne zove .php. Imam funkcija zove add-- Imam datoteku pod nazivom add3 i datoteka zove dice2. Tako ćemo uzeti brzo izgleda i otvoriti add3. I kao što možete vidjeti, na početku moje datoteke Imam tu stvar, zar ne? To hash uskličnik točka. Sada, također ćete se možda primijetiti da iz nekog razloga, Nemam nikakvu sintaksu naglašavajući više, i to je ono što sam aludirao na ranije, što je da je, ako ne nazovem svoju sliku Php, nemam korist sintakse isticanje više. Ova datoteka jednostavno zove add3. Tako da ja mogu ga pokrenuti kasnije s ./ add3 a ne ./ add3.php. Dakle, to je još uvijek reason-- u redu, to je još uvijek važeći PHP, ali to nije Sintaksa istaknuo, jer Ova datoteka ne zove something.php. To je jedina prava razlika Ovdje, plus stvar. Dakle, neka je vidjeti što se događa kada Pokušavam i pokrenuti ovaj program. ./ Add3, baš kao što bih s C. Bash. ./ Add3 dozvolu odbijen. To je ono što se događa vidjeti ako ste zaboravili koristiti chmod naredbu za promjenu dopuštenja datoteke. Kako se ispostavlja, redovito PHP datoteka ne može samo izvršiti. Oni se mogu tumačiti, ali smo radi nešto malo drugačije ovdje. Mi smo njezina izvršenja. I tako moram dodati dozvolu izvršenja, chmod + x je na add3. Tada mogu reći ./ add3. Molim Vas, dajte mi broj. 5, 6. Zbroj ta dva broja je 11. Isto tako, već sam chmoded dice2, tako da ja mogu samo upisati ./ dice2, što dokotrlja 1 i 1, što valjane 5 i 4, i tako dalje. Dakle, to je prilično mnogo Ideja o PHP sintaksa, zar ne? Postoji puno da se kroz, znam. Ali nadam se da ste vidjeli da sada PHP nije stvarno da je različit od C i stvarno nam daje mogućnost da se stvari gore zarezati ili dva. Mi stvarno ne morate brinuti previše about-- mi ne stvarno morate brinuti previše o Pojedinosti smo niske razine morao brinuti s C, zar ne? Možemo se usredotočiti na viši Razina stvari koje PHP omogućuje nam da napraviti i da se za gotovo da će raditi za nas. Dakle, to nam daje mogućnost sada, prelazaka iz C u PHP, napraviti programe koji su puno više složen i možda mnogo više robustan. Dakle, nadam se da ćete se zabaviti rad s PHP, i ja sam Doug Lloyd. Ovo je CS50.