DOUG LLOYD: Takže máme urobil veľa práce v C, a C je naozaj v pohode jazyka, pretože vám dáva schopnosť sa potápať skutočne nízka úroveň do vašich programov. Dostávame sa robiť veci tak, ako Naozaj minúta as manipuláciou Jednotlivé bajtov pamäte. Pripomeňme si, že naozaj na ukazovatele umožniť nám, že pružnosť. Ale vždy je potrebné mať že úroveň jemnozrnná detailu v našich programoch? Pravdepodobne nie, že jo? A ak budeme mať kompromis medzi tým, schopný robiť naozaj, ale naozaj minute veci a naozaj, ale naozaj veľké veci, ktoré nemajú myslieť o, nemáme realizovať Tieto naozaj veľké myšlienky pokiaľ že sú už postavená v roku pre nás, všeobecne pre budovanie big programy alebo veľké projekty, budeme pravdepodobne bude chybu na strane z toho, že ďalšie jazykové veci postavená v roku pre nás, namiesto toho, veci low-level. A to je miesto, kde PHP naozaj prichádza. Teraz, jeden z dôvodov, prečo že učíme PHP v CS50 je, že je silne inšpirovaná C. A v skutočnosti, podľa môjho názoru, tam sú naozaj dvoch progenitorové jazyky, ktoré sú veľmi časté v dnešnej dobe. C a LISP. A sú progenitorové jazyky pretože každý iný moderný programovanie jazyk, ktorý vyvinula od tej doby je inšpirované jednou alebo druhou syntakticky. PHP je veľmi podobný syntakticky k C, zatiaľ čo jazykov ako Scheme, napríklad, ktorý ste možno počuli o, je silne inšpirovaný jazykom volal LISP, ktorý je starší jazyk. Takže z toho dôvodu sme sa učiť PHP v CS50 je to, že, tým, že pozná C ako zásadne ako vy v tomto bode, vyzdvihnutie PHP, ktorý vám dáva schopnosť robiť oveľa vyššiu úroveň veci ako C robí, nie je že veľa z prekážku, preto, že už máte Základnou myšlienkou syntaxe. C je to asi pre takmer 45 rokov v tomto bode. PHP tu bol asi 20 rokov. A v tom, že 25 rokov medzi programátormi, stanovené, že by moc skôr majú vyššie schopnosti na úrovni, a chyby a boja z 20 rokov v rozmedzí viedol k PHP a iných moderných jazykov. PHP veľký výber jazyka pre softvér že allow-- pre softvér that-- kde na vás treba robiť veci, ktoré v C sú v skutočnosti komplikované. Tak napríklad, pracovné s reťazcami v C je veľmi komplikované, pretože ako vieme, reťazca v C sú naozaj len pole znakov. Nie je to vstavaný dátový typ. Alebo snáď ešte podstatnejšie, niečo, čo sme nemali ani pokryť v C, čo keď musíte urobiť, Niektoré počítačové siete? Dobre? C má schopnosť robiť to, ale je to tak tajomný a tak ťažké skutočne urobiť. Nebolo by pekné, keby Jazyk mal vstavaný a jednoduchý spôsob, implementovať sietí? A PHP je jazyk, ktorý robí to, alebo uľahčuje to, že trochu viac. Ako som už povedal, PHP je veľmi silne inšpirovaný C. Syntax je veľmi podobná. A tak to má snáď aby sa Prechod z jedného na druhého trochu mäkšie ako niektoré ďalšie jazyky môžu byť. Ak chcete začať písať PHP, stačí otvoriť súbor s príponou .php. Technicky to nie je skutočne potrebné, ale ak chcete, veci, ako je syntaxe zvýraznenie v IDE, takže tento typ názvy, alebo názvy premenných, funkcie, viete, kľúčové slová z jazyka sú zvýraznené v špecifická farba, je zvyčajne chcú pomenovať svoje súbory s konkrétne príponu súboru. Takže sme pomenovaný náš súbor s .php rozšírenie, ale potom tiež s PHP, všetky PHP kód budeme písať v tom, že Súbor musí byť uzavretý v týchto PHP oddeľovača, ktoré vidíme tu na obrazovke. Uhol držiak? Php začať. Potom sme sa napísať všetky naše PHP kód, ktorý chceme medzi nimi. A potom ? uholník uzavrieť. Ak nebudeme to robiť, potom čo sa bude diať? Nebude to k havárii. To nebude Naozaj zničiť náš program. Ale je to nebude mať dopadu, ktorý chceme. Čo sa stane, naozaj, je že keď sa snažíme a spustiť tento program, všetko, čo nie je medzi týmito oddeľovača sa bude vytlačený doslovne. To nebude v skutočnosti spustiť kód, to bude len vytlačiť doslovne. A prečo je tomu tak? Takže C je to, čo je známe ako kompilované jazyk. Vy ste pravdepodobne oboznámení s krok tvorby programy, sústruženie .c súborov a .h súbory do jedného spustiteľného súboru s make, najmä s využitím Rinčanie ako náš kompilátor. PHP, aj keď, nie majú tento ekvivalent. PHP je to, čo sa nazýva interpretovaný jazyk. A čo to znamená? No, to znamená, že nebudeme musieť previesť náš zdrojový kód núl a jednotiek vopred. Skôr, je tu program, ktorý je tiež nazývaný PHP, že chápe, PHP a môže nejako robiť to v reálnom čase. To naozaj nie je úplne presné, ale je to celkom dobrá analógia o tom, čo sa deje. Je to tlmočenie tých, nuly a tie v reálnom čase. A tak, ak to nevie ako spracovať niečo, ak nevie, ako sa Proces PHP, budete pravdepodobne chcel dať tento text tam, že jo? Pravdepodobne ste chcel dať kód tam, aj keď to nie je medzi PHP-- PHP oddeľovača. Ale-- takže to nebude ju zmazať pre vás, to len tak v podstate zlikvidujte ho. Takže to bude tlačiť to sa na obrazovku. To vyzerá, že je to zlý vec, ale v skutočnosti je to Bude to naozaj dobrá vec, ako sme to vidieť, keď hovoríme o PHP vývoj webu, pretože to znamená, že môžeme premiešať PHP a HTML. Môžeme ich použiť spoločne vytvoriť dynamickejší webové stránky. Ale o tom viac v video na vývoj PHP webových aplikácií. Takže to, čo je syntax PHP? To je to, čo toto video je všetko okolo. Poďme si o tom pohovoriť. Takže začať, premenné. PHP premenné existujú. Tam sú len dva veľké odlišnosti od C. Prvý z nich je, že je tu č Špecifikátor typu. Nemusíme hovoriť int, char, float, všetky tie veci. Nemáme na to, že už nie. PHP je moderný jazyk. To môže prísť na to, čo ste sa snaží robiť, alebo aby najlepší hádať, ako na to, čo sa snažíte urobiť. Tak to je celkom pekné. Druhá vec je, že všetky premenné mená majú začať s znak dolára. Je to proste niečo, čo sa zvyknúť. Je to trochu divné, pretože je to tak, že PHP môže pochopiť čo je premenné a čo nie. Takže každý názov premennej začína s znak dolára. Takže v C by sme mohli povedať niečo takto, int x = 54. Nemáme na to, že už v PHP. Môžeme len povedať, $ x = 54. A mohli by sme povedať, napríklad, v C, keby sme libra-zahŕňal CS50 .h hlavičkový súbor, mohli by sme povedať, string výraz = "Toto je CS50." Nemáme na to, že v PHP, hoci. Môžeme len povedať $ frázu = "Toto je CS50." A v skutočnosti, reťazec je teraz vstavaný dátový typ v PHP, alebo skôr PHP rozumie čo je reťazec. Je to oddelene od poľa znakov, ako je to v C. Všetky vaše obľúbené podmienené príkazy z C sú stále k dispozícii pre vás na použitie. Takže tam žiadne veľké prechod. Môžeme say-- môžeme mať if, ako je tento. ak $ y 43, alebo $ z = 15. Tak to je celkom jednoduché. Môžeme mať, ak aj inde. Môžeme mať, ak a else if. A všimnite si niečo tu celkom pekné, a to je niečo jeden z tých Výhody PHP oproti C, oznámenie akú funkciu nie sme tu používate? Používame == porovnať premenná, $ name, na reťazec. Nemohli sme to urobiť v C, nie? Museli sme použiť funkciu nazvanú StrComp alebo StrEndComp alebo akékoľvek z jej pridružených bratranci. A tak už vidíme tieto výhody. Nemusíme robiť niečo ako hlúpe alebo možno unintuitive ako volanie funkcie nazýva StrComp ak chcem len vyskúšať či hodnota sa rovná reťazec. Som mohol použiť len rovná rovná, že by som mohol robiť niečo iné. Takže tam to výhoda. Niekedy, mimochodom, môžete pozri else if ako jedno slovo, ElseIf. A to je v poriadku, v PHP rovnako. Takže niekedy môžete vidieť, že. Nie je to preklep. PHP vlastne chápe ElseIf. Neviem, prečo sa rozhodla implementovať to, ale ako sme videli mnohokrát v celej našej videa tak ďaleko, máme programátori to páči, ak môžeme robiť veci rýchlo, tak, ako sa zbaviť tohto priestoru je zrejme veľká výhoda. Tak to je v prípade, a ElseIf. Máme tiež ternárnu operátor, Pripomeňme, otáznik hrubého čreva, za naozaj krátku formu, ak iný alebo podmienené vetvenia. A zdá sa, že v tomto, čo sa snažíme urobiť tu je priradiť premenné $ List jeden pravdivý alebo nepravdivý, V závislosti na tom, či $ var je abecedný znak. Tak to je celkom podobný IsAlpha že sme oboznámení s od C. To je niečo ako ekvivalent v PHP. Funkcia je zrejme volal ctype_alpha, ale to je to, ako to robíme v PHP. Tak toto všetko bude je, ak je $ Var je list, $ list je pravda. Ak je $ var nie je list, $ List je false. Máme tiež vyhlásenie prepínača stále. Pripomíname, tie, ktoré z C i. Na samom vrchole sa, že je to, ako to robíme niečo ako get int alebo získať reťazec. PHP tak, že má postavená v roku. Nepotrebujeme knižnicu CS50 ešte. Môžeme stačí použiť readline funkciu. Čo to urobí, je pre tlač out správu: "Tvoj stať, prosím, "a potom bliká riadku čakanie užívateľa na vstup Niektoré informácie. Teraz si všimnúť, čo iného môžeme urobiť s vypínačom. Ak ste použil predtým, Možno si spomeniete, že spínač je obmedzená do značnej miery na celé čísla a postavy, ale teraz môžeme použiť reťazca. A v skutočnosti, príkaz switch v PHP je trochu flexibilnejší ako jeho bratranec z C. Slučiek. Rovnako ako podmienkové, všetci vaše staré obľúbené sú tam stále. Máme zatiaľ čo slučky, ktoré počítajú od 1 do 100 v tomto prípade. While sme robiť Počíta sa od 1 do 100, a máme pre slučky Počíta sa od 1 do 100. Takže tam žiadny veľký skok. Syntax je celkom oveľa presne rovnaký, s výnimkou teraz sme pomocou znak dolára variabilný miesto deklarovanie premenných celé číslo, alebo niečo také pre naše pulty. Tu je miesto, kde sa veci dostať oveľa lepší ako C, hoci. Poľa. Takže Spomínam si, keď sme boli hovorí o C, v poradí pre nás rast a zmenšiť súbory informácií, sme potrebovali vyriešiť zlyhanie k tejto myšlienke prepojeného zoznamu, pretože C polia boli stanovené vo veľkosti. Nemohli sme zmenšiť ich. Nemohli sme pestovať ich. Museli sme prerozdeliť pamäte a robiť všetku túto šialenstvo alebo použite prepojené zoznamy, ktoré zaberajú dosť viac priestoru. Ale v PHP, pole sú nie je stanovená vo veľkosti ešte. Môžu dorásť a môžu zmenšiť. Takže znovu, týchto 20 rokov, ktorá existovala medzi prvom vydaní C a prvé vydanie PHP, Rozhodli sme sa, že viete, to by bolo naozaj skvelé ak by sme mohli urobiť. A tak sme realizovali to. Takže PHP polia nie sú stanovené veľkosť, a preto, že PHP nie je naozaj majú programátor predné VGA pojmy typov, môžeme miešať dátové typy v našich poliach, taky. Takže nemáme ani musieť použiť všetky celé čísla alebo všetky plávajúce body, môžeme mať mix všetkého rôzne druhy v jednom poli. Deklarácia poľa je celkom jednoduché. Je to rovnako ako všetky ostatné premenné. $ Nums = array (1, 2, 3, 4), pole je funkciou , Ktorý je vstavaný do PHP, ktorý vytvorí pole pre vás. To vytvorí pole štyroch hodnôt, Čísla v tomto prípade, volal $ nums. A je tu viac ako jeden spôsob, ako to urobiť. A ideme vidieť veľa v PHP. PHP bol vyvinutý mnoho rôznych ľudí a rastie a rastie a rastie. Tam je zvyčajne nie je len dva alebo tri spôsoby, ako niečo urobiť v PHP, tam je zvyčajne ako 10 alebo 20. Tu je len ďalší obyčajný spôsob, ako deklarovať pole. $ Nums = štvorcových bracket 1, 2, 3, 4. Tak toto je trochu podobný uhla C je br-- zloženú zátvorkou notáciu, skôr. $ - alebo že by bolo int nums námestie držiaky rovná zložená zátvorka 1, 2, 3, 4. V PHP je to $ nums = námestí držiaky 1, 2, 3, 4. Oba tieto príklady, ale tu mi dať s poľom štyroch v tomto prípade celých čísel. Čo keď chcem niečo pripináčika na teraz? No môžem len povedať, $ nums 4, ktorý Znova, sme stále počítať od 0 tu v PHP, by piaty prvok poľa. Môžem len povedať, že. Nebudem trpieť SEG chyba, pretože moje pole je len porastie ubytovať to. To je celkom pekné, nie? A v skutočnosti, nemám ani potreba určiť, kde chcem, aby to. Môžem len povedať to a len pripináčika to priamo až do konca, alebo som mohol dokonca len hovoria $ nums 20 alebo 1000. Je to naozaj nezáleží. Je to stále len bude pripináčika to priamo až do konca. Tak som sa môže rásť, a my sme as-- nebude pokryť tu, ale môžem spájať alebo pás Prvky z poľa, ako, a pole bude zmenšovať ubytovať že teraz chýba alebo je prázdny priestor. Je tu ešte jeden spôsob, ako sa križovať niečo, čo sa na pole, čo je funkcia nazvaná array_push. Takže znovu, práve táto myšlienka, že sú schopný robiť veci mnohými rôznymi spôsobmi. Takže sme videli tri rôzne spôsoby, ako teraz križovať ďalší prvok na maticu. Takže to pridáva ďalší prvok na konci $ nums poľa. A môžeme miešať naše dátové typy. Takže som mohol mať niekoľko nie 1, 2, 3, 4, ale 1, true, 3, 4, kde pravda je logická, a potom keď chcem pridajú iný prvok k tomuto poli, snáď reťazec, reťazec "päť," ja som mohol robiť, že. A teraz môj array by byť 1, true, 3, 4, päť. Slovo päť, nie celé číslo 5. Takže veľká flexibilita tam. Flexibilita dostane ešte lepšie, aj keď, preto, že PHP má podporu pre niečo volal asociatívne pole. A my sme tak nejako neurčito hovoril o asociatívnych polí v jazyku C v kontexte stoly mriežky, pretože čo asociatívne polia sú naozaj všetko asi robia kľúč Hodnota pár mapovanie. A v tomto prípade, ak keys-- Sme oboznámení s poľami z C, klávesy sú indexy. 0, 1, 2, 3. A hodnoty sú to, čo sme zistili, že pole 0, pole 1, pole 2, a tak ďalej. Takže sú kľúče indexy, a hodnoty sú to, čo je v tomto umiestnení poľa, ustanovenými týmto indexom. Ale v PHP, nemusíme to robiť Pojem pole 0, pole 1, pole 2 už nie. Teraz môžeme použiť aktuálne slová mapovať kľúče k hodnotám. A tak by som mohol povedať niečo také. Mohol by som vytvoriť pole pomocou zátvorka syntaxe takto. $ Pizze = hranatú zátvorku "syr" a potom Tento druh dvojitou šípkou notáciu, 8.99, "feferónky," šípka 10.99-- 9,99, a tak ďalej. A tak to, čo sa tu deje? Čo mám vlastne robiť? Ja som vytvoriť kľúčové hodnota pár mapovanie. Takže namiesto toho, hovoril, napríklad, pizze 0, 1 ks, pizze 2, Teraz môžem povedať pizze syr, pizze pepperoni, a odkazujú na hodnoty sú s nimi spojené. Tak tu sú naše kľúče zelene. Syr, pepperoni, zeleniny, byvol kurča. Tu je šípka, ktorá robí Tento kľúč mapovanie hodnotu dvojice. A potom tu sú hodnoty na tomto mieste poľa. Takže je to ako povedať pole 0 sa rovná 8,99. Kľúčom k úspechu je 0. Hodnota je 8,99. Teraz môžem povedať syr poľa, alebo v tomto prípad pizze syr, syr je kľúč, a to, čo nájdem v pizze syr je 8.99. To je hodnota, ktorá nájdem tam. Takže môžem povedať veci páči. $ Pizza syr = 7,99. Povedzme, že som s predajom. Chcem dis-- chcem k poklesu cena syrové pizze. Alebo môžem použiť zeleninu pizza ako súčasť stavu, alebo môžem pridať nový element k môjmu pole, rovnako ako som mohol robiť skôr. Môžem pridať nový element na to asociatívne pole s kľúčom "slaniny" a hodnota 13,49. Ale tento druh predstavuje problém, ak si myslíte, že o tom na chvíľu. Ako by sme iteráciu tomto poli? Je to tak? V C, my by sme len mať pre slučku, typicky, že pobeží od 0 do Veľkosť poľa mínus 1. Pole má n prvky na sa platné indexy sú 0 až n mínus 1. Takže by sme mohli použiť pre slučku do krokovať každý jednotlivý prvok. Ale to nie je naozaj tento prípad už, že jo? Tak kde máme pár hodnoty kľúča Mapovanie kde kľúče sú slová, ako sme sa iterácii cez všetky slová? No, našťastie, PHP má spôsob, ako sa vysporiadať s tým taky, a tak budeme skočiť späť do slučky na sekundu zaviesť štvrtú druh slučky, ktoré existuje v PHP s názvom slučky foreach. A to, čo robí, je slučka foreach je to v podstate rovnaký nápad. Môžete ho použiť pre akýkoľvek druh poľa. Ale je to v podstate Rovnaká myšlienka ako pre slučka, s výnimkou toho, použitie indexy, stačí majú taký divný syntax kde budete volať každý element názov pre účely tejto slučky. Takže v tomto prípade, foreach ($ pole as $ kľúča). V podstate, ako tou poznámkou poznámky, vnútri tejto slučky foreach, to bude prejsť každý prvok $ pole, čo je zvyčajne Bude asociatívne pole, ale môže byť naozaj akýkoľvek druh poľa že chcete v PHP. A zakaždým, že v cykle for by ste mohli povedal, $ pole hranaté zátvorky $ I, môžete len povedať $ kľúč. Takže $ key stane alias pre každý Index PHP asociatívne pole, a tak ho môžete použiť takhle. Tak napríklad, máme Teraz dostali náš pizze poľa. Ja som trochu zastrčil do tam rohu takže ju môžeme použiť k tomu rýchly príklad. Keď poviem foreach ($ pizze as $ Pizza), no, čo sa deje? No, ja idem iterovat každý jednotlivý prvok poľa $ pizze, a pritom budem volať každý prvok, keď som vo vnútri tela, ktoré pre slučky, $ pizzu. Takže je to niečo ako stand-in, pripomínajú, že $ pizza je stand-in pre porekadlo $ Pizze hranaté zátvorky $ I Ak by sme použili pre slučky, kde sme môže ísť od $ i = 0 až, v tomto prípade, $ I = 3. Ak by sme nemali kľúče a hodnoty, tu, by to bolo element 0, 1, 2, 3, a my by sme použiť pre sláčiky ísť $ 0, $ pizze pizza 1, $ 2, pizze $ Pizze 3. Takže teraz len $ pizza strieda pre tento individuálny kľúč. Takže to, čo sa to bude tlačiť? Ja vytlačiť $ pizzu. Čo mám nájsť at-- keď som vytlačiť $ pizze, $ i? Je to tak? Či mám vytlačiť i-tá prvok pizze, čo budem tlačiť? Idem pre vytlačenie Hodnoty na tomto mieste, že jo? Rovnako ako keď sme robili to v kontexte C, my bežne nepoužívajú našej iterátory variabilné, int i = 0, aj je menšia ako 3, i ++, vytlačiť 0, 1, 2, 3. Sme vytlačenie pole 0, pole 1, pole 2, 3 polia. A tak to, čo to vypíše je to. Je to zoznam cien. 8,99, 9,99, 10,99, 11,99. Teraz krátka poznámka tu. Slučky foreach nemusí nutne vytlačiť veci do poriadku. To nie je zaručená. Je to zvyčajne robí. Je to zvyčajne na základe objednávky v ktoré prvky sú pridané do poľa, tak len to mať na pamäti. To nemusí byť v poriadku. Ale foreach slučky bude opakovať po každej jednotlivé súčasti matice sa jedná. V tomto prípade sa opäť, že pole je $ pizze. Môžem zmeniť syntax, aj keď, ak Chcem ako kľúč a hodnotu. Namiesto toho, hovorí $ pizze as $ pizze, môžem povedať toto. A keď sa pozriete na to, čo som zvýrazní zelene tu, to vyzerá ako kľúčový mapovanie hodnota páru. A tak ak vás--, aj keď nie ste úplne istý, čo to bude robiť, asi tušíte že $ poleva sa deje byť kľúčovým v tomto prípade, a $ Cena bude hodnota. Takže som náhradou teraz každý prvok z $ pizze ako dvojicu kľúč hodnota, a teraz môže odkazovať ku kľúču a je hodnota, ktorá by v vhod, napríklad, nasledujúcim spôsobom. "Celá" - to je veľa tlač deje here-- "celku" poleva "pizza stojí $" cenu, a potom Aj vytlačiť obdobie a spätné lomítko n. Takže teraz, oznámenia zase mám prístup k kľúč, $ poleva, a hodnotu, $ cena. Takže môžete hádať, čo to sa chystá vytlačiť? Je tu veľa tlačových vyhlásení, ale je tu len jedna spätné lomítko n, tak to bude niečo, čo tlačiť na entire-- na jeden riadok kódu. Môžem Ak odkazovať na kľúč a hodnota, potom teraz, namiesto toho tak, že v vytlačiť cien, Môžem vytlačiť niečo také. "Celý syr pizza stojí $ 8,99." A teraz som pomocou všetky keys-- syr, feferónky, zeleniny, byvol chicken-- a hodnoty. 8,99, 9,99, 10,99, 11,99 So to je len iný spôsob, ako robiť slučky foreach, že namiesto len dávať prístup k hodnotám, to proste dáva vás-- To vám dáva prístup ku kľúčom a hodnotami. Takže vytlačiť informácie. Už som to urobil pár rôzne spôsoby, možno ste si všimli. Tieto dve funkcie máme v prvom rade Videl sú tlač a echo. A pre skoro všetky zámery a účely, sú presne rovnaké. They're-- je tu veľmi jemné Rozdiel to ani nestojí dostať sa do, ale v podstate všade môžete použiť tlač môžete pravdepodobne používať echo rovnako. A to nie je len dva. PHP má veľa odlišný spôsoby tlače veci, a má tiež spôsoby, ako integrovať Premenné do stredu reťazca. A tak spomínam z C, viď Pamätáš si, čo funkcie môžeme použiť nahradiť premenné do vecí, chceme vytlačiť? Pravdepodobne ste použiť fungujú celkom veľa. printf, že jo? Takže to je to, čo sme mali predtým vnútri z kontextu nášho foreach slučky. Mali sme týchto päť samostatné tlačové vyhlásenie, preto, že bol jediný tak, ako som vlastne nevedel, v tej dobe ako tlačiť správy. Nevedel som, ako integrovať Premenná $ poleva mi do PHP kódu. No, keď som jednoducho vziať divokej hádať, printf, že v skutočnosti by to fungovalo. printf je funkcia, ktorá môžem použiť V PHP, rovnako ako ja ju použiť v C. A tak niečo také, printf, Znova, sme oboznámení s tým. Prvá% s nahrádza s hodnotou $ polevou. Druhý% s nahrádza s hodnotou $ ceny. A tak som interpellating, čo je len ozdobný spôsob, ako hovoriť Ja som nalepení premenné do tohto umiestnenia. Takže som zapojením $ zálievka, kde je red% s je cena $ a kde je modré% s je, a potom by som dostať správu, "Celý syr pizza stojí $ 8,99." Nie je to jediný spôsob, ako môžem urobiť to, hoci. Možno, že by som chcel použiť túto metódu. To je vlastne to, čo je najčastejšie volal variabilný interpelácie. Môžem použiť echo. Mohol by som použiť tlač tiež, ako uvidíme. Ale čo sa tu deje? Po prvé, musím uniknúť znak dolára. Vzhľadom k tomu, pamätajte, že keď sme boli vlastne vytlačenie ceny pizze, V skutočnosti som formátovanie je ako peňažné postavy s znak dolára. Ale my sme s použitím znaky dolára tiež zastupovať názvy premenných v PHP, a najmä, keď som použitie tejto metódy na kučeravé rovnátka variabilný metóda interpelácie, potrebujem uniknúť môj dolára, takže to nie je myslím, že hovorím o premenné. Bude to vlastne, doslova vytlačiť znak dolára. Tak nejako to analogize to, čo vidíte na tam na konci. To nie je v skutočnosti vytlačiť spätné lomítko n, že jo? To vytlačí znak nového riadku. To je-- to nebude vytlačiť spätné lomítko znak dolára, že to bude len vytlačiť Znak dolára znak. Rovnaký nápad. Útek sekvencie, čo tieto veci sú nazývané. Ale všimnite si, že ja nerobím nejaký druh% s substitúciou, Len som doslova zapojíte v týchto premenných. A tak v tohle-- čo by sa stalo tu je to, že hodnota $ topping-- znovu len držať s tým, čo sme boli hovorí o tak far-- syre by sa zapojený tam. A $ cena by bola, čo je hodnota na pizzu, hranaté zátvorky, syr, ktorý bol 8,99. A tak by to tiež vytlačiť "Celý syr pizza stojí $ 8,99." A ako som povedal, som mohol použiť vytlačiť tu miesto echa, a funkcia bude skoro presne rovnaký. To by vytlačiť to isté. Je tu ešte jeden spôsob, ako to urobiť, a to je ďalšia výhoda PHP prácu s reťazcami. Môžeme si robiť, zreťazenie. Mohli by sme to urobiť v C, taky, pomocou funkcie s názvom strčí, ale zase sme museli volanie samostatné funkcie. To bol celý tento neporiadok robiť. Museli sme libru-zahrnúť string.h. Bola to výroba, nie? Ale teraz už stačí použiť tento skalárne operátor zřetězit reťazca dohromady. Takže som zreťazenie "celok" a potom bez ohľadu na hodnotu $ zálievky je, a potom ďalšie string, "náklady pizza $" a potom, čo zreťazenie hodnota $ ceny je, a potom v samotnom závere, že som pripínanie na obdobie spätného lomítka n. A tak to by tiež vytlačiť "celok" - opäť, Keď už sa bavíme o prvé prvkom tejto pizze array-- "Celý syr pizza stojí $ 8,99." Obdobie, spätné lomítko n, opäť s na $ polevou a $ cena substitúcie za to, čo sme je uvedené v našich foreach slučka ako mapovanie kľúčové hodnoty páru. PHP zvládne funkcie. Funkcie boli druh neoddeliteľnou C, ako sme videli. Rovnako ako premenných, my nemusíme určiť návratový typ funkcie, pretože to naozaj nezáleží. A nebudeme špecifikovať dátové typy parametrov, pretože naozaj nemám ohľadu na to, ako sme videli v PHP. Každá funkcia je predstavený pomocou kľúčového slova function. To je to, ako sme sa naznačiť, PHP, ktorý to, čo sme hovorili len o funkcie. A my nemusíme vysporiadať s hlavnou vôbec, pretože tlmočníka, PHP tlmočník, pracuje od zhora nadol, bez ohľadu na to. Ak to považuje môžete urobiť volanie funkcie, bude to ísť nájsť volanie funkcie, aj keď sa jedná neskôr. Ale bude to čítajú zhora dno, takže sa nie je potrebné zadávať, Tu je miesto, kde začať. Môžete začať na riadku 1 z vašich PHP a pracovať odtiaľ. Tak tu je, ako by sme vytvárať funkcia nazvaná hard_square. Je to vraj trvá jeden parameter, ktorý volám $ x. Táto funkcia je komplikované len ilustrovať rôzne veci. Stále máme návratovej hodnoty. Som pomocou cyklu for sem. Ale je to v podstate len, čo to činí je púhych $ x $ x krát. To, čo som vlastne robiť, je jednoduchým pridaním x 0 x krát alebo $ x nula $ x krát. Ale to je presne to účinne rovnaké ako násobenie $ x krát $ x. Stále vrátiť hodnotu, v tomto prípade $ výsledku, a ja som urobil funkciu v PHP. Tu je návod, ako ju môže používať v kontexte. Takže možno, že som vo vnútri nejakého súboru PHP. Všimnite si, že tam v modrom Použil som svoje oddeľovača PHP, uholník otáznik php. Medzi tými sú splnené všetky PHP, že chcem písať. Takže som zrejme bude get-- Chystám sa vyzve užívateľa mi dať číslo, obchod, ktorý premenná, obchod v tejto premennej $ x, všetko, čo mi dal. Potom budem echo hard_square tejto hodnoty, a zrejme bude k obratu na nový riadok ako aj, a potom o niečo neskôr budem definovať funkciu hard_square tak že keď urobím zavolať na hard_square, že vie, o čom hovorím. A teraz, mohol by som tiež urobiť niečo také. To je trochu odlišný. Je to presne takmer rovnako ako to, čo sme videli predtým, s výnimkou toho, ako hovoriť len $ x tam ako parameter pre hard_square, Hovorím $ x = 10. Tak to je príklad defenzívne programovania, stráženie programy proti užívateľovi so zlými úmyslami. To je jeden spôsob, ako urobiť nejaké chyby overenie, či sme naozaj majú ako možnosť v C. Mohli by sme nikdy zadať predvolenú hodnotu niečoho. Vždy sme mali skontrolovať či je, napríklad, ak sme urobili výzvu na getString, to bolo najvhodnejším ak okamžite potom, čo overil, že, sme overili či reťazci že užívateľ nám dala nerovná null, pretože nechceme začať práca s prázdnym reťazcom. Tu, je to spôsob chrániť proti tomu. Pokiaľ užívateľ nám neposkytuje niečo nejako, čo budeme robiť? No, proste budeme hovoriť, čo nemali nám poskytujú, my len tak namiesto toho pripojiť 10. Takže keď nedali nám hodnotu, stačí použiť 10 v predvolenom nastavení. A tak tu, Všimnite si, že robím výzva na hard_square, ale nie je žiadna výzva pre užívateľov, že jo? Ja som len robiť prázdny volanie. Ale moja funkcia hard_square očakáva parameter. Čo sa to bude tlačiť? Bude to vytlačiť 100, nie? Pretože používateľ nie daj mi nič. A tak som len tak predpokladať, že 10-- 10 je predvolená hodnota. A tak by to vytlačiť out 100 na vlastnom riadku. PHP súbory nemajú na byť len jeden súbor. Môžete kombinovať viac súborov dohromady, rovnako ako je to možné v C. Cesta sme, že v jazyku C bola typicky robiť #include sa dostať hlavičkové súbory zašiel. Nechceme urobiť v PHP. Robíme niečo ako require_once. A potom je tu celý tento vec, čo je to __dir__? To je len špeciálne variabilné, alebo špeciálne konštantný, Naozaj, ktorý určuje, čo váš aktuálny adresár. A tak to bude vyzerať v aktuálnom adresári pre súbor s názvom cs50.php v tomto príklade, a to bude držať tento súbor v hornej časti programu PHP, za predpokladu, že ste dal require akonáhle riadok v hornej časti súboru PHP. Takže PHP je primárne používaný, ale nie výhradne používa, ako jazyk pre webové programovanie. To je naozaj, ako to prišlo byť. Ale je to full jazyk, ako sme videli. Videli sme skoro všetky tie veci, že to môže robiť, že sú podobné C, a to môže urobiť sakra oveľa viac než to. Ale pretože je to plná jazyk a my môže urobiť programovanie z príkazového riadku v ňom. Môžeme spustiť programy príkazového riadka. Všetko, čo je potrebné, aby ste spustiť príkaz linka program, ktorý je napísaný v PHP je to, že budete mať tlmočníka PHP. Takže je to niečo analogický má kompilátor v systéme Ak chcete skompilovať C kód premeniť spustiteľné súbory. Musíte mať tlmočníka PHP ktorá existuje v systéme takže môžete interpretovať PHP súbory. Za predpokladu, že ste, a zvyčajne tento interpret sa nazýva PHP, a to je zvyčajne dodávaný s väčšinou sťahovanie alebo inštalácia PHP že môžete získať on-line, a iste meno tlmočníka PHP máme v CS50, IDE. Všetko, čo urobiť, je typ php súboru. A aký je váš program chystá urobiť, je, že je to sa prejsť tlmočník, je to bude ignorovať všetko, čo je nie je medzi otázke mark-- alebo, uholník otáznik php, oddeľovača PHP, a vytlačiť, a to bude interpretovať a spustiť kód vnútri vašich oddeľovača PHP. Takže poďme pop sa k CS50 IDE a sa pozrieť na pár PHP súbory, beží niekoľko PHP súbory, v príkazového riadku rozhranie CS50 IDE. Tak tu sme v CS50 IDE, a ja som dovolil otvoriť súbor s názvom hello1.php. A zdá sa, že obsah tohto Súbor sú len oddeľovače PHP tam, a medzi tým, echo ("Hello, World"). To je celkom jednoduchý PHP programu. Ja som jednoducho ísť posunúť nadol do môjho okna terminálu tu, a budem písať php hello1.php, stlačte Enter. Hello, world. To je asi to, čo sme boli očakáva, že na to, že jo? Poďme hore a vziať iný pohľad na programe. hello2.php. Viacmenej to isté, nie je veľa deje tu. Tentoraz však, budem výzvu Užívateľ dať mi ich mená. Ja používam túto funkciu readline znova. $ Name = readline. To je výzva, "Ako sa voláš?" Zrejme Som tlač to na vlastnom riadku. A potom, takže línia nižšie to bude výzva kde užívateľ môže zadať svoje meno. A potom som pomocou trochu premenná interpelácie tu na linke 3 vytlačiť "ahoj" a čo používateľ zadá. Tak toto je analogický k tvrdeniu, Dobrý deň, čiarka,% s, keď sme používali printf v C. Takže poďme a interpretovať tento program. Takže znovu, budem posunúť nadol k môjmu okne terminálu. php hello2.php. Ako sa voláš? Doug. Dobrý deň, Doug. Mám tiež ďalšie súbor s názvom hello3.php. Chystám sa prečistil displej s Control L, a budem vykonávať to. Ako sa voláš? Doug. Dobrý deň, Doug. Takže správanie je identické hello2.php, ale prečo je to hello3.php? No, tu je ten rozdiel. V tomto prípade oznámenia že na linke 1 tu, Mám niečo, čo nie je medzi oddeľovača PHP. Ja som len tlač out-- alebo I práve zadali, "Ako sa voláš?" Keď interpret PHP vidia, ho nemá potuchy, ako sa interpretuje ako PHP, a tak namiesto toho zlyhanie, je to len bude vypľuť. Takže si všimnúť na riadku 3, môj volanie readline, nie je výzva ešte. Len som vlastne deje, keď to-- interpret PHP vidia, to bude na vytlačenie "Ako sa voláš?" Potom sa uvidí, oh, OK, here's-- všetko ostatné bude interpretované ako PHP, tak že je dôvod, prečo to funguje. Ja nemusím nutne výzva užívateľ to-- vnútro readline, Ja si len mať to vonku z oddeľovača PHP a umožniť tlmočníka len vytlačiť pre mňa. Takže nemáte skutočne mať iba mať jednu sadu oddeľovača PHP vo vašom programe. Môžete si skutočne mať niekoľko z nich, otváranie a zatváranie je podľa potreby. Takže poďme sa pozrieť na pár programov V CS50 IDE, kde sme ilustrujú túto myšlienku mať viac sád vymedzenom PHP. OK, tak som otvoril súbor tu volal add1.php. A všimnite si, čo sa tu deje. Rovnako ako predtým, mám jeden PHP súbor oddeľovača. Idem pre vytlačenie hlásenia, "Prosím, dajte mi číslo." Potom budem čítať linku a uložiť ho do premennej $ num1. Potom som Chystám sa vytlačiť znova. Daj mi druhé číslo. Prečítajte si linku od užívateľa, obchod všetko, čo napísal vo v $ num2. Pridajte ich dohromady a uložiť, aby viesť k premennej nazvanej $ súčet, a potom vytlačiť "The Súčet týchto dvoch čísel je, "a potom interpelovať tam premenná $ suma. Takže poďme stačí spustiť tento cez tlmočníka potvrdiť, že toto je to, čo očakávame. php add1.php. Prosím, dajte mi číslo, 3. Prosím, dajte mi druhé číslo, 4. Súčet týchto dvoch čísel je 7. To je 3 plus 4. OK? Takže nič hrozne fantázie tam. A teraz poďme otvoriť add2.php. Tu, mám pár PHP oddelený súpravy tam, že jo? Linky 1, 3-- riadky 1 a 3 nemajú žiadne oddeľovača PHP. Takže keď tlmočník vidí, že je to len bude vypľuť presne to, čo som napísal tam. Tak to je, kde som si robí všetko moja výzvy. Na tratiach 2 a 4, vidíme veľmi povedomý $? php druh oddeľovača, takže tieto dva riadky chystá spustiť ako PHP. A potom na riadku 5, to mám divné tu, nie? Tento uholník otáznik znamienko rovnosti. Budem dokonca priblížiť trochu ďalej. Môžete vidieť, je to, čo chcem hovorí o práve tam, tento $? =. Ukazuje sa, že je to tak bežné, že dôvod, že sme otvoriť súbor PHP oddeľovača je vytlačiť hodnotu. A to je všetko, čo sa chystáte urobiť. Ale je tu aj skratka pre to. $? = Je skratka pre PHP hovorí, niečo ako $? php echo súčet z num1 a num2. Takže je to len ďalší skratka pre to. Takže keď som spustiť tento program, php add2.php. Budem priblíženie sa trochu. Prosím, dajte mi číslo, 4. Prosím, dajte mi druhé číslo. A pretože som naozaj nestarám o dátové typy v PHP, môžem povedať, 4.8. Súčet týchto dvoch čísel je 8.8. Táto funkcia sa chová celkom veľa presne to isté, ako by sme očakávali, tiež. A mám ešte jednu otvoril sem volal dice.php. Skúste to znova. Mám jednu viac tu nazvaný dice1.php, ktorý tiež, pozri, má tento uhol konzoly otázku označiť znamienko rovnosti notácie tam, ale všimnite si, že v tomto prípade nie som volanie funkcie rand, ktorý ako vy dalo očakávať vygeneruje náhodné číslo. "Valcované si," a bude to vypočítať nejaké náhodné číslo, mod 6 + 1. Takže to mi dať číslo v rozmedzí od 1 do 6. Pamätajte si, že mod 6 by mi číslo v rozmedzí od 0 do 5, ale keď som simulovať hodov kockou, čo je to, čo tu robím, Nechcem tieto kocky ísť z 0 až 5, ja chcem kocky, ktoré idú od 1 do 6. A tak to je spôsob, ako sa dostať me v rozmedzí od 1 do 6. Robím to dvakrát. Tak vraj som valcovanie dve kocky v tomto programe. Tak som si prečistiť obrazovku, a urobím php dice1.php. Môžete valcované 4 a 2. A keď som spustiť program znova, privalil 5 a 5. Takže zakaždým, keď som sa spustiť program, Začínam rôzne čísla, preto, že zakaždým, keď som robiť áno, je to nový začiatok. Bude to vytvárať nové sada náhodných čísel pre mňa. Takže ak sme zvyknutí spúšťanie programov z C, sme zvyknutí písať ./ názov programu, je to tak? To je, ako sme urobili všetko, z našich programov v C tak ďaleko. Môžeme to urobiť v PHP, rovnako tým, že pridá niečo, čo nazýva shebang na vrchol nášho súboru PHP. Ja viem, je to trochu hlúpe slovo. Je to skratka pre hash tresku. To je prvé dva znaky tam. Pamätajte si, hovoríme výkričník často bang vo vede o počítačoch. Taktiež by mohlo byť pre ostrý tresku. Je tu pár spôsobov, ako ju interpretovať. Ale je to v podstate zvláštny druh velenia, že interpret PHP chápe ako, oh, chcem môžete spustiť tento program, čo je zrejme / užívateľ / bin / php, ktorý je vlastne kedy tlmočník PHP konkrétne žije v našom systéme. Tak it's-- čo sa stane, je tu tlmočník chápe, oh, Mám vraj mala používať v tomto programe na spustenie tohto súboru. A tak to vám umožní preskočiť kroku aby musel povedať php something.php. Je tu ešte jedna ďalšia háčik tú, ktorá je, že ak budeme aby naše programy na fungovať podľa očakávania, my musíte urobiť niečo, čo nazýva zmena povolenia súboru. A budeme go-- a budeme hovoriť trochu bit ďalšie zmeny povolenia o súbore v našej video na MVC, ale postačí hovoria, že to je to, čo musíte urobiť, tak, aby vaše .php súbory spustiteľný. Takže poďme sa pozrieť na to, ako náš posledný príklad ako v CS50 IDE. Tak tu v IDE Mám dva súbory v tejto PHP adresár, ktorý nezdá byť volal .php. Mám funkcia nazvaná add-- Mám súbor s názvom ADD3 a súbor s názvom dice2. Takže poďme sa rýchlu vyzerať a otvoriť ADD3. A ako môžete vidieť, na začiatku môjho súboru Mám shebang, že jo? Tento hash značka výkričník. Teraz, budete tiež možno budete Všimnite si, že z nejakého dôvodu, Nemám žiadnu syntax zvýraznenie už, a to je to, čo som spomenul predtým, čo bolo, že ak nemám nazvať svoj súbor .php, nemám výhodu syntax zvýraznenie ešte. Tento súbor je práve volal ADD3. Takže môžem spustiť neskôr s ./ ADD3 a nie ./ add3.php. Takže je to stále reason-- v poriadku, je to stále platný PHP, ale to nie je syntaxe zvýraznené, pretože tento súbor nie je volaná something.php. To je jediný skutočný rozdiel tu, plus shebang. Tak uvidíme, čo sa stane, keď Snažím sa spustiť tento program. ./ ADD3, rovnako ako by som s C. Bash. ./ Povolenie ADD3 nepovolený. To je to, čo budete zistiť, či ste zabudli použitie príkazu chmod k zmene oprávnenia súboru. Ako sa ukázalo, pravidelné PHP súbory nemožno len byť vykonané. Tie môžu byť interpretované, ale my sme robí niečo tu trochu iné. Sme spustením. A tak musím pridať oprávnenie popravy, chmod a + x do ADD3. Potom môžem povedať ./ ADD3. Prosím, dajte mi číslo. 5, 6. Súčet týchto dvoch čísel je 11. Rovnako tak, som už chmoded dice2, tak som si len zadať ./ dice2, ste valcované 1 a 1, vy valcované 5 a 4, a tak ďalej. Tak to je celkom veľa Myšlienka syntaxe PHP, že jo? Je tu veľa prejsť, ja viem. Ale dúfajme, že ste teraz videli, že PHP nie je naozaj tak odlišné od C a nám naozaj dáva možnosť vziať veci do zárezu alebo dva. Nemáme naozaj mať strach moc about-- my naozaj musieť starať príliš o podrobnosti o low-úrovni sa musel obávať s C, nie? Môžeme sa sústrediť na vyššej level veci, ktoré PHP nám umožňuje robiť a brať za samozrejmé, že to bude fungovať pre nás. Tak nám to dáva možnosť teraz, prechodu z C do PHP, aby programy, ktoré sú oveľa viac komplexné a možno oveľa robustnejšie. Takže dúfam, že sa budete baviť prácu s PHP, a ja som Doug Lloyd. To je CS50.