DOUG LLOYD: Então, em nossa vídeo sobre a sintaxe PHP, nós conversamos muito sobre como PHP pode ser usada na linha de comando para executar programas de uma forma que estamos bastante familiarizados com a partir de C. Mas, como eu também mencionou em que o vídeo, o PHP foi inicialmente desenvolvida para aplicar a programação web, websites. E assim, neste vídeo que estamos vai falar sobre como nós usar o PHP no contexto do desenvolvimento web. Sabemos, já, a partir de nosso vídeo em HTML, que os sites são construídos fora de um conjunto de tags HTML que definir semanticamente a estrutura de uma página da web. Mas sites que são construídos com HTML puro sofrem de uma muito, limitação muito grave. E para ilustrar essa limitação, vamos considerar o seguinte. Então agora eu quero construir uma página web que, sempre que o usuário visita de TI, dá-me a corrente tempo em Cambridge, Mass., exibi-lo para a última hora. Se eu estava fazendo isso agora, Eu poderia dizer algo como isso. Hora em Cambridge-- então eu tenho HTML tags, etiquetas de cabeça, tags de título, corpo tags-- o actual tempo em Cambridge é 14:08, imprimindo tempo militar. O que acontece se agora é 14:09, 14:09? Bem, até agora, com HTML, eu tenho para entrar e alterá-lo para 14:09. E, em seguida, um minuto depois, Eu tenho que mudá-lo novamente. E, em seguida, um minuto depois, Eu tenho que mudá-lo novamente. E como você pode imaginar, isso é provavelmente o pior trabalho que nunca. Você é o webmaster de uma página web, e cada minuto, 24 horas por dia, você precisa atualizar a hora atual por abrindo manualmente time.html e mudando só que trecho de código para dizer o hora atual em horas e minutos. Isso provavelmente não é muito bom uso dos nossos recursos, tanto humanos e computacional. Sites que são todos HTML são completamente estático. A única maneira que você pode atualizar conteúdo, como acabamos de ver, é para abrir manualmente os fonte arquivos, editá-los e salvá-los. E, em seguida, quando o utilizador atualiza a página, ou visita a página pela primeira tempo, eles vão obter o conteúdo mais recente. Mas só porque nós temos editadas manualmente. Se começarmos a misturar um pouco de PHP lá, nosso código pode obter muito mais flexível. E podemos ter um caminho para nossas páginas ser dinâmico, ou atualizar-se, sem exigir a nossa pobre webmaster no exemplo anterior para ser manualmente actualizar as coisas. Eles podem fazê-lo automaticamente. Nós não temos de intervir. Podemos dormir um pouco. Que é provavelmente uma boa coisa se você está fazendo um monte de programação web. Assim, em CS50 IDE, corremos um servidor web Apache chamado. É muito comumente usado, sistema de servidor web open source. Este sistema tem a capacidade de interpretar PHP, que vai ser útil se você quer fazer qualquer tipo de programação PHP. E em CS50 IDE, temos um comando para fazer isto muito fácil de fazer, apache50 começar. E, em seguida, que barra caminho, cortar para, slash dir, que é apenas uma forma muito comum de indicando que você especificou aqui é um caminho para um determinado diretório que você quer ser a raiz local, ou a página de raiz, ou a pasta a partir do qual o servidor web vai começar a examinar os arquivos e servir -los aos clientes que o requeiram. Então, vamos estalar sobre a CS50 IDE, só para mostrar a você, realmente rápida, como isso funciona. Então, aqui em CS50 IDE, eu estou em um diretório chamado Week Nine Zero. E eu tenho eu tenho dois-- executado um comando LS apenas acima para mostrar que eu tenho dois diretórios em aqui, PHP, que é o conjunto de arquivos que eu usei no o vídeo sintaxe PHP e, em seguida PHP-web, que é o conjunto de arquivos que eu gostaria de usar em um vídeo. E eu gostaria de começar uma instância do servidor web com o conteúdo da pasta PHP-web como os arquivos estão sendo servidos. Então o que é que eu vou fazer? I vai digitar apache50 espaço começar, espaço PHP, traço web. Esse é o caminho para o diretório de onde eu sou atualmente. Então eu bati Enter. Ele vai fazer uma pouco de coisas aqui. E, em seguida, ele vai dizer, Apache foi iniciado com êxito. Seu site já está disponível e at-- depois há o URL para o site. Então o que é que eu vou fazer? Vou copiar rapidamente isso. E eu vou abrir up-- e Eu vou afastar um pouco aqui-- Vou abrir uma nova aba no Chrome. E eu vou visitar essa URL. Eu vou bater Enter. Vai para carregar. E eu vou reduzir novamente. E podemos ver aqui é o conteúdo do meu diretório web PHP. Então agora o que está acontecendo, basicamente, aqui é, minha instância do CS50 IDE está servindo-se esses arquivos para qualquer pessoa que solicita-los. E ao longo de Neste vídeo, nós vamos resolver de dar uma olhada em um grupo destes diferentes arquivos no contexto. Para testar se o seu Apache servidor está funcionando, que vai geralmente ser o caso em CS50 IDE, mas se você fizer isso de forma mais geral, e você começar a construir seu próprio Web servidores, há um realmente tipo comum de analógico para, "Olá mundo", que é normalmente usado para desenvolvimento web PHP. Que é ter um arquivo que consiste em apenas isso code-- um delimitador definido com PHP Informação PHP, parênteses, ponto e vírgula no meio. Que é basicamente um especial PHP função que lhe diz qual a versão do PHP você está executando. Assim, em CS50 IDE, eu tenho esse arquivo disponível apenas para mostrar o que este seria semelhante. Então, eu estou olhando para o meu índice da minha instância PHP. Meu exemplo Apache está em execução o conteúdo de PHP-Web. E eu tenho um arquivo chamado aqui info.php. Eu estou indo para clicar nele, zoom out. Isto é o que você está indo para ver, muito bonito. Este é apenas dizer-me que meu servidor Apache está funcionando. E esta é, aparentemente, o versão do PHP que eu estou correndo. Este é o meu analógico para "Olá mundo". Então eu sei que as coisas estão operacionais. Então, nós somos bons de ir. Podemos continuar a partir daqui. Então, vamos revisitar esse exemplo vez que foram falando com o nosso pobre webmaster que teve que atualizar a página constantemente. Esta pode ser uma correção para saber como Gostaria de implementar coisas de modo que o webmaster não fez tem que manter a atualização do tempo. Seria apenas uma espécie de acontece automaticamente. O abaixo, o HTML, é bastante semelhante, com uma exceção. Mas aqui eu tenho um pouco de PHP no topo. Eu, aparentemente, chamou este date_default_timezone_set função. E nós não falamos sobre tudo estas funções, em CS50 porque o PHP tem, provavelmente, dezenas de milhares. Isso pode ser um pouco de um exagero, mas não pode ser. Ele tem um monte de funções embutidas. E por isso esta é uma função aparentemente define o meu fuso horário como EUA / Oriental, qual é o fuso horário que eu sou Atualmente em fazer este vídeo. Então eu fazer uma chamada para função chamada, a data. E, aparentemente, eu estou armazenando o HIS de algo chamado, o tempo. Então, o que está acontecendo aqui? Bem, basicamente o que é está acontecendo, eu estou fazendo uma chamada a algum servidor que vai me diga o que o tempo é atualmente. E eu estou convertendo-a em um formato de horas, minutos, segundos. E a razão é de capital H é este vai me dar tempo de 24 horas, não 12 tempo de horas, o que seria h minúsculas. E eu só estou armazenando que em uma variável chamada, tempo. Assim que a segunda linha de PHP lá, a chamada para a função, data, está apenas começando alguma corda, que é vai me dar a data, eo tempo, e um monte de outras informações. E o primeiro argumento lá, que HIS, é apenas extrair a parte importante que eu me preocupo para este exemplo, que é a hora, minuto e segundo. Então esse é o tudo o que está acontecendo. Então eu guardar isso em um tempo variável $. E, em seguida, para baixo, para o muito inferior lá, eu tem que abreviada para imprimindo a hora atual. Então, eu estou indo só para imprimir o que o tempo atual é. Então, vamos dar uma olhada nisso em IDE CS50 e ver como estamos agora poupança que webmaster um monte de problemas. Tudo bem, então aqui estou eu de novo de volta para o diretório raiz da minha instância do Apache. E eu tenho um arquivo chamado aqui time.php. Eu só vou para clicar sobre isso. E eu vou rolar para cima, porque estamos ampliada muito longe. A hora atual é 14:20:34. Então, eu estou fazendo isso horas, minutos e segundos. E eu posso atualizar a página e obter novo tempo. --41. Eu estou indo para atualizar a página e obter novo tempo, 44, 46, 47. Então, eu não sou claramente mudar nada mesmo. Estou aqui atualizar a página. Então eu não posso voltar lá de editá-lo. E eu prometo a você, eu não sei tem nenhum confederados que está editando o arquivo em meu nome ao lado. Eu só estou usando essa função PHP, tempo, para gerar o tempo para mim automaticamente. De modo que mesmo se eu estou dormindo, e meu servidor web está sendo executado, o usuário que visita essa página ainda é indo para obter exatamente a hora atual. Então, isso é muito bom. Eu fiz o meu site mais dinâmico com não muito código PHP. Era apenas duas linhas de código e, em seguida, um pouco de uma declaração de impressão. E já tenho uma site muito mais dinâmico do que nós vimos primeiro exemplo no início do vídeo. Então, lembre-se do vídeo sobre a sintaxe PHP que, quando o intérprete PHP é executado nosso programa, ignora tudo que não está dentro de delimitadores PHP, cuspi-la. Nesse exemplo, o que a coisa que estava cuspindo era HTML. E isso significa que eu posso agora intercalam HTML e PHP juntos. Porque o intérprete apenas ignorar o HTML e literalmente saída dele. O que é bom, certo? Porque presumivelmente, no fim do dia, Gostaria que o meu site para ser construídos com HTML. De modo que qualquer navegador pode interpretar -lo, ou compreender o HTML na página e torná-lo como algo que nós pode realmente entender como seres humanos. E eu só posso usar o PHP para as partes do meu site o exigem dinamismo, que me exigem para ter as coisas que atualizam constantemente. A informação estática pode permanecer o mesmo. OK, então isso é bom. Mas por que eu faria isso? Por que eu iria misturar HTML e PHP? Eu poderia simplesmente imprimir todo o HTML, usando a função de impressão PHP. Por que não estou fazendo isso? Pense nisso por um segundo. Por que, quando eu poderia simplesmente imprimir out-- I poderia ter linhas de PHP que apenas dizer, tag HTML de impressão, cabeça de impressão. Por que não estou fazendo isso? Por que eu estou misturando o PHP e HTML? Bem, se você pensar sobre isso por um segundo. PHP, o intérprete tem para interpretar o que vê. E assim vai ter para executar uma linha de código. Imprimir HTML. Imprimir marca de cabeça aberta. Imprima tag title aberto. Vai ter que executar e interpretar que cada passo do caminho. Porque não basta deixar o intérprete apenas encobrir coisas que não entendem e fazê-lo automaticamente? Ele vai me salvar um monte de tempo para misturar o meu HTML e PHP minha juntos. E é por isso que nós não apenas ter aberto delimitador PHP e depois é só imprimir o inteiro conteúdo da nossa página PHP como um gigante chamada para a função, Imprimir e, em seguida, perto delimitador PHP e estamos a fazer. Então é por isso que misturá-los juntos. Até agora, não vimos muito de uma diferença de sintaxe geral PHP. Tem sido bastante simples. Nós já vimos o ponto de interrogação, igual. Nós vimos um par de novas chamadas de função, mas nada realmente sofisticados acontecendo. Vamos talvez fazer coisas um pouco amador. E se queremos passar informações entre diferentes arquivos PHP, de modo que o utilizador pode talvez enviar informações para mim. E então eu poderia fazer algo com ele em outra página. Então PHP tem suporte para algo chamado Super global Variáveis, que soa bastante impressionante. Eles são realmente apenas arrays associativos gigantes que ajudam a implementar este funcionalidade de passagem informações entre arquivos PHP que são existente em nosso servidor web. A primeira destas super- globals é chamado $ _GET. E é provavelmente o mais simples de entender. O que acontece com $ _GET? Bem, basicamente, o usuário é vai digitar informação extra no final dos nossos URLs. E o que quer que escreva, assumindo ele é formatado de uma maneira particular chamado de uma cadeia de consulta, que é apenas um conjunto de pares de valores-chave separados por e comercial. Esses pares de valores-chave será armazenados em uma matriz associativa $ _GET. E do nosso vídeo sobre Sintaxe PHP, sabemos como trabalhar com arrays associativos já. Então, aqui está um exemplo de alguns PHP, onde talvez eu sou extração de todos os pares de valores-chave que o usuário fornecido na URL. Então, eu tenho meu Aberto delimitador PHP. Eu tenho um loop foreach. Estou repetindo todo o Super Matriz global chamada $ _GET. E eu quero ser capaz de encaminhá tanto para a chave eo valor. E eu só estou imprimindo- para fora, uma em cada aparentemente seu próprio parágrafo tag aqui. Eu estou imprimindo algum HTML e interpolando os valores de chave e valor para essa afirmação. Então, vamos dar uma olhada em como este seria realmente trabalhar em nosso IDE. E talvez isso ajude ilustram um pouco GET do que está realmente fazendo. Então, eu estou de volta aqui em minha raiz web. E eu vou aumentar em um pouco para mostrar-lhe que eu tenho um arquivo chamado, get1.php. Então, vamos clicar em get1.php. E eu não estou vendo nenhum conteúdo. Isso é estranho, certo? Bem, não é realmente verdade. Porque eu não forneceu nada na URL. Vou get1.php, mas eu não forneceu quaisquer pares de valores-chave como parte da minha string de consulta. Então, vamos adicionar uma seqüência de consulta e ver o que este arquivo pode fazer. Para começar uma seqüência de consulta você basta digitar o ponto de interrogação. Então, talvez, eu vou dizer name = Doug & ano = 2015. E então eu vou pressione Enter. Agora, observe o que está acontecendo. Eu ainda estou no get1.php. Mas agora eu tenho fornecido pares de valores-chave, e eu sou imprimi-las por conta própria paragraph-- nome, ano Doug-- de 2015. Isso é exatamente o código que acabamos viu no slide um momento atrás. E se eu quiser adicionar talvez uma outra par de valores-chave, e class = CS50. Agora eu tenho um outro valor-chave par que está impresso quando eu revisitar o URL novamente. Agora, talvez isto não é formatado muitíssimo bem. Então, eu tenho uma outra versão do get.php. É get2.php. A diferença neste uma é que eu tenho de arquivos CSS, e ele formata as coisas um pouco mais muito bem para mim. Ele talvez não é o mais CSS bonita do mundo. Mas é apenas uma outra maneira de fazê-lo. Então, eu ainda pode obter acesso aos meus variáveis ​​usando $ _GET. E, neste caso, eu sou apenas um tipo de tornando a CSS um pouco mais extravagante. E se nós pop para meu IDE por um segundo, Eu vou mostrar-lhe em meu PHP web diretório aqui, get2.php. Vamos abri-lo, alguns HTML aqui. Aparentemente, eu estou ligando em que Arquivo CSS que eu estava falando. Abro uma marca de tabela. E então aqui está o meu loop foreach. Aqui é que, o que eu mostrou no slide antes. A única diferença é que eu ter esta chave e valor CSS estilo que eu estou aplicando a ele. Mas isso é tudo que eu estou fazendo, é que eu sou iteração através de $ _GET para obter todas um dos pares de valores-chave. E eu estou imprimi-las como a mesa. E, aparentemente, eu estou formatando as chaves de uma maneira, com a class = "chave"