DOUG LLOYD: így már sokat a munka C, és C egy nagyon klassz nyelvet, mert ez ad képes merülni igazán alacsony szinten be a programokat. Kapunk a dolgokat, mint Tényleg percben manipulálásával egyedi bájt memóriát. Emlékezzünk vissza, hogy pointerek nagyon lehetővé teszi számunkra, hogy a rugalmasság. De mindig szükség van hogy finomszemcsés részletességgel programjainkban? Valószínűleg nem, ugye? És ha megyünk, hogy Kompromisszumot kell aközött, hogy képes megtenni nagyon, nagyon perc a dolgokat, és nagyon, nagyon nagy dolog, hogy nem kell azt gondolni, kb, nem kell végrehajtaniuk Ezek igazán nagy ötletek, ha ők már beépített számunkra, általában az épület nagy programok vagy nagy projekteket, mi valószínűleg fog err oldalán Az, hogy több nyelven cucc épült számunkra, ahelyett, Az alacsony szintű cucc. És ez az, ahol a PHP igazán jön be. Most, az egyik oka hogy tanítunk PHP CS50 az, hogy ez erősen inspirálta C. És valóban, véleményem szerint, ott tényleg két progenitor nyelvek Nagyon gyakori manapság. C és a Lisp. És ők progenitor nyelveken mert minden más modern programozási nyelven, hogy a kifejlesztett Azóta ihlette által az egyik vagy a másik szintaktikailag. PHP-ben nagyon hasonló szintaktikai C, míg a nyelvek, mint a rendszer, például, amely lehet, hogy nem hallott, erősen inspirálta a nyelven nevű LISP, ami egy régebbi nyelvet. Tehát az ok, amit tanítunk PHP CS50 az, hogy ismeretében C mint alapvetően mint te ezen a ponton, felvette a PHP, amely megadja a képesség, hogy nem sokkal magasabb szintű dolgokat mint a C-nek, nem olyan nagy akadály, mert már van a alapgondolata a szintaxis. C 'körül szinte 45 éves ezen a ponton. PHP már körülbelül 20 éve. És abban a 25 évben között, programozók elhatározták, hogy mennyi Inkább magasabb szintű képességek, és az elkövetett hibák és a küzdelmek A 20 év között vezetett PHP és egyéb modern nyelvek. PHP a nagy választék nyelvét szoftver hogy allow-- számára szoftverek hogy-- ahol kell csinálni a dolgokat, hogy a C valójában bonyolult. Így például, a munka A húrok C nagyon bonyolult, mert mint tudjuk, húrok C tényleg csak tömbök karakter. Ez nem egy beépített adattípus. Vagy talán még lényegesebb, valami, amit nem is terjed ki a C, mi van, ha meg kell csinálni Egyes számítógép-hálózatok? Minden rendben? C képes csinálni, de annyira misztikus és így nehéz ténylegesen. Nem lenne jó, ha a nyelv volt egy beépített, egyszerű módja végrehajtásához hálózatépítés? És PHP nyelv ami ezt, vagy elősegíti, hogy egy kicsit több. Mint mondtam, PHP-ben nagyon erősen inspirált C. A szintaxis nagyon hasonló. És ez így remélhetőleg, hogy a átmenet az egyik a másik Egy kicsit lágyabb, mint néhány Más nyelveken lehet. Írásához PHP, csak nyissa fel egy fájlt a .php fájl kiterjesztését. Technikailag ez nem valóban szükséges, de ha akarod, a dolgok, mint szintaktikai kiemelve az IDE, hogy a típus nevek, vagy változó neve, beosztása, Tudod, a kulcsszavak a nyelven kiemelve a egyedi szín, akkor általában szeretné elnevezni a fájlokat Egy adott fájl kiterjesztését. Így már elemzi a fájl egy .php kiterjesztése, de akkor is a PHP, minden PHP kódot írunk, hogy fájlt kell csatolni ezekben PHP határolójelek hogy látjuk itt a képernyőn. Hegyes zárójel? Php kezdeni. Aztán írunk minden kedves PHP kódot, amit szeretnénk a kettő között. És akkor ? hegyes zárójel zárja. Ha ezt nem tesszük meg, akkor mi fog történni? Ez nem fog zuhanni. Ez nem fog valóban tönkreteheti a programunk. De ez nem megy, hogy a hatás, amit szeretnénk. Mi fog történni, tényleg, hogy amikor megpróbáljuk, és a program futtatásához, mindent nem azok között határoló fog kinyomtatható szó szerint. Ez nem fog ténylegesen végre a kódot, ez lesz most nyomtassa ki szó szerint. Most miért ez a helyzet? Tehát C, amit ismert, mint egy összeállított nyelvet. Te bizonyára ismeri azt a lépést, hogy a programok, fordult a .c fájlok és .h fájlok egy végrehajtható make, különösen a Csengés, mint a mi fordító. PHP, bár nem ezt azzal egyenértékű. PHP, amit hívják értelmezett nyelv. És ez mit jelent? Nos, ez azt jelenti, hogy nem kell átalakítani a forráskód nullák előzetesen. Inkább van egy programot, amely más néven PHP, amely megérti a PHP és lehet valami, hogy ez a menet. Ez nem igazán pontosan pontos, de ez egy nagyon jó analógia hogy mi történik. Ez ezeket értelmező nullák és egyesek a repülésre. És így, ha nem tudja, hogyan kell feldolgozni valamit, ha nem tudja, hogyan kell folyamat PHP, akkor valószínűleg akarta tenni, hogy a szöveg ott, ugye? Valószínűleg akarta tenni a kódot ott, akkor is, ha ez nem közötti PHP-- A PHP zárni. De-- így ez nem fog törölni az Ön számára, ez csak fog alapvetően megválni tőle. Így fog nyomtatni ki a képernyőre. Ez úgy tűnik, mintha ez egy rossz dolog, de valójában ez lesz igazán jó dolog, mivel mi látni, amikor arról beszélünk, PHP webfejlesztés, mert azt jelenti, hogy közbeszór PHP és HTML. Mi lehet használni őket össze, hogy egy dinamikusabb weboldalt. De még az, hogy a video PHP webfejlesztés. Tehát mi a szintaxis a PHP? Ez az, amit ez a videó szól. Beszéljünk róla. Szóval indulni, változók. PHP változók léteznek. Már csak két nagy különbségek C. Az első az, hogy van nem típusleíróval. Nem kell mondanom, int, char, float, minden ilyesmi. Mi nem kell tennie, hogy többé. A PHP egy modern nyelvet. Meg lehet kitalálni, mit te akar csinálni, vagy hogy egy bevált Gondolom, hogy mit akar csinálni. Szóval ez nagyon szép. A másik dolog az, hogy az összes változó neveket kell kezdeni egy dollár jelet. Ez csak valami szokni. Ez egy kicsit furcsa, mert ez olyan, hogy a PHP megérti mi az a változó, és mi nem. Szóval minden változó neve kezdődik egy dollár jelet. Tehát C mondhatnánk valamit mint ez, int x = 54. Nem kell csinálni, hogy már a PHP. Mi csak annyit $ x = 54. És azt mondhatnánk, például a C- ha már font-tartalmazta a CS50 .h header fájlt, mondhatnánk karakterlánc kifejezés = "Ez CS50." Mi nem kell tennie, hogy a PHP, mégis. Mi csak annyit $ kifejezésre = "Ez CS50." És valóban, húr most beépített adattípus PHP- vagy inkább a PHP amit egy string. Ez külön egy tömbben A karakterek, mint ez a C Minden kedvenc feltételes nyilatkozatok C továbbra is elérhető Önnek. Így nem nagy átmenet van. Mi lehet say-- mi lehet ha a nyilatkozatok, mint ez. ha a $ y 43, vagy $ z = 15. Szóval ez elég egyértelmű. Mi lehet akkor és mást. Mi lehet akkor és mást, ha. És észre valamit nagyon szép itt, és ez a egyfajta egyike azoknak Előnyei PHP versus C, értesítés milyen funkciót mi nem használjuk itt? Mi használ == összehasonlítani a változó, $ nev, hogy egy string. Mi ezt nem tehette meg a C, ugye? Meg kellett használni a funkciót nevű StrComp vagy StrEndComp vagy bármely a vele kapcsolatban álló unokatestvérek. És így már látjuk ezeket az előnyöket. Nem kell, hogy tegyen valamit buta vagy talán unintuitive a hívás olyan függvény is StrComp ha csak azt akarom, hogy teszteljék hogy egy érték megegyezik egy húr. Tudtam csak használni egyenlő az egyenlők, mint amit tehettem mást. Szóval van egy előnye. Néha, az úton, lehet, lásd még ha egy szó, elseif. És ez rendben PHP is. Így néha lehet látni, hogy. Ez nem elírás. PHP valóban meg is érti elseif. Nem tudom, miért úgy határozott, hogy, hogy, de ahogy már sokszor láttuk egész videóinkat eddig, mi programozók szeretik, ha tehetünk a dolgok gyorsan, így megszabadulni, hogy a tér nyilvánvalóan a nagy előnye. Szóval ez if. Mi is a háromkomponensű üzemeltető, visszahívási kérdőjel vastagbél, az igazán rövid űrlapot, ha mást vagy feltételes elágazás. És úgy tűnik, ebben a, mit is próbálunk csinálni itt van hozzá a változó $ írni igaz vagy hamis, attól függően, hogy $ valtozo alfabetikus karakter. Szóval ez elég hasonló a isalpha hogy vagyunk tisztában a C. Ez a fajta az egyenértékű PHP. A funkció láthatóan nevű ctype_alpha, de ez hogyan csináljuk a PHP. Szóval az egész lesz az, ha $ valtozo egy levél, $ írni igaz. Ha a $ var nem írni, $ levél hamis. Mi is switch kimutatásokat is. Gondolunk azokra származó C is. Legtetején van, hogy hogyan csináljuk valami ilyesmit get int, vagy kap húr. Tehát a PHP-nek, hogy épített. Nem kell a CS50 könyvtár többé. Mi is csak használni a funkciót readline. Hogy ez mit fog csinálni a nyomtatási azt az üzenetet, "A állam, please "majd villogó prompt várja, hogy a felhasználó bemeneti néhány információt. Most vegyük észre, mi mást tehetünk kapcsolóval. Ha korábban is használtam, Talán emlékeznek, hogy kapcsoló korlátozódik elég sokat egészek és karakter, de most már tudjuk használni szálakat. És valóban, a switch PHP egy kicsit rugalmasabb mint a unokatestvére C. Hurkok. Csakúgy, mint a feltételes mód, az összes a régi kedvencek még mindig ott vannak. Van while számítanak 1-100 ebben az esetben. Mi már nem, miközben hurkok számítanak 1-100, és mi van a hurok számítanak 1-100. Tehát nem nagy ugrás van. A szintaxis elég sokkal pontosan ugyanaz, kivéve, hogy most mi használ dollár jel változó helyett nyilvánításának integer vagy valami ilyesmi a mi számlálók. Itt, ahol a dolgok egy sokkal jobb, mint a C, mégis. Tömbök. Szóval emlékszem, amikor mi voltunk beszélünk C, annak érdekében, számunkra, hogy növekszik és csökken információkészletek, mi szükség van egyfajta alapértelmezett hogy ezt az ötletet egy láncolt lista, mert a C tömbök rögzítették méretű. Nem zsugorodik őket. Nem növekedni őket. Meg kellett átcsoportosítása memória és mindezt őrület vagy használja láncolt listák, amelyek vegye fel egy kicsit több helyet. De PHP tömbök Nem fix méretű többé. Ők nőhet, és lehet zsugorodik. Tehát még egyszer: a 20 év, hogy létezett között az első kiadás a C és az első kiadás PHP, úgy döntöttünk, hogy tudod, akkor lenne igazán nagyszerű ha meg tudnánk csinálni. És így végre ezt. Tehát PHP tömbök nem rögzített mérete, és mivel a PHP nem igazán Van programozó utcára néz fogalmát típusú, tudjuk keverni adattípusok a mi tömbök is. Tehát nem is kell, hogy minden egészek, vagy az összes lebegő pontokat, mi lehet vegyesen is Különböző egyetlen tömbben. Nyilvánító tömb elég egyértelmű. Olyan ez, mint bármilyen más változó. $ nums = array (1, 2, 3, 4), tömb a függvénye ami épített PHP hogy létrehoz egy tömböt az Ön számára. Ez egy tömböt hoz létre négy értékeket, számok ebben az esetben, az úgynevezett $ nums. És van több, mint egy módja annak, hogy csináld. És megyünk látni ezt a sok PHP. PHP által kifejlesztett számos különböző az emberek és a nő és nő és nő. Általában mindig van nem csak két, vagy Három módon, hogy tegyen valamit a PHP, ott általában 10, 20. Itt is csak egy újabb közös módja annak, hogy egy tömböt. $ nums = szögletes zárójel 1, 2, 3, 4. Tehát ez a fajta hasonlít a C szöge br-- kapcsos zárójel jelölést, inkább. $ - vagy lenne int nums téren zárójelben egyenlő göndör merevítő 1, 2, 3, 4. A PHP ez $ nums = téren zárójelben 1, 2, 3, 4. De mind a két példa erre, hogy nekem egy sor négy ebben az esetben egész számokat. Mit tegyünk, ha a forduláshoz valamit most? Hát én csak annyit $ nums 4, amely megint, még mindig jobbról 0 itt PHP, akkor az ötödik elem a tömb. Én csak azt mondom, hogy. Nem fogok szenvedni egy seg Hiba, mert a tömb csak nőni fog befogadni ezt. Ez elég szép, ugye? És valóban, nem is kell, hogy adja meg, hová akarok mondani. Én csak azt mondom ezt, és csak tack meg közvetlenül, hogy a végén, Vagy akár akár csak mondjuk $ nums 20 vagy 1000. Ez nem igazán számít. Még mindig csak fog tack meg közvetlenül a végéig. Szóval én is nő, és as-- vagyunk Nem fog ellepje itt, de azt is toldja meg, és szalag elemeket ki a tömb is, és a tömb zsugorodik elhelyezésére hogy most hiányzik vagy üres helyet. Van egy másik módja a forduláshoz valamit rá egy tömb, amely egy olyan függvény is array_push. Tehát újra, csak ez a gondolat, hogy képes megtenni dolgokat sokféleképpen. Így láttuk három különböző módon most a forduláshoz egy másik elemmel, egy tömbben. Tehát ez egy újabb elem hogy a végén a $ nums tömb. És mi lehet összekeverni a adattípusok. Így tudtam egy sor nem 1, 2, 3, 4, de az 1, igaz, 3, 4, ahol igaz egy logikai, majd ha azt akarom, hogy host másik elem E tömb, talán egy húr, a húr "öt" Én nem tudta elérni. És most én tömb lenne 1, igaz, 3, 4, öt. A szó öt, nem pedig egész 5. Szóval egy nagy rugalmasságot ott. A rugalmasság kap még jobb, mégis, mert PHP támogatja valamit nevű asszociatív tömb. És valami homályosan beszélt mintegy asszociatív tömbök a C összefüggésben a hash táblák, mert mi asszociatív tömbök valóban minden mintegy teszik kulcs érték pár leképezés. És ebben az esetben, a keys-- ha vagyunk tisztában tömbök a C, A kulcsok index számokat. 0, 1, 2, 3. És az értékek, amit találunk, hogy tömb 0, 1 tömb, tömb 2, és így tovább. Tehát a gombok indexek, és az értékek mi van a tömbben található, által meghatározott indexnek. De a PHP, nem kell ezt fogalmát tömb 0, 1 tömb, tömb 2 többé. Most már használhatja a tényleges szavakat feltérképezni gombokkal értékeket. És így tudtam mondani valami ilyesmit. Nem tudtam létrehozni egy tömböt használ a szögletes zárójel szintaxis a következő. $ pizzák = szögletes zárójel "sajt", majd ez a fajta kettős nyíl jelöléssel, 8.99 "paprikás" nyíl 10.99-- 9,99, stb. És így, mi folyik itt? Mi vagyok én valójában csinál? Hozok létre kulcs-érték párt leképezést. Tehát ahelyett, hogy például kimondjuk, pizzák 0, 1 darab, pizzák 2, Én most azt mondják pizzák sajt, pizza pepperoni, és nézze meg az értékeket velük kapcsolatban. Tehát itt van a kulcs a zöld. Sajt, pepperoni, zöldség, bivaly csirke. Itt látható a nyíl, ami ez a kulcs-érték párt feltérképezése. És akkor itt szereplő értékek A tömb helyét. Szóval ez, mintha azt mondanánk tömb 0értéke 8.99. A kulcs a 0. Az érték 8,99. Én most azt mondják tömb sajtot, vagy e esetében pizzák, sajtok a kulcs, és mit találok pizzák sajt 8.99. Ez az érték, amit találok ott. Szóval lehet ilyeneket mondani. $ pizza sajt = 7,99. Mondjuk én magam egy eladó. Azt akarom dis-- akarok dobni Az ár a sajtos pizza. Vagy tudom használni a növényi pizza részeként egy állapot, vagy én is hozzá egy új elemet, hogy én tömb, akárcsak tehettem korábban. Azt is hozzá egy új elemet erre asszociatív tömböt kulcs "szalonna" és az értéket 13.49. De ez a fajta bevezet egy probléma, Ha belegondolsz egy pillanatra. Hogyan tudnánk halad végig ez a tömb? Jobbra? A C-ben, mi lenne csak egy A hurok, jellemzően, hogy futna 0 és a a tömb méretét mínusz 1. A tömb n elem a, a Érvényes indexek 0 n mínusz 1. Így tudtuk használni a for ciklus Lépjünk át Minden egyes elem. De ez nem igazán A helyzet már, ugye? Most hol van kulcs-érték párt leképezés hol vannak a kulcsok szó, hogyan végighaladni összes szóval? Nos, szerencsére a PHP-nek olyan módon, hogy ezt is, és így fogunk ugrik vissza a hurkok a második bevezetni egy negyedik fajta hurok létezik PHP úgynevezett foreach ciklus. És mi az a foreach ciklus tesz, ez alapvetően ugyanaz a gondolat. Akkor használja bármilyen fajta tömb. De ez alapvetően a Ugyanez a gondolat, mint a for ciklus, kivéve használata helyett mutatószámok, csak Van ez a fura szintaxist, ahol hívja minden egyes eleme nevét E hurok. Tehát ebben az esetben, foreach ($ tomb as $ kulcs). Alapvetően, hogy megjegyzést megjegyzi, belsejét, hogy foreach ciklus, ez megy, hogy menjen át minden egyes eleme $ tömb, amely jellemzően lesz egy asszociatív tömb, de lehet igazán bármilyen tömb kívánt PHP. És minden alkalommal, hogy a egy for ciklus lehet, hogy azt mondták $ tomb szögletes zárójelben $ i, akkor is csak mondjuk $ gombot. Annak érdekében, hogy a $ kulcs alias lesz minden indexe a PHP asszociatív tömb, és így használni, mint ezt. Így például, mi már Most kaptuk meg pizzák tömb. Már fajta begyömöszölte a sarokban van így tudjuk használni, hogy csinál egy gyors példát. Ha azt mondom foreach ($ pizzák $ pizza), nos, mi történik? Nos, megyek halad végig minden egyetlen elem a tömb $ pizzák, és ezáltal fogom hívni minden eleme, amikor nem vagyok benne A testület, hogy a hurok, $ pizzát. Szóval ez egyfajta stand-in, emlékszem, hogy a $ pizza egy stand-ban, mert azt mondta $ pizzák szögletes zárójelben $ i ha mi is egy for ciklus, ahol mehet a $ i = 0, ebben az esetben, $ i = 3. Ha nem volt kulcs érték párok itt, ez lenne elem 0, 1, 2, 3, és mi volna használni egy for ciklus menni $ pizzák 0, $ pizzák 1, $ 2 pizzák, $ pizzák 3. Tehát most mindössze $ pizza helyett az adott egyén számára kulcsfontosságú. Tehát mi fog ez kinyomtatni? Én kinyomtatásával $ pizzát. Mit fogok találni at-- ha én kinyomtatni $ pizzák, $ i? Jobbra? Ha fogom kinyomtatni Az i-edik elemét pizzák, mit fogok nyomtatni? Megyek, hogy nyomtassa ki a értékeket az adott helyen, ugye? Mint ha csinálunk ez összefüggésben a C, mi általában nem használja a bejáró változó, int i = 0, i kisebb, mint 3, i ++, kinyomtatni 0, 1, 2, 3. Mi kinyomtatásával tömb 0, tömb 1, 2 tömb, tömb 3. És akkor mi van ebben kiírja ez. Ez a lista árak. 8,99, 9,99, 10,99, 11,99. Most egy gyors megjegyzés itt. A foreach ciklus nem feltétlenül nyomtassa ki dolgokat. Ez nem garantált. Ez általában akkor. Ez általában az a sorrend, amely elemeket adunk a tömbhöz, így csak viselik, hogy az elme. Lehet, hogy nem azért. De egy foreach ciklus lesz ismételget szerte minden elemét A tömb a kérdéses. Ebben az esetben, ismét, hogy a tömb $ pizzák. Meg tudom változtatni a szintaxist, bár, ha Azt akarom, mind a kulcsot és az értéket. Ahelyett, hogy $ pizzák $ -os pizza, mondhatom ezt. És ha megnézi amit én a zöld szín jelzi itt, úgy néz ki, mint egy kulcs-érték párt feltérképezése. És így ha you-- akkor is, ha nem teljesen biztos benne, mit fog tenni, valószínűleg kitalálni hogy a $ feltöltési megy hogy a legfontosabb ebben az esetben, és $ ára lesz az értéke. Úgyhogy helyett most minden elemét A $ pizzák, mint egy kulcs-érték párt, és most nézze meg a gombot, és Az érték, ami hasznos, például, a következők szerint. "Egy egész" - ez egy csomó nyomtatás folyik here-- "Egy egész" feltöltési "pizza ára $" ára, majd Azt ki kell nyomtatni egy pont, és egy rep n. Tehát most, értesítést megint férhetnek hozzá kulcsfontosságú, $ öntettel, és egy értéket, $ áron. Így tudod kitalálni, mi ez fog nyomtatni? Van egy csomó print utasítás, de már csak egy backslash n, így fog nyomtatni valamit Egy entire-- egyetlen kódsort. Ha tudok, olvassa el a kulcsot és ez az érték, akkor most, ahelyett, hogy csak képes kinyomtatni az árak, Én ki is nyomtathatja, valami ilyesmi. "Egy egész sajtos pizza ára 8,99 $." És most én vagyok a minden a keys-- sajt, szalámi, zöldség, bivaly chicken-- és az értékeket. 8.99, 9.99, 10.99, 11.99 Tehát hogy csak egy másik módja hogy nem egy foreach ciklus, hogy ahelyett, Csak így hozzáférést azokhoz az értékekhez, ez csak ad you-- ez ad Belépés a kulcsokat és értékeket. Tehát kinyomtatásával információkat. Már megtettem pár különböző módon, lehet, hogy észrevette. A két funkció voltunk elsősorban láttam a nyomtatott és az echo. És elég sok minden cél és célokra, ők pontosan ugyanaz. They're-- van egy nagyon finom különbséggel, hogy nem is érdemes bekerülni, de alapvetően mindenütt akkor a nyomtatási akkor talán használni echo is. És ez nem az egyetlen kettő. A PHP egy csomó más módon nyomtathatja dolgokat, és azt is milyen lehetőségek vannak az változók közepére húr. Tehát visszahívja a C, ugye emlékszem, milyen funkciót tudjuk használni, hogy helyettesítse változók a dolgokat akarunk kinyomtatni? Valószínűleg használja ezt működik elég sokat. printf, ugye? Szóval ez az, amit azelőtt belül Az összefüggésben a foreach ciklus. Mi volt ez az öt Külön print utasítás, mert ez volt az egyetlen Én úgy ismertem igazán idején hogyan lehet kinyomtatni az üzeneteket. Nem tudtam, hogyan lehet integrálni a változó $ feltöltési az én PHP kódot. Nos, ha én csak hozott vad hiszem, printf, hogy valójában működött volna. printf egy olyan funkció, hogy tudom használni PHP, ahogy én is hozzá tudjon C. És így valami ilyesmi, printf, megint vagyunk tisztában ezzel. Az első% s helyébe melynek értéke $ feltöltés. A második% s helyébe melynek értéke $ áron. És így vagyok interpelláló, ami csak egy divatos módon A mondván én vagyok maradva a változók erre a helyre. Úgyhogy dugulás $ csúcsán, ahol a piros% s és $ áron, ahol a kék% s van, és akkor én kapta meg az üzenetet, "Egy egész sajtos pizza ára 8,99 $." Nem csak úgy lehet csinálni, azt hiszem. Talán azt akarja használni ezt a módszert. Ez tulajdonképpen mi a leggyakrabban nevű változó interpelláció. Tudom használni a visszhang. Jól jönne egy nyomtatási is, mint látni fogjuk. De mi történik itt? Először is, azt kell menekülni a dollár jel. Mert emlékszem, amikor mi volt valójában kinyomtatásával az árak a pizzák, Én valójában formázás őket monetáris számok egy dollár jelet. De mi használ dollár jeleket is képviseletére változó nevét PHP- és különösen, ha én vagyok ezzel a módszerrel a göndör zárójel változó interpelláció módszer, szükségem menekülni én dollár jelet, így nem hiszem beszélek változó. Ez lesz ténylegesen, Szó nyomtatni egy dollár jel. Tehát egyfajta analogize hogy amit látsz a végén van. Ez valójában nem print backslash n, igaz? Kinyomtat egy új sor karakter. Ez is-- ez nem fog print backslash dollár jel, ez meg fog kinyomtatni csak egy dollár jel karaktert. Ugyanezt a gondolatot. Az Escape szekvenciákat, mit Ezért nevezik. De észre, hogy nem teszek bármiféle% s cserék, Én csak a szó szoros értelmében dugulás Ezekben változók. És így this-- mi fog történni itt az, hogy a értéke $ topping-- ismét, Csak összhangban amiken beszélünk, így far-- sajtot kapnánk dugva ott. És $ ár lenne bármilyen értéke A pizzák, szögletes zárójelben, sajt, ami 8,99. És így ez is ki kell nyomtatni "Egy egész sajtos pizza ára 8,99 $." És mint mondtam, nem tudtam használni print itt nem visszhang, és a funkcionalitása nagyjából pontosan ugyanaz. Úgy nyomtassa ki ugyanezt. Van egy másik módja annak, hogy csinálni, és ez egy újabb előny PHP dolgozó szálakat. Tehetünk szövegösszefűzés. Ezt megtehetjük a C is, függvény segítségével, úgynevezett strcat, de a lényeg, meg kellett hívja funkciót látnak el. Ez volt az egész káosz csinálni. Meg kellett font-tartalmazzák string.h. Ez volt a termelés, ugye? De most már csak használni ezt a pontot üzemeltető összefûzését húrok együtt. Úgyhogy összefűző "Egy egész" és akkor bármi értéke $ feltöltési, majd egy másik húr, "pizza költségek $" majd összefűzése bármi az értéke $ ár, majd a legvégén vagyok tacking korabeli backslash n. És így ez is nyomtassa ki "Egy egész" - ismét, Ha beszélünk az első eleme, hogy a pizzák array-- "Egy egész sajtos pizza ára 8,99 $." Időszakban, backslash n, ismét a A $ feltöltési és $ ár helyettesítő amit mi volt megadva a mi foreach hurok, mint a kulcs-érték párt feltérképezése. PHP képes kezelni funkciókat. Funkciók volt egyfajta elválaszthatatlan a C, mint láttuk. Mint változók, akkor nem kell adja meg a visszatérési típus a funkciót, mert nem igazán számít. És mi nem adja meg a adatok paraméter típusát, mert nem igazán anyag, mint láttuk a PHP. Minden funkció be A funkció kulcsszó. Mi így jelzik a PHP, hogy mit beszélünk függvénye. És nem kell foglalkozik fő egyáltalán, mert a tolmács, a PHP tolmács, működik a tetejétől az aljáig, attól függetlenül. Ha úgy látja, lehet, hogy függvényhívás, akkor az Keressük a függvényhívás, akkor is, ha csak később jön. De ez meg fog olvasni fentről alján, így nem kell megadnia, Itt, ahol kezdeni. Elkezdi 1-es vonalon a PHP és a munka le onnan. Tehát itt van, hogyan is kellene létrehozni olyan függvény hard_square. Ez látszólag úgy egy paraméter, amely hívom $ x. Ez a funkció csak bonyolult hogy bemutassa a különböző dolgokat. Még mindig van visszatérési értékük. Én használ egy hurok itt. De ez alapvetően csak, mi ez a összege mindössze $ x-szer $ x. Amit én valójában csinál éppen hozzátéve x 0 x-szer vagy $ x nullára $ x-szer. De ez gyakorlatilag pontosan ugyanaz, mint megszorozzuk $ x-szer $ x. Még mindig vissza értéket, Ebben az esetben a $ eredmény, és Csináltam egy függvény a PHP-ben. Itt van, hogyan lehet használni a kontextusban. Így talán én vagyok benne néhány PHP fájlt. Figyeljük kék nézve, hogy Én is használtam én PHP határoló, hegyes zárójel kérdőjel php. A kettő között ezek mind a A PHP, hogy akarok írni. Úgyhogy nyilván fog get-- Megyek figyelmezteti a felhasználót hogy adjon nekem egy számot, boltban, hogy változó, áruház, hogy változó $ x, amit adtak nekem. Aztán megyek echo hard_square az az érték, és látszólag megy a forduláshoz új sorban valamint, majd később Megyek a függvényt hard_square így hogy amikor azt, hogy a hívja a hard_square, tudja, hogy mit beszélek. Most azt is megtehetik valami ilyesmi. Ez kicsit más. Ez majdnem pontosan ugyanaz, mint amit korábban láttunk, kivéve ahelyett, hogy csak $ x ott a paramétert hard_square, Azt mondom, $ x = 10. Tehát ez egy példa defenzív programozásra, őrzés a programok rosszindulatú felhasználók ellen. Ez az egyik módja annak, hogy némi hiba annak ellenőrzése, hogy mi nem igazán van, mint egy lehetőséget a C. soha nem tudtuk az alapértelmezett érték valamit. Mindig volt, hogy ellenőrizze hogy az, például, ha egy hívást, hogy getString volt leghelyesebb, ha Közvetlenül azután, hogy ellenőrizni, hogy megnéztük hogy a húr hogy a felhasználó adta nekünk nem egyenlő null, mert nem akar kezdeni dolgozik egy üres szöveg. Itt, ez egy módja védekezni ez ellen. Ha a felhasználó nem adja meg nekünk valamit Valahogy, mit fogunk csinálni? Nos, mi csak mondani, amit mert nem biztosították számunkra, mi csak megy, hogy csatlakoztassa a 10 helyett. Tehát, ha nem ad nekünk egy értéket, csak használja 10 alapértelmezés szerint. És így van, észre, hogy én vagyok így A felhívás a hard_square, de nincs prompt a felhasználó, ugye? Én csak így egy üres hívást. De a funkciót hard_square vár paraméterként. Mit fog ez kinyomtatni? Meg fog kinyomtatni 100, ugye? Mivel a felhasználó nem adj semmit. És így én csak fog vállalni hogy 10-- 10 az alapértelmezett érték. És így ez lenne kinyomtatni ki 100 külön sorban. PHP fájlt nem kell hogy csak egyetlen fájl. Így több fájlokat együtt, mint te is a C módja tettük, hogy a C jellemzően nem egy #include kap header fájlokat húzta be. Mi nem ezt, hogy a PHP. Nem teszünk valamit az úgynevezett require_once. És akkor ott van ez az egész a dolog, mi ez __dir__? Ez csak egy speciális változó, vagy különleges állandó, Tényleg, hogy meghatározza, hogy milyen az aktuális könyvtár. És ez így fog kinézni az aktuális könyvtárban Egy nevű fájlt cs50.php Ebben a példában itt, és ez meg fog ragaszkodni, hogy a fájl a tetején a programunk, feltételezve, hogy amit tesz a igényelnek egyszer sort a tetején a PHP fájlt. Tehát PHP elsősorban használt, de nem kizárólag, mint egy nyelv a webes programozás. Ez tényleg így került lennie. De ez egy teljes nyelvet, ahogy láttam. Láttuk elég sok minden a dolgokat hogy meg tudja csinálni, amelyek hasonlóak a C, és meg tudja csinálni a fene sokkal több annál. De mivel ez egy teljes nyelvi és tehetünk parancssori programozási benne. Mi lehet futtatni parancssoros programokat. Minden, ami szükséges egy parancs futtatható line programot, ami PHP-ben íródott az, hogy van egy PHP interpreter. Tehát ez a fajta analóg amelynek fordító a rendszer Ha azt szeretnénk, hogy fordítsa le a C kód hogy átalakítsuk azt futtatható fájlokat. Be kell, hogy a PHP értelmező hogy létezik-e a rendszer így értelmezi a PHP fájlokat. Feltéve, ha nem, és általában ez a tolmács hívják PHP, és ez általában a csomagban a legtöbb letöltés és telepítés a PHP hogy lehet kapni az interneten, és minden bizonnyal a neve a PHP értelmező mi van a CS50, IDE. Minden, amit csinál a típusú php fájl. És mi a program eredménye, hogy ez fog végigmenni a tolmács, ez figyelmen kívül hagy mindent, ami Nem a kettő között forgó mark-- vagy, hegyes zárójel kérdőjel php, A PHP határolójelek, és nyomtassa ki, és ez lesz értelmezi és végrehajtja a kódrészletet a PHP zárni. Úgyhogy pop át CS50 IDE és Van egy pillantást néhány PHP fájlt, fut egy pár PHP fájlok, a parancssori felület a CS50 IDE. Tehát itt vagyunk CS50 IDE, és vettem a bátorságot, A fájl megnyitásakor nevű hello1.php. És úgy tűnik, a tartalmát fájl csak a PHP határoló ott, és a kettő között, echo ("hello, world"). Ez egy nagyon egyszerű PHP program. Csak megyek, hogy lépjünk le az én terminál ablakban itt, és megyek írja php hello1.php, nyomd meg az Entert. Helló Világ. Valószínűleg ezt voltunk számítok rá, hogy nem, ugye? Menjünk fel, és vegye Egy másik nézd meg a programot. hello2.php. Nagyjából ugyanaz a dolog, Nem sok folyik itt. Ezúttal azonban, fogok kérni A felhasználó adja meg a nevüket. Én a readline, hogy ismét. $ name = readline. Ez a prompt, "Mi a neved?" Úgy látszik, én vagyok nyomtatás ez a saját járatán. És akkor, így a vonal alatti ez lesz a prompt ahol a felhasználó adja meg a nevüket. És akkor én egy kicsit változó interpelláció itt a 3. sorban kinyomtatni "Hello", és amit a felhasználó beír. Tehát ez analóg mondván, Hello, vessző,% s ha mi is a printf C-ben Szóval menjünk és értelmezni ezt a programot. Szóval megint fogok lépjünk le az én terminál ablakot. php hello2.php. Mi a neved? Doug. Szia, Doug. Nekem is van egy másik nevű fájlt hello3.php. Megyek törlöm képernyőn a Control L, és fogok végrehajtani, hogy. Mi a neved? Doug. Szia, Doug. Tehát a viselkedés megegyezik hello2.php, de miért van az, hello3.php? Nos, itt van a különbség. Ebben az esetben, értesítés hogy 1-es vonalon van, Van valami, ami nem között a PHP zárni. Én csak a nyomtatás out-- vagy én csak gépelt, "Mi a neved?" Amikor a PHP értelmező látja ezt, Fogalma sincs, hogy hogyan értelmezzük azt a PHP, és így ahelyett, ennek hiányában, ez csak fog köpje ki. Szóval észre a 3. sorban most, az én döntésem, hogy readline, nincs azonnali többé. Én csak tényleg lesz az alábbiakra: ha A PHP értelmező látja ezt, ez meg fog kinyomtatni "Mi a neved?" Aztán látja, oh, OK, here's-- minden más lesz értelmezni, mint a PHP, így ezért ez működik. Nem kell feltétlenül kérdezi A felhasználó az alábbiakra: belsejében Readline Én is csak azt a külvilág felé A PHP határoló és lehetővé teszi a tolmács hogy csak nyomtassa ki nekem. Szóval valójában nem csak a hogy egy sor PHP határoló a programban. Akkor valójában több közülük, nyitó és záró őket, ha szükséges. Szóval vessünk egy pillantást egy pár programok A CS50 IDE ahol Ennek illusztrálására gondolat, Több csomag határolt PHP. OK, így már megnyitott egy fájlt Itt az úgynevezett add1.php. És észre, mi történik itt. Csakúgy, mint korábban, van egy Egyetlen PHP készlet zárni. Megyek, hogy nyomtassa ki a Üzenet: "Kérlek, adj egy számot." Akkor fogok olvasni egy vonalat, és tárolja a változó $ num1. Akkor megyek, hogy nyomtassa ki újra. Adj egy második számot. Olvassa el a sorban a felhasználó, áruház amit csak beírtam a $ num2. Add össze őket, és tárolja, hogy eredményezhet változó neve $ összeget, majd nyomtassa ki, "A ezek összege két szám az, hogy "majd interpellál ott a változó $ összeget. Úgyhogy csak futtatni ezt a tolmács annak igazolására, hogy ez az, amit várunk. php add1.php. Kérem adjon nekem egy számot, 3. Kérem, adja meg a második számot, 4. Ezek összege két szám 7. Ez 3 + 4. OKÉ? Tehát semmi szörnyen divatos van. És most nézzük nyit add2.php. Itt van egy pár PHP tagolt készletek vannak, ugye? 1-es, 3-- 1-es 3 nincs PHP zárni. Tehát amikor a tolmács látja őket, csak fog köpni, hogy pontosan el beírt ott. Tehát ott vagyok Ennek az én megkérdezése. A 2-es és 4, látjuk a nagyon ismerős $? php fajta határoló, Ez a két vonal fog végrehajtani, mint a PHP. És akkor 5-ös vonalon, már ez Furcsa dolog van itt, ugye? Ez a hegyes zárójel kérdőjel egyenlőségjel. Majd még nagyítás egy kicsit tovább. Láthatjuk ezt én vagyok beszélünk ott, ez a $? =. Kiderül, hogy ez annyira gyakori, hogy az oka, hogy nyit egy sor PHP elhatárolók kinyomtatni egy értéket. És ez minden, amit csinálsz. De van még rövidítés ezt. $ = PHP rövidítés mondván olyasmi, mint $? php echo összege A num1 és num2. Szóval ez is csak egy emberhátránynak ezért. Szóval, ha a program futtatásához, php add2.php. Majd zoom le egy kicsit. Kérem adjon nekem egy számot, 4. Kérem, adja meg a második számot. És mivel én nem igazán érdekel adattípusok PHP, azt mondhatom, 4.8. Ezek összege két szám 8.8. Hogy a funkció viselkedik elég sok pontosan ugyanaz, mint azt várnánk, is. És van még egy megnyitott itt az úgynevezett dice.php. Próbálja meg újra. Van még egy itt hívják dice1.php, amely szintén, lásd, van, hogy hegyes zárójel kérdés jelölje egyenlőségjel jelöléssel van, de észrevettem, hogy ebben az esetben én vagyok A funkció meghívása rand, amely, ahogy várhatnánk generál egy véletlen számot. "Te sodort", és ez meg fog Számold ki néhány véletlen szám, mod 6 + 1. Szóval ez ad nekem száma a tartományban 1-6. Ne feledje, hogy a mod 6 adna nekem egy számot a tartományban 0-5, de ha én vagyok szimuláló kocka tekercs, ami mit csinálok itt, Nem akarom ezeket a kockákat, hogy menjen 0 5, akarom kockát, hogy menjen 1-6. És így ez egy módja annak, hogy me-tartományban 1-6. Én ezt kétszer. Tehát úgy tűnik, én vagyok gördülő két kocka ebben a programban. Úgyhogy egyértelmű a képernyőn, és én megteszem php dice1.php. Ön hengerelt a 4 és a 2. És ha a program futtatásához újra, akkor gördült 5 és 5. Tehát minden alkalommal, amikor a program futtatásához, Kezdek különböző számokat, mert minden alkalommal én Szóval, ez az újrakezdés. Meg fog generálni egy új állítsa a véletlen számok számomra. Tehát, ha vagyunk használni futó programokat C, hozzá vagyunk szokva, hogy gépelés ./ a egy program neve, ugye? Így tettünk minden Programjaink a C eddig. Ezt megtehetjük a PHP, valamint hozzáadásával egy úgynevezett Egy kocsma, a tetejére a PHP fájlt. Tudom, hogy ez a fajta egy buta szó. Ez rövid hash bumm. Ez az első két karakter van. Emlékezz hívjuk felkiáltójel Gyakran a bumm a számítástechnikában. Azt is lehet, hogy az éles durranás. Van egy pár módon lehet értelmezni őket. De ez alapvetően egy különleges fajtája A parancs, hogy a PHP értelmező megérti az, ó, azt akarom, Ön ezt a programot, ami nyilvánvalóan / user / bin / php, amely valójában, ahol a PHP értelmező konkrétan él a rendszer. Tehát it's-- mi történik itt A tolmács megérti, ó, Én nyilván kéne használni Ebben a programban, hogy futtatni ezt a fájlt. És ez így lehetővé teszi, átugrani a lépést kelljen mondani php something.php. Van még egy fogás itt, ami az, hogy ha szeretnénk, ha a programok a várt módon működnek, akkor tennie kell valamit az úgynevezett Egy fájljogosultság változás. És mi go-- és beszélünk egy kicsit kicsit többet fájljogosultság változások videónkat a MVC, de elegendő, ha azt mondják, hogy ez az, amit meg kell csinálni annak érdekében, hogy a .php fájlokat futtatható. Szóval vessünk egy pillantást erre a mi utolsó példa át CS50 IDE. Tehát itt az IDE Van két kép ebben a PHP könyvtárat, amely úgy tűnik, nem nevű .php. Van olyan függvény add-- Van egy fájlt úgynevezett ADD3 és nevű fájl dice2. Szóval vessünk egy gyors nézd, és nyissa fel ADD3. És mint látható, az elején Az én file Én ezt a kocsma, ugye? Ez a kettőskereszt felkiáltójel. Most, akkor is lehet, észre, hogy valamilyen okból, Nekem nincs semmilyen szintaktikai kiemelve többé, és ez az, amit utaltam korábban, amely az volt, hogy ha nem nevet adjak fájl .php, én nem az az előnye, A szintaxiskiemelést többé. Ez a fájl csak úgynevezett ADD3. Tehát, hogy tudok futni, hogy a későbbiekben A ./ ADD3 és nem ./ add3.php. Tehát a reason-- ez még mindig finom, ez még mindig érvényes PHP, de ez nem szintaktikai kiemelte, mert ez a fájl nem nevezett something.php. Ez az egyetlen igazi különbség Itt, valamint a kocsma. Nézzük, mi történik, ha Megpróbálom, és a program futtatásához. ./ ADD3, mint tenném C. Bash. ./ ADD3 permission denied. Ez az, amit akarsz hogy ha elfelejti hogy a chmod paranccsal változtatni Az engedélyeket a fájl. Mint kiderült, a rendszeres PHP fájlokat nem lehet csak végrehajtani. Ők is értelmezhető, de mi csinál valamit, egy kicsit más itt. Mi futtatása. És így kell hozzá engedélyével végrehajtás, chmod a + x ADD3. Akkor azt mondhatom ./ ADD3. Kérem adjon nekem egy számot. 5, 6. Ezek összege két szám 11. Hasonlóképpen, már chmoded dice2, úgyhogy csak típus ./ dice2, Ön sodort 1 és 1, akkor hengerelt egy 5 és egy 4, és így tovább. Tehát ez nagyjából a ötlet egy PHP szintaxis, ugye? Van egy csomó átvészelni, tudom. De remélhetőleg láttad már, hogy a PHP nem igazán, hogy eltér a C és tényleg ad nekünk a lehetőséget hogy a dolgokat egy-két fokkal. Nem igazán kell aggódnia Túl sok about-- Nem igazán kell túlságosan aggódnunk Az alacsony szintű részleteket is kellett aggódni a C, ugye? Mi lehet összpontosítani a magasabb szintű cucc, hogy a PHP lehetővé teszi számunkra, hogy nem, és hogy a nyújtott, hogy működni fog a számunkra. Szóval ez ad nekünk a lehetőséget, most, áttéréskor a C PHP, hogy a programok, amelyek sokkal több összetett és talán sokkal erőteljesebb. Szóval remélem, jó szórakozást munkavégzés PHP, és én vagyok Doug Lloyd. Ez CS50.