Doug LLOYD: Entón, na nosa vídeo sobre a sintaxe PHP, falamos moito sobre como PHP pode ser usada na liña de comandos para realizar programas de forma que estamos moi familiarizados coa dende C. Pero, como eu tamén mencionou en que o vídeo, o PHP foi inicialmente desenvolvido para aplicar a programación web, sitios web. E así, neste video que estamos vai falar sobre como nós usar o PHP no contexto do desenvolvemento web. Sabemos, xa, desde noso vídeo en HTML, que os sitios son construídos fóra dun conxunto de etiquetas HTML que definir semanticamente a estrutura dunha páxina web. Pero sitios que son construídos con HTML puro padecen unha moi, limitación moi grave. E para ilustrar esta limitación, imos considerar o seguinte. Entón agora eu quero construír unha páxina web que, cada vez que o usuario visita das TIC, dáme a cadea tempo en Cambridge, Mass., amosar-lo para a última hora. Se eu estaba facendo iso agora, Eu podería dicir algo como isto. Hora en Cambridge-- entón eu teño HTML tags, etiquetas de cabeza, etiquetas de título, corpo tags-- o actual tempo en Cambridge é 14:08, imprimindo tempo militar. Qué acontece se agora é 14:09, 14:09? Ben, ata agora, con HTML, eu teño para entrar e cambia-lo para 14:09. E, a continuación, un minuto despois, Teño que mudalo de novo. E, a continuación, un minuto despois, Teño que mudalo de novo. E como podes imaxinar, iso é probablemente o peor traballo que nunca. Vostede é o webmaster da páxina web, e cada minuto, 24 horas ao día, precisa actualizar a hora actual por abrindo man time.html e cambiando só que fragmento de código para dicir o hora actual en horas e minutos. Isto probablemente non é moi bo uso dos nosos recursos, tanto humanos e computacional. Sitios que son todos HTML son completamente estático. O único xeito que pode actualizar contido, como acabamos de ver, é para abrir a man os fonte arquivos, editalos e garda-los. E, a continuación, cando o usuario actualiza a páxina, ou visita a páxina por primeira tempo, van recuperar o contido máis recente. Pero só porque temos editadas manual. Se comezar a mesturar un pouco de PHP alí, noso código pode obter máis flexible. E podemos ter un camiño para as nosas páxinas ser dinámico, ou actualizar-se, sen esixir a nosa pobre webmaster no exemplo anterior para ser a man actualizar as cousas. Poden facelo automaticamente. Non temos que intervir. Podemos durmir un pouco. Que pode ser unha boa cousa que está facendo unha morea de programación web. Así, en CS50 IDE, corremos un servidor web Apache chamado. É moi comunmente usado, sistema de servidor web de código aberto. Este sistema ten a capacidade de interpretar PHP, que será útil se quere facer calquera tipo de programación PHP. E en CS50 IDE, temos un comando Para facer isto, moi fácil de facer, apache50 comezar. E, a continuación, que barra camiño, cortar para, slash dir, que é só unha forma moi común de indicando que especificou aquí é un camiño para un determinado directorio que quere ser a raíz local, ou a páxina de raíz, ou o cartafol desde o que o servidor web comezará a examinar os arquivos e servir Los aos clientes que o requiran. Entón, imos estalar sobre a CS50 IDE, só para amosar a vostede, realmente rápida, como funciona isto. Entón, aquí en CS50 IDE, eu estou nun directorio chamado Week Nine Cero. E eu teño eu teño dois-- executado un comando ls só arriba para amosar que eu teño dous directorios en aquí, PHP, que é o conxunto de arquivos que eu usei no o video sintaxe PHP e logo PHP-web, que é o conxunto de arquivos que quere empregar nun vídeo. E gustaríame comezar unha instancia do servidor web co contido do cartafol PHP-web como os arquivos están sendo servidos. Entón que é o que eu vou facer? I vai escribir apache50 espazo comezar, espazo PHP trazo web. Ese é o camiño para o directorio de onde eu son actualmente. Entón eu bati Intro. Vai facer unha pouco de cousas aquí. E, a continuación, que vai dicir, Apache iniciouse con éxito. O seu sitio xa está dispoñible e at-- despois hai a URL para o sitio. Entón que é o que eu vou facer? Vou copiar rapidamente iso. E eu vou abrir up-- e Vou afastar un pouco aqui-- Vou abrir unha nova pestana en Chrome. E eu vou visitar esa URL. Vou bater Intro. Vai para cargar. E eu vou reducir novo. E vemos aquí é o contido do meu directorio web PHP. Entón agora o que está pasando, basicamente, aquí é a miña sesión de CS50 IDE está servindo-se eses arquivos calquera persoa que solicita a eles. E ao longo Neste vídeo, imos resolver de dar un ollo a un grupo destes diferentes arquivos no contexto. Para comprobar se o seu Apache servidor funciona, que vai xeralmente ser o caso en CS50 IDE, pero se fai iso de forma máis xeral, e comezar a construír o seu propio sitio servidores, hai un realmente tipo común de analóxico a, "Ola mundo", que adoita usado para desenvolvemento web PHP. Que é ter un ficheiro que consiste en só iso code-- un delimitador definido con PHP Información PHP parénteses, punto e coma no medio. Que é basicamente un especial PHP función que lle di que versión de PHP está executando. Así, en CS50 IDE, eu teño o ficheiro dispoñible para mostrar o que este sería semellante. Entón, eu estou ollando para o meu índice da miña instancia PHP. Meu exemplo Apache está en execución o contido de PHP-web. E eu teño un arquivo chamado aquí info.php. Eu estou indo a facer clic nel, zoom out. Isto é o que está indo a ver, moi bonito. Este é só dicirme que meu servidor Apache funciona. E esta é, ao parecer, o versión de PHP que estou correndo. Este é o meu analóxico para "Ola mundo". Entón eu sei que as cousas están operativos. Entón, nós somos bos de ir. Podemos seguir a partir de aquí. Entón, imos revisitar este exemplo xa que foron falando co noso pobre webmaster que tivo que actualizar a páxina constantemente. Esta pode ser unha corrección para saber como Quere aplicar cousas de xeito que o webmaster non fixo ten que manter a actualización do tempo. Sería só unha especie de pasa automaticamente. O baixo, o HTML, é moi semellante, cunha excepción. Pero aquí eu teño un pouco de PHP na parte superior. Eu, ao parecer, chamou este date_default_timezone_set función. E nós non falamos todo estas funcións, en CS50 porque o PHP ten, probabelmente, decenas de miles. Isto pode ser un pouco de un esaxero, pero non pode ser. Ten unha morea de funcións embutidas. E polo que esta é unha función aparentemente define o meu fuso horario como EUA / Oriental, cal é a zona horaria que eu son Actualmente en facer este vídeo. Entón eu facer unha chamada a función chamada, a data. E, ao parecer, eu estou almacenando o HIS de algo chamado, o tempo. Entón, o que está pasando aquí? Ben, basicamente o que é está a suceder, eu estou facendo unha chamada a un servidor que vai me diga o que o tempo é actualmente. E eu estou converténdoa en formato de horas, minutos, segundos. E a razón é de capital H é este me vai dar tempo de 24 horas, non 12 tempo de horas, o que sería h minúsculas. E eu só estou almacenando que nunha variable chamada, tempo. Así que a segunda liña de PHP alí, a chamada á función, data, está só comezando algunha corda, que é me vai dar a data, eo tempo, e unha morea de outras informacións. E o primeiro argumento alí, que HIS, é só extraer a parte importante que me preocupo para este exemplo, que é a hora, minuto e segundo. Entón ese é o único que está a suceder. Entón eu gardar iso nun tempo variable $. E, a continuación, para abaixo, para o moi inferior alí, eu ten que abreviada para imprimindo a hora actual. Entón, eu estou indo só para imprimir o que o tempo actual é. Entón, imos dar un ollo niso en IDE CS50 para ver como estamos agora aforro que webmaster unha morea de problemas. Todo ben, entón aquí estou eu de novo ao seu directorio raíz da miña instancia de Apache. E eu teño un arquivo chamado aquí time.php. Eu só vou para premer sobre o tema. E eu vou rolar para arriba, porque estamos ampliada moi lonxe. A hora actual é 14:20:34. Entón, eu estou facendo iso horas, minutos e segundos. E podo actualizar a páxina e obter novo tempo. --41. Eu estou indo a actualizar a páxina e obter novo tempo, 44, 46, 47. Entón, eu non son claramente cambiar nada mesmo. Estou aquí actualizar a páxina. Entón eu non podo volver alí de editalo. E eu prometer a vostede, eu non sei ten confederados que está a editar o ficheiro no meu nome xunto. Eu só estou usando esa función PHP tempo, para xerar o tempo para min automaticamente. De xeito que mesmo se eu estou durmindo, e meu servidor web está en execución, o usuario que visita esta páxina aínda é indo para obter exactamente o momento actual. Entón, iso é moi bo. Eu fixen o meu sitio máis dinámico con non moi código PHP. Era só dúas liñas de código e, a continuación, un pouco de unha declaración de impresión. E xa teño unha sitio moito máis dinámico do que vimos primeiro exemplo no inicio do vídeo. Entón, lembre-se do vídeo sobre a sintaxe PHP que, cando o intérprete PHP é executado noso programa, ignora todo que non está dentro delimitadores PHP cuspídela. Nese exemplo, o que a cousa que estaba cuspindo era HTML. E isto significa que podo agora intercalam HTML e PHP xuntos. Porque o intérprete só ignorar o HTML e literalmente saída del. O que é bo, non? Porque presuntamente, ao final do día, Gustaríame que o meu sitio para ser construídos con HTML. De xeito que calquera navegador pode interpretar Lo, ou comprender o HTML na páxina e facelo como algo que realmente entender como seres humanos. E eu só podo usar PHP para as partes do meu sitio o esixen dinamismo, que me esixen para ter as cousas que actualizan constantemente. A información estática pode permanecer o mesmo. OK, entón iso é bo. Pero por que eu faría iso? Por que eu ía mesturar HTML e PHP? Podería simplemente imprimir todo o HTML, usando a función de impresión PHP. Por que non estou facendo iso? Pense nisso por un segundo. Por que, cando eu podería simplemente imprimir out-- I podería liñas de PHP que dicir, tag HTML de impresión, cabeza de impresión. Por que non estou facendo iso? Por que eu estou mesturando PHP e HTML? Ben, se pensar sobre iso por un segundo. PHP, o intérprete ten para interpretar o que ve. E así vai ter para realizar unha liña de código. Imprimir HTML. Imprimir marca de cabeza aberta. Imprimir etiqueta title aberto. Vai ter que executar e interpretar que cada paso do camiño. ¿Por que non basta deixar o intérprete só encubrir cousas que non entenden e facelo automaticamente? El me vai gardar unha chea de tempo para mesturar o meu HTML e PHP miña xuntos. E é por iso que non só abrir delimitador PHP e despois é só imprimir o enteiro contido da nosa páxina PHP como un xigante chamada á función, Imprimir e, a continuación, preto delimitador PHP e estamos a facer. Entón é por iso que mestura-los xuntos. Ata agora, non vimos moito de unha diferenza de sintaxe xeral PHP. Foi moi sinxelo. Xa vimos o punto de interrogação, igual. Vimos un par de novas chamadas de función, pero nada realmente sofisticados suceder. Imos quizais facer cousas un pouco afeccionado. E se queremos pasar información entre diferentes arquivos PHP, de xeito que o usuario pode talvez enviar información para min. E entón eu podería facer algo con el noutra páxina. Entón PHP ten soporte para algo chamado Super global Variables, que soa moi impresionante. Son realmente só arrays asociativos xigantes que axudan a aplicar este función de paso información entre arquivos PHP que son existente no noso servidor web. A primeira destas super- globals chámase $ _GET. E pode ser o máis sinxelo de entender. Que pasa con $ _GET? Ben, basicamente, o usuario é vai escribir información extra a finais dos nosos directorio. E o que quere que escriba, asumindo é formatado dun xeito particular chamado dunha cadea de consulta, que é só un conxunto de pares de valores clave separadas por e comercial. Estes pares de valores clave será almacenados nunha matriz asociativa $ _GET. E do noso vídeo sobre Sintaxe PHP, sabemos como traballar con arrays asociativos xa. Entón, aquí está un exemplo de algúns PHP, onde quizais eu son extracción de todos os pares de valores clave que o usuario indicado na URL. Entón, eu teño o meu Aberto delimitador PHP. Eu teño un loop foreach. Estou repetindo todo o Super Matriz global chamada $ _GET. E quero ser capaz de encamiñar tanto para a chave eo valor. E eu só estou imprimindo- a fóra, unha en cada aparentemente seu propio apartado tag aquí. Estou imprimindo algún HTML e interpolando valores de clave e valor para esa afirmación. Entón, imos dar un ollo a como esta sería realmente traballar na nosa IDE. E quizais isto axude ilustran un pouco GET que está realmente facendo. Entón, eu estou de volta aquí na miña raíz web. E eu vou aumentar nun pouco para amosar-lle que eu teño un arquivo chamado, get1.php. Entón, imos premer en get1.php. E eu non estou a ver ningún contido. Isto é raro, non? Ben, non é realmente verdade. Porque eu non facilitou nada na URL. Vou get1.php, pero eu non facilitou ningún pares de valores clave como parte da miña cadea de consulta. Entón, imos engadir unha secuencia de consulta e ver que este ficheiro pode facer. Para comezar unha secuencia de consulta vostede escriba o punto de interrogación. Entón quizais eu vou dicir name = Doug & ano = 2015. E entón eu vou prema Intro. Agora, teña en conta o que está pasando. Eu aínda estou no get1.php. Pero agora eu teño solicitado pares de valores clave, e eu son imprimir-las por conta propia paragraph-- nome, ano Doug-- de 2015. Iso é o código que acabamos viu no slide un momento atrás. E se eu queira engadir quizais outra par de valores clave, e class = CS50. Agora eu teño un outro valor clave par que está impreso cando revisitar a URL de novo. Agora, quizais isto non é formato moitísimo ben. Entón, eu teño unha nova versión do get.php. É get2.php. A diferenza neste unha é que eu teño de arquivos CSS, e formata as cousas un pouco máis ben para min. El quizais non é o máis CSS fermosa do mundo. Pero é só outra forma de facelo. Entón, eu aínda pode acceder aos meus variables usando $ _GET. E neste caso, eu son só un tipo de facendo a CSS un pouco máis extravagante. E se nós pop para meu IDE por un segundo, Eu vou amosar-lle no meu PHP web directorio aquí, get2.php. Imos abri-lo, algúns HTML aquí. Ao parecer, eu estou conectando en que Arquivo CSS que eu estaba falando. Abro unha marca de táboa. E entón aquí está o meu loop foreach. Aquí é que, o que eu mostrou no slide antes. A única diferenza é que eu ter a clave e valor CSS estilo que eu estou aplicando a el. Pero iso é todo o que eu estou facendo, é que eu son iteración través $ _GET para todas un dos pares de valores clave. E eu estou imprimir-las como a mesa. E, ao parecer, eu estou de formateo as claves dun xeito, coa class = "clave"