DOUG LLOYD: Deci, am făcut o mulțime de muncă în C, și C este o foarte misto limbă, pentru că vă oferă capacitatea de a se arunca cu capul într-adevăr nivel scăzut în programele dumneavoastră. Ajungem să facem lucruri ca într-adevăr minut ca manipularea bytes individuale de memorie. Reamintim că într-adevăr indicative ne permit asta flexibilitate. Dar avem nevoie întotdeauna să aibă acest nivel cu granulație fină de detaliu in programele noastre? Probabil că nu, nu? Și dacă vom avea un compromis între a fi capabil să facă într-adevăr, într-adevăr lucruri minute și într-adevăr, într-adevăr lucruri mari pe care noi nu trebuie să ne gândim despre, nu avem să pună în aplicare aceste idei într-adevăr mare, dacă acestea sunt deja construit în pentru noi, în general, pentru construirea de mare programe sau proiecte mari, ne, probabil, va să greșească pe partea de de a fi mai multe lucruri limba construit în pentru noi, în loc de a chestii de nivel scăzut. Și asta e în cazul în care într-adevăr vine în PHP. Acum, unul dintre motivele pe care le preda PHP în CS50 este faptul că este puternic inspirat de C. Și, de fapt, în opinia mea, există într-adevăr două limbi progenitoare care sunt foarte frecvente în zilele noastre. C și LISP. Și ei sunt limbi progenitoare pentru că toate celelalte programe moderne limbă pe care a dezvoltat de atunci este inspirat de unul sau celălalt punct de vedere sintactic. PHP este foarte asemănătoare sintactic la C, în timp ce limbi, cum ar fi schema, de exemplu, care este posibil să fi auzit de, este puternic inspirat de un limbaj numit LISP, care este o limbă mai veche. Deci, motivul pentru care am preda PHP în CS50 este faptul că, cunoscând C ca fundamental cum faci în acest moment, ridicarea PHP, care oferă vă capacitatea de a face lucruri nivel mult mai ridicat decât C nu, nu este că de mult de un obstacol, pentru că aveți deja Ideea de bază a sintaxei. C a fost în jur de aproape 45 de ani de la acest moment. PHP a fost în jur de aproximativ 20 de ani. Și prin aceea că de 25 de ani în între, programatori stabilit că vor mult mai degrabă au abilități de nivel superior, și greșelile și luptele de 20 de ani din între a dus la PHP și alte limbi moderne. PHP este o alegere excelentă de Limba de software care allow-- pentru software-ul în cazul în care that-- trebuie să facem lucruri pe care, în C sunt de fapt complicate. Deci, de exemplu, de lucru cu siruri de caractere in C este foarte complicat, deoarece după cum știm, siruri de caractere in C sunt într-adevăr doar rețele de caractere. Nu este un tip de date built-in. Sau poate mai important, ceva ce nu a acoperit, chiar și în C, Ce se întâmplă dacă trebuie să faceți unele rețele de calculatoare? In regula? C are capacitatea de a face acest lucru, dar e atât de arcane și atât de dificil de a face de fapt. Nu ar fi frumos dacă limbă a avut un mod ușor de built-in să pună în aplicare în rețea? Și PHP este un limbaj care face ca, sau facilitează că, destul de un pic mai mult. Așa cum am spus, PHP este foarte puternic inspirat prin C. Sintaxa este foarte asemănătoare. Și așa ar trebui să sperăm a face pe tranziția de la una la alta un pic mai moale decât unele alte limbi ar putea fi. Pentru a începe să scrie PHP, doar deschide un fișier cu extensia .php. Punct de vedere tehnic acest lucru nu este de fapt este necesar, dar dacă doriți lucruri cum ar fi sintaxa subliniind în IDE, astfel încât tipul nume, sau nume de variabile, funcții, stii, cuvintele cheie ale limbajului sunt evidențiate într-o culoare specifică, în general, vă doresc pentru a numi fișierele cu un anumit extensie de fișier. Deci ne-am numit fișier nostru cu un .php extensie, dar apoi, de asemenea, cu PHP, tot codul PHP scriem în care fișier trebuie să fie închise în aceste PHP delimitatori pe care le vedem aici, pe ecran. Suport unghi? Php pentru a începe. Apoi ne-am scrie toate PHP noastre cod care ne-o dorim în între. Si atunci ? suport unghi pentru a închide. Dacă nu facem acest lucru, atunci ce se va întâmpla? Nu o să se prăbușească. Nu o să ruina într-adevăr programul nostru. Dar nu va avea efectul pe care ne-o dorim. Ce se va întâmpla, într-adevăr, este că, atunci când vom încerca și a alerga acest program, tot ceea ce nu între aceste delimitatori va fi imprimate textual. Nu o să executa de fapt codul, că va doar de imprimare-l textual. Acum, de ce este cazul? Deci, C este ceea ce este cunoscut ca un limbaj compilat. Esti, probabil, familiarizat cu etapa de a face programele, cotitură fișierele .c și fișierele .h într-un singur executabil cu make, în special utilizarea Zăngăni ca compilator nostru. PHP, deși, nu au acest echivalent. PHP este ceea ce se numește un limbaj interpretat. Și ce înseamnă asta? Ei bine, aceasta înseamnă că nu trebuie să transforme codul nostru sursă de zero-uri și cele în prealabil. Mai degrabă, există un program, care se mai numește PHP, care intelege PHP și poate un fel de face pe zbor. Asta nu e chiar exact precise, dar este o analogie destul de bun de ce se întâmplă. Este interpretarea celor zerouri și cele pe zbor. Și așa, dacă nu știe cum pentru a procesa ceva, în cazul în care nu știe cum să proces PHP, probabil a vrut să pună acest text acolo, nu? Probabil ai vrut să pună codul în acolo, chiar dacă nu este între PHP-- delimitatorii PHP. Dar-- așa că nu se va să-l ștergeți pentru tine, este doar de gând să-l aruncați în esență. Deci o să imprime l pe ecran. Aceasta pare a fi că e un rău lucru, dar de fapt e Va fi un adevărat lucru bun, cum vom vezi atunci când vorbim despre Dezvoltare web PHP, pentru că înseamnă că putem răspândi PHP și HTML. Le putem folosi împreună pentru a a crea o pagina web mai dinamic. Dar mai mult pe faptul că, în video pe dezvoltare web PHP. Deci, ce este sintaxa PHP? Asta e ceea ce acest film este despre toate. Să vorbim despre asta. Deci, pentru a începe, variabile. Există variabile PHP. Există doar două mari diferențele față de C. Primul este că nu există nici un tip specificator. Noi nu trebuie să spun Int, char, float, toate chestiile astea. Noi nu trebuie să mai faci asta. PHP este un limbaj modern. Se pot da seama de ce ești încearcă să facă sau să facă o mai bună ghici cu privire la ceea ce încerci să faci. Așa că e destul de frumos. Un alt lucru este că toate variabilă Numele trebuie să înceapă cu un semn dolar. Asta e doar ceva să te obișnuiești. E un pic ciudat, pentru că este astfel încât să poată înțelege PHP ceea ce este o variabilă și ce nu. Deci, fiecare nume de variabilă începe cu un semn dolar. Deci, în C am putea spune ceva ca aceasta, int x = 54. Noi nu trebuie să faci asta mai în PHP. Putem spune doar $ x = 54. Și am putea spune, de exemplu, în C, dacă am fi lira-inclus .h CS50 fișier antet, am putea spune Expresie string = "Acesta este CS50." Noi nu trebuie să faci asta în PHP, totuși. Putem spune doar $ fraza = "Aceasta este CS50." Și, de fapt, string este acum un tip de date built-in în PHP, sau mai degrabă PHP înțelege ceea ce un șir este. E separat de o serie de caractere ca acesta este în C. Toate dumneavoastră preferat Declarații condiționale din C sunt încă disponibile pentru tine de a utiliza. Deci, nici o tranziție mare acolo. Putem say-- putem avea dacă afirmații de genul asta. dacă $ y 43, sau $ z = 15. Așa că e destul de simplu. Putem avea, dacă și altceva. Putem avea dacă și altceva, dacă. Și observat ceva destul de frumos aici, iar acest lucru este un fel de una dintre aceste Avantajele PHP față de C, o notificare ce funcție nu suntem utilizați aici? Suntem folosind == pentru a compara o variabila, nume $, la un șir. Nu am putut face asta în C, nu? Am avut de a utiliza o funcție numită StrComp sau StrEndComp sau orice de veri aferente. Și astfel vedem deja aceste avantaje. Noi nu trebuie să facem ceva ca prostie sau poate unintuitive ca o funcție numită apel StrComp dacă vreau doar pentru a testa dacă o valoare este egală cu un șir. Aș putea folosi doar egal la egal la egal, ca și cum aș putea face altceva. Deci, există un avantaj. Uneori, de altfel, s-ar putea vezi mai dacă ca un singur cuvânt, elseif. Și asta e în regulă, în PHP, de asemenea. Astfel încât, uneori s-ar putea vedea asta. Nu este o greșeală de scriere. PHP de fapt înțelege elseif. Nu știu de ce a decis să pună în aplicare faptul că, dar cum am văzut de multe ori de-a lungul videoclipurile noastre de până acum, ne place, dacă programatori putem face lucruri rapid, astfel a scăpa de acest spațiu este aparent un mare avantaj. Deci, asta e, dacă și elseif. Avem, de asemenea, operatorul ternar, rechemare semn de întrebare de colon, pentru foarte scurt formular dacă altceva sau ramificare condiționată. Și se pare că, în acest sens, ceea ce încercăm să facem aici este atribui variabila $ scrisoare fie adevărat sau fals, depinzând dacă $ var este un caracter alfabetic. Deci, aceasta este destul de similar cu isalpha că suntem familiarizați cu de la C. Aceasta este un fel de echivalent în PHP. Funcția este aparent numit ctype_alpha, dar asta e modul în care o facem în PHP. Deci, toate acestea sunt mergi la a fi este, în cazul în care $ var este o scrisoare, $ scrisoare este adevărat. Dacă $ var nu este o scrisoare, $ scrisoare este falsă. Avem, de asemenea declarații de comutare încă. Ne amintim cele din C, de asemenea. La foarte de sus acolo, asta e modul în care ne facem ceva de genul int get sau pentru a obține șir. Deci PHP are care a construit în. Nu avem nevoie de biblioteca CS50 mai. Putem folosi doar funcția readline. Ceea ce va face este de imprimare în mesajul, "stat tău, please "și apoi clipește prompte de așteptare pentru utilizatorului să introducă niște informații. Acum observați ce altceva putem face cu comutator. Dacă ați folosit înainte, vă amintiți că comutator se limitează destul de mult la numere întregi și de caractere, dar acum putem folosi siruri de caractere. Și, de fapt, declarația comutator în PHP este destul de un pic mai flexibil decât vărul său de la C. Bucle. La fel ca condiționale, toate vechi favorite sunt încă acolo. Avem timp ce bucle care conteaza la 1 la 100, în acest caz. Am face în timp ce buclele care numără de la 1 la 100, și ne-am pentru bucle care numără de la 1 cu 100. Deci, nu salt mare acolo. Sintaxa este destul de mult exact la fel, cu excepția acum suntem utilizând dolar variabilă semn loc de a declara variabile întregi sau ceva de genul asta pentru contoare noastre. Iată unde lucrurile devin un mult mai bine decât C, totuși. Arrays. Deci, amintesc când am fost vorbesc despre C, în scopul de pentru noi să crească și reduce seturi de informații, avem nevoie pentru a sorta de default la această idee a unei liste legate, deoarece C tablouri au fost fixate în mărime. Noi nu le-ar putea micsora. Noi nu le-ar putea crește. Am avut de a realoca memoria și de a face toate acestea nebunie sau de a folosi liste legate, care ia destul de un pic mai mult spațiu. Dar, în PHP, matrice sunt Nu mai stabilit în mărime. Ele pot crește și se pot reduce. Deci, din nou, acești 20 de ani, care a existat între prima versiune a C și prima versiune PHP, am decis că, știți, ar fi foarte mare dacă am putea face acest lucru. Și astfel am implementat acest lucru. Deci, tablouri PHP nu sunt fixate în mărimea, și pentru că PHP nu prea au programator front-cu care se confruntă noțiuni de tipuri, putem amesteca tipuri de date în matrice noastre, de asemenea. Așa că nici măcar nu trebuie să utilizeze toate întregi sau toate punctele plutitoare, putem avea un mix de toate diferite tipuri într-o singură matrice. Declararea o serie este destul de simplă. E la fel ca orice altă variabilă. $ Nums = array (1, 2, 3, 4), matrice fiind o functie care este construit în PHP care va crea un array pentru tine. Aceasta creează o serie de patru valori, Numerele în acest caz, numit $ Nums. Și există mai mult de un mod de a face acest lucru. Și am de gând să vezi aceasta foarte mult în PHP. PHP a fost dezvoltat de multe diferite oameni și crește și crește și crește. Nu e de obicei, nu doar două sau trei moduri de a face ceva în PHP, există, de obicei, cum ar fi 10 sau 20. Iată doar un alt comun mod de a declara o matrice. $ Nums = patrati suportului 1, 2, 3, 4. Deci aceasta este un fel de similar cu unghi C de br-- notație bretele cret, destul de. $ - sau ar fi Nums int pătrat paranteze este egal cu bretele ondulat 1, 2, 3, 4. În PHP este $ Nums = pătrat paranteze 1, 2, 3, 4. Dar ambele exemple aici dă-mi o serie de patru numere întregi în acest caz. Ce se întâmplă dacă vreau să tac ceva acum? Ei bine, pot să spun doar $ Nums 4, care din nou, încă de numărare de la 0 aici în PHP, ar fi al cincilea Element de matrice. Pot spune doar că. Eu nu am de gând de a suferi un seg vina, pentru ca matrice mea este doar de gând să crească pentru a se potrivi asta. Asta e destul de frumos, nu? Și, de fapt, nici măcar nu trebuie să specifica unde vreau să-l puneți. Pot spune doar acest lucru și doar tac-l chiar pe până la sfârșit, Sau aș putea chiar doar spune $ Nums 20 sau 1000. Nu contează. Este încă doar de gând să tac-l chiar pe la sfârșit. Așa că am putea să crească, și as-- suntem nu o să-l acopere aici, dar pot lipitură sau benzi elemente din matrice, precum și, și matrice va micșora pentru a se potrivi că spațiul lipsește acum sau gol. Există un alt mod de a tac ceva pe o matrice, care este o funcție numită array_push. Deci, din nou, doar această idee de a fi capabil să facă lucruri mai multe moduri diferite. Deci am văzut trei moduri diferite acum să tac un alt element pe o matrice. Deci, acest adaugă un alt element de la sfârșitul șirului $ Nums. Și putem amesteca tipuri noastre de date. Așa că am putea avea o serie de nu 1, 2, 3, 4, dar 1, adevărat, 3, 4, în cazul în care adevărata este un Boolean, și apoi dacă vreau să tac pe alt element pentru că matrice, probabil, un șir de caractere, șirul "cinci", am putea face asta. Și acum matrice meu ar fie 1, adevărat, 3, 4, cinci. Cuvântul cinci, nu întreg 5. Astfel încât o mulțime de flexibilitate acolo. Flexibilitatea devine chiar mai bine, deși, pentru că PHP are suport pentru ceva numit un tablou asociativ. Și am un fel de vag vorbit tablouri despre asociative din C în contextul tabele de dispersie, deoarece ce matrice asociative sunt într-adevăr toate despre fac cheie mapări valoare pereche. Și în acest caz, în cazul în care keys-- suntem familiarizați cu tablouri de la C, tastele sunt numere de index. 0, 1, 2, 3. Și valorile sunt ceea ce am descoperit că matrice 0, 1 matrice, matrice 2, și așa mai departe. Deci, tastele sunt indici, iar valorile sunt ceea ce este în acea locație matrice, specificat de acel index. Dar, în PHP, nu avem de a face acest lucru noțiune de matrice 0, 1 matrice, matrice 2 mai. Putem folosi acum cuvinte reale pentru a mapa cheile la valori. Și așa am putea spune ceva de genul asta. Aș putea crea o matrice folosind pătrat sintaxa suport, după cum urmează. $ pizza = suport pătrat "brânză" și apoi acest tip de săgeată notație dublu, 8,99, "pepperoni," săgeată 10.99-- 9.99, si asa mai departe. Și ce se întâmplă aici? Ce am de fapt fac? Creez cheie mapări de valoare pereche. Deci, în loc de a spune, de exemplu, pizza 0, piese 1, 2, pizza Pot să spun acum pizza brânză, pizza pepperoni, și se referă la valorile asociate acestora. Deci, aici sunt cheile în verde. Brânză, pepperoni, de legume, carne de pui de bivol. Aici este săgeata care face această cheie de cartografiere valoare pereche. Și apoi aici sunt valorile la acea locație matrice. Deci e ca și cum spune array 0 este egal cu 8,99. Cheia este 0. Valoarea este 8.99. Pot spune acum brânză matrice, sau în acest caz brânză pizza, branza este cheia, și ceea ce mi se pare la brânză pizza este 8.99. Asta e valoarea pe care am găsi acolo. Deci, eu pot spune lucruri de genul. $ pizza brânză = 7.99. Spun Am o vânzare. Vreau dis-- vreau să scadă prețul de pizza brânză. Sau pot folosi legume pizza, ca parte a unei condiții, sau pot adăuga un element nou pentru a-mi matrice, așa cum am putea face anterior. Pot adăuga un element nou la acest tablou asociativ cu cheie "bacon" și valoarea 13.49. Dar acest tip de introduce o problemă dacă te gândești la asta pentru un al doilea. Cum ne-ar repeta, prin aceasta matrice? Dreapta? În C, am avea doar un pentru bucla, de obicei, că ar fi de la 0 la Dimensiunea de matrice minus 1. Matrice are n elemente în cel, The indici valide sunt 0 la n minus 1. Deci, am putea folosi un pentru buclă de pas prin fiecare singur element. Dar asta nu e chiar cazul mai, nu? Acum unde avem pereche valoare-cheie mapări unde sunt cheile de cuvinte, cum putem repeta pe toate cuvintele? Ei bine, din fericire, PHP are un mod de a face cu asta, și așa ne vom sări înapoi la buclele pentru un al doilea să introducă un al patrulea fel de buclă, care există în PHP numit-o buclă foreach. Și ce o buclă foreach nu este este practic aceeași idee. Îl puteți folosi pentru orice tip de matrice. Dar e practic aceeași idee ca o pentru bucla, cu excepția loc de a folosi indici, doar au această sintaxă ciudat în cazul în care te sun la fiecare singur element un nume în sensul această buclă. Deci, în acest caz, foreach ($ array ca $ cheie). Practic, cum că notele comentariu, în interiorul acestui bucla foreach, este de gând să meargă pe fiecare Element de $ array, care este de obicei O să fie un tablou asociativ, dar poate fi cu adevărat nici un fel de matrice pe care doriți în PHP. Și de fiecare dată faptul că, în o pentru buclă s-ar putea au spus $ array paranteze pătrate $ i, ai putea spune doar $ cheie. Astfel încât $ cheie devine un alias pentru fiecare Indicele de PHP asociativ matrice, și astfel încât să puteți utiliza ca asta. Deci, de exemplu, ne-am acum a primit pizza nostru matrice. Am un fel de ea ascuns într-un colț acolo astfel încât să putem folosi pentru a face un exemplu rapid. Dacă spun foreach ($ pizza ca $ pizza), ei bine, ce se întâmplă? Ei bine, am de gând să repeta prin fiecare singur element din matrice $ pizza, și astfel, am de gând pentru a apela fiecare element, atunci când sunt în interiorul eu a corpului de care pentru bucla, $ pizza. Deci asta e un fel de stand-in, amintesc, că $ pizza este un stand-in pentru a spune $ pizza paranteze pătrate $ I dacă am fost folosind un pentru buclă, în cazul în care ne-am ar putea merge de la $ i = 0 la, în acest caz, $ i = 3. Dacă nu am avea perechi de valoare-cheie aici, acest lucru ar fi elementul 0, 1, 2, 3, si ne-ar folosi o buclă pentru a merge $ 0 pizza, pizza $ 1, $ 2, pizza $ pizza 3. Deci, acum doar $ pizza este înlocuind pentru acea cheie individuale. Deci, ce se întâmplă acest lucru pentru a imprima? Sunt imprimarea $ pizza. Ce am de gând să găsească at-- dacă am imprima $ pizza, $ i? Dreapta? Dacă am de gând să imprima elementul-lea de pizza, ce am de gând să imprima? Am de gând să imprima Valorile de la acea locație, nu? Ca și în cazul în care făceam acest lucru în contextul C, nu folosesc de obicei iterator nostru variabilă, int i = 0, i este mai mic de 3, i ++, pentru a imprima 0, 1, 2, 3. Suntem imprimarea matrice 0, matrice 1, matrice 2, 3 matrice. Și ce imprimă acest lucru este aceasta. E lista de prețuri. 8,99, 9,99, 10,99, 11,99. Acum, o scurtă notă aici. O bucla foreach nu neapărat imprima lucrurile în ordine. Nu e garantat. De obicei nu. Este, de obicei, bazată pe ordinea în care elemente sunt adăugate la matrice, asa ca suporta faptul că, în minte. S-ar putea să nu fie în ordine. Dar o buclă foreach va repeta peste fiecare singur element de matrice în cauză. In acest caz, din nou, că este matrice $ pizza. Pot schimba sintaxa, deși, în cazul în care Vreau atât cheia și valoarea. În loc de a spune $ pizza de la $ pizza, pot să spun acest lucru. Și dacă te uiți la ceea ce am evidențiate cu verde aici, se pare ca o cartografiere cheie valoare pereche. Și astfel, dacă Tu-- chiar dacă nu sunteți în întregime sigur ce va face, probabil puteți ghici că $ topping se întâmplă a fi cheia în acest caz și $ tarif va fi valoarea. Așa că eu sunt înlocuirea acum fiecare element de $ pizza ca o pereche valoare-cheie, și acum se poate referi la cheie și valoarea, care ar putea la îndemână, de exemplu, după cum urmează. "Un întreg" - aceasta este o mulțime de imprimarea întâmplă here-- "un întreg" topping "pizza costa $" preț, și apoi Am imprima o perioadă și un backslash n. Deci, acum, din nou, o notificare am acces la o cheie, $ topping, și o valoare, $ tarif. Deci poti ghici ce acest va imprima? Există o mulțime de declarații de imprimare, dar există un singur backslash n, asa ca va imprima ceva pe un entire-- pe o singură linie de cod. Dacă eu pot referi la cheie și valoarea, apoi acum, în loc de doar a putea pentru a imprima preturile, Pot imprima ceva de genul asta. "O pizza brânză întreg costurile de $ 8,99." Și acum eu sunt, folosind toate keys-- brânză, pepperoni, legume, Buffalo chicken-- și valorile. 8,99, 9,99, 10,99, 11,99 Deci, asta e doar un mod diferit pentru a face o buclă foreach că, în loc de doar oferindu-vă acces la valorile, doar dă Tu-- vă oferă acces la chei și valorile. Deci, imprimarea informații. Am făcut deja un cuplu de moduri diferite, s-ar putea fi observat. Cele două funcții în primul rând ne-am văzut sunt de imprimare și ecou. Și pentru destul de mult toate punctele și scopuri, sunt exact la fel. Sunt-- există o foarte subtil diferenta nu e chiar merită intra în, dar în esență peste tot aveți posibilitatea să utilizați de imprimare puteți folosi, probabil, ecou, ​​de asemenea. Și asta nu e doar două. PHP are o multime de diferite modalități de a imprima lucruri, și are, de asemenea metode de a integra variabile în mijlocul string. Deci, amintesc de C, nu amintiți-vă ce funcție putem folosi pentru a substitui variabile în lucrurile pe care vrem să imprime? Probabil utilizați acest funcționează destul de mult. printf, nu? Deci, asta este ceea ce am avut înainte de interior de contextul bucla foreach noastre. Am avut aceste cinci declarații de imprimare separate, pentru că a fost singurul mod Știam într-adevăr, la momentul cum pentru a imprima mesaje. Nu știam cum să integreze $ variabila topping în codul meu PHP. Ei bine, dacă am doar luat o presupunere, printf, de fapt s-ar fi lucrat. printf este o funcție care le pot utiliza în PHP, așa cum am puteți folosi în C. Și astfel ceva de genul asta, printf, din nou, suntem familiarizați cu asta. Primul% s este înlocuit cu valoarea $ topping. Cea de a doua% s este înlocuit cu valoarea $ tarif. Și așa că eu sunt interpellating, care este doar un mod de lux de a spune eu lipirea variabile în acea locație. Deci, eu sunt conectarea $ topping unde roșu% s este și în cazul în care prețul de $ albastru% s este, și apoi mi-ar lua un mesaj, "O pizza brânză întreg costurile de $ 8,99." Nu numai modul în care am putea face acest lucru, totuși. Poate că ar dori să utilizeze această metodă. Aceasta este de fapt ceea ce este cel mai frecvent numit interpelare variabilă. Pot folosi un ecou. Mi-ar prinde un print de asemenea, ca vom vedea. Dar ce se întâmplă aici? Mai întâi de toate, trebuie să scăpa de semnul dolar. Pentru că amintiți-vă, atunci când am fost de fapt imprimarea prețurile pizza, Am fost de fapt de formatare le ca cifre monetare cu un semn dolar. Dar noi îl utilizați, de asemenea, semne de dolari pentru a reprezenta numele de variabile în PHP, și în special atunci când sunt folosind această metodă a buclat variabilă bretele Metoda interpelare, am nevoie de pentru a scăpa de semnul meu dolar așa că nu cred că vorbesc despre o variabilă. O să de fapt, literalmente imprima un semn dolar. Deci, un fel de ea analogii la ceea ce vezi la sfârșitul acolo. Ea nu, de fapt print backslash n, nu? Se imprimă un caracter nou linie. Acest este-- nu va semn de imprimare backslash dolar, se va imprima doar un caracter semn dolar. Aceeași idee. Escape secvențe, ceea ce aceste lucruri sunt numite. Dar observați că eu nu fac orice fel de% s substituții, Eu doar literalmente conectarea în aceste variabile. Și așa mai departe în asta: ce se va întâmpla aici este faptul că valoarea $ topping-- nou, doar conformitate cu ceea ce am fost vorbim despre brânză, astfel far-- ar obține conectat acolo. Și $ tarif ar fi orice valoare nu este la pizza, între paranteze drepte, brânză, care a fost 8.99. Și așa ar imprima de asemenea, "O pizza brânză întreg costurile de $ 8,99." Și cum am spus, mi-ar prinde imprima aici, în loc de ecou, și funcționalitatea fi destul de mult exact la fel. Aceasta ar imprima același lucru. Există un alt mod de a face acest lucru, și acesta este un alt avantaj de lucru cu PHP siruri de caractere. Putem face șir concatenare. Am putea face acest lucru în C, de asemenea, utilizând o funcție numită strcat, dar, din nou, a trebuit să apel funcții separate. Acesta a fost toată mizeria asta de a face. Am avut de a lira includ string.h. A fost o producție, nu? Dar acum pot folosi doar acest operator punct a concatena siruri de caractere împreună. Deci, eu sunt concatenarea "un întreg" și apoi, indiferent de valoarea $ topping este, și apoi un alt string, "costurile de pizza $" și apoi concatenarea orice valoarea $ tarif este, și apoi la sfârșitul Sunt capsare pe perioada backslash n. Și așa mai departe, de asemenea, acest lucru ar imprima "un întreg" - din nou, dacă vorbim despre primul element de care array-- pizza "O pizza brânză întreg costurile de $ 8,99." Perioada, backslash n, din nou, cu $ topping și $ tarif substituind pentru ceea ce ne-am specificat în foreach nostru bucla ca cheie maparea valoare pereche. PHP se pot ocupa funcții. Funcții au fost un fel de parte integrantă a C, după cum am văzut. Ca variabile, nu avem nevoie să specifica tipul de întoarcere a funcției, pentru că nu contează cu adevărat. Și noi nu specifică tipuri de date de orice parametri, pentru că ei nu prea materie, cum am am văzut în PHP. Fiecare funcție este introdus cu cuvântul cheie funcția. Asta e modul în care ne indica faptul că PHP ce vorbim despre este o funcție. Și noi nu trebuie să a face cu principal, la toate, pentru că interpretul, PHP interpret, lucrări de sus în jos, indiferent. În cazul în care vede puteți face un apel de funcție, se va du-te găsi apelul funcției, chiar dacă este vorba de mai târziu. Dar o să citesc de sus în de jos, așa că nu trebuie să specificați, aici este în cazul în care începe. Începi pe linia 1 de dvs. PHP și de a lucra în jos de acolo. Deci, aici este modul în care s-ar crea o funcție numită hard_square. Aparent durează o parametru, care sun $ x. Această funcție este complicat doar pentru a ilustra diverse lucruri. Încă mai avem valori de returnare. Sunt folosind o buclă de aici. Dar este practic doar, ceea ce acest se ridică la doar $ x este ori $ x. Ceea ce am de fapt, fac este doar adăugarea X la 0 x ori sau $ X $ la zero x ori. Dar e în mod eficient cît mai exact La fel ca înmulțirea $ x ori x $. Eu pot întoarce încă o valoare, în acest caz $ rezultat, și am făcut o funcție în PHP. Iată cum s-ar putea folosi în context. Deci, poate că sunt în interiorul unor fișiere PHP. Observați în albastru acolo Am folosit delimitatori mele PHP, Suport unghi semn de întrebare php. În între acestea sunt toate PHP pe care vreau să scrie. Așa că am de gând să se pare get-- Am de gând să solicita utilizatorului să-mi dea un număr, magazin care variabilă, magazin în care variabila $ x, orice mi-au dat. Apoi m-am de gând să ecou hard_square de această valoare, și se pare că merge să tac pe o linie nouă De asemenea, și apoi mai târziu pe Voi defini funcția hard_square așa că, atunci când Eu fac apel la hard_square, știe ce vorbesc despre. Acum, aș putea face, de asemenea ceva de genul. Acest lucru este ușor diferită. E aproape exact La fel ca ceea ce am văzut mai înainte, cu excepția loc de a spune doar $ x acolo ca parametru de hard_square, Spun $ x = 10. Deci, acesta este un exemplu de programare defensivă, paza programele împotriva utilizatorilor rău intenționați. Aceasta este o modalitate de a face o eroare verificarea că nu am cu adevărat au ca o opțiune în C. Am putea niciodată specifica valoarea implicită a ceva. Întotdeauna am avut de a verifica dacă, de exemplu, dacă ne-am făcut un apel la getString, a fost cel mai potrivit dacă imediat după ce verificat că, ne-am cazat dacă șirul că utilizatorul ne-a dat nu este egal cu NULL, pentru că nu vreau să încep de lucru cu un șir nul. Aici, aceasta este o modalitate pentru a proteja împotriva acestei. În cazul în care utilizatorul nu ne oferă ceva într-un fel, ceea ce ne face? Ei bine, vom spune doar ceea ce ei nu ne oferă, noi suntem doar de gând să conectați în 10 loc. Deci, în cazul în care nu ne-a dat o valoare, trebuie doar să utilizați 10 în mod implicit. Și așa aici, observați că am face Un apel la hard_square, dar nu exista nici o promptă pentru utilizator, nu? Mă face un apel gol. Dar funcția mea hard_square se așteaptă un parametru. Ce se întâmplă acest lucru pentru a imprima? Se va imprima 100, nu? Deoarece Userul nu a da-mi ceva. Și așa am de gând doar să-și asume că 10-- 10 este valoarea implicită. Și așa s-ar imprima aceasta out 100 pe o linie proprie. Fișierele PHP nu trebuie să fie doar un singur fișier. Puteți combina mai multe fișiere împreună, la fel ca tine poate în mod C. am făcut că, în C a fost de obicei pentru a face o #include pentru a obține fișiere antet tras în. Noi nu facem asta în PHP. Noi facem ceva numit require_once. Și apoi există acest întreg lucru, ce-i asta __dir__? Asta e doar o special variabil, sau constant special, într-adevăr, care specifică ce directorul curent este. Și așa va arăta în directorul curent pentru un fișier numit cs50.php în acest exemplu aici, si va pentru a lipi acest fișier în partea de sus a programului PHP, presupunând că ai pus necesita odată linie în partea de sus a fișierului PHP. Deci PHP este utilizat în principal, dar nu exclusiv, ca un limbaj de programare pentru web-based. Asta e într-adevăr cum a ajuns să fie. Dar este un plin limbă, așa cum am văzut. Am văzut destul de mult toate lucrurile că se poate face acest lucru sunt similare cu C, si se poate face un heck de mult mai mult decât atât. Dar, pentru că este un limbaj complet, iar noi poate face programare linia de comandă în ea. Putem rula programe linia de comandă. Tot ce este necesar pentru a rula o comandă program de linie care este scris în PHP este că aveți o interpret PHP. Deci, este un fel de analog având un compilator pe sistemul dumneavoastră dacă doriți să compilați codul C să-l transforme în fișiere executabile. Aveți nevoie pentru a avea un interpret PHP care există pe sistemul dvs. astfel încât să puteți interpreta fișiere PHP. Tu presupunând face, și, de obicei acest interpret este numit PHP, și este, de obicei, la pachet cu cele mai multe fișiere descărcate sau instalații de PHP pe care le puteți obține on-line, și, desigur, numele interpretului PHP avem în CS50, IDE. Tot ce faci este fișier php tip. Și ce program tău de gând să faci este e de gând să ruleze prin interpretului, e O să ignore tot ce e nu în între cauză mark-- sau, unghi suport semn de întrebare php, delimitatorii PHP, și imprima afară, și va interpreta și executa Codul interiorul delimitatori PHP. Deci, haideți să pop pe la IDE CS50 și au o privire la o serie de fișiere PHP, execută o serie de fișiere PHP, în linie de comandă interfață de IDE CS50. Deci, aici suntem în IDE CS50, și am luat libertatea de a deschide un fișier numit hello1.php. Și se pare că, conținutul acestei fișier sunt doar delimitatorii PHP acolo, și în între, echo ("Bună ziua, lume"). Acesta este un program de destul de simplu PHP. Mă duc pentru a defila în jos la fereastra mea terminale aici, și am de gând să tastați php hello1.php, lovit introduceți. Buna, lume. Asta e, probabil, ceea ce am fost așteaptă să facă, nu? Să mergem sus și să ia un alt uita-te la un program. hello2.php. Destul de mult același lucru, nu, o mulțime întâmplă aici. De data aceasta, însă, am de gând să solicite utilizatorul să-mi dea numele lor. Sunt folosind din nou această funcție readline. $ name = readline. Asta e prompt, "Care este numele tau?" Se pare că eu sunt de imprimare o pe o linie proprie. Și apoi, astfel încât linia de mai jos care va fi prompt în cazul în care utilizatorul poate introduce numele lor. Și apoi eu sunt, folosind un pic de interpelare variabil aici, pe linia 3 pentru a imprima "Hello" și indiferent de tipurile de utilizatori. Deci acest lucru este analog cu a spune, Buna, ziua, virgulă,% s dacă am utilizați printf în C. Deci, să mergem și să interpreteze acest program. Deci, din nou, voi derulați în jos la fereastra mea terminal. php hello2.php. Cum te numești? Doug. Buna ziua, Doug. Am, de asemenea un alt fișier numit hello3.php. Am de gând să-mi șterge ecran cu control L, și am de gând să execute. Cum te numești? Doug. Buna ziua, Doug. Deci comportamentul este identic cu hello2.php, dar de ce este hello3.php? Ei bine, aici e diferența. În acest caz, aviz că pe linia 1 aici, Am ceva care nu este în între delimitatorii PHP. Eu doar imprimarea out-- sau I doar tastat, "Care este numele tau?" În cazul în care interpretul PHP vede acest lucru, nu are nici o idee cum să-l interpreteze ca PHP, și astfel încât în ​​loc de a nu, este doar de gând să-l scuipe. Deci observați pe linia 3 acum, chemarea mea la readline, nu exista nici o promptă mai. Mă duc, de fapt, atunci când sa-- interpretorul PHP vede acest lucru, se va imprima "Cum te numești?" Apoi vede, oh, OK, here's-- orice altceva va fi interpretat în PHP, astfel încât de aceea acest lucru funcționează. Nu trebuie să solicite neapărat sa-- utilizator interiorul readline, Pot avea chiar în afara din delimitatorii PHP și pentru a permite interpretului la doar imprima pentru mine. Deci nu au de fapt doar să aibă un set de delimitatori PHP în programul dumneavoastră. Puteți avea, de fapt mai multe dintre ele, deschiderea și închiderea acestora în funcție de necesități. Deci, haideți să aruncăm o privire la o pereche de programe în IDE CS50 unde am ilustrează această idee de a avea mai multe seturi de PHP delimitate. OK, asa ca am deschis un fișier aici numit add1.php. Și observați ce se întâmplă aici. La fel ca și mai înainte, am o singur PHP set de delimitatori. Am de gând să imprima mesaj: "Te rog dă-mi un număr." Apoi m-am de gând să citească o linie și depozitați-l în $ num1 variabila. Apoi m-am de gând să imprimați din nou. Dă-mi un al doilea număr. Citeste o linie de la utilizator, magazin tot ce scris în $ num2. Adăugați-le împreună și stoca care duce la o variabilă numită $ sumă, și apoi imprima, "The suma acestor două numere este ", și apoi interpeleze acolo $ suma variabila. Deci, hai să executați acest prin interpret pentru a confirma că aceasta este ceea ce ne așteptăm. php add1.php. Vă rugăm să da-mi un număr, 3. Dați-mi un al doilea număr, 4. Suma acestor două numere este 7. Asta e 3 plus 4. OK? Deci, nimic nu teribil de lux acolo. Și acum să deschidă add2.php. Aici, am o pereche de PHP seturi delimitat acolo, nu? Linii 1, 3-- liniile 1 și 3 nu au delimitatori PHP. Deci, atunci când interpretul le vede, e doar O să scuipe exact ceea ce am tastat acolo. Deci, asta e în cazul în care sunt face tot determinat mea. Pe liniile 2 și 4, vom vedea foarte $ familiar? php fel de delimitatori, astfel cele două linii sunt O să execute ca PHP. Și apoi pe linia 5, am această lucru ciudat aici, nu? Această categorie de unghi întrebare semn de egal semn. Voi mări chiar și într-un pic mai departe. Puteți vedea acest lucru este ceea ce eu sunt vorbesc despre acolo, acest $? =. Se pare că este atât de comun, care motivul pentru care am deschis un set de PHP delimitatori este de a imprima o valoare. Și asta e tot vom face. Dar nu e chiar prescurtare pentru asta. $? = Este PHP prescurtarea pentru a spune ceva de genul $? php echo suma de num1 și num2. Deci, aceasta este doar un alt prescurtare pentru asta. Deci, dacă am rula acest program, php add2.php. Voi zoom jos un pic. Vă rugăm să da-mi un număr de 4. Dați-mi un al doilea număr. Și din moment ce nu-mi pasă cu adevărat despre tipurile de date în PHP, pot spune 4.8. Suma acestor două numere este 8.8. Această funcție se comportă destul de mult exact la fel cum ne-am aștepta, deasemenea. Și am încă o deschis aici numit dice.php. Încercați din nou. Am una mai mult aici numit dice1.php, care, de asemenea, a se vedea, are această întrebare suport unghi marca notație semnul egal acolo, dar observă că, în acest caz, eu sunt asteptare Rand funcție, care în timp ce s-ar putea aștepta generează un număr aleatoriu. "Tu laminate un," și va calcula un numar aleatoriu, mod 6 + 1. Așa că o să-mi dea numărul în intervalul de la 1 la 6. Amintiți-vă că mod 6 mi-ar da un număr în intervalul de la 0 la 5, dar dacă am simularea role zaruri, care este ceea ce fac eu aici, Nu vreau aceste zaruri pentru a merge de la 0 la 5, vreau zaruri care merg la 1 la 6. Și așa aceasta este o modalitate de a obține mă în intervalul 1 la 6. Fac asta de două ori. Deci, se pare că eu sunt de rulare două zaruri la acest program. Așa că am să îndepărteze ecranul, și voi face php dice1.php. Tu laminate un 4 și un 2. Și dacă rulați programul din nou, laminate un 5 și un 5. Deci, de fiecare dată când rulați programul, Primesc numere diferite, pentru că de fiecare dată când fac Deci, începe peste. Se va genera un nou set de numere aleatoare pentru mine. Deci, dacă suntem obișnuiți să derularea programelor de C, suntem obișnuiți să tastați ./ Numele unui program, nu? Asta e modul în care am făcut toți programelor noastre în C până în prezent. Putem face acest lucru în PHP, precum și prin adăugarea de ceva numit o shebang la partea de sus a fișierului nostru PHP. Știu că e un fel de cuvânt prostie. Este prescurtarea de la hash Bang. Asta e primele două caractere acolo. Amintiți-vă ce numim semn de exclamare frecvent un bang în informatică. De asemenea, ar putea fi pentru Bang clare. Există câteva modalități de a interpreta. Dar este practic un fel special de comanda care interpretul PHP înțelege ca, oh, vreau să execute acest program, care este aparent / utilizator / bin / php, care este, de fapt în cazul în care interpretul PHP locuiește în mod special pe sistemul nostru. Deci, ceea ce se întâmplă aici it's-- este interpretul înțelege, oh, Am aparent-ar trebui să utilizeze în acest program pentru a rula acest fișier. Și așa că vă permite pentru a trece peste etapa de a avea de spus php something.php. Există o altă captură aici, ceea ce este că, dacă am doresc programele noastre la funcționează conform așteptărilor, vom Trebuie să facem ceva numit o schimbare permisiune fișier. Și vom go-- si vorbim un pic mai multe despre fișiere modificări de permisiune în videoclipul nostru pe MVC, dar este suficient să se spune că aceasta este ceea ce trebuie să faceți în scopul de a face dumneavoastră fișiere .php executabil. Deci, haideți să aruncăm o privire la acest lucru ca exemplul nostru în finală asupra CS50 IDE. Deci, aici, în IDE Am două fișiere în acest Director PHP care nu par a fi numit .php. Am o funcție numită add-- Am un fișier numit add3 și un fișier numit dice2. Deci, haideți să aruncăm o rapid uite și să se deschidă add3. Și, după cum puteți vedea, la început din fișierul meu am acest shebang, nu? Acest punct hash semn de exclamare. Acum, de asemenea, poate veți observă că, pentru un motiv oarecare, Nu am nici o sintaxă mai subliniind, și acest lucru este ceea ce am făcut aluzie la mai devreme, care a fost că, dacă nu-mi numele fișierul meu .php, nu am beneficiul de sintaxă mai evidențierea. Acest fișier este sunat add3. Astfel încât să pot rula mai târziu cu ./ add3 și nu ./ add3.php. Deci reason-- este încă bine, este încă valabil PHP, dar aceasta nu sintaxă evidențiată, deoarece acest fișier nu este numit something.php. Asta e singura diferență reală aici, plus tacâmul. Deci, haideți să vedem ce se întâmplă atunci când Încerc și rula acest program. ./ Add3, la fel cum am face-o cu C. Bash. ./ Permisiunea add3 negat. Aceasta este ceea ce ai de gând pentru a vedea dacă vă uitați de a utiliza comanda chmod pentru a schimba permisiunile fișierului. După cum se dovedește, PHP regulat Fișierele nu pot fi pur și simplu executat. Acestea pot fi interpretate, dar suntem a face ceva un pic diferit aici. Suntem o executare. Și așa că am nevoie pentru a adăuga permisiunea de execuție, chmod o + x pentru a add3. Atunci pot să spun ./ add3. Vă rugăm să da-mi un număr. 5, 6. Suma acestor două numere este 11. În mod similar, am CHMOD deja dice2, așa că am putea doar să tastați ./ dice2, vă laminate un 1 și un 1, tu laminate un 5 și un 4, și așa mai departe. Deci, asta e destul de mult Ideea de o sintaxă PHP, nu? Există o mulțime de a obține prin intermediul, știu. Dar sperăm ai văzut acum că PHP nu este cu adevărat diferit de C și într-adevăr ne oferă posibilitatea de să ia lucrurile la un alt nivel sau două. Nu avem cu adevărat să vă faceți griji prea mult about-- noi nu prea trebuie să vă faceți griji prea mult despre detaliile de nivel scăzut noi a trebuit să vă faceți griji cu privire la cu C, nu? Ne putem concentra pe cea mai mare chestii nivel PHP ne permite să facem și să ia pentru acordată că va lucra pentru noi. Așa că ne dă posibilitatea de acum, trecerea de la C la PHP, pentru a face programe care sunt mult mai complexă și, probabil, mult mai robust. Așa că sper că te distrezi de lucru cu PHP, și eu sunt Doug Lloyd. Acest lucru este CS50.