DOUG LLOYD: Deci, în nostru video de pe sintaxa PHP, am vorbit foarte mult despre modul în care PHP pot fi folosite la linia de comandÄ pentru a rula programe într-un mod care suntem destul de familiarizaÈi cu de la C. Dar, aÈa cum am menÈionat, de asemenea, în acest video, PHP a fost iniÈial dezvoltat pentru a punerea în aplicare a programare web, site-uri web. Èi astfel, în acest film suntem de gând sÄ vorbesc despre modul în care ne-am utilizaÈi PHP în contextul dezvoltÄrii web. Ètim, deja, de la videoclipul nostru pe HTML, cÄ site-urile sunt construite dintr-un set de tag-uri HTML care definesc semantic structura unei pagini web. Dar site-uri care sunt construit cu HTML pur suferÄ de o foarte, limitare foarte gravÄ. Èi pentru a ilustra aceastÄ limitare, sÄ ia în considerare urmÄtoarele. Deci, acum vreau sÄ construiascÄ o paginÄ web cÄ, ori de câte ori utilizatorul vizitelor, ea îmi dÄ curent timp în Cambridge, Mass., afiÈarea la ultima minut. DacÄ am fost a face acest lucru chiar acum, Am putea spune ceva de genul asta. Ora curentÄ Ã®n Cambridge-- aÈa cÄ am Tag-uri HTML, tag-uri, tag-uri cap titlu, corp tags-- curent timp în Cambridge este 14:08, imprimarea timp militare. Ce se întâmplÄ dacÄ e acum 14:09, 14:09? Bine pânÄ acum, cu HTML, am pentru a merge în Èi schimba-l la 14:09. Èi într-o minut mai târziu, Trebuie sÄ-l schimbe din nou. Èi într-o minut mai târziu, Trebuie sÄ-l schimbe din nou. Èi, dupÄ cum vÄ puteÈi imagina, e probabil cel mai rÄu loc de muncÄ vreodatÄ. Tu eÈti webmaster pentru o paginÄ web, Èi în fiecare minut, 24 de ore pe zi, aveÈi nevoie pentru a actualiza ora curentÄ de deschiderea manualÄ a time.html Èi schimbarea doar cÄ fragment de cod pentru a spune ora curentÄ Ã®n ore Èi minute. Asta nu e, probabil, o foarte buna utilizare a resurselor noastre, atât umane cât Èi de calcul. Site-uri, care sunt toate HTML sunt complet statice. Singura modalitate de puteÈi actualiza conÈinut, cum tocmai am vÄzut, este de a deschide manual cele source fiÈiere, edita le, Èi sÄ le salvaÈi. Èi apoi când utilizatorul reîmprospÄteazÄ pagina, sau viziteazÄ pagina pentru prima timp, vor primi cel mai recent conÈinut. Dar numai pentru cÄ ne-am editat manual. DacÄ vom începe sÄ se amestecÄ unele PHP acolo, codul nostru poate obÈine o mulÈime mai flexibil. Si putem avea un mod de paginile noastre sÄ fie dinamicÄ, sau actualiza ei înÈiÈi, fÄrÄ a necesita sÄraci nostru webmaster în exemplul anterior pentru a fi manual actualizarea lucruri. Ei pot face acest lucru în mod automat. Noi nu trebuie sÄ intervinÄ. Putem dormi. Care este, probabil, un lucru bun, dacÄ faci o mulÈime de programare web. Deci, în CS50 IDE, vom rula un server web numit Apache. Este un foarte frecvent utilizate, open source sistem server web. Acest sistem are capacitatea de a interpreta PHP, care va fi util dacÄ vrei sa faci nici o programare PHP. Èi în IDE CS50, avem o comandÄ pentru a face acest lucru foarte uÈor de fÄcut, apache50 începe. Èi apoi cÄ slash cale, slash la, slash dir, cÄ e doar un mod foarte comun de indicând ce ai specificat aici este o cale de a un anumit director vÄ cÄ doresc sÄ fie rÄdÄcinÄ site-ul, sau pagina rÄdÄcinÄ, sau dosarul din care serverul de web va începe sÄ examineze Èi sÄ serveascÄ fiÈiere le clienÈilor care le solicitÄ. Deci, haideÈi sÄ pop peste la CS50 IDE, doar pentru a sÄ vÄ arate, într-adevÄr rapid, cum funcÈioneazÄ acest lucru. Deci, aici, în IDE CS50, sunt într-o director numit SÄptÄmâna Zero Nine. Èi am two-- am executat o comandÄ LS doar de mai sus pentru a vÄ arÄta cÄ am douÄ directoare de aici, PHP, care este un set de fiÈiere care am folosit în video sintaxa PHP, Èi apoi PHP-web, care este un set de fiÈiere care am ar dori sÄ foloseascÄ Ã®n acest film. Èi aÈ dori sÄ Ã®ncep o instanÈÄ de server web cu conÈinutul folderului PHP-ul ca fiÈierele sunt servite. Deci, ce am de gând sÄ fac? Am de gând sÄ tastaÈi apache50 spaÈiu începe, PHP spaÈiu, linie web. Asta e calea spre directorul de unde am în prezent sunt. Apoi am lovit Enter. Se va face o pic de chestii aici. Èi apoi o sÄ spun, Apache pornit cu succes. Site-ul dvs. este acum disponibil Èi at-- atunci nu e URL-ul pentru site-ul. Deci, ce am de gând sÄ fac? Am de gând sÄ copiaÈi rapid acest lucru. Èi am de gând sÄ deschidÄ up-- Èi Voi micÈora un pic here-- Am de gând sÄ se deschidÄ o filÄ nouÄ Ã®n Chrome. Èi am de gând sÄ viziteze acel URL. Am de gând sÄ lovi Enter. O sÄ se încarce. Èi voi micÈora din nou. Èi putem vedea aici este conÈinutul directorul meu web PHP. Deci, acum ce se intampla de fapt aici este, de exemplu mea de CS50 IDE serveÈte pânÄ aceste fiÈiere la cineva care le solicitÄ. Èi-a lungul acest videoclip, vom sorta de aruncÄm o privire la o grÄmadÄ de acestea fiÈiere diferite în context. Pentru a testa cÄ Apache dvs. server este de lucru, care este, în general, va sÄ fie cazul în CS50 IDE, dar dacÄ faci acest lucru mai mult, în general, Èi începe construirea propriul dvs. de web servere, existÄ o foarte un fel comun de analog la, "Hello World", care este de obicei utilizate pentru dezvoltarea PHP web. Care este de a avea un fiÈier format din doar acest code-- un delimitator PHP set cu info PHP, paranteze, punct Èi virgulÄ Ã®ntre. Care este de fapt un deosebit FuncÈia PHP care vÄ spune ce versiune de PHP se executÄ. Deci, în CS50 IDE, am acel fiÈier disponibil doar sÄ-Èi arate ce ar arÄta. Deci, mÄ uit la index mea din exemplu meu PHP. Apache exemplu meu se executÄ conÈinutul de PHP-Web. Èi am un fiÈier numit aici info.php. Am de gând sÄ faceÈi clic pe el, zoom out. Aceasta este ceea ce ai de gând pentru a vedea, destul de mult. Acesta este doar mi-a spus cÄ serverul meu Apache este de lucru. Èi acest lucru este, aparent, versiune de PHP pe care am pornit. Acest lucru este analog mea de a "Hello World." Deci, eu Ètiu lucrurile sunt operaÈionale. Deci, suntem bine sÄ plec. Putem continua de aici. Deci, haideÈi sÄ reexamineze cÄ exemplu timp am fost vorbesc despre cu webmaster-ul nostru jalnic care a trebuit sÄ actualizeze pagina constant. Acest lucru ar putea fi un remediu pentru modul în care Mi-ar pune în aplicare lucruri astfel încât nu a webmaster trebuie sÄ ÈinÄ actualizarea timp. Ar fi doar un fel de se întâmplÄ Ã®n mod automat. Ãn jos de mai jos, HTML, e destul de similare, cu o singurÄ excepÈie. Dar aici am niÈte PHP în partea de sus. Am, aparent, numit acest FuncÈia date_default_timezone_set. Èi nu vorbim despre toate aceste funcÈii în CS50, pentru cÄ PHP are, probabil, zeci de mii. CÄ ar putea fi un pic de o exagerare, dar nu s-ar putea sÄ fie. Are o mulÈime de funcÈii construit în. Èi astfel încât acesta este o functie aparent stabileÈte fusul orar ca SUA / de Est, care este fusul orar pe care eu sunt în prezent în a face acest film. Apoi am face un apel la funcÈie numitÄ, data. Èi, aparent, eu depozitarea Sale de ceva numit, timp. Deci, ce se întâmplÄ aici? Ei bine, practic ceea ce este întâmplÄ este, eu sunt efectuarea unui apel la unele server care se va spune-mi ce în prezent este timpul. Èi eu l conversia într-un format de ore, minute, secunde. Iar motivul este de capital H este acest este de gând sÄ-mi dea timp 24 de ore, nu 12 timp de ore, ceea ce ar fi h litere mici. Èi eu doar stocarea cÄ Ã®ntr-o variabilÄ numitÄ, timp. AÈa cÄ a doua linie de PHP acolo, apelul la funcÈia, data, este doar obtinerea unele string, care este O sÄ-mi dea data, Èi timp, Èi o grÄmadÄ de alte informaÈii. Èi primul argument acolo, cÄ sa, este doar extragerea parte importantÄ cÄ Ã®mi pasÄ de acest exemplu, care este ora, minutul, Èi de-a doua. Deci asta e tot ceea ce se întâmplÄ. AÈa cÄ am stoca cÄ Ã®ntr-un timp variabil $. Èi apoi în jos la foarte jos acolo, am au ca prescurtare pentru imprimarea ora curentÄ. AÈa cÄ am de gând sÄ imprima doar ceea ce este timpul curent. Deci, haideÈi sÄ aruncÄm o privire la acest lucru în IDE CS50 Èi a vedea cum suntem acum economisire cÄ webmaster o mulÈime de probleme. Bine, asa ca aici am din nou înapoi la directorul rÄdÄcinÄ de exemplu meu Apache. Èi am un fiÈier numit aici time.php. MÄ duc sÄ faceÈi clic pe asta. Èi voi derula în sus, pentru cÄ suntem mÄritÄ destul de departe. Timpul curent este 14:20:34. Deci, Fac o orÄ, minute si secunde. Èi pot actualiza paginÄ Èi obÈine noi timp. --41. MÄ duc pentru a actualiza pagina Èi de a lua noi timp, 44, 46, 47. Deci, eu nu sunt în mod clar schimba nimic eu. Sunt aici sÄ actualizaÈi pagina. Deci, eu nu pot fi acolo editarea ei. Èi îÈi promit, eu nu nici complicii care sunt editarea fiÈierului în numele meu pe partea. Eu doar folosind aceastÄ funcÈie PHP, timp, pentru a genera timpul pentru mine automat. AÈa cÄ, chiar dacÄ am adormit, Èi serverul meu de web se executÄ, utilizatorul care viziteazÄ pagina este încÄ mergi la a lua exact ora curentÄ. AÈa cÄ e destul de bun. Am fÄcut site-ul meu mai dinamic cu nu prea mult cod PHP. Acesta a fost doar douÄ linii de cod Èi apoi un pic de o declaraÈie de imprimare. Èi deja am un site-ul mult mai dinamic decât cÄ prim exemplu am vÄzut la începutul videoclipului. Deci, amintesc de video de pe sintaxa PHP cÄ, atunci când interpretul PHP ruleaza programul nostru, ignorÄ totul asta nu e în interiorul delimitatori PHP, scuipa-l. Ãn acest exemplu, ceea ce lucru cÄ a fost scuipa afarÄ era HTML. Èi acest lucru înseamnÄ cÄ pot acum rÄspândi HTML Èi PHP împreunÄ. Deoarece interpretul va doar ignora HTML Èi literalmente o ieÈire. Ceea ce este bine, nu? Pentru cÄ probabil, la sfarsitul zilei, AÈ dori sÄ-mi site-ul construite din HTML. Astfel încât orice browser web poate interpreta ea, sau sÄ Ã®nÈeleagÄ HTML pe pagina Èi face ca pe ceva care ne Pot sÄ Ã®nÈeleg de fapt ca oameni. Èi eu pot folosi doar PHP pentru pÄrÈile din site-ul meu Se solicitÄ dinamism, care ma solicita de a avea lucruri care se actualizeazÄ Ã®n mod constant. InformaÈiile static poate sta la fel. OK, astfel cÄ e bine. Dar de ce aÈ face acest lucru? De ce aÈ amesteca HTML Èi PHP? AÈ putea imprima doar din toate HTML, utilizând funcÈia PHP imprimare. De ce nu am face asta? Gandeste-te pentru un al doilea. De ce, când am putea imprima doar out-- I ar putea avea linii de PHP care spun doar, tag-ul HTML print, cap de imprimare. De ce nu am face asta? De ce am de amestecare PHP Èi HTML? Ei bine, dacÄ credeÈi cÄ cu privire la aceasta pentru o secunda. PHP, interpretul are sÄ interpreteze ceea ce vede. Èi aÈa va avea pentru a executa o linie de cod. TipÄriÈi HTML. Imprima tag cap deschis. Imprima tag titlu deschis. Va trebui sÄ executa Èi interpreta cÄ fiecare pas din drum. De ce nu lasa doar interpret doar luciu peste lucrurile nu înÈelege Èi o fac în mod automat? O sÄ-mi salva o mulÈime de timp pentru a amesteca HTML mea Èi PHP mea împreunÄ. Èi aÈa de aceea nu Trebuie doar deschis PHP delimitator Èi apoi doar imprima întregul ConÈinutul paginii noastre ca unul PHP gigant apel la funcÈia, Print, apoi aproape delimitator PHP Èi am terminat. Deci, de aceea le-am amesteca împreunÄ. PânÄ Ã®n prezent, nu am vÄzut prea mult din o diferenÈÄ de sintaxa generalÄ PHP. A fost destul de simplu. Am vÄzut deja semn de întrebare, egal. Am vÄzut o pereche de noi apeluri de funcÈii, dar nimic nu într-adevÄr de lux întâmplÄ. SÄ poate face lucruri un pic crescator. Ce se întâmplÄ dacÄ vrem sÄ treci informaÈii între diferite fiÈiere PHP, astfel ca poate utilizatorul poate prezinte informaÈii pentru mine. Èi apoi am putea face ceva cu ea la o altÄ paginÄ. Deci, PHP are suport pentru ceva numit Super Global Variabile, care sunÄ destul de minunat. Sunt de fapt doar tablouri asociative gigant cÄ ajuta la implementarea acestui funcÈionalitatea de trecere informaÈii între fiÈierele PHP care sunt existente pe serverul nostru web. Prima dintre aceste super- GLOBALS este numit $ _GET. Èi este, probabil, mai simplÄ de a înÈelege. Ce se întâmplÄ cu $ _GET? Ei bine, de fapt, utilizatorul este O sÄ tastaÈi informaÈii suplimentare la sfârÈitul URL-uri noastre. Èi tot ceea ce tastaÈi, presupunând este formatat într-un mod special numit un Èir de interogare, care este doar un set de perechi de valoare cheie separat de and-urile. Aceste perechi de valoare-cheie va fi stocate într-un tablou asociativ $ _GET. Èi de la videoclipul nostru pe Sintaxa PHP, Ètim cum sÄ lucreze cu tablouri asociative deja. Deci, aici este un exemplu de unele PHP, unde poate sunt extragerea toate perechile de valori cheie cÄ utilizatorul furnizate în URL-ul. Deci, am deschiÈi PHP delimitator. Am o buclÄ foreach. MÄ iterarea peste Super Array Global numit $ _GET. Èi vreau sÄ fie în mÄsurÄ sÄ se refere atât cheia Èi valoarea. Èi eu doar le imprimaÈi out, fiecare pe aparent propriul tag-ul sÄu alineatul aici. Am imprimarea unele HTML Èi interpolarea valorilor de cheie Èi valoare în aceastÄ declaraÈie. Deci, haideÈi sÄ aruncÄm o privire la modul în care acest va lucra efectiv pe IDE nostru. Èi poate acest lucru va ajuta ilustreazÄ un pic de ceea ce este, de fapt face GET. Deci, m-am întors aici, în rÄdÄcinÄ mea de web. Èi voi mÄri un pic sÄ-Èi arÄt cÄ am un fisier numit, get1.php. Deci, haideÈi sÄ faceÈi clic pe get1.php. Èi nu vÄd nici un conÈinut. Asta e ciudat, nu? Ei bine, nu chiar, de fapt. Pentru cÄ nu a furnizat nimic în URL-ul. Am de gând sÄ get1.php, dar eu nu a furnizat nici un perechi de valoare-cheie ca parte a Èir meu de interogare. Deci, haideÈi sÄ adÄugaÈi un Èir de interogare Èi sÄ vedem ce se poate face acest fiÈier. Pentru a începe un Èir de interogare te doar de tip semn de întrebare. Atunci poate o sÄ spun name = Doug & an = 2015. Èi atunci voi lovi Enter. Acum observaÈi ce se întâmplÄ. Sunt încÄ Ã®n get1.php. Dar acum am livrat perechi de valoare-cheie, Èi eu sunt imprimarea ei pe cont propriu Numele paragraph--, an Doug-- 2015. Asta e exact codul tocmai am a vÄzut pe diapozitiv în urmÄ cu o clipÄ. Èi dacÄ doriÈi sÄ adÄugaÈi un alt poate pereche de valoare-cheie, si class = CS50. Acum am o altÄ valoare cheie pereche care este imprimat când am revizuiascÄ din nou URL-ul. Acum, poate cÄ acest lucru nu este formatat teribil de bine. Deci, am o alta versiune a get.php. E get2.php. DiferenÈa în acest unul este cÄ am fiÈier CSS, Èi formate lucrurile o puÈin mai mult frumos pentru mine. Nu e poate cel mai mult frumos CSS din lume. Dar e doar un alt mod de a face aceasta. Deci, eu pot obÈine încÄ acces a variabilelor meu folosind $ _GET. Èi în acest caz, eu sunt doar un fel de face CSS un pic mai mult de lux. Èi dacÄ ne-am pop de peste la IDE mea pentru o secundÄ, Am sÄ-Èi arÄt în PHP web mea director aici, get2.php. Vom deschide, unele HTML aici. Se pare cÄ eu sunt de legÄturÄ Ã®n care CSS fiÈier Vorbeam despre. Am deschis o etichetÄ masÄ. Èi apoi aici e bucla foreach mea. Aici este cÄ, ceea ce am a arÄtat pe diapozitiv înainte. Singura diferenta este ca eu au aceastÄ cheie Èi valoare CSS Coafura cÄ am sÄ-l aplica. Dar asta e tot ce fac, este eu sunt iterarea peste $ _GET pentru a obÈine toate din perechile de valori cheie. Èi eu le-imprimarea ca masa. Èi, aparent, eu formatare cheile într-un fel, cu clasa de "cheia", a