Doug LLOYD: Taigi mÅ«sų Vaizdo PHP sintaksÄ, mes kalbÄjome daug apie tai, kaip PHP gali bÅ«ti naudojamas komandų eilutÄje paleisti programas tokiu bÅ«du, kad mes gana gerai susipažinÄs su iÅ¡ C. Bet kaip aÅ¡ taip pat paminÄjo, tame video, PHP iÅ¡ pradžių buvo sukurtas įgyvendinti Web programavimas, interneto svetainÄse. Ir taip Å¡iame video mes ketiname kalbÄti apie tai, kaip mes naudoti PHP interneto plÄtros kontekste. Mes žinome, jau nuo MÅ«sų vaizdo HTML, kad tinklapis yra pastatytas iÅ¡ visų HTML žymes rinkinys kad semantiÅ¡kai apibrÄžti iÅ¡ tinklalapio struktÅ«ra. Bet svetainių, kurios yra pastatytas su gryno HTML kenÄia nuo labai, labai rimtas apribojimas. Ir iliustruoti šį apribojimÄ , Apžvelkime Å¡iuos. Taigi, dabar aÅ¡ noriu sukurti tinklalapį kad, kai vartotojas apsilanko IT, tai suteikia man srovÄ laikas, Cambridge, Mass., jÄ rodyti iki naujausios minutÄ. Jeigu aÅ¡ buvo padaryti Å¡iÄ teisÄ dabar GalÄÄiau pasakyti kažkÄ panaÅ¡aus į tai. Dabartinis laikas Cambridge-- todÄl turiu HTML žymes, galvos žodžius, pavadinimas žymÄs, kÅ«no tags-- srovÄ Laikas Kembridžo yra 14:08, spausdinti karinÄ laikÄ . Kas atsitiks, jei tai dabar 02:09, 14:09? Na iki Å¡iol, su HTML, turiu eiti ir pakeisti jį į 14:09. Ir tada vienÄ minutÄ vÄliau, Turiu pakeisti jį dar kartÄ . Ir tada vienÄ minutÄ vÄliau, Turiu pakeisti jį dar kartÄ . Ir kaip jÅ«s galite įsivaizduoti, kad tai tikriausiai blogiausias darbas bet kada. JÅ«s esate tinklalapiui redaktorius, ir kiekvienÄ minutÄ, 24 valandas per parÄ , Jums reikia atnaujinti esamÄ laikÄ rankiniu bÅ«du atidaryti time.html ir keiÄiant tik, kad kodo fragmentÄ pasakyti Dabartinis laikas valandomis ir minutÄmis. Tai tikriausiai nÄra labai gerai panaudoti savo iÅ¡teklius, žmogiÅ¡kųjų ir skaiÄiavimo. Tinklalapiai, kurie visi yra HTML yra visiÅ¡kai statiÅ¡ka. Vienintelis bÅ«das galite atnaujinti turinys, kaip mes kÄ tik matÄme, yra rankiniu bÅ«du atidaryti tuos Å¡altinį failai, juos redaguoti ir iÅ¡saugoti juos. Ir tada, kai vartotojas atgaivina puslapį, arba apsilanko puslapyje pirmas laikas, jie bus gauti naujausiÄ turinį. Bet tik todÄl, kad mes rankiniu bÅ«du jį redagavo. Jei pradÄsime maiÅ¡yti Å¡iek tiek PHP ten, MÅ«sų kodas gali gauti daug lankstesnis. Ir mes galime turÄti mÅ«sų puslapiuose bÅ«das bÅ«ti dinamiÅ¡ka, ar atnaujinti patys, nereikalaujant mÅ«sų vargÅ¡ams administratoriui ankstesniame pavyzdyje bÅ«ti rankiniu bÅ«du atnaujinti dalykus. Jie gali tai padaryti automatiÅ¡kai. Neturime leisti įstoti į bylÄ . Mes galime pamiegoti. Kuris yra turbÅ«t geras dalykas, jei darai web programavimas daug. Taigi CS50 IDE, vedame Web serveris vadinamas "Apache. Tai labai dažnai naudojamas, atviro kodo žiniatinklio serverio sistema. Å i sistema yra gebÄjimas interpretuoti PHP, kuri bus naudinga, jei norite padaryti bet PHP programavimo. Ir CS50 IDE, mes turime komandÄ kad tai labai lengva padaryti, apache50 pradÄti. Ir tada, kad velniop kelias, velniop, velniop rež, tai tik tikrai paplitÄs bÅ«das nurodant, kÄ jÅ«s Äia nurodyta yra kelias į ypaÄ katalogas kad jÅ«s nori bÅ«ti Å¡aknis SvetainÄs arba Å¡aknis puslapis arba aplankÄ , iÅ¡ kurio jÅ«sų žiniatinklio serverio pradÄs nagrinÄti bylas ir tarnauti juos klientams, kurie jas praÅ¡o. Taigi leiskite pop perkelti į CS50 IDE, tik parodyti jums, tikrai greitai, kaip tai veikia. Taigi Äia CS50 IDE, aÅ¡ A katalogas vadinamas SavaitÄ nulis devyni. Ir aÅ¡ turiu two-- Turiu įvykdytos LS komanda tiesiog pirmiau parodyti jums, kad aÅ¡ turiu du katalogai Äia, PHP kuris yra failų rinkinys, kad aÅ¡ naudojamas PHP sintaksÄ vaizdo, tada PHP-interneto, kuri yra failų rinkinys, kad aÅ¡ norÄtų naudoti šį vaizdo įraÅ¡Ä . Ir aÅ¡ norÄÄiau pradÄti interneto serverio egzempliorius su PHP Web aplanko turinį kaip failai įteikus iki. Taigi, kÄ aÅ¡ ketinu daryti? AÅ¡ ketina įvesti apache50 erdvÄ pradÄti, erdvÄ PHP, brÅ«kÅ¡nys interneto. Å tai į katalogÄ kelias iÅ¡ kur aÅ¡ Å¡iuo metu esu. Tada aÅ¡ paspauskite Enter. Ji ketina padaryti Å¡iek tiek daiktų Äia. Ir tada jis ketina pasakyti, Apache pradÄjo sÄkmingai. JÅ«sų svetainÄ dabar yra at-- ir tada ten už svetainÄs URL. Taigi, kÄ aÅ¡ ketinu daryti? AÅ¡ ruoÅ¡iuosi greitai nukopijuoti tai. Ir aÅ¡ ruoÅ¡iuosi atidaryti up-- ir AÅ¡ nutolinti truputį here-- AÅ¡ ruoÅ¡iuosi atverti naujas skirtukas "Chrome". Ir aÅ¡ ruoÅ¡iuosi aplankyti šį URL. AÅ¡ ruoÅ¡iuosi paspauskite Enter. Tai vyksta įkelti. Ir aÅ¡ nutolinti dar kartÄ . Ir matome, Äia yra Mano turinys PHP Web Directory. Taigi, dabar, kas iÅ¡ esmÄs vyksta Äia yra mano pavyzdys CS50 IDE tarnauja iki Å¡ių failų Bet kas, kas juos praÅ¡o. Ir virÅ¡ žinoma Å is vaizdo įraÅ¡as, mes rÅ«Å¡iuoti pažvelgti iÅ¡ jų krÅ«va iÅ¡vaizdÄ Ä¯vairius failus kontekstÄ . NorÄdami iÅ¡bandyti, kad jÅ«sų Apache serveris veikia, kuris paprastai vyksta bÅ«ti atvejis CS50 IDE, bet jei jums tai padaryti apskritai, ir pradÄdami kurti savo web Serveriai, ten tikrai bendra tarsi analoginių prie, "hello world", tai yra dažniausiai naudojama PHP Web Development. Kuris yra turÄti failÄ sudaro tik Å¡ios code-- PHP atskirkite rinkinys su PHP info, skliaustai, kabliataÅ¡kiu tarp. Kuris iÅ¡ esmÄs yra ypatinga PHP funkcijos, kad jums pasakys, kokia versija PHP dirbate. Taigi CS50 IDE, turiu kad failas prieinama tik parodyti jums, kÄ Å¡is atrodys. Taigi aÅ¡ žiÅ«riu mano indeksÄ iÅ¡ mano PHP pavyzdžiui. Mano Apache atvejis veikia PHP-Web turinys. Ir aÅ¡ turiu failas Äia vadinamas info.php. AÅ¡ ruoÅ¡iuosi jį spustelÄkite, nutolinti. Tai yra tai, kÄ jÅ«s ketinate pamatyti, gana daug. Tai tik pasakojo, kad mano Apache serveris veikia. Ir tai yra, matyt, PHP versija, kad BÄgu. Tai yra mano analoginis "hello world". Taigi aÅ¡ žinau, viskas yra veikti. Taigi mes gerai eiti. Mes galime pradÄti nuo Äia. Taigi leiskite peržiÅ«rÄti, kad laikas pavyzdys buvome kalbame apie mÅ«sų prastos webmaster kurie turÄjo atnaujinti puslapį nuolat. Tai gali bÅ«ti dÄl, kaip nustatyti NorÄÄiau įgyvendinti dalykus taip, kad administratoriui nebuvo turi iÅ¡laikyti atnaujinimo laikÄ . Tai tiesiog tarsi atsitikti automatiÅ¡kai. Toliau pateiktoje žemyn, HTML, tai gana panaÅ¡Å«s, su viena iÅ¡imtimi. Bet Äia aÅ¡ turiu Å¡iek tiek virÅ¡uje PHP. AÅ¡, matyt, pavadino šį funkcija date_default_timezone_set. Ir mes nekalbame apie visa Å ios funkcijos CS50, nes PHP tikriausiai deÅ¡imtys tÅ«kstanÄių. Tai gali bÅ«ti, kai jos buvo Å¡iek tiek iÅ¡pÅ«timas, taÄiau ji gali bÅ«ti. Jis atÅ¡oko funkcijų pastatytas daug. Ir taip, tai yra funkcija, matyt, nustato savo laiko juostÄ , kaip mus / Rytų, kuri yra laiko juosta, kad aÅ¡ Å iuo metu priimant šį vaizdo įraÅ¡Ä . Tada aÅ¡ skambinti į funkcija vadinama, data. Ir, matyt, aÅ¡ saugojimÄ JO kažkas vadinamas laiko. Taigi, kas Äia vyksta? Na, iÅ¡ esmÄs tai, kas vyksta yra, aÅ¡ skambutį tam tikru serverį, kuris turi pasakykite man, kÄ laikas metu. Ir aÅ¡ konvertuoti jį į formatÄ valandų, minuÄių, sekundžių. Ir priežastis, tai kapitalas O tai ketina duoti man 24 valandų laiko, o ne 12 valandų laiko, kuris bÅ«tų mažosiomis val. Ir aÅ¡ tiesiog laikyti, kad į kintamÄ jį vadinamÄ , laiko. Taigi, kad antroje eilutÄje PHP ten, prie skambinimo funkcijos, data, yra tik gauti kai eilutÄ, kuri yra ketina duoti man datÄ ir laikas, ir iÅ¡ kitos informacijos krÅ«va. Ir pirmasis argumentas yra, kad jo, tiesiog iÅ¡gauti svarbų vaidmenį kad aÅ¡ rÅ«pi Å¡iame pavyzdyje, kuris yra valandos, minutÄs, ir, antra. Taigi, kad "viskas, kas vyksta. Taigi, aÅ¡ laikyti, kad kintamojo $ metu. Ir tada žemyn labai apaÄioje, aÅ¡ turÄti, kad sutrumpinta spausdinti esamÄ laikÄ . Taigi, aÅ¡ tik ketina spausdinti , kas dabartinis laikas yra. Taigi leiskite pažvelgti tai CS50 IDE ir pamatyti, kaip mes dabar taupyti, kad administratoriui daug problemų. Gerai, kad Äia aÅ¡ vÄl atgal į Å¡akninį katalogÄ mano Apache pavyzdžiui. Ir aÅ¡ turiu failÄ Äia vadinamas time.php. AÅ¡ tik ketina paspausti, kad. Ir aÅ¡ slinkti aukÅ¡tyn, nes mes Mastelis gana toli. Dabartinis laikas yra 14:20:34. Taigi darau tai valandų, minutÄmis ir sekundÄmis. Ir aÅ¡ galiu atnaujinti puslapis ir gauti naujÄ laikÄ . --41. AÅ¡ ruoÅ¡iuosi atnaujinti puslapį ir gauti naujÄ laikÄ , 44, 46, 47. Taigi, aÅ¡ esu akivaizdžiai nÄra kažkÄ pakeisti save. AÅ¡ Äia atnaujinti puslapį. Taigi, aÅ¡ negali bÅ«ti ten atgal jį redaguoti. Ir aÅ¡ jums pažadu, aÅ¡ ne jokių konfederatai kurie redaguodami failÄ mano vardu pusÄje. AÅ¡ tik naudojant, kad PHP funkcijÄ , laikas, generuoti man laikas automatiÅ¡kai. Taigi, kad net jei aÅ¡ miega, ir mano žiniatinklio serveris veikia, vartotojas, kuris apsilanko, kad puslapis yra vis dar ketinate gauti tiksliai esamÄ laikÄ . Taigi tai gana gera. AÅ¡ atlikau mano svetainÄ labiau dinamiÅ¡kas su ne per daug PHP kodÄ . Tai buvo tik dvi eilutÄs kodÄ ir tada Å¡iek tiek spausdinimo ataskaitoje. Ir jau turiu daug labiau dinamiÅ¡kas svetainÄ negu pirmajame pavyzdyje matÄme ties vaizdo pradžioje. Taigi, prisimenu iÅ¡ PHP sintaksÄ vaizdo kad kai PHP interpretatorius veikia MÅ«sų programa, ji ignoruoja viskÄ tai ne viduje PHP separatoriai, spjaudytis jį. Be to, pavyzdžiui, tai, kÄ dalykas kad ji buvo spjaudÄ iÅ¡ buvo HTML. Ir tai reiÅ¡kia, kad galiu dabar prikaiÅ¡ioti HTML ir PHP kartu. Kadangi vertÄjas tiesiog ignoruoti HTML ir tiesiog iÅ¡ÄjimÄ . Kuris yra gera, tiesa? Nes matyt, Dienos pabaigoje, NorÄÄiau savo svetainÄ Ä¯ bÅ«ti pagamintos iÅ¡ HTML. Taigi, kad bet kurios interneto narÅ¡yklÄs gali interpretuoti tai, ar suprasti puslapyje HTML ir padaryti jį kaip kažkÄ , kad mes iÅ¡ tikrųjų gali suprasti kaip žmogui. Ir aÅ¡ galiu naudoti tik PHP už mano svetainÄ dalys reikalauja dinamiÅ¡kumo, kad reikia mane turÄti dalykų, kad atnaujinti nuolat. Statinis informacija gali likti tas pats. Gerai, kad viskas gerai. Bet kodÄl aÅ¡ norÄÄiau tai padaryti? KodÄl turÄÄiau maiÅ¡yti HTML ir PHP? GalÄÄiau tiesiog atsispausdinti visus HTML naudojant PHP spausdinimo funkcijÄ . KodÄl aÅ¡ tai daro? Pagalvokite apie tai sekundÄ. KodÄl, kai aÅ¡ galÄjau tiesiog atsispausdinti out-- aÅ¡ gali turÄti linijas PHP, kad tik pasakyti, Spausdinti HTML tegus, spausdinimo galvutÄ. KodÄl aÅ¡ tai daro? KodÄl aÅ¡ maiÅ¡ant PHP ir HTML? Na, jei jÅ«s manote apie tai sekundÄ. PHP interpretatorius turi interpretuoti tai, kÄ jis mato. Ir todÄl jis ketina turÄti vykdyti kodo eilutÄ. Atsispausdinkite HTML. Atsispausdinkite atviru virÅ¡umi žymÄ . Atsispausdinkite atvira žymÄs pavadinimÄ . Tai teks vykdyti ir interpretuoti kad kiekvienu žingsnį bÅ«du. KodÄl ne tik tegul interpretatorius tiesiog KoloryzowaÄ dalykų ji nesupranta ir tai padaryti automatiÅ¡kai? Jis ketina iÅ¡saugoti man daug laiko maiÅ¡yti savo HTML ir PHP mano drauge. Ir taip, tai kodÄl mes darome ne tiesiog atvirÄ PHP skyriklis ir tada tiesiog atsispausdinti visÄ turinys mÅ«sų puslapyje, kaip vienÄ milžiniÅ¡kÄ PHP skambinti funkcija, spausdinti, ir tada Uždaryti PHP skyriklis ir baigsime. Å tai kodÄl mes sumaiÅ¡ykite juos kartu. Iki Å¡iol mes nematÄme per daug skirtumas nuo bendro PHP sintaksÄ. Tai buvo gana paprasta. Mes jau matÄme klaustukas, lygÅ«s. Mes matÄme keletÄ naujų funkcijų skambuÄių pora, bet nieko tikrai iÅ¡galvotas vyksta. Leiskite gal padaryti dalykus Å¡iek tiek mÄgÄjas. KÄ daryti, jei mes norime perduoti informacijÄ tarp skirtingų PHP failus, kad gal vartotojas gali pateikti informacijÄ man. Ir tada aÅ¡ galÄÄiau padaryti kažkÄ su juo į kitÄ puslapį. Taigi PHP paramÄ kažkas vadinamas "Super Globalus Kintamieji, kurie skamba gana awesome. Jie tikrai tik Giant Association masyvai kad padÄti įgyvendinti šį funkcionalumas kitko informacija tarp PHP failus, yra esama mÅ«sų serveryje. Pirmasis iÅ¡ Å¡ių super globals vadinamas $ _GET. Ir tai turbÅ«t paprasÄiausias suprasti. Kas atsitinka su $ _GET? Na, iÅ¡ esmÄs, vartotojas ketina įvesti papildomÄ informacijÄ , tuo mÅ«sų URL pabaigoje. Ir kÄ jie tipo, darant prielaidÄ , jis suformatuotas tam tikru bÅ«du vadinamas užklausos eilutÄ, kuri yra tik iÅ¡ pagrindinių verÄių porų rinkinys atskirti pagal jungimo ženklus. Tos rakto poros bus saugomi $ _GET masyvÄ . Ir iÅ¡ mÅ«sų vaizdo PHP sintaksÄ, mes žinome, kaip dirbti su Association masyvai jau. Taigi Äia yra pavyzdys kai PHP, kurioje gal aÅ¡ gavybos visi pagrindiniai vertÄs porų kad vartotojas, tiekiamÄ URL. Taigi turiu Open PHP skyriklis. Turiu foreach ciklÄ . AÅ¡ Iteracja visoje Super Pasaulinis masyvas vadinamas $ _GET. Ir aÅ¡ noriu, kad bÅ«tų galima kreiptis tiek raktui ir vertÄ. Ir aÅ¡ tiesiog jų spausdinimÄ , ir kiekvienu atveju viena ant matyt, savo dalis žyma Äia. AÅ¡ spausdinti Å¡iek tiek HTML ir interpoliuojant vertes raktas ir vertÄ Ä¯ Å¡io pareiÅ¡kimo. Taigi leiskite pažvelgti, kaip tai atrodo bÅ«tų faktiÅ¡kai dirba mÅ«sų IDE. O gal tai padÄs iliustruoti truputį kÄ gaunate iÅ¡ tikrųjų daro. Taigi, aÅ¡ vÄl Äia mano interneto Å¡aknis. Ir aÅ¡ priartinti A Å¡iek tiek parodyti jums, kad turiu failÄ pavadinimu, get1.php. Taigi leiskite paspausti get1.php. Ir aÅ¡ nematau jokio turinio. Tai keista, tiesa? Na, tikrai ne iÅ¡ tikrųjų. Nes aÅ¡ nepateikÄ nieko URL. AÅ¡ ruoÅ¡iuosi get1.php, bet aÅ¡ nepateikÄ jokių rakto poros kaip savo užklausos eilutÄ. Taigi leiskite pridÄti užklausos eilutÄ ir pamatyti, kÄ Å¡is failas gali padaryti. NorÄdami pradÄti užklausos eilutÄ jums tiesiog įraÅ¡ykite klaustukÄ . Tada gal aÅ¡ sakau name = Doug & metai = 2015. Ir tada aÅ¡ paspauskite Enter. Dabar pastebÄti, kas vyksta. AÅ¡ vis dar get1.php. Bet dabar aÅ¡ tiekiamas rakto poros, ir aÅ¡ spausdinti juos dÄl jų paÄių paragraph-- vardas, Doug-- metų, 2015. BÅ«tent kodas mes tiesiog pamaÄiau ant skaidrÄs prieÅ¡ momentas. O jei aÅ¡ noriu gal pridÄti kitÄ rakto pora, & class = CS50. Dabar turiu kitÄ rakto pora, kad manimi iÅ¡spausdinti kai aÅ¡ peržiÅ«rÄti URL dar kartÄ . Dabar gal tai ne suformatuotas siaubingai gerai. Taigi turiu kitÄ get.php versijÄ . Tai get2.php. Ä® Å¡is skirtumas vienas Turiu CSS failÄ , ir formatai dalykų Å¡iek tiek daugiau gražiai man. Tai gal ir ne pats Gražus CSS pasaulyje. Bet tai tik dar vienas bÅ«das tai daryti. Taigi, aÅ¡ vis dar galite gauti prieigÄ mano kintamųjų naudojant $ _GET. Ir Å¡iuo atveju, aÅ¡ tiesiog rÅ«Å¡ies priÄmimo CSS Å¡iek tiek daugiau iÅ¡galvotas. Ir jei mes pop perkelti į Mano IDE antra, AÅ¡ jums parodysiu, mano PHP web katalogas Äia get2.php. Mes jÄ atidaryti, kai HTML Äia. Matyt aÅ¡ susiejimas, kad CSS failÄ aÅ¡ kalbÄjau apie tai. AÅ¡ atidaryti lentelÄ Å¾ymÄ . Ir tada Äia mano foreach ciklas. Äia yra tai, kad tai, kÄ aÅ¡ parodÄ ant prieÅ¡ skaidrÄ. Vienintelis skirtumas yra tai, aÅ¡ turi šį raktÄ ir vertÄs CSS stilius, kad aÅ¡ kreiptis į jį. Bet tai viskas, kÄ aÅ¡ darau, yra aÅ¡ Iteracja visoje $ _GET gauti visus iÅ¡ pagrindinių verÄių porų. Ir aÅ¡ jų spausdinimÄ , kaip stalo. Ir, matyt, aÅ¡ formatavimÄ raktus vienaip, su