DOUG LLOYD: Do en nia vídeo sur PHP sintakso, ni parolis multe pri kiel PHP povas esti uzita ĉe la komandlinio kuri programojn en maniero kiu ni povos egale konanta de C. Sed, kiel mi ankaŭ menciis en tiu video, PHP estis disvolvita komence por efektivigu ttt programado, retejoj. Kaj tial en ĉi tiu video ni estas tuj parolos pri ni kiel uzi PHP en la ttt disvolviĝo kuntekston. Ni scias, jam, de niaj filmetoj en HTML, ke retejoj estas konstruita el aro de HTML etikedoj ke semantike difini la strukturo de retpaĝo. Sed retejoj kiuj estas konstruita per pura HTML suferas tre, tre seriozan limigon. Kaj por ilustri ĉi tiun limigon, ni konsideru la sekvan. Do nun mi volas konstrui retpaĝo ke, kiam ajn la uzanto vizitas ŝin, ĝi donas al mi la nunan tempo en Kembriĝo, Mass., montri ĝin al la lasta minuto. Se mi estis faranta ĉi tiun rajton nun, Mi povus diri ion kiel tion. Nuna tempo en Cambridge-- tial mi havas HTML etikedoj, kapo etikedoj, titolo etikedoj, korpo tags-- la nuna tempo en Cambridge estas 14:08, presi el milita tempo. Kio okazas se ĝi estas nun 2:09 Pm, 14:09? Nu ĝis nun, kun HTML, mi havas iri kaj ŝanĝu ĝin al 14:09. Kaj tiam unu minuton poste, Mi devos ŝanĝi ĝin denove. Kaj tiam unu minuton poste, Mi devos ŝanĝi ĝin denove. Kaj kiel vi povas imagi, ke estas probable la plej malbonan laboron iam. Vi estas la retmajstro por retpaĝon, kaj ĉiu minuto, 24 horoj tage, Vi bezonas ĝisdatigi la nuna tempo de permane malfermante time.html kaj ŝanĝante Nur ke fragmento de kodo diri la nuna tempo en horoj kaj minutoj. Tio probable ne estas tre bona uzo de niaj resursoj, ambaŭ homa kaj komputa. Retejoj kiuj estas ĉiuj HTML estas tute statikaj. La sola maniero vi povas ĝisdatigi enhavo, kiel ni ĵus vidis, estas permane malfermi tiujn fonto dosierojn, redakti ilin kaj konservi ilin. Kaj tiam kiam la uzanto refreŝigas la paĝo, aŭ vizitas la paĝon por la unua tempo, ili ricevos la lasta enhavo. Sed nur ĉar ni permane redaktis ĝin. Se ni komencas miksi iuj PHP tien, nia kodo povas akiri multe pli fleksebla. Kaj ni povas havi vojon por nia paĝoj esti dinamika, aŭ ĝisdatigi sin, sen postuli nia kompatinda retestro en la antaŭa ekzemplo esti permane ĝisdatiganta aferojn. Ili povas fari ĝin aŭtomate. Ni ne devas interveni. Ni povas ricevi iun dormon. Kiu estas probable bona afero se vi faras multajn ttt programado. Do en CS50 IDE, ni kuras retservilo nomata Apache. Ĝi estas tre ofte uzata, malfermita retservilo sistemo. Tiu sistemo havas la kapablo interpreti PHP, kiu tuj estos utila se vi volas fari ajnan PHP programado. Kaj en CS50 IDE, ni havas komandon fari ĉi tre facila fari, apache50 komenci. Kaj tiam tiu oblikvo irejo, oblikvo por, oblikvo dir, tio estas nur vere komuna maniero indikante kion vi specifita tie estas vojo al aparta dosierujo kiu vi volas esti la radiko ejo, aŭ la radikon paĝo, aŭ la dosierujo de kiu via retservilo komencos ekzameni dosierojn kaj servi ilin al klientoj kiuj petas ilin. Do ni Pufo al CS50 IDE, nur por montri vin, vere rapida, kiel tio funkcias. Do tie en CS50 IDE, mi estas en dosierujo nomita Semajno Zero Nine. Kaj mi havas two-- mi havas ekzekutis LS komando simple supre por montri al vi, ke mi havas du dosierujojn en tie, PHP, kiu estas la aro de dosieroj kiujn mi uzis en la PHP sintakso vídeo, kaj tiam PHP-retejo, kiu estas la aro de dosieroj kiujn mi ŝatus uzi en ĉi tiu video. Kaj mi ŝatus komenci retservilo ekzemple kun la enhavo de la PHP-retejo dosierujo kiel la dosieroj estas estanta servita supren. Do kion mi faru? Mi tuj tajpi apache50 spaco komenci, spaco PHP, haltostreko TTT. Jen la vojo al dosierujo de kie mi nuntempe estas. Tiam mi batis Enter. Ĝi tuj fari iomete da aĵoj ĉi tie. Kaj tiam tuj diri, Apache komenciĝis sukcese. Via retejo estas nun disponebla at-- kaj tiam ekzistas la URL por la ejo. Do kion mi faru? Mi tuj rapide kopiu ĉi. Kaj mi tuj malfermos up-- kaj Mi malzomi iomete here-- Mi tuj malfermu nova langeto en Chrome. Kaj mi tuj vizitos tiu URL. Mi tuj batis Enter. Ĝi tuj ŝarĝas. Kaj mi malzomi denove. Kaj ni povas vidi tie estas la enhavo de mia PHP retejo dosierujo. Do nun kio esence okazanta jen, mia petskribo de CS50 IDE servas tiujn dosierojn iu ajn kiu petas ilin. Super la apartajxo de ĉi video, ni ordigi de rigardu faskon de tiuj malsamajn dosierojn en kunteksto. Por testi ke via Apache servilo funkcias, kiu estas ĝenerale iranta esti la kazo en CS50 IDE, sed se vi faros tion pli ĝenerale, kaj vi komenci konstrui vian propran ttt serviloj, ekzistas vere komuna speco de analoga al, "saluton mondo", te kutime uzita por PHP ttt disvolviĝo. Kio estas havi dosieron konsistanta el nur tiun code-- PHP delimitador inkrustita per PHP info, krampoj, punktokomo intere. Kiu estas esence speciala PHP funkcio kiu informas vin kion versio de PHP vi kuras. Do en CS50 IDE, mi havas ke dosiero disponebla nur montri vin kion ĉi aspektus. Do mi rigardis mian indekso de mia PHP ekz. Mia Apache Ekzemple kuras la enhavo de PHP-retejo. Kaj mi havas dosieron tie nomata info.php. Mi tuj klaku ĝin, malzomi. Jen kion vi tuj vidi, preskaux. Tiu estas nur diras min ke miaj Apache servilo funkcias. Kaj tiu estas, ŝajne, la versio de PHP ke Mi kuras. Mia estas analoga al "saluton mondo." Do mi scias aferojn estas operacional. Do ni estas bone iri. Ni povas procedi de ĉi tie. Do ni reviziti ke tempo ekzemplo ni estis parolas kun nia malriĉa retestro kiu devis ĝisdatigi la paĝon senĉese. Tio povas esti solvon por kiom Mi volus apliki aferoj por ke la retestro ne devi teni ĝisdatigi la tempo. Ĝi farus nur ia okazos aŭtomate. La malsupre, la HTML, estas bela similaj, kun unu escepto. Sed ĉi tie mi mem havigis iuj PHP ĉe la supro. Mi, ŝajne, nomita tiu funkcio date_default_timezone_set. Kaj ni ne parolas pri ĉiuj tiujn funkciojn en CS50, ĉar PHP havas probable dekoj da miloj. Tio povus esti iom de troigo, sed eble ne. Oni alvenis multajn funkciojn enkonstruita. Kaj tiel tio estas funkcio ŝajne fiksas mian horzonon kiel US / Eastern, kiu estas la horzono ke mi estas aktuale en farante tiun video. Tiam mi faras alvokon al funkcio vokita, dato. Kaj, ŝajne, mi stokante la LIA de iu nomita, tempo. Do kio okazas ĉi tie? Nu, resume kio estas okazanta estas, mi faras alvokon al iu servilo kiu tuj diru al mi kio tempo aktuale estas. Kaj mi konvertado al formato de horoj, minutoj, sekundoj. Kaj la kialo estas ĉefurbo H estas tiu tuj donu al mi 24 hora tempo, ne 12 hora tempo, kiu estus minuskla h. Kaj mi simple stoki ke en variablo vokis, tempo. Do tiu dua linio de PHP ekzistas, la alvoko al la funkcio, dato, estas nur nun iuj kordoj, kiuj estas tuj al mi la dato, kaj la tempo, kaj faskon de aliaj informoj. Kaj la unua argumento tie, ke LIA, Estas ĝuste ĉerpi la grava parto ke mi zorgas pri ĉi tiu ekzemplo, kiu estas la horo, minuto kaj sekundo. Do jen la tuta tiu okazas. Do mi stoki ke en variablo $ tempon. Kaj poste malsupren al la tre fundo tie, mi havas tiun stenografio por presi el la nuna tempo. Do mi simple tuj presi kion la nuna tempo estas. Do ni rigardu tiun en CS50 IDE kaj vidi kiel ni nun savanta ke retestro multajn problemojn. Bone, do jen mi denove reen ĉe la radika dosierujo de miaj Apache ekz. Kaj mi havas dosieron tie nomata time.php. Mi simple tuj klaku sur tion. Kaj mi rulumu supren, ĉar ni zomis en bela malproksima. La nuna tempo estas 14:20:34. Do mi faras gxin horoj, minutoj kaj sekundoj. Kaj mi povas refreŝigi la paĝo kaj akiri novan tempon. --41. Mi tuj refreŝigi la paĝon kaj akiri novan tempon, 44, 46, 47. Do, mi estas klare ne ŝanĝi ion mem. Mi tie refreŝiga la paĝo. Do mi ne povas esti reen tie redaktante ĝin. Kaj mi promesas al vi, mi ne faras havas ajnan aliancanoj kiu redaktas la dosiero por mi sur la flankon. Mi nur uzas ke PHP funkcio, tempo, por generi la tempo por mi aŭtomate. Tiel ke eĉ se mi estas dormanta, kaj mia retservilo kuras, la uzanto kiu vizitas la paĝon estas ankoraŭ tuj ricevas ekzakte la nuna tempo. Tiel ke estas sufiĉe bonaj. Mi jam faris mian retejon pli dinamika kun ne tro multe PHP kodo. Estis nur du linioj de kodo kaj tiam iomete da print komunikaĵo. Kaj jam mi havas multe pli dinamika ejo ol tiu unua ekzemplo ni vidis ĉe la komenco de la video. Do, memoras de la video sur PHP sintakso ke kiam la PHP interpretisto kuras nia programo, ĝi ignoras ĉiu tio ne ene de PHP delimitadores, kracxi ĝin. En tiu ekzemplo, kion la afero ke oni kracxis el estis HTML. Kaj tio signifas mi povas nun intersperse HTML kaj PHP kune. Ĉar la interpretisto simple ignori la HTML kaj laŭvorte eligo ĝin. Kio estas bona, ĉu ne? Ĉar supozeble, fine de la tago, Mi ŝatus mian retejon al esti konstruitaj de HTML. Tiel ke ajna retumilo povas interpreti ĝi, aŭ kompreni la HTML de la paĝo kaj redonu ĝin kiel ion, kion ni povas fakte kompreni kiel homoj. Kaj mi povas nur uzi PHP por la partoj de mia retejo la postuli dinamismo, kiuj postulas min havi aĵojn kiuj ĝisdatigos senĉese. La statikaj informoj povas resti la sama. Bone, do tio estas bone. Sed kial mi faru tion? Kial mi miksi HTML kaj PHP? Mi povis nur presi ĉiujn HTML, uzanta la PHP print funkcio. Kial mi ne faras tion? Pensu pri ĝi dum sekundo. Ho, kiam mi povis nur presi fjordon mi povus havi liniojn de PHP ke nur diru, print HTML tag, presi kapo. Kial mi ne faras tion? Kial mi miksante la PHP kaj HTML? Nu, se vi opinias pri ĝi dum sekundo. PHP, la interpretisto havas interpreti kion ŝi vidas. Kaj tiel ĝi tuj devos ekzekuti linion de kodo. Elprinti HTML. Elprinti malfermita kapo etikedo. Elprinti malfermita titolo etikedo. Ĝi tuj devos ekzekuti kaj interpreti ke ĉiu unuopa paŝo de la vojo. Kial ne simple lasu la interpretisto simple forgliti super aferoj ne kompreni kaj faras aŭtomate? Ĝi tuj savi min multa tempo miksi miajn HTML kaj PHP miaj kune. Kaj do jen kial ni ne nur havi malfermitaj PHP delimitador kaj tiam simple printi la tutan enhavo de nia paĝo kiel unu giganta PHP vokas al la funkcio, Print, kaj tiam proksime PHP delimitador kaj ni faris. Tial do ni miksas ilin kune. Ĝis nun, ni ne vidis tro diferenco de ĝeneralaj PHP sintakso. Ĝi estas estita sufiĉe simpla. Ni jam vidis la demandosigno, egalaj. Ni vidis paron de novaj funkcio vokoj, sed nenio vere imago okazas. Ni eble fari aferojn iom amatoro. Kio se ni volas pasi informon inter malsamaj PHP dosierojn, tiel ke eble la uzanto povas prezenti informon al mi. Kaj tiam mi povis fari ion per ĝi en alia paĝo. Do PHP havas subtenon por iu nomita Super Ĝenerala Variabloj, kiuj sonas sufiĉe timinda. Ili estas vere ĝuste giganto asociaj tabeloj kiu helpas apliki tiun funcionalidad de forpaso informo inter PHP dosierojn kiuj estas ekzistantaj sur nia ttt-servilo. La unua de tiuj super globals nomiĝas $ _GET. Kaj estas probable la simplaj kompreni. Kio okazas kun $ _GET? Nu, resume, la uzanto estas tuj tajpi ekstra informo ĉe la fino de nia URLoj. Kaj kion ajn ili tajpu, supozante ĝi estas formatita per speciala maniero nomiĝas query string, kiu estas nur aro de ŝlosila valoro paroj apartigitaj per ampersands. Tiuj ŝlosilaj valoro paroj estos stokitaj en $ _GET asocieca tabelo. Kaj de nia vídeo sur PHP sintakso, ni scias kiel labori kun asociaj tabeloj jam. Do tie estas ekzemplo de iuj PHP, kie eble mi estas ĉerpi ĉiujn la ŝlosilo valoro paroj ke la uzanto provizitaj en la URL. Do mi havas mian Malferma PHP delimitador. Mi havas foreach buklo. Mi ripetanta tra la Super Tutmondaj array nomita $ _GET. Kaj mi volas povi rilati al ambaŭ la ŝlosilo kaj la valoro. Kaj mi simple videbligi ilin eksteren, ĉiu sur ŝajne lia propra alineo etikedo tie. Mi presi ekstere kelkajn HTML kaj interpolanta la valoroj de ŝlosilo kaj valoron en tiu deklaro. Do ni rigardu kiel tio povus fakte funkcii sur nia IDE. Kaj eble tio helpos ilustri iomete kio GET estas efektive faranta. Do mi estas reen tie en mia ttt radiko. Kaj Mi zomi en iomete montri vin ke mi havas dosieron nomata, get1.php. Do ni alklaku get1.php. Kaj mi ne vidas ajnan enhavon. Tio estas stranga, ĉu ne? Nu, ne vere reale. Ĉar mi ne provizi ion en la URL. Mi tuj get1.php, sed mi ne provizi ajnan ŝlosilo valoro paroj kiel parto de mia query string. Do ni aldonu query string kaj vidi kion ĉi tiu dosiero povas fari. Komenci query string vi nur tajpu demandosigno. Tiam eble mi diru nomo = & Doug jaro = 2015. Kaj tiam mi batis Enter. Nun rimarki kio okazas. Mi estas ankoraŭ en get1.php. Sed nun mi liveris ŝlosilo valoro paroj, kaj mi estas presi ilin ekstere arope paragraph-- nomo, Doug-- jaro, 2015. Tio estas ĝuste la kodo ni simple vidis sur la glito antaŭ momento. Kaj se mi volas eble aldoni alian ŝlosilo valoro paro, & klaso = CS50. Nun mi havas alian ŝlosilon valoro simila kiu estas presita eksteren kiam mi reviziti la URL denove. Nun eble tio ne formatita terure bone. Do mi havas alian version de get.php. Estas get2.php. La diferenco en ĉi unu estas mi havas CSS -dosiero, kaj ĝi formatojn aferojn iom pli bele por mi. Ĝi estas eble ne la plej bela CSS en la mondo. Sed estas nur alia maniero fari ĝin. Do mi ankoraŭ povas akiri aliron al mia variabloj uzante $ _GET. Kaj en ĉi tiu kazo, mi estas nur speco de farante la CSS iom pli eleganta. Kaj se ni pop super al miaj IDE por dua, Mi montros al vi en mia PHP retejo dosierujo tie, get2.php. Ni malfermos ĝin, iuj HTML. Ŝajne mi kunligi ke CSS dosiero mi parolas. Mi malfermu tablo etikedo. Kaj poste jen mia foreach buklo. Jen tio, kion mi montris sur la glito antaŭe. La sola diferenco estas mi havas tiun ŝlosilon kaj valoro CSS stiligante ke mi aplikanta al ĝi. Sed jen ĉio mi faras, estas mi ripetanta trans $ _GET akiri ĉiuj de la ŝlosilo valoro paroj. Kaj mi presi ilin eksteren kiel la tablo. Kaj, ŝajne, mi formati la klavoj unumaniere kun la