DOUG LLOYD: Així que en el nostre vídeo a la sintaxi de PHP, parlem molt sobre com PHP es pot utilitzar en la línia d'ordres per a executar programes d'una manera que estem bastant familiaritzats amb d'C. Però com jo he esmentat en aquest vídeo, PHP es va desenvolupar inicialment per aplicar la programació web, llocs web. I així, en aquest vídeo estem parlarem de la forma en què utilitzar PHP en el context de desenvolupament web. Sabem ja, des nostre vídeo en HTML, que els llocs web es construeixen d'un conjunt d'etiquetes HTML que defineixen semànticament l'estructura d'una pàgina web. Però els llocs web que són construït amb pura HTML patir d'una molt, limitació molt seriosa. I per il·lustrar aquesta limitació, anem a considerar el següent. Així que ara vull construir una pàgina web que, sempre que l'usuari visita it, em dóna el corrent temps a Cambridge, Mass., mostrar a l'últim minut. Si jo estava fent això ara mateix, Jo podria dir alguna cosa com això. Hora en Cambridge-- així que tinc Etiquetes HTML, etiquetes del cap, les etiquetes de títol, cos tags-- el corrent temps a Cambridge és 14:08, impressió d'hora militar. Què passa si ara és 14:09, 14:09? Doncs fins ara, amb HTML, tinc per entrar i canviar a 14:09. I després un minut més tard, He de canviar de nou. I després un minut més tard, He de canviar de nou. I com es pot imaginar, això és probablement el pitjor treball mai. Tu ets el webmaster d'una pàgina web, i cada minut, les 24 hores del dia, ha d'actualitzar l'hora actual obrir manualment time.html i canviant només que fragment de codi per dir el hora actual en hores i minuts. Això probablement no és molt bon ús dels nostres recursos, tant humans com computacional. Els llocs web que són tots HTML són completament estàtic. L'única manera que vostè pot actualitzar contingut, com acabem de veure, és obrir manualment els font arxius, editar-los i guardar-los. I després quan l'usuari refresca la pàgina, o visita la pàgina per primera temps, van a tenir el contingut més recent. Però només perquè hem manualment editat. Si comencem a barrejar una mica de PHP en allà, nostre codi pot aconseguir molt més flexible. I podem tenir una manera perquè les nostres pàgines ser dinàmic, o actualitzar-se a si mateixos, sense necessitat del nostre pobre webmaster en l'exemple anterior ser manualment l'actualització de les coses. Poden fer-ho de forma automàtica. No hem d'intervenir. Podem dormir una mica. La qual cosa és probablement una bona cosa si que està fent una gran quantitat de programació web. Així que en CS50 IDE, correm un servidor web anomenat Apache. És una molt usada, sistema del servidor web de codi obert. Aquest sistema té la capacitat d'interpretar PHP, que serà útil si que vol fer cap tipus de programació PHP. I en IDE CS50, tenim una ordre perquè aquest molt fàcil de fer, apache50 començar. I després aquesta barra camí, barra de, retallar dir, que és només una forma molt comuna de indicant el que vas introduir aquí és un camí a un particular, anuari que vull ser l'arrel lloc, o la pàgina arrel, oa la carpeta de la que el servidor web començarà a examinar els arxius i servir els va permetre arribar als clients que ho sol·licitin. Així que anem a pop a CS50 IDE, només per mostrar, molt ràpid, com funciona això. Així que aquí a IDE CS50, estic en un directori anomenat Setmana Zero Nou. I tinc dos-- tinc executar una ordre LS sol dalt per mostrar que tinc dos directoris en aquí, PHP, que és el conjunt d'arxius que he fet servir en el vídeo sintaxi de PHP, i després de PHP a la web, que és el conjunt d'arxius que li agradaria utilitzar en aquest vídeo. I m'agradaria començar una instància de servidor web amb el contingut de la carpeta PHP-web a mesura que es serveixen dels arxius. Llavors, què faré? Jo vaig a escriure apache50 espai iniciar, PHP espai, guió web. Aquesta és la ruta al directori des d'on actualment sóc. Llavors em va colpejar Retorn. Es va a fer un poc de coses aquí. I després es dirà, Apache es va iniciar correctament. El seu lloc ja està disponible at-- i després hi ha la direcció URL del lloc. Llavors, què faré? Vaig a copiar ràpidament això. I jo vaig a obrir up-- i Vaig Allunyar una mica aquí-- Vaig a obrir una nova pestanya en Chrome. I jo vaig a visitar aquesta URL. Vaig a prémer Enter. Es va a carregar. I vaig a allunyar el zoom de nou. I podem veure aquí és el contingut del meu directori web PHP. Així que ara el que està passant bàsicament aquí està, el meu instància de CS50 IDE està servint aquests arxius qualsevol que ho sol·liciti. I en el transcurs de aquest video, anem a ordenar de fer una ullada a un munt d'ells diferents arxius en el seu context. Per provar que la seva Apache està funcionant, que generalment es va ser el cas en CS50 IDE, però si ho fa de manera més general, i començar a construir la seva pròpia web servidors, hi ha una realitat tipus comú d'analògic a, "hola món", que sol ser utilitzat per al desenvolupament web PHP. Què és tenir un arxiu que consisteix en només aquesta code-- un delimitador PHP conjunt amb informació de PHP, parèntesi, punt i coma en el medi. Que és bàsicament una especial Funció de PHP que et diu quina versió de PHP que està executant. Així que en CS50 IDE, tinc aquest arxiu disponible just per mostrar el que aquest es veuria així. Així que estic buscant en el meu índex des del meu exemple PHP. El meu exemple Apache està funcionant els continguts de PHP en web. I tinc un arxiu anomenat aquí info.php. Vaig a fer clic, allunyar. Això és el que vas per veure, més o menys. Això se m'acaba dient que meu servidor Apache està funcionant. I això és, segons sembla, el versió de PHP que estic corrent. Aquest és el meu analògica a "hola món". Així que sé que les coses estan en funcionament. Així que estem bé per anar. Podem continuar des d'aquí. Així que anem a revisar que exemple vegada que vam estar parlant amb el nostre pobre webmaster que va haver de actualitzar la pàgina constantment. Això podria ser una solució per a la forma M'agradaria posar en pràctica les coses de manera que el webmaster no ho va fer ha de mantenir l'actualització de l'època. Seria només una mena de succeirà automàticament. El baix, el codi HTML, és bastant similars, amb una excepció. Però aquí tinc una mica de PHP en la part superior. He, pel que sembla, va cridar a aquest date_default_timezone_set funció. I no parlem de tot aquestes funcions en CS50, perquè PHP té, probablement, desenes de milers. Això podria ser una mica d'una exageració, però no va poder ser. Té una gran quantitat de funcions integrades. I pel que aquesta és una funció aparentment estableix la meva zona de temps que nosaltres / Est, que és la zona horària que sóc Actualment a la presa de vídeo. Llavors faig una crida a funció de trucada, data. I, pel que sembla, estic emmagatzemant el HIS d'una cosa que es diu, el temps. Llavors, què està passant aquí? Bé, bàsicament el que hi ha succeint és, estic fent una crida a algun servidor que va a digues-me el que el temps del que actualment és. I estic convertir-lo a un format d'hores, minuts, segons. I la raó és de capital H és això se me'n va a donar temps de 24 hores, no 12 temps d'hores, el que seria h minúscula. I només estic emmagatzemant que en una variable anomenada, el temps. Així que la segona línia de PHP allà, la crida a la funció, data, s'acaba d'aconseguir una corda, la qual és em va donar la data i el temps, i un munt d'altra informació. I el primer argument allà, que HIS, s'acaba d'extreure la part important que m'importa en aquest exemple, que és l'hora, minut i segon. Així que aquest és l'únic que està passant. Així que retinc que en un temps variable $. I després cap avall en el molt inferior allà, tenir aquesta abreviatura de impressió de l'hora actual. Així que només vaig a imprimir el que el temps actual. Així que donem una ullada a això en IDE CS50 i veure com estem ara estalvi que webmaster un munt de problemes. Molt bé, així que aquí estic de nou de tornada al directori arrel de la meva instància d'Apache. I tinc un arxiu anomenat aquí time.php. Jo només vaig a fer clic en això. I vaig a desplaçar-se cap amunt, perquè estem apropat bastant lluny. L'hora actual és 14:20:34. Així que ho estic fent hores, minuts i segons. I puc actualitzar la pàgina i obtenir nova hora. --41. Vaig a actualitzar la pàgina i obtenir nou temps, 44, 46, 47. Així que clarament no sóc canviar res a mi mateix. Sóc aquí actualitzar la pàgina. Així que no puc tornar-hi editar-lo. I et prometo, no ho faig tenir còmplices que està editant l'arxiu en el meu nom a un costat. Només estic fent servir aquesta funció PHP, temps, per generar el moment per a mi de forma automàtica. Així que fins i tot si estic adormit, i el meu servidor web està funcionant, l'usuari que visita la pàgina segueix sent aconseguirà exactament en el moment actual. Així que això és bastant bo. He fet el meu lloc més dinàmic amb no massa codi PHP. Va ser tan sols dues línies de codi i després una mica d'una sentència print. I ja tinc un lloc molt més dinàmic que el primer exemple que vam veure al començament del vídeo. Per tant, recordar del vídeo sobre la sintaxi de PHP que quan l'intèrpret PHP corre nostre programa, ignora tot això no és dins dels delimitadors de PHP, escopir. En aquest exemple, el que la cosa que estava escopint era HTML. I això vol dir que ara pot intercalar HTML i PHP junts. A causa de que l'intèrpret simplement ignorar l'HTML i literalment sortida això. La qual cosa és bo, no? A causa que, presumiblement, al final del dia, M'agradaria que el meu lloc per ser construïda d'HTML. Així que qualsevol navegador pot interpretar , O entendre el codi HTML de la pàgina i fer-ho com una cosa que ens pot entendre realment com a éssers humans. I només puc utilitzar PHP per a les parts del meu lloc la requereixen dinamisme, que em requereixen tenir les coses que s'actualitzen constantment. La informació estàtica pot romandre igual. OK, així que està bé. Però per què anava jo a fer això? Per què hauria barrejar HTML i PHP? Jo només podia imprimir tota la HTML, utilitzant la funció d'impressió de PHP. Per què no estic fent això? Penseu en això per un segon. Per què, quan jo només pogués imprimir fora-- I podria tenir línies de PHP que acaba de dir, impressió d'etiquetes HTML, capçal d'impressió. Per què no estic fent això? Per què estic barrejant el PHP i HTML? Bé, si vostè pensa en això per un segon. PHP, l'intèrpret té interpretar el que veu. I així va tenir per executar una línia de codi. Imprimiu HTML. Imprimiu etiqueta del cap oberta. Imprimiu etiqueta del títol oberta. Va a haver de executar i interpretar que cada pas del camí. Per què no deixar que el intèrpret acaba de brillantor més coses que no entén i fer-ho de forma automàtica? Es em va a estalviar un munt de temps barrejar la meva HTML i la meva PHP junts. I per això no ho fem només hi ha oberta delimitador PHP i després simplement imprimir la totalitat contingut de la nostra pàgina com un PHP gegant cridi a la funció, Imprimir, i després prop PHP delimitador i hem acabat. Així que per això barregem ells junts. Fins ara, no hem vist massa de una diferència de sintaxi general de PHP. Ha estat força senzill. Ja hem vist la signe d'interrogació, iguals. Vam veure un parell de noves crides a funcions, però res realment de luxe passant. Anem a fer les coses el millor una mica més de luxe. Què passa si volem passar informació entre els diferents arxius PHP, pel que tal vegada l'usuari pot presentar informació per a mi. I llavors jo podria fer alguna cosa amb ella en una altra pàgina. Així que PHP té suport per a una cosa anomenada Super Global Variables, que sona bastant impressionant. Són realment només matrius associatives gegants d'ajudar a implementar aquest funcionalitat de mort informació entre arxius PHP que estan existent al nostre servidor web. El primer d'aquests súper globals es diu $ _GET. I és probablement el més simple d'entendre. Què passa amb $ _GET? Bé, bàsicament, l'usuari és va escriure informació addicional al final de les nostres adreces URL. I tot el que escrigui, assumint que està formatat d'una manera particular diu una cadena de consulta, que és just un conjunt de parells de valors clau separada per símbols d'unió. Aquests parells de valors clau seran emmagatzemat en un array associatiu $ _GET. I a partir del nostre vídeo en Sintaxi de PHP, sabem com treballar amb matrius associatives ja. Així que aquí és un exemple de una mica de PHP, on potser sóc extracció de tots els parells de valors clau que l'usuari que es proporciona a la URL. Així que tinc el meu Obrir delimitador PHP. Tinc un bucle foreach. Estic iterar a través de la Súper Matriu Global cridar $ _GET. I jo vull ser capaç de referir- tant a la clau i el valor. I només estic imprimir- a terme, cada un en aparença la seva pròpia etiqueta de paràgraf aquí. Estic imprimint una mica d'HTML i interpolant els valors de la clau i el valor en aquesta declaració. Així que donem una ullada a com aquest seria realment treballar en el nostre IDE. I potser això l'ajudarà il·lustrar una mica del que s'obté és realment fer. Així que estic de tornada aquí a la meva web arrel. I vaig a zoom en un poc per mostrar- que tinc un arxiu anomenat, get1.php. Així que anem clic a get1.php. I jo no estic veient qualsevol contingut. Això és estrany, no? Bé, no realment en realitat. Perquè jo no proveo res a la URL. Vaig a get1.php, però jo no subministrar cap parells de valors clau com a part de la meva cadena de consulta. Així que anem a afegir una cadena de consulta i veure el que aquest arxiu pot fer. Per començar una cadena de consulta que només has d'escriure el signe d'interrogació. Llavors potser diré el nom = Doug i any = 2.015. I llavors els premeu Enter. Ara noti el que està succeint. Encara estic en get1.php. Però ara he subministri parells de valors clau, i estic imprimir pel seu compte Nom paragraph--, any Doug--, 2015. Això és exactament el codi que acabem de va veure en la diapositiva fa un moment. I si vull afegir potser un altre parell de valors clau, i class = CS50. Ara tinc un altre valor clau una que s'imprimeix quan torni a visitar la URL de nou. Ara potser això no és formatat terriblement bé. Així que tinc una altra versió de get.php. És get2.php. La diferència en aquest una és que tinc l'arxiu CSS, i formats de les coses mica més agradable per a mi. És potser no és el més bella CSS al món. Però és només una altra manera de fer-ho. Així que puc aconseguir encara l'accés als meus variables utilitzant $ _GET. I en aquest cas, jo sóc només una mica fent que la CSS una mica més de luxe. I si ens pop a el meu IDE per un segon, Et vaig a mostrar a la meva web PHP directori d'aquí, get2.php. Obrirem cap amunt, una mica d'HTML aquí. Pel que sembla estic vinculant en aquest Arxiu CSS que estava parlant. Obro una etiqueta de taula. I llavors aquí està el meu bucle foreach. Aquí és que, el que jo mostrar a la diapositiva anterior. L'única diferència és que jo tenen aquesta clau i valor CSS estil que estic aplicant a la mateixa. Però això és tot el que estic fent, és que sóc iterar a través de $ _GET per obtenir tota la dels parells de valors clau. I estic imprimir com la taula. I, pel que sembla, estic formatar les claus d'una manera, amb la classe "clau"