1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Semana 8] 2 00:00:02,000 --> 00:00:04,000 [David J Malan] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Esta é CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,000 >> Bem-vindo de volta. 5 00:00:09,000 --> 00:00:11,000 Este é CS50, e este é o início da semana 8. 6 00:00:11,000 --> 00:00:14,000 Um par de oportunidades, esta semana, 7 00:00:14,000 --> 00:00:17,000 entre eles essa conversa aqui, em que alguns alimentos será servido. 8 00:00:17,000 --> 00:00:20,000 Para mais detalhes confira os slides que estão online. 9 00:00:20,000 --> 00:00:24,000 E também um outro evento nesta semana pelo nosso próprio Thomas Carriero. 10 00:00:24,000 --> 00:00:27,000 Ele é um dos companheiros CS50 do ex-chefe de ensino que está agora no Dropbox, 11 00:00:27,000 --> 00:00:29,000 e ele é o cara que se entusiasmem por US com o que você sabe o que, 12 00:00:29,000 --> 00:00:36,000 por isso, se você quer mais do que a cabeça de sua conversa esta tarde para Dropbox e muito mais. 13 00:00:36,000 --> 00:00:38,000 CS50 almoço é nesta sexta-feira. 14 00:00:38,000 --> 00:00:41,000 Fazer se juntar a nós, se você é capaz, 01:15, como de costume, no Fogo e Gelo. 15 00:00:41,000 --> 00:00:45,000 >> E agora nós mergulhar em algo chamado de Seminários. 16 00:00:45,000 --> 00:00:49,000 Nossos CS50 Seminários, Recall, são essas classes opcionais liderados pelos companheiros de ensino 17 00:00:49,000 --> 00:00:51,000 e assistentes do curso e amigos do curso, 18 00:00:51,000 --> 00:00:55,000 pessoas de um grupo do campus chamado ABCD, que é um grupo de 19 00:00:55,000 --> 00:00:58,000 tecnófilos no campus, bem como um grupo chamado HCS, 20 00:00:58,000 --> 00:01:02,000 a Harvard Computer Society, alunos de graduação que estão similarmente interessados ​​em computação. 21 00:01:02,000 --> 00:01:08,000 A programação deste ano inclui seminários de seminários sobre Android e iOS e JavaScript 22 00:01:08,000 --> 00:01:13,000 e PHP, Unix, Vim, e mais, para perceber que estes seminários estão chegando. 23 00:01:13,000 --> 00:01:16,000 Se você gostaria de RSVP para qualquer um deles ir para a URL lá. 24 00:01:16,000 --> 00:01:20,000 Nós, então, publicaremos no site do curso os tempos e lugares, uma vez que são finalizados. 25 00:01:20,000 --> 00:01:26,000 Mas sei que vale a pena lá de 5 anos de seminários anteriores disponíveis online, 26 00:01:26,000 --> 00:01:29,000 muitos dos quais ainda estão muito atual em termos de tecnologias você pode 27 00:01:29,000 --> 00:01:36,000 quero jogar com para seus projetos finais, assim que a cabeça lá para alguns vídeos disponíveis da mesma. 28 00:01:36,000 --> 00:01:39,000 >> CSS, aqueles de vocês que estão familiarizados com a CSS já, 29 00:01:39,000 --> 00:01:42,000 o que é isso em poucas palavras? 30 00:01:42,000 --> 00:01:45,000 O que é CSS? 31 00:01:45,000 --> 00:01:48,000 É cascading style sheets, eo que isso significa? 32 00:01:48,000 --> 00:01:53,000 O que isso faz para nós, CSS? 33 00:01:53,000 --> 00:01:57,000 Tudo bem, vamos aquecer com um mais fácil, HTML, linguagem de marcação de hipertexto. 34 00:01:57,000 --> 00:02:01,000 O que isso faz para nós? 35 00:02:01,000 --> 00:02:04,000 Qualquer pessoa em tudo? 36 00:02:04,000 --> 00:02:07,000 Está ficando realmente difícil fazer estas perguntas. 37 00:02:07,000 --> 00:02:11,000 HTML, linguagem de marcação de hipertexto. 38 00:02:11,000 --> 00:02:14,000 Sim? Não? 39 00:02:14,000 --> 00:02:17,000 [Resposta do aluno inaudível] 40 00:02:17,000 --> 00:02:20,000 Ok, bom, que nos permite marcar texto para exibir em um navegador da web. 41 00:02:20,000 --> 00:02:22,000 Não é uma linguagem de programação. 42 00:02:22,000 --> 00:02:25,000 É de fato uma linguagem de marcação, o que significa que instrui o navegador como exibir 43 00:02:25,000 --> 00:02:28,000 informações, de modo que o mais simples encarnação deste, como vimos 44 00:02:28,000 --> 00:02:32,000 é algo super simples, como negritar, aberto suporte b suporte fechado, diz 45 00:02:32,000 --> 00:02:36,000 fazer este texto em negrito, e que na verdade é apenas uma das muitas maneiras 46 00:02:36,000 --> 00:02:39,000 em que podemos fazer isso e, de fato, estes dias uma abordagem melhor 47 00:02:39,000 --> 00:02:42,000 para estilizar sua página da web, tornando as coisas em negrito e itálico 48 00:02:42,000 --> 00:02:47,000 e centrado e justificava e semelhantes, não é feito por meio de etiquetas HTML sozinho 49 00:02:47,000 --> 00:02:51,000 mas sim com uma técnica chamada CSS, folhas de estilo em cascata. 50 00:02:51,000 --> 00:02:53,000 Esta é uma linguagem em si. 51 00:02:53,000 --> 00:02:55,000 Ela também não é uma linguagem de programação, mas- 52 00:02:55,000 --> 00:02:58,000 todos, este é o Dan, que mantém juntar a nós hoje. 53 00:02:58,000 --> 00:03:01,000 Algumas dificuldades técnicas. Não é um problema. 54 00:03:01,000 --> 00:03:04,000 >> CSS nos permite estilizar uma página 55 00:03:04,000 --> 00:03:07,000 definindo o que são chamados de propriedades, por isso vamos dar uma olhada nisso 56 00:03:07,000 --> 00:03:09,000 por meio de alguns exemplos básicos. 57 00:03:09,000 --> 00:03:12,000 Deixe-me ir para o aparelho hoje. 58 00:03:12,000 --> 00:03:15,000 Eu tenho a fonte de 8 diretório segunda-feira em aqui, 59 00:03:15,000 --> 00:03:18,000 e eu estou indo para ir em um diretório chamado CSS, onde temos um monte 60 00:03:18,000 --> 00:03:21,000 de arquivos esperando por nós aqui, 61 00:03:21,000 --> 00:03:27,000 e nesta pasta que temos, por exemplo search0.html, da última vez. 62 00:03:27,000 --> 00:03:31,000 Agora, recordar com search0 deixamos esta nota 63 00:03:31,000 --> 00:03:35,000 por tipo de implementação do Google ou realmente apenas o fim da frente para ele uma semana atrás, 64 00:03:35,000 --> 00:03:38,000 e perceber que tivemos algumas novas etiquetas lá. 65 00:03:38,000 --> 00:03:41,000 Tivemos h1 para um título grande, em negrito, 66 00:03:41,000 --> 00:03:45,000 forma, o que nos permitiu realmente tem um formulário HTML para entrada do usuário. 67 00:03:45,000 --> 00:03:48,000 Ação, qual era o significado de um atributo action 68 00:03:48,000 --> 00:03:52,000 na etiqueta de formulário HTML? 69 00:03:52,000 --> 00:03:58,000 Qual foi o significado desta ação,? 70 00:03:58,000 --> 00:04:00,000 Eu só vou fazer isso hoje. 71 00:04:00,000 --> 00:04:03,000 Ação é o destino para onde o formulário vai ser submetido. 72 00:04:03,000 --> 00:04:07,000 O fato de que a ação que diz = "google.com / search" 73 00:04:07,000 --> 00:04:10,000 significa que quando o usuário clica no botão de envio ou o equivalente 74 00:04:10,000 --> 00:04:14,000 qualquer que seja a forma que eles campos preenchidos vão ser enviados para o nosso servidor não 75 00:04:14,000 --> 00:04:17,000 ou o nosso aparelho, mas sim para que URL específica no Google. 76 00:04:17,000 --> 00:04:19,000 E o método que vai utilizar é chamado de obter, 77 00:04:19,000 --> 00:04:25,000 e se, por enquanto, é apenas uma técnica para passar informações junto a um servidor web 78 00:04:25,000 --> 00:04:29,000 por meio da URL, por isso vamos dar uma rápida olhada para trás em como isso funciona. 79 00:04:29,000 --> 00:04:31,000 >> Observe que há uma entrada cujo nome é q 80 00:04:31,000 --> 00:04:35,000 cujo tipo é texto e, em seguida, uma segunda entrada do tipo apresentar 81 00:04:35,000 --> 00:04:39,000 cujo valor é CS50 Pesquisa, e de fato, se abrirmos esse arquivo aqui, 82 00:04:39,000 --> 00:04:42,000 search0.html, é uma forma super simples, 83 00:04:42,000 --> 00:04:45,000 e se eu procurar por algo como ciência da computação 84 00:04:45,000 --> 00:04:50,000 e tecle enter ou clique em Pesquisar CS50 85 00:04:50,000 --> 00:04:53,000 perceber que o que acontece é além de obter no Google 86 00:04:53,000 --> 00:04:56,000 Eu especificamente terminou no URL na parte superior, 87 00:04:56,000 --> 00:05:01,000 google.com / search? q = computador + ciência, 88 00:05:01,000 --> 00:05:04,000 e ciência da computação é, obviamente, o que eu digitado dentro 89 00:05:04,000 --> 00:05:06,000 O + significa apenas que é onde um caractere de espaço foi, 90 00:05:06,000 --> 00:05:10,000 e é feito pelo navegador apenas para se certificar de que não há 91 00:05:10,000 --> 00:05:13,000 confusão e espaço em branco na URL real. 92 00:05:13,000 --> 00:05:15,000 E, em seguida, q, naturalmente, é o nome do parâmetro. 93 00:05:15,000 --> 00:05:20,000 Nós não vimos como nós, o programador, pode realmente acessar q ainda. 94 00:05:20,000 --> 00:05:23,000 Podemos supor que o Google sabe o que fazer com isso aqui, 95 00:05:23,000 --> 00:05:25,000 mas nós vamos chegar lá no devido tempo hoje. 96 00:05:25,000 --> 00:05:30,000 >> Mas deixe-me dar uma olhada em vez de search1.html, 97 00:05:30,000 --> 00:05:34,000 que se parece um pouco diferente, porque eu decidi que este formulário aqui foi um pouco manco. 98 00:05:34,000 --> 00:05:36,000 Quero dizer, é no canto superior esquerdo. 99 00:05:36,000 --> 00:05:40,000 Não há realmente nenhuma estética a ele, e assim que eu quero para estilizar este 100 00:05:40,000 --> 00:05:43,000 um pouco mais como o Google, cuja página inicial, recall, 101 00:05:43,000 --> 00:05:47,000 mesmo que você não pode visitá-lo que, muitas vezes, parece que isso hoje no Halloween. 102 00:05:47,000 --> 00:05:53,000 Se em vez abrir uma versão deste arquivo, 1.html pesquisa, eu centrado lo. 103 00:05:53,000 --> 00:05:57,000 , Ainda bem feio, mas pelo menos agora eu comecei a controlar a estética desta página 104 00:05:57,000 --> 00:06:00,000 não apenas a marcação de facto. 105 00:06:00,000 --> 00:06:04,000 Vamos dar uma olhada em uma pesquisa, e não há realmente apenas uma diferença aqui, 106 00:06:04,000 --> 00:06:06,000 que pode saltar para fora para você, ou talvez não, 107 00:06:06,000 --> 00:06:11,000 mas o que é a linha de um ou trecho de diferença? 108 00:06:11,000 --> 00:06:14,000 >> Há este atributo de estilo, então verifica-se que em HTML 109 00:06:14,000 --> 00:06:19,000 a maioria dos elementos, a maioria das etiquetas pode ter um atributo estilo sobre eles, 110 00:06:19,000 --> 00:06:23,000 e dentro desse atributo de estilo é de uma string, 111 00:06:23,000 --> 00:06:26,000 e que string é CSS. 112 00:06:26,000 --> 00:06:29,000 Você pode colocar folhas de estilo em cascata lá 113 00:06:29,000 --> 00:06:32,000 especificando-lo como um nome de propriedade 114 00:06:32,000 --> 00:06:34,000 seguida de dois pontos, seguido por um valor. 115 00:06:34,000 --> 00:06:37,000 Esta é uma espécie de decisão de projeto infeliz, há alguns anos 116 00:06:37,000 --> 00:06:40,000 que CSS é uma linguagem em si mesma, 117 00:06:40,000 --> 00:06:43,000 mas sintaticamente é muito diferente de HTML. 118 00:06:43,000 --> 00:06:46,000 Neste caso, vemos que dentro do meu site, que é escrito em HTML, 119 00:06:46,000 --> 00:06:51,000 Eu tenho CSS dentro dessas citações, e da Convenção para CSS 120 00:06:51,000 --> 00:06:55,000 é que você tem o que é chamado de uma propriedade seguido, novamente, dois pontos, 121 00:06:55,000 --> 00:06:58,000 seguido pelo valor da propriedade, por isso não há sinal de igual. 122 00:06:58,000 --> 00:07:00,000 Não há citações adicionais. 123 00:07:00,000 --> 00:07:03,000 É só isso cólon par valor separado chave, 124 00:07:03,000 --> 00:07:05,000 e linha de texto faz exatamente o que diz. 125 00:07:05,000 --> 00:07:09,000 Ele alinha o texto no corpo da página, que é realmente a coragem da página, 126 00:07:09,000 --> 00:07:11,000 no centro. 127 00:07:11,000 --> 00:07:13,000 >> Ok, então o resultado final, para ficar claro, é esta. 128 00:07:13,000 --> 00:07:17,000 Nem todos os mais sexy isso, mas pelo menos é centrado e um pouco mais como o Google real. 129 00:07:17,000 --> 00:07:21,000 Mas e se eu, em vez abrir versão 2 do presente 130 00:07:21,000 --> 00:07:25,000 e apontar aqui uma marca totalmente nova? 131 00:07:25,000 --> 00:07:30,000 Agora na cabeça da minha página, que anteriormente só tinha que tag 132 00:07:30,000 --> 00:07:32,000 em todos os exemplos anteriores? 133 00:07:32,000 --> 00:07:34,000 Ele só tinha esse, o título. 134 00:07:34,000 --> 00:07:38,000 Um momento atrás da marca de cabeça olhou como este. 135 00:07:38,000 --> 00:07:40,000 Agora, em vez tem uma marca de estilo dentro dela, 136 00:07:40,000 --> 00:07:44,000 e isso também, eu peço desculpas, sintaticamente parece muito diferente do HTML, 137 00:07:44,000 --> 00:07:47,000 mas você se acostuma, em que dentro da marca de estilo 138 00:07:47,000 --> 00:07:50,000 Agora posso fatorar o que era um momento atrás 139 00:07:50,000 --> 00:07:54,000 um atributo, o atributo de estilo, e eu posso colocá-lo no topo da minha página. 140 00:07:54,000 --> 00:07:56,000 >> Por quê? 141 00:07:56,000 --> 00:08:00,000 Bem, este é um passo para limpar as coisas, bem como em escrever código C 142 00:08:00,000 --> 00:08:04,000 nós, às vezes, escrever funções para fatorar funcionalidade comum. 143 00:08:04,000 --> 00:08:07,000 É apenas um pouco mais limpo para começar a fatoração de coisas como a estética 144 00:08:07,000 --> 00:08:11,000 para uma localização central, em vez de ter tudo intercalam em todo o seu HTML. 145 00:08:11,000 --> 00:08:14,000 Isso também faz o que diz, mesmo que não haja um pouco de nova sintaxe. 146 00:08:14,000 --> 00:08:19,000 Isso aqui é um seletor, e do corpo significa apenas selecionar o elemento do corpo 147 00:08:19,000 --> 00:08:21,000 e aplicar as seguintes propriedades para ele. 148 00:08:21,000 --> 00:08:23,000 Bem, a propriedade é exatamente o mesmo. 149 00:08:23,000 --> 00:08:25,000 Para uma boa medida que eu adicionei um ponto e vírgula no final, 150 00:08:25,000 --> 00:08:29,000 que tende a ser de convenções, e eu envolto essa propriedade toda 151 00:08:29,000 --> 00:08:33,000 entre chaves, porque eu poderia realmente ter coisas diferentes aqui. 152 00:08:33,000 --> 00:08:39,000 Eu poderia realmente dizer algo como color: blue; 153 00:08:39,000 --> 00:08:42,000 >> Agora isso também não vai ser um passo para nada tudo o que mais bonita, 154 00:08:42,000 --> 00:08:47,000 mas se eu voltar agora para a versão 2 que eu pelo menos já fez o corpo do meu 155 00:08:47,000 --> 00:08:49,000 texto página toda azul. 156 00:08:49,000 --> 00:08:51,000 O botão permanece o mesmo porque é um insumo. Não é texto puro. 157 00:08:51,000 --> 00:08:56,000 Mas tudo o que é texto, como CS50 Pesquisa em cima, é em azul fato. 158 00:08:56,000 --> 00:09:01,000 Mais uma vez, tudo o que fizemos agora é remover a marca do corpo, aviso prévio, 159 00:09:01,000 --> 00:09:04,000 o atributo de estilo, e nós temos consignado isso aqui. 160 00:09:04,000 --> 00:09:08,000 Isso não é uma grande melhoria, mas se tomarmos um passo adiante 161 00:09:08,000 --> 00:09:10,000 perceber o que podemos fazer nesta terceira versão aqui. 162 00:09:10,000 --> 00:09:14,000 >> Em search3.html página da web é quase idêntico 163 00:09:14,000 --> 00:09:17,000 exceto para o novo tag agora? 164 00:09:17,000 --> 00:09:20,000 Link, então esta não é muito apropriadamente chamado 165 00:09:20,000 --> 00:09:24,000 porque você não está ligando, no sentido de um hiperlink clicável. 166 00:09:24,000 --> 00:09:28,000 Em vez disso, você é meio de fazer o equivalente a # include em C 167 00:09:28,000 --> 00:09:31,000 qual a marca de link com um atributo href 168 00:09:31,000 --> 00:09:34,000 e um atributo rel diz vá em frente 169 00:09:34,000 --> 00:09:39,000 e copie e cole o conteúdo de um arquivo chamado search3.css aqui, essencialmente. 170 00:09:39,000 --> 00:09:42,000 Ele não chega a fazer isso, mas esse é o espírito da coisa. 171 00:09:42,000 --> 00:09:45,000 Ele diz que vai abrir esse arquivo, search3.css, 172 00:09:45,000 --> 00:09:49,000 e tratá-lo como se o usuário tivesse digitado isso aqui na cabeça da página 173 00:09:49,000 --> 00:09:51,000 assim como eu fiz no exemplo anterior. 174 00:09:51,000 --> 00:09:54,000 Search3.css, entretanto, é bastante simples. 175 00:09:54,000 --> 00:09:58,000 É realmente só contém exatamente o que foi um momento atrás 176 00:09:58,000 --> 00:10:03,000 na marca de estilo, mas eu tenho consignado aqui fora em seu próprio arquivo. 177 00:10:03,000 --> 00:10:07,000 >> Mesmo que não passei muito tempo a todos em HTML ou de programação web 178 00:10:07,000 --> 00:10:11,000 apenas intuitivamente qual é a motivação, talvez, por fatoração 179 00:10:11,000 --> 00:10:14,000 este pequeno trecho até mesmo de CSS em seu próprio arquivo 180 00:10:14,000 --> 00:10:19,000 e incluindo-o com esta tag link aqui? 181 00:10:19,000 --> 00:10:21,000 [Resposta do aluno inaudível] 182 00:10:21,000 --> 00:10:25,000 Ok, é mais fácil de ler no sentido de que você tem o seu CSS em um arquivo CSS. 183 00:10:25,000 --> 00:10:28,000 Você tem o seu código HTML em seu arquivo HTML, por isso é mais legível nesse sentido. 184 00:10:28,000 --> 00:10:30,000 O que mais pode ser atraente? Sim. 185 00:10:30,000 --> 00:10:32,000 [Resposta do aluno inaudível] 186 00:10:32,000 --> 00:10:35,000 Sim, para que você possa incluí-lo muitas vezes, então agora nós estamos fazendo estes 187 00:10:35,000 --> 00:10:38,000 exemplos básicos com arquivos individuais, mas vamos supor que você está realmente fazendo 188 00:10:38,000 --> 00:10:42,000 um site de verdade, como você vai para pset 7 ou o seu projeto final, talvez, 189 00:10:42,000 --> 00:10:45,000 e você quer ter várias páginas da Web, como é certamente comum em 190 00:10:45,000 --> 00:10:48,000 a rede mundial real Geral, e que seria uma espécie de coxo 191 00:10:48,000 --> 00:10:52,000 ter que copiar e colar a mesma cor azul 192 00:10:52,000 --> 00:10:56,000 e mesmo texto alinhado centro em cada uma dessas páginas. 193 00:10:56,000 --> 00:10:59,000 Em vez disso, faz mais sentido para fatorar, assim como temos feito em C 194 00:10:59,000 --> 00:11:02,000 com o arquivo h., colocá-lo em um lugar central, 195 00:11:02,000 --> 00:11:06,000 neste search3.css caso, e então permitir que qualquer arquivo 196 00:11:06,000 --> 00:11:11,000 em seu site para realmente incluir esse arquivo por meio de essa marca aqui na linha 16. 197 00:11:11,000 --> 00:11:14,000 Como é tipicamente o caso, que começou com a versão 0, que tipo de obras 198 00:11:14,000 --> 00:11:18,000 mas não é necessariamente o melhor, e com cada etapa, 199 00:11:18,000 --> 00:11:21,000 busca 1, busca 2, e agora busca 3 temos tido estes passos de bebê 200 00:11:21,000 --> 00:11:26,000 para os projetos que são um pouco mais limpo e mais preparatório 201 00:11:26,000 --> 00:11:30,000 para as páginas mais complexas que podemos fazer na estrada. 202 00:11:30,000 --> 00:11:33,000 >> Deixe-me abrir um último exemplo aqui apenas para mostrar 203 00:11:33,000 --> 00:11:36,000 uma página ainda mais estilizado, mas primeiro vamos olhar para o código HTML. 204 00:11:36,000 --> 00:11:41,000 Este é search4.html, e notar que estruturalmente é quase o mesmo 205 00:11:41,000 --> 00:11:44,000 exceto para a introdução de uma nova marca, DIV. 206 00:11:44,000 --> 00:11:48,000 Div é uma marca que apresenta uma divisão da página. 207 00:11:48,000 --> 00:11:51,000 Você pode pensar nisso como um retângulo invisível. 208 00:11:51,000 --> 00:11:54,000 É uma espécie de cria uma faixa de área no site 209 00:11:54,000 --> 00:11:56,000 que pode estilizar todos de uma vez. 210 00:11:56,000 --> 00:11:58,000 O que eu tenho feito aqui é a seguinte. 211 00:11:58,000 --> 00:12:01,000 Dentro do meu corpo tag, que tem sido ali o tempo todo, 212 00:12:01,000 --> 00:12:05,000 Eu estou dizendo criar uma divisão da página aqui através de linhas de 45 a 47, 213 00:12:05,000 --> 00:12:09,000 o que significa, essencialmente, dar-me um retângulo invisível na parte superior da página. 214 00:12:09,000 --> 00:12:14,000 Então me dê um segundo retângulo, embora invisível, abaixo disso, 215 00:12:14,000 --> 00:12:16,000 e identificá-lo pelo teor de nome, e depois, por último, 216 00:12:16,000 --> 00:12:19,000 dá-me uma terceira divisão da página na parte inferior 217 00:12:19,000 --> 00:12:21,000 chamado ID. 218 00:12:21,000 --> 00:12:23,000 Vamos ver por que eu fiz isso em apenas um momento, 219 00:12:23,000 --> 00:12:26,000 mas conceitualmente Tenho uma divisão de cabeçalho. 220 00:12:26,000 --> 00:12:30,000 Eu tenho uma divisão de conteúdo, e eu tenho uma divisão rodapé da página 221 00:12:30,000 --> 00:12:32,000 mesmo que estes sejam apenas na marcação. 222 00:12:32,000 --> 00:12:35,000 O usuário não vai ver três retângulos, 223 00:12:35,000 --> 00:12:37,000 mas uma espécie de estruturalmente há por trás das cenas 224 00:12:37,000 --> 00:12:39,000 eles são realmente presente. 225 00:12:39,000 --> 00:12:41,000 >> Agora, quem se importa? Por que realmente fazer isso? 226 00:12:41,000 --> 00:12:43,000 Tudo o mais na página é a mesma que já vimos antes. 227 00:12:43,000 --> 00:12:47,000 Aqui está a minha forma. Aqui está a minha entrada, a minha entrada, uma quebra de linha e assim por diante. 228 00:12:47,000 --> 00:12:50,000 Aqui está uma imagem, no entanto, então vamos ver de onde veio isso em apenas um momento. 229 00:12:50,000 --> 00:12:52,000 Aqui está um rodapé, que é novo, só porque eu queria introduzir 230 00:12:52,000 --> 00:12:54,000 conteúdo um pouco mais aqui. 231 00:12:54,000 --> 00:12:58,000 Se rolar até perceber que ID desta div é cabeçalho. 232 00:12:58,000 --> 00:13:02,000 O ID deste div é o conteúdo, eo ID de um presente é de rodapé. 233 00:13:02,000 --> 00:13:05,000 E, como o nome sugere, quando você tem um atributo ID 234 00:13:05,000 --> 00:13:09,000 em HTML, por definição, deve identificar 235 00:13:09,000 --> 00:13:12,000 um dos elementos, um dos tags em sua página. 236 00:13:12,000 --> 00:13:16,000 O fardo é totalmente em que você se lembre que você tem um ID cabeçalho já. 237 00:13:16,000 --> 00:13:19,000 Você tem um rodapé. Você tem um ID de conteúdo já. 238 00:13:19,000 --> 00:13:22,000 O computador não vai descobrir o que um ID disponível é para você, 239 00:13:22,000 --> 00:13:27,000 assim você pode acidentalmente dar 2 tags um ID do cabeçalho, 240 00:13:27,000 --> 00:13:29,000 e que seria apenas errado. 241 00:13:29,000 --> 00:13:31,000 >> Você tem que manter em mente o que você criou, 242 00:13:31,000 --> 00:13:34,000 mas uma vez que você tiver feito isso observe o que podemos fazer aqui. 243 00:13:34,000 --> 00:13:38,000 Agora posso especificar na minha marca de estilo no topo 244 00:13:38,000 --> 00:13:41,000 ou equivalentemente no meu arquivo CSS, se eu ainda estava usando essa versão, 245 00:13:41,000 --> 00:13:46,000 Eu posso dizer # header, eo que isso significa é que, independentemente tag 246 00:13:46,000 --> 00:13:49,000 neste site tem uma identificação de cabeçalho 247 00:13:49,000 --> 00:13:53,000 e #, apenas por convenção humana, representa ID. 248 00:13:53,000 --> 00:13:56,000 O sinal de sustenido ou libra signo representa ID. 249 00:13:56,000 --> 00:13:58,000 Cabeçalho é o nome que eu dei. 250 00:13:58,000 --> 00:14:01,000 Isto significa aplicar esta propriedade CSS 251 00:14:01,000 --> 00:14:04,000 para qualquer tag nesta página tem um ID de cabeçalho. 252 00:14:04,000 --> 00:14:06,000 Mesma coisa aqui. 253 00:14:06,000 --> 00:14:09,000 Aplicar esta propriedade, que passa a ser o mesmo, a qualquer elemento 254 00:14:09,000 --> 00:14:11,000 cujo ID é o conteúdo, e depois aqui 255 00:14:11,000 --> 00:14:14,000 notar que eu tenho um pouco mais sofisticado, com rodapé. 256 00:14:14,000 --> 00:14:18,000 Qualquer elemento cujo ID é rodapé, de que não pode haver apenas um, por definição, 257 00:14:18,000 --> 00:14:21,000 vá em frente e faça o seu tamanho de fonte menor, 258 00:14:21,000 --> 00:14:24,000 sua ousada peso da fonte, a sua margem de 20 pixels. 259 00:14:24,000 --> 00:14:26,000 >> O que significa isso? 260 00:14:26,000 --> 00:14:28,000 É apenas uma margem na parte superior, parte inferior, e à esquerda e à direita. 261 00:14:28,000 --> 00:14:31,000 Isso significa dar-me uma margem de 20 pixels invisível em torno dele 262 00:14:31,000 --> 00:14:35,000 apenas para empurrar tudo mais longe dele um pouco, como você pode fazer no Word, 263 00:14:35,000 --> 00:14:37,000 Microsoft Word ou Pages ou similar. 264 00:14:37,000 --> 00:14:39,000 E então o texto alinhar centro. 265 00:14:39,000 --> 00:14:43,000 Vamos ver o resultado final, e depois vamos voltar até o trecho de um remanescente de CSS lá. 266 00:14:43,000 --> 00:14:48,000 Esta é a versão 4, o nosso passado para os exemplos de pesquisa, e é mais sexy, muito, muito. 267 00:14:48,000 --> 00:14:54,000 Agora, com justiça, eu só Googled "google gerador de logotipo da fonte." 268 00:14:54,000 --> 00:14:58,000 E o que me permitiu criar um GIF, um formato de imagem, que parece que não. 269 00:14:58,000 --> 00:15:00,000 Na verdade, você pode fazer isso também. 270 00:15:00,000 --> 00:15:03,000 Temos "google gerador de logotipo fontes." 271 00:15:03,000 --> 00:15:05,000 >> Vamos ver se podemos fazer isso. 272 00:15:05,000 --> 00:15:07,000 Ok, acho que este é o site que eu usei. 273 00:15:07,000 --> 00:15:11,000 Podemos dizer Ec 10, por exemplo, e fazer-lhes a sua própria. 274 00:15:11,000 --> 00:15:13,000 Você pode jogar com isso o dia inteiro e, em seguida, clique direito sobre ele 275 00:15:13,000 --> 00:15:16,000 e depois baixar o GIF real, que é tudo o que eu fiz. 276 00:15:16,000 --> 00:15:19,000 E, de fato, é por isso que no meu HTML, lembre-se, aqui 277 00:15:19,000 --> 00:15:22,000 Eu tinha uma tag de imagem, o que vimos brevemente na semana passada 278 00:15:22,000 --> 00:15:24,000 cuja fonte é logo.gif. 279 00:15:24,000 --> 00:15:28,000 E o que mais uma vez foi a motivação para ter esse atributo alt, 280 00:15:28,000 --> 00:15:31,000 este atributo alternativa? 281 00:15:31,000 --> 00:15:33,000 Sim. 282 00:15:33,000 --> 00:15:35,000 [Resposta do aluno inaudível] 283 00:15:35,000 --> 00:15:37,000 Bom, para duas razões muito, se o navegador não pode puxar para cima a imagem 284 00:15:37,000 --> 00:15:40,000 porque você tem uma conexão de rede lenta ou a imagem está corrompida 285 00:15:40,000 --> 00:15:44,000 ou algo assim, pelo menos, o ser humano pode ver "CS50 busca", 286 00:15:44,000 --> 00:15:46,000 e, em seguida, também por razões de acessibilidade. 287 00:15:46,000 --> 00:15:48,000 Se você tem um usuário que é cego e está usando um leitor de tela 288 00:15:48,000 --> 00:15:50,000 e, portanto, obviamente, não pode ver as imagens podem pelo menos 289 00:15:50,000 --> 00:15:52,000 ouvir texto se o seu computador fala a eles. 290 00:15:52,000 --> 00:15:56,000 >> Em geral, esta é a melhor prática, quando se trata da acessibilidade das páginas 291 00:15:56,000 --> 00:16:00,000 para que os usuários, mesmo nessa situação pode ouvir ou ver, por assim dizer, 292 00:16:00,000 --> 00:16:03,000 o que é que está em sua página. 293 00:16:03,000 --> 00:16:05,000 Há uma outra coisa que eu fiz aqui 294 00:16:05,000 --> 00:16:09,000 que é um pouco interessante, e vamos ver mais sobre isso em conjunto de problemas 7 295 00:16:09,000 --> 00:16:12,000 através de um dos curtas liderados por um dos companheiros de ensino. 296 00:16:12,000 --> 00:16:15,000 Mas # conteúdo refere-se a tag 297 00:16:15,000 --> 00:16:20,000 cujo ID é o conteúdo, mas depois há um espaço em branco, e então há a entrada de palavra. 298 00:16:20,000 --> 00:16:25,000 Bem, o que é interessante sobre CSS é que você pode 299 00:16:25,000 --> 00:16:29,000 referem-se a marcas em uma espécie de página hierarquicamente, 300 00:16:29,000 --> 00:16:33,000 e que esse trecho de via CSS é encontrar a tag 301 00:16:33,000 --> 00:16:37,000 cujo ID é o conteúdo, e depois aplicar as seguintes propriedades 302 00:16:37,000 --> 00:16:42,000 para todas as marcas de entrada que são descendentes de conteúdo, 303 00:16:42,000 --> 00:16:44,000 isto é, que são recuadas no interior do mesmo. 304 00:16:44,000 --> 00:16:48,000 Recuo, de novo, é apenas importante para o computador, e não ao humano, 305 00:16:48,000 --> 00:16:51,000 mas por convenção que travessão coisas como nós ir mais fundo em uma página, 306 00:16:51,000 --> 00:16:54,000 assim, isto significa aplicar uma margem de 5 pixels a qualquer elemento de entrada 307 00:16:54,000 --> 00:16:57,000 que está em algum lugar dentro ou aninhado dentro de 308 00:16:57,000 --> 00:16:59,000  o elemento cujo ID é o conteúdo. 309 00:16:59,000 --> 00:17:01,000 >> Quem é que isso se aplica? 310 00:17:01,000 --> 00:17:03,000 Bem, não há realmente apenas essas duas caras aqui. 311 00:17:03,000 --> 00:17:05,000 Observe que dentro da forma há duas entradas, 312 00:17:05,000 --> 00:17:07,000 como tem havido para todos estes exemplos. 313 00:17:07,000 --> 00:17:11,000 Mas aviso que essas duas entradas acontecer de ser aninhados dentro, 314 00:17:11,000 --> 00:17:13,000 embora um pouco profundamente, um par de camadas de recuo, 315 00:17:13,000 --> 00:17:16,000 dentro da tag cujo ID é o conteúdo. 316 00:17:16,000 --> 00:17:18,000 O que isso significa? 317 00:17:18,000 --> 00:17:21,000 Se formos para o navegador aqui você pode ver sempre assim ligeiramente- 318 00:17:21,000 --> 00:17:23,000 deixe-me aproximar-que há um pouco de preenchimento entre o botão 319 00:17:23,000 --> 00:17:25,000 e entre o campo de texto. 320 00:17:25,000 --> 00:17:27,000 >> Deixe-me temporariamente desligar isso. 321 00:17:27,000 --> 00:17:30,000 Deixe-me ir para o meu CSS, e deixe-me ir em frente e apenas 322 00:17:30,000 --> 00:17:34,000 mudar essa margem de 5 pixels para 0 pixels. 323 00:17:34,000 --> 00:17:37,000 Deixe-me ir à frente e, em seguida, salvar o arquivo, volte para o motor de busca 324 00:17:37,000 --> 00:17:40,000 e recarregar, e vê no meio da página. 325 00:17:40,000 --> 00:17:43,000 Tudo ficou comprimido juntos, e quando eu chicoteado este exemplo se 326 00:17:43,000 --> 00:17:46,000 Eu pensei que parecia estúpido com o campo de texto e, em seguida, o botão imediatamente abaixo dela. 327 00:17:46,000 --> 00:17:50,000 Eu queria almofada-lo um pouco, então eu apresentei margens. 328 00:17:50,000 --> 00:17:55,000 O que não vamos fazer é ir na aula através da várias dezenas 329 00:17:55,000 --> 00:17:58,000 Propriedades CSS que existem porque, novamente, há coisas como o tamanho da fonte, 330 00:17:58,000 --> 00:18:02,000 peso da fonte, margem, texto alinhar, e uma dúzia de outros poucos, 331 00:18:02,000 --> 00:18:06,000 e vamos encaminhá-lo no conjunto de problemas 7 a vários tutoriais on-line 332 00:18:06,000 --> 00:18:08,000 e as referências que lhe permitem escolher essas coisas. 333 00:18:08,000 --> 00:18:10,000 Mas o que é realmente importante no final do dia 334 00:18:10,000 --> 00:18:12,000 >> é entender como essas coisas são aplicadas. 335 00:18:12,000 --> 00:18:15,000 Novamente, se temos a marca de estilo dentro da qual 336 00:18:15,000 --> 00:18:19,000 podem ir os seletores, o tipo de identificadores que especificam 337 00:18:19,000 --> 00:18:21,000 para quem quer aplicar essas propriedades, 338 00:18:21,000 --> 00:18:24,000 e depois você coloca as propriedades como par valor-chave 339 00:18:24,000 --> 00:18:28,000 separados por dois pontos e terminou com um ponto e vírgula, 340 00:18:28,000 --> 00:18:32,000 ou você pode copiar todos os que e colocá-lo em um arquivo CSS separado 341 00:18:32,000 --> 00:18:35,000 em si mesmo. 342 00:18:35,000 --> 00:18:39,000 Tudo bem, todas as perguntas sobre os conceitos 343 00:18:39,000 --> 00:18:41,000 ou a grande figura da CSS? 344 00:18:41,000 --> 00:18:43,000 Você vai ver de novo mais do mesmo em pset 7, 345 00:18:43,000 --> 00:18:47,000 mas vamos mantê-lo geralmente muito simples. 346 00:18:47,000 --> 00:18:49,000 Não? Tudo bem. 347 00:18:49,000 --> 00:18:51,000 É hora de uma linguagem de programação real, 348 00:18:51,000 --> 00:18:54,000 e vamos voltar a um pouco de CSS na forma de um exemplo. 349 00:18:54,000 --> 00:18:58,000 PHP é realmente uma linguagem maravilhosamente acessíveis 350 00:18:58,000 --> 00:19:02,000 na medida em que é quase equivalente ao sintaticamente C. 351 00:19:02,000 --> 00:19:06,000 Em outras palavras, se você sabe C, você sabe para o PHP maior parte, 352 00:19:06,000 --> 00:19:08,000 pelo menos sintaticamente, apesar de existirem algumas novas funcionalidades 353 00:19:08,000 --> 00:19:10,000 e alguns novos conceitos que vamos ter de olhar. 354 00:19:10,000 --> 00:19:13,000 >> Mas para a maior parte, agora que a transição de C para PHP 355 00:19:13,000 --> 00:19:16,000 a maior parte do novo material é realmente a grande figura, 356 00:19:16,000 --> 00:19:19,000 como você usa uma linguagem de programa na Web em vez de 357 00:19:19,000 --> 00:19:23,000 na linha de comando ou em um prompt piscando como temos vindo a fazer até agora. 358 00:19:23,000 --> 00:19:27,000 Para referência, especialmente com pset 7 eo projeto final em diante, 359 00:19:27,000 --> 00:19:31,000 não aproveitar essa URL aqui se você gostaria de ler sobre as formalidades do PHP. 360 00:19:31,000 --> 00:19:34,000 É realmente como um livro online grátis de forma eficaz, 361 00:19:34,000 --> 00:19:37,000 e você também vai descobrir que o que é realmente agradável sobre PHP 362 00:19:37,000 --> 00:19:41,000 é que existem centenas de funções que vêm com ele, 363 00:19:41,000 --> 00:19:44,000 enquanto que em C você não necessariamente têm acesso a 364 00:19:44,000 --> 00:19:47,000 mais funções que estavam na biblioteca de matemática, a biblioteca CS50. 365 00:19:47,000 --> 00:19:51,000 Em PHP e um monte de línguas modernas, Python e Ruby entre eles, 366 00:19:51,000 --> 00:19:54,000 você tem acesso a tantas mais funções, o que significa que você começa a escrever 367 00:19:54,000 --> 00:19:57,000 muito menos código, pois você pode estar sobre os ombros de outras pessoas 368 00:19:57,000 --> 00:19:59,000 que já tenha escrito algumas coisas para você. 369 00:19:59,000 --> 00:20:03,000 >> Vamos dar um rápido passeio da sintaxe do PHP e em seguida, escrever alguns exemplos. 370 00:20:03,000 --> 00:20:06,000 O que é legal sobre o PHP em primeiro lugar 371 00:20:06,000 --> 00:20:08,000 é que não há função principal. 372 00:20:08,000 --> 00:20:10,000 Se você quiser escrever um programa em PHP que você acabou de começar a escrever código, 373 00:20:10,000 --> 00:20:12,000 e você não tem que se preocupar principal. 374 00:20:12,000 --> 00:20:14,000 Não há int. Não há retorno. 375 00:20:14,000 --> 00:20:17,000 Não há argv, argc o que é necessário quando você escreve o programa. 376 00:20:17,000 --> 00:20:20,000 Em vez disso você pode simplesmente começar a escrever código, e isso é, em parte, 377 00:20:20,000 --> 00:20:23,000 porque o PHP é o que é chamado de uma linguagem interpretada. 378 00:20:23,000 --> 00:20:26,000 C foi compilado, e ele foi compilado no sentido de que você começa 379 00:20:26,000 --> 00:20:29,000 com código fonte, executá-lo através Clang, que é um compilador, 380 00:20:29,000 --> 00:20:33,000 e, finalmente, após um certo número de passos que você obter o código objeto, 0s e 1s. 381 00:20:33,000 --> 00:20:36,000 PHP e Python e Ruby e Pearl e outros 382 00:20:36,000 --> 00:20:39,000 diferentes tipos de línguas em que você não compilá-los. 383 00:20:39,000 --> 00:20:42,000 Você não precisa ir a partir do código-fonte para 0s e 1s. 384 00:20:42,000 --> 00:20:45,000 Basta executar o código-fonte, e você corre o código fonte 385 00:20:45,000 --> 00:20:49,000 escrevendo em um arquivo de texto normal, que termina em. php, neste caso, 386 00:20:49,000 --> 00:20:53,000 em vez de. c, e que o programa faz no seu computador 387 00:20:53,000 --> 00:20:57,000 é literalmente interpreta seu código linha por linha por linha. 388 00:20:57,000 --> 00:21:00,000 >> Em outras palavras, ao invés de escrever um programa e executar o programa 389 00:21:00,000 --> 00:21:04,000 diretamente você, em vez escrever um programa com um arquivo com extensão. php. 390 00:21:04,000 --> 00:21:09,000 Então você executar um programa real chamado php.exe, se você estiver no Windows, 391 00:21:09,000 --> 00:21:12,000 ou apenas PHP, se você estiver no Mac OS ou Linux, 392 00:21:12,000 --> 00:21:17,000 e você fornecer como entrada para o programa PHP seu próprio código fonte, 393 00:21:17,000 --> 00:21:20,000 e seu propósito na vida é ler o seu topo código para baixo, da esquerda para a direita, 394 00:21:20,000 --> 00:21:23,000 e fazer o que você disse para ele fazer. 395 00:21:23,000 --> 00:21:25,000 >> Vamos ver o que isso vai significar sintaticamente. 396 00:21:25,000 --> 00:21:27,000 No PHP temos condições. 397 00:21:27,000 --> 00:21:29,000 Este slide é idêntico ao que você viu na semana 1 398 00:21:29,000 --> 00:21:33,000 porque sintaticamente condições, ifs e else ifs e else em PHP 399 00:21:33,000 --> 00:21:35,000 exatamente assim. 400 00:21:35,000 --> 00:21:38,000 Quando se trata de expressões booleanas que vão exatamente assim. 401 00:21:38,000 --> 00:21:43,000 Quando se trata de anding coisas juntos como boleanos que vai exatamente assim. 402 00:21:43,000 --> 00:21:46,000 Muda a mesma aparência, e você terá a vantagem em PHP 403 00:21:46,000 --> 00:21:51,000 que os interruptores em C só poderia mudar em um char ou int. 404 00:21:51,000 --> 00:21:53,000 Você não pode ligar um valor de cadeia. 405 00:21:53,000 --> 00:21:55,000 No PHP você pode realmente ter uma expressão 406 00:21:55,000 --> 00:21:58,000 que é uma variável cujo conteúdo é uma string, 407 00:21:58,000 --> 00:22:01,000 e você pode realmente fazer comparação de string na forma real intuitivo, 408 00:22:01,000 --> 00:22:06,000 Não comparação ponteiro, a fim de decidir se a fazer caso i ou j ou outra coisa. 409 00:22:06,000 --> 00:22:09,000 Vamos ver o que potencialmente antes do tempo. 410 00:22:09,000 --> 00:22:11,000 >> Loops também maravilhosamente são os mesmos. 411 00:22:11,000 --> 00:22:15,000 Para loops ter uma inicialização, uma condição, e um número de atualizações. 412 00:22:15,000 --> 00:22:18,000 Enquanto laços também existem em PHP. 413 00:22:18,000 --> 00:22:21,000 Fazer enquanto laços também existem em PHP, 414 00:22:21,000 --> 00:22:26,000 e matrizes existe no PHP, mas é aqui onde a sintaxe começa a ficar um pouco diferente, 415 00:22:26,000 --> 00:22:29,000 mas os conceitos são os mesmos, e os conceitos são realmente a mesma 416 00:22:29,000 --> 00:22:32,000 como eram em 0 Semana com o Scratch. 417 00:22:32,000 --> 00:22:34,000 Primeiro e mais importante é o sinal $. 418 00:22:34,000 --> 00:22:37,000 Esta foi uma decisão de projeto em PHP que qualquer variável 419 00:22:37,000 --> 00:22:41,000 em PHP por design começa com sinal $. 420 00:22:41,000 --> 00:22:46,000 Não há mais X, Y, Z. É agora $ X, Y $, $ Z apenas porque. 421 00:22:46,000 --> 00:22:49,000 É algo para se manter em mente, e agora no lado direito 422 00:22:49,000 --> 00:22:52,000 este é semelhante a uma matriz, 423 00:22:52,000 --> 00:22:54,000 mas estamos usando colchetes aqui. 424 00:22:54,000 --> 00:22:57,000 Em PHP e em JavaScript, como vai finalmente ver, 425 00:22:57,000 --> 00:23:01,000 declarar uma matriz que você faz colchete aberto e fechado colchete, 426 00:23:01,000 --> 00:23:04,000 e então você tem uma lista separada por vírgula de valores, se ints 427 00:23:04,000 --> 00:23:09,000 ou cordas ou caracteres, o que quiser, dentro do que a expressão de lá. 428 00:23:09,000 --> 00:23:11,000 >> Agora, como nós fizemos algo como isso em C? 429 00:23:11,000 --> 00:23:16,000 Qual foi a sintaxe para estaticamente declarar uma matriz de números conhecidos? 430 00:23:16,000 --> 00:23:19,000 Foi chaves, diferença tão pequena aqui, mas em ambos os PHP 431 00:23:19,000 --> 00:23:22,000 e, eventualmente, ele só usa JavaScript colchetes, então realmente 432 00:23:22,000 --> 00:23:25,000 O único detalhe interessante aqui é o sinal $ para o nome da variável 433 00:23:25,000 --> 00:23:28,000 e também os colchetes, e há uma coisa curiosa 434 00:23:28,000 --> 00:23:32,000 que foi omitido, bem como sobre o lado esquerdo do sinal de =. 435 00:23:32,000 --> 00:23:36,000 O que está faltando que estamos exigindo há semanas? Sim. 436 00:23:36,000 --> 00:23:38,000 [Resposta do aluno inaudível] 437 00:23:38,000 --> 00:23:41,000 O tamanho, de modo que não há menção ao tamanho da matriz. 438 00:23:41,000 --> 00:23:45,000 Francamente, não há nenhuma menção de colchetes no lado esquerdo 439 00:23:45,000 --> 00:23:47,000 do sinal =, eo que mais está faltando na linha? 440 00:23:47,000 --> 00:23:49,000 Sim. >> [Resposta do aluno inaudível] 441 00:23:49,000 --> 00:23:52,000 O tipo, então o que é interessante, em especial sobre o PHP 442 00:23:52,000 --> 00:23:56,000 é que não é fortemente tipado como C é, 443 00:23:56,000 --> 00:23:58,000 e que está fortemente digitado no sentido de que você deve dizer char, 444 00:23:58,000 --> 00:24:00,000 você deve dizer int, você deve dizer float. 445 00:24:00,000 --> 00:24:03,000 >> Sempre que você quiser uma variável que você tem a dizer Clang que seu tipo é. 446 00:24:03,000 --> 00:24:05,000 PHP é um pouco mais preguiçoso. 447 00:24:05,000 --> 00:24:08,000 É vagamente digitado no sentido de que 448 00:24:08,000 --> 00:24:11,000 você pode ter carros alegóricos e chars e cordas 449 00:24:11,000 --> 00:24:14,000 e ints e assim por diante, mas a própria linguagem 450 00:24:14,000 --> 00:24:17,000 realmente não se importa com o que você coloca dentro de uma variável. 451 00:24:17,000 --> 00:24:20,000 Você não tem que informar com antecedência que tipo de dados 452 00:24:20,000 --> 00:24:22,000 vai em uma variável. 453 00:24:22,000 --> 00:24:24,000 É inteiramente até você, então isso é bom 454 00:24:24,000 --> 00:24:27,000 em que você não tem que se preocupar tanto com os dados digitando 455 00:24:27,000 --> 00:24:29,000 e se preocupar que seus argumentos são e assim por diante. 456 00:24:29,000 --> 00:24:32,000 Isto também significa que, eventualmente, funções em PHP vai ser capaz de retornar 457 00:24:32,000 --> 00:24:36,000 ou mais um int do tempo e, talvez, de vez em quando 458 00:24:36,000 --> 00:24:40,000 eles vão retornar um bool, um falso boolean, por exemplo, para indicar que algo deu errado. 459 00:24:40,000 --> 00:24:44,000 Isso nos dá alguns upsides, mas também nos fará tipo de projeto por 460 00:24:44,000 --> 00:24:47,000 um pouco mais preguiçoso quando se trata de digitação de dados. 461 00:24:47,000 --> 00:24:50,000 >> O que mais há para se manter em mente aqui? 462 00:24:50,000 --> 00:24:54,000 Variáveis ​​olhar bastante como este, portanto $ s = "Olá, mundo." 463 00:24:54,000 --> 00:24:57,000 Isso é, talvez, inferida a partir do exemplo anterior, 464 00:24:57,000 --> 00:24:59,000 e nós temos um outro tipo de laço. 465 00:24:59,000 --> 00:25:02,000 Este nós vamos realmente ver de vez em quando, já que é bastante útil, 466 00:25:02,000 --> 00:25:04,000 uma construção foreach. 467 00:25:04,000 --> 00:25:11,000 Neste caso, o loop foreach leva dentro de parênteses suas três palavras normalmente, 468 00:25:11,000 --> 00:25:16,000 $ Algo primeiro, que é o que matriz quer iterar sobre os membros, 469 00:25:16,000 --> 00:25:19,000 então, literalmente, a palavra-chave como, e então, finalmente, 470 00:25:19,000 --> 00:25:21,000 outro nome de variável que você começa a escolher. 471 00:25:21,000 --> 00:25:23,000 Pode ser foo, bar, ou elemento, 472 00:25:23,000 --> 00:25:26,000 e que esta construção faz 473 00:25:26,000 --> 00:25:29,000 é se a matriz $ contém 10 elementos 474 00:25:29,000 --> 00:25:34,000 a cada iteração dessa matriz, desculpe, a cada iteração deste laço 475 00:25:34,000 --> 00:25:37,000 o elemento variável chamada vai ser actualizado 476 00:25:37,000 --> 00:25:40,000 para ser o primeiro elemento na matriz, em seguida, o segundo elemento da matriz, 477 00:25:40,000 --> 00:25:44,000 em seguida, o terceiro elemento da matriz, obviando assim a necessidade 478 00:25:44,000 --> 00:25:46,000 para fazer a notação de colchetes ligeiramente irritante quadrado e 479 00:25:46,000 --> 00:25:49,000 $ I, a fim de índice em uma matriz. 480 00:25:49,000 --> 00:25:53,000 PHP faz todo esse trabalho para você e em cada iteração 481 00:25:53,000 --> 00:25:55,000 apenas lhe entrega o próximo elemento da matriz 482 00:25:55,000 --> 00:26:01,000 sem você ter que saber ou se preocupam com o seu local de índice numérico. 483 00:26:01,000 --> 00:26:04,000 >> E então, finalmente, para já, há uma outra característica do PHP 484 00:26:04,000 --> 00:26:08,000 que vai ser extremamente útil, especialmente quando começamos a programação na Web, 485 00:26:08,000 --> 00:26:10,000 e que é conhecido como uma matriz associativa. 486 00:26:10,000 --> 00:26:13,000 As matrizes que sabemos até agora como de 20 segundos atrás 487 00:26:13,000 --> 00:26:17,000 e para as últimas 8 semanas são numericamente indexados matrizes, 488 00:26:17,000 --> 00:26:20,000 tipo de matrizes tradicionais, onde os índices são ints, 489 00:26:20,000 --> 00:26:23,000 0, 1, 2, todo o caminho para cima. 490 00:26:23,000 --> 00:26:25,000 As matrizes de associação são muito mais poderosos. 491 00:26:25,000 --> 00:26:28,000 Eles permitem que você tenha chaves arbitrárias, 492 00:26:28,000 --> 00:26:31,000 índices arbitrários e valores arbitrários. 493 00:26:31,000 --> 00:26:34,000 Considerando que, em uma matriz tradicional é 0, 1, 2, 494 00:26:34,000 --> 00:26:37,000 em uma matriz associativa que você pode ter um índice 495 00:26:37,000 --> 00:26:41,000 ou uma chave de foo cujo valor é bar. 496 00:26:41,000 --> 00:26:46,000 Você pode então ter outra chave cujo nome é baz e cujo valor é qux. 497 00:26:46,000 --> 00:26:49,000 >> Mais uma vez, estúpidas informática genéricos nomes de variáveis ​​aqui, 498 00:26:49,000 --> 00:26:55,000 mas o ponto é que essa matriz não tem suporte 0 ou suporte 1. 499 00:26:55,000 --> 00:26:59,000 É vez vai ter suporte foo e suporte de Baz. 500 00:26:59,000 --> 00:27:03,000 Este é muito mais versátil em que nós vamos ser capazes de associar 501 00:27:03,000 --> 00:27:07,000 palavras com outras palavras, as chaves com valores completamente arbitrariamente, 502 00:27:07,000 --> 00:27:12,000 e nós vamos ser capazes de obter esses valores de volta em tempo constante 503 00:27:12,000 --> 00:27:14,000 pois debaixo da capa que uma matriz associativa 504 00:27:14,000 --> 00:27:16,000 realmente está é uma tabela hash. 505 00:27:16,000 --> 00:27:20,000 Lembre-se que uma tabela hash permite que você coloque em alguma entrada 506 00:27:20,000 --> 00:27:25,000 como colocar a palavra David se você deseja inserir David em algum tipo de dicionário, 507 00:27:25,000 --> 00:27:27,000 e depois você voltar algum valor normalmente. 508 00:27:27,000 --> 00:27:29,000 No caso de speller, verdadeiro ou falso. 509 00:27:29,000 --> 00:27:33,000 David ou qualquer palavra que está ou não está no dicionário. 510 00:27:33,000 --> 00:27:36,000 Uma matriz associativa é realmente apenas uma tabela hash, 511 00:27:36,000 --> 00:27:38,000 mas é uma encarnação muito mais amigável do mesmo. 512 00:27:38,000 --> 00:27:41,000 Como veremos, isso vai nos permitir fazer algumas coisas 513 00:27:41,000 --> 00:27:43,000 muito, muito facilmente. 514 00:27:43,000 --> 00:27:45,000 >> Vamos dar uma olhada em algumas básica do PHP 515 00:27:45,000 --> 00:27:47,000 exemplos e ver o que podemos fazer com esta linguagem. 516 00:27:47,000 --> 00:27:51,000 Deixe-me ir em frente e abrir-se em nosso diretório de origem hoje 517 00:27:51,000 --> 00:27:54,000 um arquivo chamado hello1.php. 518 00:27:54,000 --> 00:27:57,000 Este arquivo é mais um comentário do que é o código real, 519 00:27:57,000 --> 00:28:00,000 então deixe-me realmente remover todos os comentários a partir do arquivo 520 00:28:00,000 --> 00:28:05,000 e apresentar-lhe, talvez, o mais simples programa PHP aqui. 521 00:28:05,000 --> 00:28:07,000 5 linhas, e alguns dos que são espaço em branco, 522 00:28:07,000 --> 00:28:09,000 para notar algumas diferenças-chave aqui. 523 00:28:09,000 --> 00:28:12,000 O arquivo é chamado hello1.php. 524 00:28:12,000 --> 00:28:16,000 A primeira linha, porém, é 00:28:18,000 Semelhantes em espírito à HTML, 526 00:28:18,000 --> 00:28:21,000 que a seqüência de caracteres diz ao computador 527 00:28:21,000 --> 00:28:25,000 "Ei, computador, aí vem um programa em que estamos em PHP." 528 00:28:25,000 --> 00:28:28,000 Ele garante que não está confuso que é alguma outra língua. 529 00:28:28,000 --> 00:28:30,000 A linha 2 é um espaço interessante branco. 530 00:28:30,000 --> 00:28:32,000 A linha 3 é o nosso velho amigo printf, 531 00:28:32,000 --> 00:28:34,000 Neste momento, no contexto de PHP. 532 00:28:34,000 --> 00:28:37,000 PHP tem sua própria versão de printf, que se comporta exatamente o mesmo, 533 00:28:37,000 --> 00:28:39,000 de modo que este é só ir para imprimir "Olá mundo." 534 00:28:39,000 --> 00:28:46,000 E então essa tag oposto aqui,>, significa que é tudo para o meu código PHP. 535 00:28:46,000 --> 00:28:48,000 >> Vamos ver como executar isso. 536 00:28:48,000 --> 00:28:50,000 Eu vou voltar para a minha janela de terminal aqui. 537 00:28:50,000 --> 00:28:52,000 Eu estou indo para ir para o meu diretório PHP. 538 00:28:52,000 --> 00:28:56,000 Observe que temos um monte de arquivos, o primeiro dos quais é ola.php. 539 00:28:56,000 --> 00:29:01,000 Deixe-me ir em frente e executar este hello1.php, entrar. 540 00:29:01,000 --> 00:29:03,000 Permissão negada. Okay. 541 00:29:03,000 --> 00:29:06,000 Como temos fixado coisas como esta no passado? 542 00:29:06,000 --> 00:29:08,000 O que é isso? >> [Resposta do aluno inaudível] 543 00:29:08,000 --> 00:29:11,000 Precisamos ler e escrever, mas deixe-me fazer ls-l. 544 00:29:11,000 --> 00:29:14,000 Lembre-se esta saída um tanto enigmático pelo qual hello1 545 00:29:14,000 --> 00:29:17,000 parece ser lidos e escritos por mim 546 00:29:17,000 --> 00:29:19,000 mas legível por todos. 547 00:29:19,000 --> 00:29:22,000 Acontece que este realmente não é um passo na direção certa. 548 00:29:22,000 --> 00:29:25,000 A diferença, mais uma vez, com uma linguagem interpretada 549 00:29:25,000 --> 00:29:27,000 é que você não executar o programa diretamente. 550 00:29:27,000 --> 00:29:30,000 Você vez executado um intérprete e entregá-lo o código 551 00:29:30,000 --> 00:29:33,000 que você escreveu para que possa interpretá-lo linha por linha. 552 00:29:33,000 --> 00:29:36,000 Neste caso, o intérprete ou programa que eu realmente quero correr 553 00:29:36,000 --> 00:29:38,000 é chamado literalmente PHP. 554 00:29:38,000 --> 00:29:41,000 >> Em algum lugar neste disco rígido do aparelho há um programa 555 00:29:41,000 --> 00:29:45,000 alguém escreveu chamado PHP, ou no Windows php.exe. 556 00:29:45,000 --> 00:29:48,000 O que eu vou fazer aqui é que eu vou rodar o PHP 557 00:29:48,000 --> 00:29:51,000 mas dá-lo como um argumento de linha de comando do código que eu escrevi, 558 00:29:51,000 --> 00:29:54,000 e então eu vou diminuir o zoom e aperte enter. 559 00:29:54,000 --> 00:29:58,000 Corre-se o meu programa para mim, de cima para baixo, da esquerda para a direita. 560 00:29:58,000 --> 00:30:01,000 Deixe-me ir à frente e abrir uma pequena variação desta. 561 00:30:01,000 --> 00:30:05,000 No aviso hello2.php que isto também 562 00:30:05,000 --> 00:30:08,000 é principalmente comentários, então deixe-me livrar-se deles como uma distração, 563 00:30:08,000 --> 00:30:13,000 eo que é claramente diferente agora sobre este arquivo? 564 00:30:13,000 --> 00:30:15,000 Há essa nova linha, um tanto enigmática no topo. 565 00:30:15,000 --> 00:30:20,000 Na linha 1 é #! / Bin / php. 566 00:30:20,000 --> 00:30:24,000 Bin é uma convenção sobre Linux e Mac OS para binários, 567 00:30:24,000 --> 00:30:27,000 assim / bin significa que esta é uma pasta contendo um monte de binários 568 00:30:27,000 --> 00:30:29,000 que está programado, um dos quais é o PHP. 569 00:30:29,000 --> 00:30:32,000 O #! é apelidado shebang, 570 00:30:32,000 --> 00:30:35,000 que é a forma mais rápida de dizer isso, eo que isso significa 571 00:30:35,000 --> 00:30:40,000 é que quando você executar este programa agora há uma dica no topo do arquivo 572 00:30:40,000 --> 00:30:44,000 que diz ao computador o intérprete de usar. 573 00:30:44,000 --> 00:30:47,000 >> Fica um pouco chato se você tivesse que dizer a seus usuários e seus clientes 574 00:30:47,000 --> 00:30:50,000 "Ei, nós escrevemos este programa chamado hello1.php". 575 00:30:50,000 --> 00:30:54,000 Tudo que você tem a fazer é para sempre executar o PHP e, em seguida, o nome do programa. 576 00:30:54,000 --> 00:30:58,000 Francamente, seria apenas mais agradável para executar hello1.php, 577 00:30:58,000 --> 00:31:00,000 e, de fato, nós podemos, se faça o seguinte. 578 00:31:00,000 --> 00:31:05,000 Deixe-me ir em frente e fazer ls-l, e aviso em hello2 ainda é apenas ler escrever 579 00:31:05,000 --> 00:31:10,000 e em seguida, ler ler, por isso ainda não posso fazer isso, hello2.php. 580 00:31:10,000 --> 00:31:15,000 Mas introduziu esta sempre assim momentaneamente última vez, o comando chmod. 581 00:31:15,000 --> 00:31:20,000 Se eu fizer um chmod + x, o que significa que todos os executabilidade mais, 582 00:31:20,000 --> 00:31:26,000 e depois hello2.php e depois fazer ls-l novamente perceber o que mudou. 583 00:31:26,000 --> 00:31:29,000 Um, o Linux está me mostrando o nome do arquivo em verde para transmitir a idéia de 584 00:31:29,000 --> 00:31:32,000 que é executável, mas, mais importante ainda, no lado da mão esquerda 585 00:31:32,000 --> 00:31:36,000 perceber que o pouco que representa x para executável já foi definido. 586 00:31:36,000 --> 00:31:42,000 O que isto significa é agora eu posso correr ./hello2.php como de costume, 587 00:31:42,000 --> 00:31:45,000 aperte enter, e por causa da shebang no topo do arquivo 588 00:31:45,000 --> 00:31:48,000 isso é uma dica, de novo, para o Linux que diz 589 00:31:48,000 --> 00:31:51,000 usar este intérprete para executar este arquivo. 590 00:31:51,000 --> 00:31:54,000 Não se preocupe em forçar o usuário a digitar realmente isso. 591 00:31:54,000 --> 00:31:57,000 >> E o que é legal agora é que é meio irrelevante para meus clientes ou meus amigos 592 00:31:57,000 --> 00:32:01,000 o idioma que eu escrevi este programa em, para que eu possa ir em frente com mv 593 00:32:01,000 --> 00:32:04,000 e renomear essa coisa de hello2, por exemplo. 594 00:32:04,000 --> 00:32:07,000 E agora se eu fizer ./hello2 595 00:32:07,000 --> 00:32:10,000 e zoom out meu programa continua a funcionar. 596 00:32:10,000 --> 00:32:13,000 Essas extensões de arquivo são uma convenção humana que é necessário 597 00:32:13,000 --> 00:32:15,000 para algo como Clang e fazer que olhar para eles. 598 00:32:15,000 --> 00:32:18,000 Mas para PHP, eu poderia chamar isso de nada extensão de arquivo que eu quero. 599 00:32:18,000 --> 00:32:22,000 Eu poderia enganar o mundo a pensar que eu sou realmente bom em Ruby, 600 00:32:22,000 --> 00:32:25,000 e eu poderia escrever hello2.rb e execute isso, 601 00:32:25,000 --> 00:32:28,000 e pronto, agora eu tenho a versão Ruby, que é uma mentira completa. 602 00:32:28,000 --> 00:32:30,000 Mas as extensões de arquivo são sem sentido 603 00:32:30,000 --> 00:32:35,000 se o arquivo é executável e tem essa dica especial no topo do arquivo. 604 00:32:35,000 --> 00:32:38,000 >> Agora, como um aparte, deixe-me mostrar-lhe rapidamente a versão 3, 605 00:32:38,000 --> 00:32:40,000 que é uma espécie de truque útil saber. 606 00:32:40,000 --> 00:32:45,000 Em hello3 eu fiz algo um pouco errado 607 00:32:45,000 --> 00:32:47,000 que eu vou atualizar o código fonte online. 608 00:32:47,000 --> 00:32:50,000 Na versão 3 verifica-se que na maioria dos computadores Linux 609 00:32:50,000 --> 00:32:53,000 há um programa chamado env para o ambiente, 610 00:32:53,000 --> 00:32:56,000 eo que você pode fazer aqui é se você não tem idéia de onde o PHP 611 00:32:56,000 --> 00:33:00,000 é instalado na unidade de disco rígido, porque de facto ela pode variar com base no computador 612 00:33:00,000 --> 00:33:03,000 que alguém está usando, env diz apenas executa env, 613 00:33:03,000 --> 00:33:07,000 que é na maioria dos sistemas, e descobrir onde o PHP é. 614 00:33:07,000 --> 00:33:11,000 Apenas um truque comum para que você não tem que se preocupar em encontrar para fora onde um programa é. 615 00:33:11,000 --> 00:33:14,000 Mas se você se importa para descobrir onde um programa é e você não ter se importado até agora 616 00:33:14,000 --> 00:33:16,000 você pode usar o comando que. 617 00:33:16,000 --> 00:33:19,000 >> Deixe-me afastar e tipo que php, 618 00:33:19,000 --> 00:33:23,000 e perceber que me diz que é, na verdade, em usr / bin / php. 619 00:33:23,000 --> 00:33:25,000 É uma espécie de uma mentira. É também no lixo. 620 00:33:25,000 --> 00:33:27,000 É só me mostrando o primeiro hit. 621 00:33:27,000 --> 00:33:31,000 Se você já se perguntou onde é Clang, que Clang, que está em usr / bin / bumbum, 622 00:33:31,000 --> 00:33:34,000 que fazer, usr / bin / fazer, e isso significa que todo esse tempo 623 00:33:34,000 --> 00:33:38,000 você poderia ter sido digitando usr / bin / clang entrar para executar Clang, 624 00:33:38,000 --> 00:33:41,000 mas é o tipo de tedioso para fazer isso, então algumas pastas 625 00:33:41,000 --> 00:33:44,000 como usr / bin e bin são consideradas padrões 626 00:33:44,000 --> 00:33:50,000 de modo que o computador sabe olhar para eles para você. 627 00:33:50,000 --> 00:33:53,000 Qualquer dúvida sobre como escrever um super, super simples programa World Olá 628 00:33:53,000 --> 00:33:55,000 em PHP e em seguida executá-lo? 629 00:33:55,000 --> 00:33:59,000 Porque agora nós vamos começar a introduzir a sintaxe mais atraente. 630 00:33:59,000 --> 00:34:01,000 Tudo bem, aqui vamos nós. 631 00:34:01,000 --> 00:34:03,000 Estes programas que temos visto, na verdade, todos eles antes. 632 00:34:03,000 --> 00:34:07,000 >> Se eu abrir, por exemplo, vamos fazer beer1.php, 633 00:34:07,000 --> 00:34:09,000 não vamos passar por várias versões deste, mas o que eu fiz 634 00:34:09,000 --> 00:34:13,000 foi eu sentei e derramou ou convertido 635 00:34:13,000 --> 00:34:15,000 meu código C para o código PHP aqui. 636 00:34:15,000 --> 00:34:18,000 A maior parte do início do arquivo é comentários aqui. 637 00:34:18,000 --> 00:34:20,000 Acontece que há uma nova função que precisamos chamado readline. 638 00:34:20,000 --> 00:34:23,000 GetString, recall, para a partir Semana 0 foi uma coisa CS50. 639 00:34:23,000 --> 00:34:27,000 PHP vem com sua função user-friendly, chamada readline 640 00:34:27,000 --> 00:34:30,000 que leva um argumento que especifica o prompt 641 00:34:30,000 --> 00:34:33,000 que você quer mostrar para o usuário, e que faz readline 642 00:34:33,000 --> 00:34:35,000 é ele retorna o que o usuário digita pol 643 00:34:35,000 --> 00:34:39,000 Neste caso, eu estou declarando uma variável chamada $ n. 644 00:34:39,000 --> 00:34:42,000 Eu sou armazenar nele o valor de retorno de readline 645 00:34:42,000 --> 00:34:44,000 depois de avisar o usuário com essa seqüência. 646 00:34:44,000 --> 00:34:47,000 Só para backup, para realmente executar essa coisa, deixe-me ir em frente 647 00:34:47,000 --> 00:34:50,000 e executar beer1.php php. 648 00:34:50,000 --> 00:34:53,000 Quantas garrafas haverá? Vamos fazer dois desta vez. 649 00:34:53,000 --> 00:34:55,000 Enter. Isto é tudo. 650 00:34:55,000 --> 00:34:59,000 >> O programa é funcionalmente idêntico ao da versão C de semanas. 651 00:34:59,000 --> 00:35:01,000 Mas sintaticamente vamos ver o que é diferente. 652 00:35:01,000 --> 00:35:05,000 Depois que eu receber um int a partir da notificação do usuário que eu estou fazendo alguma verificação de erros, 653 00:35:05,000 --> 00:35:08,000 e se n for menor que 1 eu sair e eu imprimir 654 00:35:08,000 --> 00:35:11,000 uma mensagem muito para o usuário e de saída com 1. 655 00:35:11,000 --> 00:35:13,000 Isso também é um pouco diferente. 656 00:35:13,000 --> 00:35:16,000  Em C o que vamos fazer? Em C voltamos 1. 657 00:35:16,000 --> 00:35:20,000 No PHP você sair com uma, que francamente é que eu acho que um pouco mais intuitiva 658 00:35:20,000 --> 00:35:22,000 porque você está literalmente sair do programa. 659 00:35:22,000 --> 00:35:25,000 Tudo bem, e então aqui a música irritante é idêntico sintaticamente 660 00:35:25,000 --> 00:35:29,000 com exceção da variável, então aqui na linha 24 em diante 661 00:35:29,000 --> 00:35:31,000 notar meu laço for é quase o mesmo, 662 00:35:31,000 --> 00:35:34,000 mas eu tenho R $ na frente do i e n, 663 00:35:34,000 --> 00:35:37,000 e que também está em falta a partir da linha 26 que tivemos no passado 664 00:35:37,000 --> 00:35:39,000 quando se declara uma variável i? 665 00:35:39,000 --> 00:35:41,000 Não há nenhum tipo. 666 00:35:41,000 --> 00:35:43,000 É incorreto em PHP para dizer int. 667 00:35:43,000 --> 00:35:45,000 Você simplesmente não precisa fazer isso. 668 00:35:45,000 --> 00:35:48,000 O computador, o interpretador do PHP é inteligente o suficiente para perceber 669 00:35:48,000 --> 00:35:51,000 que se você colocar um número em $ I ele será tratado 670 00:35:51,000 --> 00:35:53,000 como um número para você. 671 00:35:53,000 --> 00:35:57,000 E então aqui estamos na ficha $ i, $ i, $ i - 1. 672 00:35:57,000 --> 00:36:00,000 Tudo isso é a mesma, e então aqui nós fazemos um "Uau, isso é chato" printf 673 00:36:00,000 --> 00:36:02,000 e depois sair (0). 674 00:36:02,000 --> 00:36:05,000 >> Mais uma vez, o takeaway aqui é que mesmo que nós vamos gastar relativamente 675 00:36:05,000 --> 00:36:09,000 pouco de tempo em PHP, certamente contra o que fizemos em C, 676 00:36:09,000 --> 00:36:12,000 é quase o mesmo, e assim o que vamos fazer hoje e na próxima semana 677 00:36:12,000 --> 00:36:14,000 e além é focar realmente em algumas das novas idéias. 678 00:36:14,000 --> 00:36:17,000 Só para ver que outra coisa não traduzir mais de C, 679 00:36:17,000 --> 00:36:20,000 este foi um programa super simples que fizemos na semana 1 680 00:36:20,000 --> 00:36:22,000 ou 2, que um valor de cubos. 681 00:36:22,000 --> 00:36:25,000 Mas o que era interessante no momento sobre este programa é que ele 682 00:36:25,000 --> 00:36:28,000 introduziu a noção de uma função personalizada escrito que nós mesmos escreveram. 683 00:36:28,000 --> 00:36:31,000 A sintaxe do PHP é quase o mesmo. 684 00:36:31,000 --> 00:36:33,000 Aqui está o meu programa em cima. 685 00:36:33,000 --> 00:36:35,000 Note novamente ausente é qualquer noção de principal. 686 00:36:35,000 --> 00:36:39,000 Eu começar a escrever código, e isso é o que vai começar executado pelo intérprete. 687 00:36:39,000 --> 00:36:42,000 Eu imprimir x agora é 2, presumivelmente. 688 00:36:42,000 --> 00:36:44,000 Então eu reclamar cubing ... 689 00:36:44,000 --> 00:36:47,000 Então eu chamar a função cubo e passar $ x 690 00:36:47,000 --> 00:36:50,000 e atribuir o valor de retorno para $ x. 691 00:36:50,000 --> 00:36:53,000 Então eu afirmo que ele é em cubos, e então eu digo isso, o que espero 692 00:36:53,000 --> 00:36:55,000 vai dizer que x é agora 8. 693 00:36:55,000 --> 00:36:59,000 A sintaxe para a função em PHP é sempre assim ligeiramente diferente. 694 00:36:59,000 --> 00:37:01,000 Novamente falta é o tipo de retorno. 695 00:37:01,000 --> 00:37:05,000 Novamente falta é o tipo de retorno e também falta é que outro tipo? 696 00:37:05,000 --> 00:37:07,000 [Resposta do aluno inaudível] 697 00:37:07,000 --> 00:37:10,000 Bem, ok, isso é bom. Vamos voltar a isso em um segundo. 698 00:37:10,000 --> 00:37:12,000 >> Não temos, por exemplo, int aqui. 699 00:37:12,000 --> 00:37:15,000 Nós não, por exemplo, ter int aqui porque, mais uma vez, em PHP 700 00:37:15,000 --> 00:37:18,000 você simplesmente não precisa e não deve fazer isso, 701 00:37:18,000 --> 00:37:20,000 mas há esta nova palavra-chave chamada função. 702 00:37:20,000 --> 00:37:23,000 No PHP é quase um pouco mais claro, porque quando você quer uma função 703 00:37:23,000 --> 00:37:26,000 você literalmente dizer função, é dar-lhe um nome e, em seguida, uma lista separada por vírgula 704 00:37:26,000 --> 00:37:28,000 se algum de seus argumentos. 705 00:37:28,000 --> 00:37:32,000 Não é preciso dizer nula ou qualquer coisa assim, e depois de retorno é o mesmo, 706 00:37:32,000 --> 00:37:35,000 $ A $ * a * $ a. 707 00:37:35,000 --> 00:37:38,000 O que também está faltando? Sammy apontou isso aqui. 708 00:37:38,000 --> 00:37:43,000 Na parte superior do arquivo completamente ausente em PHP também é um protótipo. 709 00:37:43,000 --> 00:37:45,000 Isso também é por design. 710 00:37:45,000 --> 00:37:48,000 Línguas e intérpretes como PHP são mais espertos do que C sempre foi 711 00:37:48,000 --> 00:37:50,000 em compiladores como Clang. 712 00:37:50,000 --> 00:37:53,000 >> Lembre-se que Clang, se você não disse a ele que existe cubo, 713 00:37:53,000 --> 00:37:56,000 se você não diga a ele que printf existe como com um protótipo 714 00:37:56,000 --> 00:38:00,000 ou com um # include, bem, ele estava indo para gritar com você e nem mesmo compilar o código. 715 00:38:00,000 --> 00:38:03,000 PHP e linguagens mais modernas são muito mais inteligentes quando se trata de presente. 716 00:38:03,000 --> 00:38:07,000 Eles vão encarregar-se de ler todo o seu código 717 00:38:07,000 --> 00:38:11,000 e então gritar com você somente se encontrar em nenhum lugar cubo. 718 00:38:11,000 --> 00:38:15,000 Não importa se cubo é no fundo ou na parte superior ou mesmo em algum arquivo separado. 719 00:38:15,000 --> 00:38:18,000 Linguagens PHP e similares são agora inteligente o suficiente para olhar em frente 720 00:38:18,000 --> 00:38:26,000 em tudo antes de você considerando como tendo cometido um erro. 721 00:38:26,000 --> 00:38:28,000 Onde isso nos deixa? 722 00:38:28,000 --> 00:38:32,000 >> Vamos fazer um último exemplo aqui em condições, 723 00:38:32,000 --> 00:38:35,000 e se eu abrir aviso conditions2.php também 724 00:38:35,000 --> 00:38:37,000 sintaxe aqui é quase o mesmo. 725 00:38:37,000 --> 00:38:40,000 Estou usando readline vez de GetString, mas que a linha é a mesma que antes, 726 00:38:40,000 --> 00:38:42,000 "Eu gostaria de um inteiro por favor." 727 00:38:42,000 --> 00:38:45,000 Eu, então, ter uma condição se, uma outra se, e em seguida, uma outra pessoa, 728 00:38:45,000 --> 00:38:48,000 mas funcionalmente este programa também é idêntico ao que fizemos semanas atrás, 729 00:38:48,000 --> 00:38:51,000 por isso, se eu executar essa coisa, php de conditions2, 730 00:38:51,000 --> 00:38:54,000 e eu dar-lhe um número como 23 - 731 00:38:54,000 --> 00:38:57,000 Eu escolhi um número positivo. Se eu dar-lhe -1 eu peguei um número negativo. 732 00:38:57,000 --> 00:39:00,000 Se eu dou 0 Eu, na verdade pegou 0. 733 00:39:00,000 --> 00:39:02,000 Então, quem se importa com tudo isso? 734 00:39:02,000 --> 00:39:06,000 Bem, um do tipo divertido de exercícios aqui 735 00:39:06,000 --> 00:39:10,000 pelo menos para mim era ir para trás e ver o quão rápido eu poderia implementar pset 5, 736 00:39:10,000 --> 00:39:12,000 o pset erros ortográficos. 737 00:39:12,000 --> 00:39:15,000 Lembre-se que havia um arquivo chamado speller.c, 738 00:39:15,000 --> 00:39:17,000 e havia um arquivo chamado dictionary.c. 739 00:39:17,000 --> 00:39:20,000 O que eu fiz foi tipo de gasto alguns minutos e eu converti o código C 740 00:39:20,000 --> 00:39:23,000 para o código PHP, e não vamos gastar muito tempo em speller 741 00:39:23,000 --> 00:39:26,000 porque assim como em pset 5, você realmente não precisa 742 00:39:26,000 --> 00:39:29,000 gastar muito tempo em speller em si, porque sua atenção estava no dicionário. 743 00:39:29,000 --> 00:39:32,000 >> Basta dizer que, se você ler speller, 744 00:39:32,000 --> 00:39:35,000 este arquivo aqui, que é muito bonito equivalente ao código C 745 00:39:35,000 --> 00:39:37,000 que lhe deu para pset 5. 746 00:39:37,000 --> 00:39:39,000 Acabei acrescentado cerca de US $ em alguns lugares. 747 00:39:39,000 --> 00:39:43,000 Eu mudei os nomes das funções certas, se não existe no PHP. 748 00:39:43,000 --> 00:39:45,000 Há uma coisa adicional aqui, preg_match, 749 00:39:45,000 --> 00:39:48,000 que é a maneira um pouco mais sofisticado de fazer algo, mas vamos voltar a isso eventualmente. 750 00:39:48,000 --> 00:39:51,000 Mas em suma, speller é quase idêntica, e se você olhar bem no fundo 751 00:39:51,000 --> 00:39:54,000 o que, eventualmente, cospe é este aqui, 752 00:39:54,000 --> 00:39:57,000 palavras com erros ortográficos, palavras de dicionário, palavras no texto. 753 00:39:57,000 --> 00:40:00,000 Tudo bem, então o que é interessante agora é o seguinte. 754 00:40:00,000 --> 00:40:05,000 No topo do meu arquivo que estou exigindo dictionary.php. 755 00:40:05,000 --> 00:40:09,000 Assim como C tem # include PHP tem uma função especial chamada requerem 756 00:40:09,000 --> 00:40:14,000 que praticamente faz a mesma coisa, exigem um arquivo chamado dictionary.php. 757 00:40:14,000 --> 00:40:18,000 Como eu posso ir sobre a implementação de pset 5? 758 00:40:18,000 --> 00:40:21,000 Deixe-me ir em frente e abrir um arquivo aqui. 759 00:40:21,000 --> 00:40:24,000 Deixe-me dar uma pequena referência aqui. 760 00:40:24,000 --> 00:40:29,000 E deixe-me criar um novo arquivo e começar a chamar esta dictionary.php. 761 00:40:29,000 --> 00:40:31,000 Deixe-me colocar em outra pasta, para que possamos fazer isso ao vivo. 762 00:40:31,000 --> 00:40:33,000 E agora eu vou zoom in 763 00:40:33,000 --> 00:40:37,000 Vou começar o meu arquivo PHP com suporte aberto php fechado suporte. 764 00:40:37,000 --> 00:40:40,000 E então aqui havia algumas funções que eu precisava para implementar para pset 5, 765 00:40:40,000 --> 00:40:42,000 então deixe-me começar a implementar algumas das pessoas, 766 00:40:42,000 --> 00:40:47,000 para verificação de função, que teve de levar uma palavra em como um argumento. 767 00:40:47,000 --> 00:40:49,000 Nós vamos fazer isso e voltar a ele em um momento. 768 00:40:49,000 --> 00:40:53,000 >> Não havia carga, função que teve no que como um argumento? 769 00:40:53,000 --> 00:40:56,000 Dicionário, para que o arquivo que eu realmente queria carregar. 770 00:40:56,000 --> 00:41:00,000 Houve dimensão, função que não recebe nenhum argumento 771 00:41:00,000 --> 00:41:04,000 e havia-função que era o outro? 772 00:41:04,000 --> 00:41:06,000 Descarregar, que não tomou nenhuma argumentação. 773 00:41:06,000 --> 00:41:10,000 Estas são as quatro funções que eu precisaria agora implementar em PHP, 774 00:41:10,000 --> 00:41:13,000 eo que eu vou fazer é ir em frente e fazer isso. 775 00:41:13,000 --> 00:41:16,000 Um monte de que você usou uma tabela hash em pset 5, 776 00:41:16,000 --> 00:41:21,000 então deixe-me ir em frente e criar uma tabela hash em PHP. 777 00:41:21,000 --> 00:41:23,000 Concluído. 778 00:41:23,000 --> 00:41:25,000 Isso me dá uma tabela hash. Bem, por que? 779 00:41:25,000 --> 00:41:30,000 Um deles, a variável é chamada $ tabela, apenas para evocar a idéia de uma tabela de hash. 780 00:41:30,000 --> 00:41:34,000 Os colchetes, no entanto, recordar, representam o que? 781 00:41:34,000 --> 00:41:37,000 Uma matriz, mas em matrizes PHP não tem que ser indexada numericamente. 782 00:41:37,000 --> 00:41:41,000 Eles também podem ser matrizes de associação, 783 00:41:41,000 --> 00:41:44,000 o que significa que você pode ter chaves arbitrárias e valores. 784 00:41:44,000 --> 00:41:49,000 >> Assim como no pset 5, aqueles de vocês que fez implementações tabela hash 785 00:41:49,000 --> 00:41:53,000 você provavelmente introduzido a palavra e depois inserido em uma cadeia de listas ligadas, 786 00:41:53,000 --> 00:41:56,000 ou armazenados em algum lugar o valor de verdade ou algo nesse sentido. 787 00:41:56,000 --> 00:41:59,000 Você de alguma forma lembrou-se do fato de que a palavra estava lá. 788 00:41:59,000 --> 00:42:01,000 Por agora, que vai ser a minha tabela hash, 789 00:42:01,000 --> 00:42:06,000 e agora para ir sobre como implementar a função de verificação 790 00:42:06,000 --> 00:42:09,000 Eu só preciso olhar para dentro daquela tabela hash 791 00:42:09,000 --> 00:42:11,000 e ver se uma palavra está lá. 792 00:42:11,000 --> 00:42:15,000 O que eu vou fazer é que eu vou dizer, se- 793 00:42:15,000 --> 00:42:20,000 digamos isset, que é uma função do PHP que, literalmente, significa apenas que é o conjunto de chaves, 794 00:42:20,000 --> 00:42:24,000 assim isset ($ tabela [$ palavra], 795 00:42:24,000 --> 00:42:29,000 e se assim retornar true. 796 00:42:29,000 --> 00:42:32,000 É isso aí. Isso é pset 5 em PHP. 797 00:42:32,000 --> 00:42:34,000 Bem, com justiça, tudo bem. 798 00:42:34,000 --> 00:42:37,000 Else return false, então ele não está lá. 799 00:42:37,000 --> 00:42:39,000 O que realmente está acontecendo aqui? 800 00:42:39,000 --> 00:42:42,000 Bem, se a tabela de mesa ou hash aqui mais geral- 801 00:42:42,000 --> 00:42:46,000 é uma matriz associativa que significa que você pode indexar nele 802 00:42:46,000 --> 00:42:50,000 com uma palavra como "palavra", e você tem que voltar algum valor. 803 00:42:50,000 --> 00:42:52,000 >> Estamos meio de obter um passo à frente de nós mesmos. 804 00:42:52,000 --> 00:42:56,000 Seria uma espécie de bom se realmente carregou o primeiro arquivo, 805 00:42:56,000 --> 00:42:58,000 para carga não é tão simples, mas deixe-me ir em frente e chicote 806 00:42:58,000 --> 00:43:00,000  uma implementação muito rápida de carga. 807 00:43:00,000 --> 00:43:07,000 Deixe-me ir em frente e dizer palavras recebe arquivo de dicionário. 808 00:43:07,000 --> 00:43:10,000 A função de arquivo em PHP abre um arquivo 809 00:43:10,000 --> 00:43:12,000 e retorna para você uma série de todas as palavras que o arquivo, 810 00:43:12,000 --> 00:43:14,000 apenas entrega-los para você. 811 00:43:14,000 --> 00:43:16,000 Isso foi uma grande dor também, não foi? 812 00:43:16,000 --> 00:43:21,000 Agora foreach, esta é a nossa nova construção, foreach ($ palavras as $ palavra). 813 00:43:21,000 --> 00:43:25,000 Este ciclo vai começar a iteração sobre as palavras de matriz 814 00:43:25,000 --> 00:43:30,000 e atribuir à variável $ palavra cada palavra no arquivo 815 00:43:30,000 --> 00:43:32,000 a partir do primeiro para o segundo para o terceiro ao quarto todo o caminho 816 00:43:32,000 --> 00:43:35,000 então eu não tenho que fazer o chato [i] notação e similares. 817 00:43:35,000 --> 00:43:38,000 E o que eu estou simplesmente vai fazer para cada uma dessas palavras 818 00:43:38,000 --> 00:43:43,000 é armazená-lo em minha mesa de indexação na tabela 819 00:43:43,000 --> 00:43:47,000 e depois fazer verdade, porque para lembrar 820 00:43:47,000 --> 00:43:50,000 que uma palavra no meu dicionário é tudo o que eu tenho que fazer 821 00:43:50,000 --> 00:43:55,000 é tipo de virar um pouco e dizer esta palavra em minha tabela hash é lá, é verdade. 822 00:43:55,000 --> 00:43:58,000 E se ele não estiver lá, eu não tenho que colocar explicitamente falsa, 823 00:43:58,000 --> 00:44:01,000 caso contrário, eu teria que colocar falsa para todas as palavras possíveis no universo. 824 00:44:01,000 --> 00:44:05,000 >> É suficiente para mim apenas para definir um valor de índice 825 00:44:05,000 --> 00:44:09,000 a verdade se uma palavra é, na verdade, na minha tabela hash. 826 00:44:09,000 --> 00:44:12,000 Agora, eu estou cortando um par de cantos aqui que eu vou acenar as mãos menos por enquanto, 827 00:44:12,000 --> 00:44:15,000 , mas agora a função de carga é feito. 828 00:44:15,000 --> 00:44:18,000 Eu carregar todas as palavras a partir do arquivo em um array. 829 00:44:18,000 --> 00:44:21,000 Eu iterar dessa matriz e para cada palavra na matriz 830 00:44:21,000 --> 00:44:24,000 Eu ligá-lo em minha tabela hash com uma linha de código. 831 00:44:24,000 --> 00:44:26,000 Isso é divertido. Você sabe como podemos implementar tamanho agora? 832 00:44:26,000 --> 00:44:28,000 Bem, o tamanho é sempre muito fácil, na justiça. 833 00:44:28,000 --> 00:44:32,000 Aqui podemos apenas fazer retornar a contagem de mesa. 834 00:44:32,000 --> 00:44:34,000 Isso é muito fácil também, contar o número de coisas em cima da mesa. 835 00:44:34,000 --> 00:44:36,000 Isso é realmente o tipo de não o mais eficiente. 836 00:44:36,000 --> 00:44:39,000 Eu provavelmente deveria ter um tamanho variável chamada para que possamos fazê-lo 837 00:44:39,000 --> 00:44:41,000 em tempo constante, mas que é bastante fácil. 838 00:44:41,000 --> 00:44:45,000 Ah, e em seguida, descarregar, se realmente queremos ser anal aqui 839 00:44:45,000 --> 00:44:47,000 podemos dizer que é como você descarregar alguma coisa. 840 00:44:47,000 --> 00:44:49,000 Você acabou de definir a variável igual a uma matriz vazia, 841 00:44:49,000 --> 00:44:51,000 e se livrar de tudo o que estava lá. 842 00:44:51,000 --> 00:44:53,000 Não há necessidade de ligar gratuitamente. 843 00:44:53,000 --> 00:44:56,000 >> Mais uma vez, eu cortei alguns cantos, e peço desculpas para a atribuição conjunto de problemas 5 844 00:44:56,000 --> 00:45:00,000 talvez em C, mas se agora vá em frente e executar isso, 845 00:45:00,000 --> 00:45:02,000 Vou rodar a versão que eu escrevi com antecedência 846 00:45:02,000 --> 00:45:05,000 apenas para que eu não cometa erros sintáticos qualquer. 847 00:45:05,000 --> 00:45:08,000 Deixe-me ir em frente e correr speller. A utilização é a mesma. 848 00:45:08,000 --> 00:45:12,000 Aqui está um arquivo de dicionário que contém apenas a palavra foo. 849 00:45:12,000 --> 00:45:15,000 Aqui está um arquivo de texto que contém apenas foo bar. 850 00:45:15,000 --> 00:45:19,000 Vamos soletrar verificar isso, speller assim, usando este arquivo de dicionário sobre este arquivo de texto. 851 00:45:19,000 --> 00:45:21,000 Não há uma palavra grafada incorretamente, bar, e voila. 852 00:45:21,000 --> 00:45:23,000 Feito com pset 5. 853 00:45:23,000 --> 00:45:30,000 Vamos dar um intervalo de 5 minutos aqui, e nós vamos voltar e mais em PHP. 854 00:45:30,000 --> 00:45:32,000 Tudo bem, estamos de volta. 855 00:45:32,000 --> 00:45:34,000 Vamos fazer-me odiar por um tempo. 856 00:45:34,000 --> 00:45:37,000 Vamos agora ver se realmente este não era um positivo 857 00:45:37,000 --> 00:45:39,000 realmente implementar isso em PHP. 858 00:45:39,000 --> 00:45:43,000 Concedido, levou 45 segundos para executar. 859 00:45:43,000 --> 00:45:45,000 >> Mas vamos em frente agora e correr as coisas. 860 00:45:45,000 --> 00:45:49,000 Deixe-me ir em frente e executar uma versão C 861 00:45:49,000 --> 00:45:52,000 de speller, e vamos executá-lo em um dos maiores arquivos, 862 00:45:52,000 --> 00:45:54,000 que é a Bíblia King James. 863 00:45:54,000 --> 00:45:57,000 E isso aqui é em-vamos para a nossa pasta C, 864 00:45:57,000 --> 00:46:01,000 speller em King James, a 5. 865 00:46:01,000 --> 00:46:03,000 Um monte de palavras com erros ortográficos. 866 00:46:03,000 --> 00:46:06,000 Ok, então essa é a saída que você provavelmente tem mesmo que as vezes são um pouco diferentes, 867 00:46:06,000 --> 00:46:09,000 se você tem tudo funcionando corretamente, e assim que o tempo no total, para a verificação ortográfica 868 00:46:09,000 --> 00:46:13,000 a Bíblia King James foi 0,38 segundo, de modo muito bom usar essa implementação. 869 00:46:13,000 --> 00:46:16,000 Agora deixe-me ir para a versão do PHP, que acabou de escrever. 870 00:46:16,000 --> 00:46:18,000 Deixa-me correr speller em King James. 871 00:46:18,000 --> 00:46:21,000 Opa, ignorar esse erro. Eu estou no diretório errado. 872 00:46:21,000 --> 00:46:24,000 Speller sobre King James, a 5. 873 00:46:46,000 --> 00:46:48,000 Quase pronto. 874 00:46:48,000 --> 00:46:51,000 >> Ok, o astuto observador vai perceber que foi mais de 3 segundos de lá. 875 00:46:51,000 --> 00:46:54,000 Esse é o verdadeiro tempo em execução. 876 00:46:54,000 --> 00:46:58,000 Acontece que é preciso tempo para cuspir grande quantidade de texto para fora 877 00:46:58,000 --> 00:47:00,000 porque de buffer questões, mas longa história curta, 878 00:47:00,000 --> 00:47:04,000 que foi de 3,15 segundos de tempo de máquina, tempo de CPU, 879 00:47:04,000 --> 00:47:07,000 versus o que foi um momento atrás? 880 00:47:07,000 --> 00:47:09,000 Como 0,3. 881 00:47:09,000 --> 00:47:11,000 Quero dizer, é uma ordem de magnitude mais lento, então onde é que 882 00:47:11,000 --> 00:47:14,000 desaceleração ridículo vindo? 883 00:47:14,000 --> 00:47:17,000 Bem, como tem sido o caso com a maioria todo o projeto de decisão que fizemos 884 00:47:17,000 --> 00:47:21,000 na classe ao longo dos últimos nove semanas há quase sempre essa compensação. 885 00:47:21,000 --> 00:47:24,000 Às vezes, apenas um espaço entre, por vezes, entre o espaço eo tempo, 886 00:47:24,000 --> 00:47:27,000 espaço, tempo e esforço de desenvolvimento, e de fato aqui, embora 887 00:47:27,000 --> 00:47:31,000 que salvou uma quantidade enorme de tempo, talvez potencialmente 10-20-30 horas 888 00:47:31,000 --> 00:47:34,000 tempo de desenvolvimento implementar o verificador ortográfico 889 00:47:34,000 --> 00:47:36,000 chicoteando-o em apenas 45 segundos com esta linguagem 890 00:47:36,000 --> 00:47:40,000 o preço que pagamos é que é uma ordem de magnitude mais lento, como resultado, 891 00:47:40,000 --> 00:47:43,000 e este é geralmente o caso com mais qualquer linguagem interpretada, 892 00:47:43,000 --> 00:47:46,000 PHP, Python, Ruby, Pearl ou outros em que 893 00:47:46,000 --> 00:47:49,000 se você estiver indo para executá-lo através de um intérprete e que ele leia o seu código 894 00:47:49,000 --> 00:47:52,000 linha por linha, de cima para baixo, da esquerda para a direita, 895 00:47:52,000 --> 00:47:55,000 intermediário que vai levar algum tempo próprio, 896 00:47:55,000 --> 00:47:59,000 eo que você estava sentindo aqui em 3 segundos ao invés de 0,3 segundo 897 00:47:59,000 --> 00:48:02,000 é o facto de não existir este intermediário que tem que literalmente interpretar o nosso código 898 00:48:02,000 --> 00:48:05,000 linha por linha, e Deus me livre se você está dentro de um loop 899 00:48:05,000 --> 00:48:08,000 com um enorme arquivo contendo centenas de milhares de palavras. 900 00:48:08,000 --> 00:48:11,000 >> Essa sobrecarga vai somar e somar e somar e somar. 901 00:48:11,000 --> 00:48:16,000 Para uma ferramenta como esta provavelmente não é a melhor linguagem a utilizar para a implementação 902 00:48:16,000 --> 00:48:20,000 um corretor ortográfico se imediatismo é de interesse para seus usuários e para você. 903 00:48:20,000 --> 00:48:23,000 Mas o luxo que temos em um momento é se você 904 00:48:23,000 --> 00:48:27,000 usar uma linguagem como PHP ou um monte de linguagens interpretadas 905 00:48:27,000 --> 00:48:30,000 no contexto da Web, para que o assunto, você tem o benefício 906 00:48:30,000 --> 00:48:34,000 que a internet é muito mais lento do que a maioria dos computadores. 907 00:48:34,000 --> 00:48:38,000 Você tem uma CPU GHz em seu computador, 2 GHz, talvez ainda mais nos dias de hoje. 908 00:48:38,000 --> 00:48:41,000 Mas a realidade está na internet há uma quantidade elevada de latência 909 00:48:41,000 --> 00:48:45,000 qual para um navegador para conversar com um servidor, mesmo que vimos na semana passada 910 00:48:45,000 --> 00:48:47,000 que isso é muito rápido, metade de um milésimo de segundo ou assim, 911 00:48:47,000 --> 00:48:51,000 que também acrescenta-se, e se você está baixando coisas como uma imagem 912 00:48:51,000 --> 00:48:54,000 ou uma foto no Facebook ou recebendo mensagens instantâneas sobre conversas do Facebook, 913 00:48:54,000 --> 00:48:57,000 Gchat ou semelhantes, todos estes tempos de ida e volta 914 00:48:57,000 --> 00:49:00,000 entre o navegador eo servidor de início para somar, 915 00:49:00,000 --> 00:49:03,000 o que torna a sua escolha particular de linguagem, em muitos casos 916 00:49:03,000 --> 00:49:07,000 não tão relevante, então você está muito bem usando uma linguagem um pouco mais lento 917 00:49:07,000 --> 00:49:10,000 como PHP ou Python ou Ruby 918 00:49:10,000 --> 00:49:13,000 mas para os quais existem upsides enormes para você e seus colegas 919 00:49:13,000 --> 00:49:17,000 e seus amigos, porque você pode implementar coisas muito, muito mais rápido. 920 00:49:17,000 --> 00:49:20,000 E além disso, você tem muito menos risco de falhas de segurança determinados. 921 00:49:20,000 --> 00:49:22,000 Não há ponteiros em PHP. 922 00:49:22,000 --> 00:49:25,000 Não há falhas seg que você pode facilmente induzir 923 00:49:25,000 --> 00:49:27,000 da mesma maneira que você poderia no C. 924 00:49:27,000 --> 00:49:29,000 Com C você é super perto do hardware. 925 00:49:29,000 --> 00:49:33,000 Com linguagens PHP e semelhante você é uma espécie de nível superior, por assim dizer, 926 00:49:33,000 --> 00:49:37,000 com um monte de defesas entre você eo que está realmente acontecendo 927 00:49:37,000 --> 00:49:39,000 dentro da máquina, e é apenas uma troca. 928 00:49:39,000 --> 00:49:42,000 >> Temos chegado ao ponto de ter essas mais modernas, linguagens de alto nível 929 00:49:42,000 --> 00:49:47,000 como PHP por causa das lições aprendidas em linguagens como PHP em C. 930 00:49:47,000 --> 00:49:50,000 Mas se você não entende o que está acontecendo debaixo do capô de todo esse tempo 931 00:49:50,000 --> 00:49:53,000 você certamente não pode tomar as decisões de design apropriadas, 932 00:49:53,000 --> 00:49:56,000 e, certamente, quando se trata de trabalhar em um lugar como o Facebook ou o Google 933 00:49:56,000 --> 00:49:59,000 ou qualquer um desses lugares que estão cada vez mais jogar com grandes conjuntos de dados 934 00:49:59,000 --> 00:50:01,000 mesmo se você voltar atrás e fazer PREMED e estamos trabalhando com alguns MD 935 00:50:01,000 --> 00:50:04,000 em alguns grande conjunto de dados envolvendo pacientes e médicos 936 00:50:04,000 --> 00:50:08,000 e como usar as ferramentas certas é imensamente atraente 937 00:50:08,000 --> 00:50:11,000 porque de outra forma a sua análise de um conjunto de dados pode levar segundos, 938 00:50:11,000 --> 00:50:14,000 ou pode literalmente levar horas. 939 00:50:14,000 --> 00:50:17,000 Este é apenas um exemplo, para não frustrá-lo com esforço, quanto mais 940 00:50:17,000 --> 00:50:21,000 foi em C, mas para ajudar a perceber que quando você implementar algo em C 941 00:50:21,000 --> 00:50:24,000 você realmente entender, ou em teoria, realmente entender 942 00:50:24,000 --> 00:50:28,000 como tudo é ou deveria estar trabalhando, e você tem o controle quase total 943 00:50:28,000 --> 00:50:31,000 sobre o que está acontecendo debaixo do capô, e com essas linguagens de alto nível 944 00:50:31,000 --> 00:50:34,000 você tem que abrir mão de mais controle para as pessoas que inventaram 945 00:50:34,000 --> 00:50:37,000 e estão sujeitos mais para suas decisões de design do que o seu. 946 00:50:37,000 --> 00:50:41,000 Mas se tomarmos como certo que o desempenho 947 00:50:41,000 --> 00:50:44,000 não é tão importante na Web por causa dessas outras questões, 948 00:50:44,000 --> 00:50:47,000 velocidades de rede são apenas um pouco mais lento do que as velocidades de CPU de qualquer maneira, 949 00:50:47,000 --> 00:50:50,000 assim podemos classificar de dar ao luxo de usar uma linguagem um pouco mais lento 950 00:50:50,000 --> 00:50:55,000 se os upsides são podemos desenvolver coisas 10 vezes mais rápido ou mais. 951 00:50:55,000 --> 00:50:57,000 >> Vamos ver como podemos começar a usar isso. 952 00:50:57,000 --> 00:51:00,000 Deixe-me ir para uma pasta 953 00:51:00,000 --> 00:51:03,000 entre os exemplos de hoje denominado frosh.ims, 954 00:51:03,000 --> 00:51:06,000 e este foi realmente pessoalmente motivado pelo fato de que a primeira coisa 955 00:51:06,000 --> 00:51:10,000 Eu escrevi para a Web anos atrás depois de tomar CS50 e CS51 956 00:51:10,000 --> 00:51:14,000 era um site para o programa de mensagens instantâneas Frosh, esportes caloiro intramuros, 957 00:51:14,000 --> 00:51:16,000 que na época era bastante anos atrás, que no momento 958 00:51:16,000 --> 00:51:19,000 não havia nenhum site para o programa, mesmo que não houvesse uma Web, 959 00:51:19,000 --> 00:51:22,000 e em vez disso havia um inspetor em Wigglesworth em que se você quisesse 960 00:51:22,000 --> 00:51:26,000 para se registrar para vôlei ou futebol ou o que quer que você preencher um pedaço de papel. 961 00:51:26,000 --> 00:51:28,000 Você, então, atravessar o pátio. 962 00:51:28,000 --> 00:51:31,000 Você, então, bater em sua porta e deslize em sua porta ou a mão ao proctor 963 00:51:31,000 --> 00:51:34,000 um pedaço de papel com o seu nome, se deseja ou não que ser um capitão da equipe, 964 00:51:34,000 --> 00:51:37,000 o que o esporte que você queria fazer, eo que você estava dentro do dormitório 965 00:51:37,000 --> 00:51:39,000 Era uma espécie de uma maneira antiga escola de fazer as coisas, e este foi um nobre 966 00:51:39,000 --> 00:51:41,000 oportunidade de automatizar um monte de este processo. 967 00:51:41,000 --> 00:51:43,000 É só ir para o site. Você digita algo dentro 968 00:51:43,000 --> 00:51:46,000 Você recebe um email de confirmação, e pronto, está feito. 969 00:51:46,000 --> 00:51:49,000 >> Esta foi a primeira coisa que eu fiz, ainda que em uma linguagem chamada Pearl, 970 00:51:49,000 --> 00:51:52,000 mas é relativamente fácil de fazer em PHP, e isso é uma espécie de representante 971 00:51:52,000 --> 00:51:55,000 dos problemas que você pode começar a resolver quando você pode se expressar 972 00:51:55,000 --> 00:51:58,000 programaticamente e não tem que confiar em coisas como sites do Google 973 00:51:58,000 --> 00:52:01,000 ou Excel ou ferramentas que são entregues a você. 974 00:52:01,000 --> 00:52:03,000 Vocês agora têm a capacidade de fazer coisas como esta. 975 00:52:03,000 --> 00:52:06,000 Esta é uma versão super feio de um formulário, 976 00:52:06,000 --> 00:52:09,000 mas vamos usá-lo para o início da conversa em que este é 977 00:52:09,000 --> 00:52:12,000 aproximadamente o que a forma parecia anos atrás para nós 978 00:52:12,000 --> 00:52:14,000 para permitir que as pessoas na web para se inscrever para Frosh IMs. 979 00:52:14,000 --> 00:52:18,000 Pedimos para um nome, uma caixa de seleção para se ou não queria ser capitão, 980 00:52:18,000 --> 00:52:21,000 homem ou mulher, e então o que eles estavam no dormitório, 981 00:52:21,000 --> 00:52:23,000 e depois iriam enviar este formulário. 982 00:52:23,000 --> 00:52:27,000 Vamos primeiro olhar debaixo do capô o HTML que representa esta página. 983 00:52:27,000 --> 00:52:31,000 Deixe-me ir para froshims0, 984 00:52:31,000 --> 00:52:35,000 e como um aparte, para pset 7 Estou levando para concedido 985 00:52:35,000 --> 00:52:37,000 os diretórios e as pastas que estou colocando as coisas dentro 986 00:52:37,000 --> 00:52:40,000 Vamos levá-lo através exatamente onde a coisa tem de ir no aparelho, 987 00:52:40,000 --> 00:52:43,000 quais comandos mod você tem que correr, então não se preocupe com toda a 988 00:52:43,000 --> 00:52:46,000 detalhes estúpidos sincronização a partir do get-go aqui. 989 00:52:46,000 --> 00:52:49,000 >> Tudo bem, aqui está froshims0.php. 990 00:52:49,000 --> 00:52:52,000 Deixe-me rolar para baixo, eo que é curioso aqui, 991 00:52:52,000 --> 00:52:56,000 este é um arquivo PHP, mas o que está dentro dele, de forma clara? 992 00:52:56,000 --> 00:52:59,000 É um monte de HTML, e de fato, PHP origens 993 00:52:59,000 --> 00:53:02,000 realmente eram para ser uma linguagem Web-centric. 994 00:53:02,000 --> 00:53:04,000 Um momento atrás, usou-a para implementar o exemplo cerveja, 995 00:53:04,000 --> 00:53:07,000 as condições de exemplo, o exemplo Olá, e isso é bom. 996 00:53:07,000 --> 00:53:11,000 Você pode usar o PHP como uma linguagem de script 997 00:53:11,000 --> 00:53:15,000 onde um script é realmente apenas uma nomenclatura dada a um programa rápido e sujo 998 00:53:15,000 --> 00:53:19,000 ou algo que você escreve em um roteiro ou, mais geralmente uma linguagem interpretada. 999 00:53:19,000 --> 00:53:22,000 PHP é super útil para que, porque você já viu como rapidamente 1000 00:53:22,000 --> 00:53:24,000 relativamente podemos chicote de programas em PHP. 1001 00:53:24,000 --> 00:53:27,000 Mas foi realmente concebido para ser usado para a Web, 1002 00:53:27,000 --> 00:53:31,000 e projetado para a Web no sentido de que notar-se aqui no início do arquivo 1003 00:53:31,000 --> 00:53:34,000 Eu começam com 00:53:38,000 Então eu tenho um monte de comentários inúteis, concedidos, mas então eu fechar o modo PHP. 1005 00:53:38,000 --> 00:53:41,000 Mas então eu cair no modo HTML. 1006 00:53:41,000 --> 00:53:45,000 >> O que é interessante sobre o PHP é mesmo que o arquivo termina em. Php 1007 00:53:45,000 --> 00:53:48,000 geralmente é feito para ser misturados com HTML, 1008 00:53:48,000 --> 00:53:50,000 algum código PHP, alguns HTML. 1009 00:53:50,000 --> 00:53:53,000 E vamos ver que, eventualmente, podemos começar a provocar os separados 1010 00:53:53,000 --> 00:53:56,000 e manter o nosso HTML separado do nosso PHP em conjunto, 1011 00:53:56,000 --> 00:53:59,000 mas as origens do PHP realmente eram para lhe dar esta flexibilidade, 1012 00:53:59,000 --> 00:54:02,000 que se você quiser um pouco de HTML apenas escrevê-lo, e que será 1013 00:54:02,000 --> 00:54:04,000 cuspir idêntica para o navegador. 1014 00:54:04,000 --> 00:54:07,000 Mas se você precisar de alguma técnica de programação, 1015 00:54:07,000 --> 00:54:12,000 alguns códigos de programação, você também pode colocá-lo no mesmo arquivo exato, como veremos em breve. 1016 00:54:12,000 --> 00:54:14,000 Aqui está o meu HTML. 1017 00:54:14,000 --> 00:54:16,000 Eu tenho um título deste Frosh para mensagens instantâneas. 1018 00:54:16,000 --> 00:54:20,000 Eu tenho uma marca do corpo que tem um pouco de CSS com ele para tudo centro no meio, 1019 00:54:20,000 --> 00:54:23,000 e aqui eu tenho um formulário que, aparentemente, vai ser apresentado 1020 00:54:23,000 --> 00:54:27,000 para um novo arquivo chamado register0.php, por isso vamos ver que em um momento. 1021 00:54:27,000 --> 00:54:31,000 Ele está usando um método chamado de post, que vamos voltar a também. 1022 00:54:31,000 --> 00:54:34,000 Então eu tenho algumas entradas de formulário, um nome chamado, cujo tipo é o texto, 1023 00:54:34,000 --> 00:54:37,000 aquele cujo nome é o capitão, cujo tipo é opção, 1024 00:54:37,000 --> 00:54:40,000 e isso, nós não vimos isso antes, mas ele faz exatamente o que diz. 1025 00:54:40,000 --> 00:54:42,000 Você vai ter uma caixa de seleção em vez de uma caixa de texto. 1026 00:54:42,000 --> 00:54:46,000 Aqui embaixo você tem um botão de rádio, que é um daqueles botões circulares 1027 00:54:46,000 --> 00:54:48,000 que você pode escolher este ou aquele. 1028 00:54:48,000 --> 00:54:52,000 >> Observe que é deliberado que eu dei os dois botões de rádio o nome do gênero. 1029 00:54:52,000 --> 00:54:55,000 Isto é como você começa a exclusão mútua em que você deve clicar 1030 00:54:55,000 --> 00:54:58,000 ou este ou aquele, e clicando o outro 1031 00:54:58,000 --> 00:55:01,000 ela desmarca o outro, então você tem que dar-lhes o mesmo nome 1032 00:55:01,000 --> 00:55:03,000 se você quer que eles sejam mutuamente exclusivos assim. 1033 00:55:03,000 --> 00:55:07,000 E então para dormitório, eu não acho que temos visto isso ainda, mas é um menu de seleção, um menu drop-down. 1034 00:55:07,000 --> 00:55:09,000 A tag para isso é de seleção. 1035 00:55:09,000 --> 00:55:11,000 Você, então, dar o menu drop-down um nome, 1036 00:55:11,000 --> 00:55:13,000 e então você tem um monte dessas opções. 1037 00:55:13,000 --> 00:55:16,000 O primeiro, só por estética, é uma cadeia vazia. 1038 00:55:16,000 --> 00:55:20,000 Eu só queria que o drop down para ficar em branco por padrão, 1039 00:55:20,000 --> 00:55:22,000 e depois há Apley, Canaday, Grays, e assim por diante. 1040 00:55:22,000 --> 00:55:24,000 E notem a dicotomia aqui. 1041 00:55:24,000 --> 00:55:27,000 A opção no drop down tem um valor, 1042 00:55:27,000 --> 00:55:30,000 mas, em seguida, que tem um nome humano-friendly, que neste exemplo, 1043 00:55:30,000 --> 00:55:33,000 é idêntica, mas se realmente queria ser anal poderíamos ter 1044 00:55:33,000 --> 00:55:36,000 o valor deste suspenso ser apenas a versão curta, 1045 00:55:36,000 --> 00:55:39,000 Grays, mas podemos realmente dizer Grays Salão que o ser humano realmente vê, 1046 00:55:39,000 --> 00:55:43,000 mas isso não é tão interessante, então eu só mantive simples e fez-lhes idêntica. 1047 00:55:43,000 --> 00:55:46,000 Em seguida, na parte inferior, temos um botão de envio 1048 00:55:46,000 --> 00:55:49,000 o que vimos antes, mas repare que eu apenas deu-lhe uma palavra diferente. 1049 00:55:49,000 --> 00:55:53,000 Em vez de CS50 pesquisa dei o rótulo de "Registrar". 1050 00:55:53,000 --> 00:55:56,000 >> O resultado final é a página aqui, e novamente, 1051 00:55:56,000 --> 00:56:00,000 onde é que isto se submetido? 1052 00:56:00,000 --> 00:56:04,000 Ele fica submetido a algum arquivo, o valor do atributo de ação, 1053 00:56:04,000 --> 00:56:07,000 que foi register0.php. 1054 00:56:07,000 --> 00:56:09,000 Vamos ver o que realmente acontece aqui. 1055 00:56:09,000 --> 00:56:13,000 Deixe-me ir em frente e preencha este formulário, diz David, 1056 00:56:13,000 --> 00:56:16,000 masculino, Matthews, e então eu vou dizer se cadastrar. 1057 00:56:16,000 --> 00:56:18,000 Deixe-me afastar e clique em registrar. 1058 00:56:18,000 --> 00:56:22,000 Ok, então meio inútil, mas vamos ver o que está realmente acontecendo. 1059 00:56:22,000 --> 00:56:26,000 Observe que a URL mudou para ser register0.php. 1060 00:56:26,000 --> 00:56:34,000 O que é curiosamente ausente da URL, no entanto, mesmo que acabou de enviar um formulário? 1061 00:56:34,000 --> 00:56:37,000 [Resposta do aluno inaudível] 1062 00:56:37,000 --> 00:56:39,000 Ok, isso é apenas um usuário do Chrome ser amigável estes dias. 1063 00:56:39,000 --> 00:56:42,000 Isso é realmente lá. Eles apenas escondê-lo para economizar espaço. 1064 00:56:42,000 --> 00:56:44,000 Mas o pensamento bom, bom pensamento. 1065 00:56:44,000 --> 00:56:46,000 Em direção ao outro lado da URL, porém, o que está faltando? Sim. 1066 00:56:46,000 --> 00:56:48,000 [Estudante] A cadeia de consulta. 1067 00:56:48,000 --> 00:56:51,000 A cadeia de consulta, de modo lembrar de nossos exemplos simples de busca do Google. 1068 00:56:51,000 --> 00:56:54,000 Assim que eu clicar no botão enviar a URL 1069 00:56:54,000 --> 00:57:00,000 levou-me para o Google, mas depois houve? q = ciência da computação ou qualquer coisa que eu tinha digitado dentro 1070 00:57:00,000 --> 00:57:04,000 Isso é porque nós usamos o método get com o exemplo de pesquisa. 1071 00:57:04,000 --> 00:57:06,000 >> Desta vez, estamos usando o método em vez disso? 1072 00:57:06,000 --> 00:57:10,000 Publicar, e uma das distinções imediatas 1073 00:57:10,000 --> 00:57:14,000 entre get e post é que o pós não colocar a entrada do usuário na URL. 1074 00:57:14,000 --> 00:57:16,000 Ele esconde. Ele ainda envia. 1075 00:57:16,000 --> 00:57:19,000 Na verdade, o que estamos vendo no navegador aqui, como vamos revelar em um momento 1076 00:57:19,000 --> 00:57:22,000 olhando register0, é que eu só estou vendo o conteúdo 1077 00:57:22,000 --> 00:57:25,000 da matriz que foram submetidos a partir do navegador para o servidor. 1078 00:57:25,000 --> 00:57:29,000 Mas o URL não tem uma?, Não tem qualquer palavra-chave 1079 00:57:29,000 --> 00:57:31,000 ou valores, e por que é isso? 1080 00:57:31,000 --> 00:57:35,000 Bem, pós permite ainda enviar os dados do formulário para um servidor, 1081 00:57:35,000 --> 00:57:38,000 mas não colocá-lo na URL, então que tipo de informação é pós 1082 00:57:38,000 --> 00:57:41,000 particularmente apropriado para, talvez, quando você está pedindo que o usuário 1083 00:57:41,000 --> 00:57:44,000 digitar entrada para um formulário? 1084 00:57:44,000 --> 00:57:48,000 Algo como uma senha, algo como o que mais? 1085 00:57:48,000 --> 00:57:50,000 Números de cartão de crédito. 1086 00:57:50,000 --> 00:57:53,000 Tudo que é levemente sensível você provavelmente não quer acabar na URL 1087 00:57:53,000 --> 00:57:56,000 mesmo porque isso significa que seu colega de quarto ou membro da família pode simplesmente vasculham através 1088 00:57:56,000 --> 00:57:59,000 sua história de internet e, em seguida, literalmente, ver suas senhas, 1089 00:57:59,000 --> 00:58:02,000 literalmente ver os seus números de cartão de crédito porque a maioria dos navegadores 1090 00:58:02,000 --> 00:58:05,000 lembre-se da história que quer URLs que você esteve menos, 1091 00:58:05,000 --> 00:58:09,000 por isso, se só porque isso seria uma má idéia. 1092 00:58:09,000 --> 00:58:11,000 Usando esconde mensagem que detalham do usuário. 1093 00:58:11,000 --> 00:58:14,000 >> Além disso, como é que você faz o upload de uma foto no Facebook? 1094 00:58:14,000 --> 00:58:17,000 Bem, os únicos dois mecanismos que você pode realmente usar, 1095 00:58:17,000 --> 00:58:21,000 mesmo que há alguns outros, mais arcanas, é obter e postar. 1096 00:58:21,000 --> 00:58:26,000 Como você possivelmente upload de uma foto através de uma URL? 1097 00:58:26,000 --> 00:58:28,000 Você pode realmente fazê-lo. 1098 00:58:28,000 --> 00:58:30,000 Você pode tomar um JPEG ou bitmap ou GIF e você pode representá-lo em hexadecimal 1099 00:58:30,000 --> 00:58:32,000 ou algo chamado de base 64. 1100 00:58:32,000 --> 00:58:35,000 Em vez de base 16 você usa base 64, que essencialmente se parece 1101 00:58:35,000 --> 00:58:38,000 Caracteres ASCII, e você pode realmente fazer upload de uma foto através de uma URL 1102 00:58:38,000 --> 00:58:41,000 depois de um ponto de interrogação, mas geralmente existem limites de tamanho. 1103 00:58:41,000 --> 00:58:44,000 A maioria dos navegadores forçar URLs a ser não mais do que 1.000 caracteres, 1104 00:58:44,000 --> 00:58:47,000 talvez 2.000 caracteres ou similares, de modo que você não pode carregar 1105 00:58:47,000 --> 00:58:50,000 a 10 MB foto no Facebook. 1106 00:58:50,000 --> 00:58:54,000 Por que você usa post, bem, então por enquanto se coloca os parâmetros na URL, 1107 00:58:54,000 --> 00:58:57,000 o que é bom e útil às vezes, mas para qualquer coisa sensível ou grande 1108 00:58:57,000 --> 00:58:59,000 post é o caminho a percorrer. 1109 00:58:59,000 --> 00:59:02,000 O que é register0 realmente está fazendo aqui? 1110 00:59:02,000 --> 00:59:05,000 Bem, se eu abrir register0 aviso de que esta é uma página super simples, 1111 00:59:05,000 --> 00:59:09,000 mas ele está demonstrando o fato de que eu possa co-misturam-se, para melhor ou para pior, 1112 00:59:09,000 --> 00:59:12,000 HTML com PHP. 1113 00:59:12,000 --> 00:59:15,000 Este arquivo inteiro, exceto para os comentários na parte superior, são HTML 1114 00:59:15,000 --> 00:59:19,000 exceto por este cara aqui. 1115 00:59:19,000 --> 00:59:22,000 >> Observe no meio do meu código PHP, 1116 00:59:22,000 --> 00:59:26,000 no meio do meu HTML, eu tenho sorte de, temporariamente, 1117 00:59:26,000 --> 00:59:28,000 entrou no modo de PHP. 1118 00:59:28,000 --> 00:59:31,000 Eu estou chamando uma função especial chamada de impressão r. 1119 00:59:31,000 --> 00:59:34,000 Isso significa imprimir recursiva, eo que ele faz é recursivamente imprime 1120 00:59:34,000 --> 00:59:38,000 qualquer variável que você entregá-lo, ponto e vírgula, sai do modo PHP. 1121 00:59:38,000 --> 00:59:40,000 E a tag pré dá-lhe texto pré-formatado, 1122 00:59:40,000 --> 00:59:43,000 mono texto espaço para que cada espaço que você realmente vê-lo. 1123 00:59:43,000 --> 00:59:46,000 Ela não desaparece. O que é uma mensagem? 1124 00:59:46,000 --> 00:59:48,000 Bem, o que é interessante e convincente sobre o PHP 1125 00:59:48,000 --> 00:59:52,000 é que sempre que você enviar um formulário usando get ou post 1126 00:59:52,000 --> 00:59:56,000 tudo o que é enviado a você por um navegador 1127 00:59:56,000 --> 01:00:00,000 PHP-se descobre o que os pares de valores-chave são, 1128 01:00:00,000 --> 01:00:02,000 descobre se não há sinais de igual, figuras fora se houver um ponto de interrogação. 1129 01:00:02,000 --> 01:00:07,000 Ele faz todo o trabalho duro para você, e então ele lhe entrega uma matriz associativa 1130 01:00:07,000 --> 01:00:10,000 contendo tudo o que o usuário digitou no formulário. 1131 01:00:10,000 --> 01:00:12,000 Bem, o que fez os campos desta forma tem? 1132 01:00:12,000 --> 01:00:14,000 >> Que tinha 4 campos. 1133 01:00:14,000 --> 01:00:16,000 Um deles era um campo de texto chamado nome. 1134 01:00:16,000 --> 01:00:18,000 Um deles era uma opção chamada capitão. 1135 01:00:18,000 --> 01:00:22,000 Um deles era um botão de rádio chamado gênero, 1136 01:00:22,000 --> 01:00:24,000 e um era um menu drop-down chamado dormitório, 1137 01:00:24,000 --> 01:00:27,000 para notar quando eu imprimir recursivamente 1138 01:00:27,000 --> 01:00:29,000 o conteúdo desta variável especial. 1139 01:00:29,000 --> 01:00:34,000 Esta é uma variável global especial chamado literalmente $ _POST, tudo em maiúsculas. 1140 01:00:34,000 --> 01:00:39,000 Esta é uma variável global especial que o PHP apenas cria para você 1141 01:00:39,000 --> 01:00:42,000 e as mãos a você para que você possa acessar tudo 1142 01:00:42,000 --> 01:00:45,000 que foi apresentada através de um formulário por um usuário. 1143 01:00:45,000 --> 01:00:48,000 E chamando r impressão sobre ele, você não faria isso em uma aplicação normal. 1144 01:00:48,000 --> 01:00:50,000 Estamos fazendo isso para ver o interior desta variável, 1145 01:00:50,000 --> 01:00:53,000 eo que está dentro dele, bem, quatro chaves, 1146 01:00:53,000 --> 01:00:56,000 4 parâmetros http, por assim dizer, 1147 01:00:56,000 --> 01:00:59,000 nome, capitão, sexo, dormitório, e em seguida, os valores que o usuário 1148 01:00:59,000 --> 01:01:01,000 digitado com uma exceção. 1149 01:01:01,000 --> 01:01:03,000 Eu fiz tipo D-A-V-I-D. 1150 01:01:03,000 --> 01:01:05,000 Eu verifiquei a caixa, porém, para o sexo masculino, o que aparentemente apresentou um valor 1151 01:01:05,000 --> 01:01:07,000 de apenas m ser sucinto. 1152 01:01:07,000 --> 01:01:10,000 >> Quando eu selecionei Matthews, que é o valor que foi selecionado, 1153 01:01:10,000 --> 01:01:12,000 e isso é um pouco estúpido, mas é a convenção. 1154 01:01:12,000 --> 01:01:17,000 Quando eu chequei a caixa, um valor de no, "on", foi apresentado para a caixa de seleção. 1155 01:01:17,000 --> 01:01:21,000 Se eu não tinha verificado, nenhum valor teria sido enviado qualquer. 1156 01:01:21,000 --> 01:01:26,000 Este é apenas nos dar insights sobre o que está dentro desta variável global especial, 1157 01:01:26,000 --> 01:01:29,000 e é tão especial que é chamado de uma variável super global. 1158 01:01:29,000 --> 01:01:33,000 Ela existe em todos os lugares para você dentro de seu código para que você possa acessá-lo de fato. 1159 01:01:33,000 --> 01:01:36,000 Este não é que convincente, então vamos realmente usar o mundial de super 1160 01:01:36,000 --> 01:01:38,000 e realmente tentar registrar alguém. 1161 01:01:38,000 --> 01:01:41,000 Em froshims1 Eu vou fazer uma mudança. 1162 01:01:41,000 --> 01:01:44,000 Eu estou mudando a ação a ser register1.php, 1163 01:01:44,000 --> 01:01:46,000 e eu estou fazendo uma coisa. 1164 01:01:46,000 --> 01:01:48,000 Eu estava meio envergonhado pela qualidade da minha página lá. 1165 01:01:48,000 --> 01:01:52,000 É muito horrível, honestamente, por isso acaba 1166 01:01:52,000 --> 01:01:56,000 que você pode usar muito facilmente na Web 1167 01:01:56,000 --> 01:01:59,000 JavaScript outras pessoas código, CSS outras pessoas 1168 01:01:59,000 --> 01:02:02,000 que tenho escrito e de código aberto e disponibilizado como uma biblioteca, 1169 01:02:02,000 --> 01:02:06,000 por assim dizer, e, por exemplo, aqui eu estou usando uma biblioteca disponível livremente, 1170 01:02:06,000 --> 01:02:08,000 um monte de código que alguém escreveu. 1171 01:02:08,000 --> 01:02:11,000 >> Twitter passou a escrever este código, e é chamado a biblioteca bootstrap, 1172 01:02:11,000 --> 01:02:15,000 e é apenas um monte de folhas de estilo CSS, um grupo de. css 1173 01:02:15,000 --> 01:02:19,000 que alguém escreveu e descobriu como obter tudo de bom e bonito 1174 01:02:19,000 --> 01:02:22,000 para que pessoas como nós pode se preocupar um pouco menos com a estética e se concentrar muito mais 1175 01:02:22,000 --> 01:02:24,000 sobre a lógica ea programação real. 1176 01:02:24,000 --> 01:02:30,000 Ligando-nos com essa tag, que é a mesma marca eu costumava lembrar para styles3.css anteriormente, 1177 01:02:30,000 --> 01:02:34,000 Agora tenho acesso a um arquivo chamado bootstrap.min.css. 1178 01:02:34,000 --> 01:02:37,000 Min significa apenas que eles minified-lo e eles se livrado de todo o espaço branco e assim por diante 1179 01:02:37,000 --> 01:02:40,000 apenas para se certificar que não está me mandando mais bytes do que eu realmente precisa. 1180 01:02:40,000 --> 01:02:45,000 Mas lá é um monte de CSS, então se eu agora abrir a versão 1 do Frosh IMs 1181 01:02:45,000 --> 01:02:49,000 perceber que meu arquivo é definitivamente mais bonita. 1182 01:02:49,000 --> 01:02:54,000 Agora ainda é apenas preto e branco, mas aviso que apenas usando sua folha de estilo 1183 01:02:54,000 --> 01:02:58,000 e usar determinados recursos de que no meu formulário, não é surpreendente, 1184 01:02:58,000 --> 01:03:01,000 mas é definitivamente mais limpo do que era antes, e que o projetor não está fazendo justiça. 1185 01:03:01,000 --> 01:03:05,000 Há pequenas linhas ao redor dos botões cinza e ao redor do campo de texto aqui, 1186 01:03:05,000 --> 01:03:07,000 mas é definitivamente mais limpo do que era antes. 1187 01:03:07,000 --> 01:03:09,000 >> Agora, na justiça, eu tive que mudar a minha marcação um pouco. 1188 01:03:09,000 --> 01:03:12,000 Esta é a versão 1, e perceber que eu usei algumas marcas novas, 1189 01:03:12,000 --> 01:03:17,000 e, honestamente, eu não tinha idéia de como fazer isso até que eu leia a documentação 1190 01:03:17,000 --> 01:03:20,000 para a biblioteca do Twitter bootstrap, e eles me disseram que se você quiser usar a nossa biblioteca 1191 01:03:20,000 --> 01:03:23,000 usar um elemento fieldset dentro de sua forma, 1192 01:03:23,000 --> 01:03:27,000 colocar a palavra que você deseja mostrar ao lado de um campo dentro de uma marca de etiqueta, 1193 01:03:27,000 --> 01:03:30,000 em seguida, dar o seu contributo de um nome, como antes, 1194 01:03:30,000 --> 01:03:34,000 e depois para a caixa de seleção, você não só envolvê-lo em um elemento de rótulo, 1195 01:03:34,000 --> 01:03:36,000 você usar algo chamado de classe, para que nós não vimos isso antes, 1196 01:03:36,000 --> 01:03:39,000 mas você vai ver isso em um de shorts pset 7 de. 1197 01:03:39,000 --> 01:03:43,000 Uma classe em CSS permite que você faça algo muito parecido com o ID, 1198 01:03:43,000 --> 01:03:46,000 mas antes, quando tivemos uma identificação com o símbolo # 1199 01:03:46,000 --> 01:03:48,000 que foi para um e apenas um elemento. 1200 01:03:48,000 --> 01:03:51,000 O que é legal sobre uma classe é que vários elementos podem ter a mesma classe 1201 01:03:51,000 --> 01:03:54,000 ou o material CSS mesma aplicada a ele. 1202 01:03:54,000 --> 01:03:57,000 >> Mas, novamente, mais nas pessoas que a curto, eo resto disso é só copiar e colar 1203 01:03:57,000 --> 01:04:00,000 de sua documentação, onde eu adicionei uma etiqueta aqui e ali. 1204 01:04:00,000 --> 01:04:03,000 E no final, porque eu incluí a tag link na parte superior, 1205 01:04:03,000 --> 01:04:06,000 tudo parece mais bonito automaticamente 1206 01:04:06,000 --> 01:04:10,000 simplesmente por ter marcado a minha página de uma forma que 1207 01:04:10,000 --> 01:04:12,000 Twitter espera, e há muitas maneiras diferentes 1208 01:04:12,000 --> 01:04:14,000 de fazer isso, e isso é realmente muito apropriado. 1209 01:04:14,000 --> 01:04:17,000 Neste ponto, no semestre, como você verá em especificação pset 7, a 1210 01:04:17,000 --> 01:04:20,000 Pesquisando por aí, lendo sobre bibliotecas, utilizando CSS de outras pessoas 1211 01:04:20,000 --> 01:04:23,000 e JavaScript para resolver problemas auxiliares 1212 01:04:23,000 --> 01:04:26,000 para o conjunto de problemas em si é certamente encorajado e é a maneira 1213 01:04:26,000 --> 01:04:29,000 a Web é construída nestes dias, por estar sobre os ombros de outras pessoas 1214 01:04:29,000 --> 01:04:32,000 para que você possa realmente se concentrar nos problemas novos e interessantes. 1215 01:04:32,000 --> 01:04:34,000 Mas vamos agora concentrar-se, mais uma vez, a lógica. 1216 01:04:34,000 --> 01:04:38,000 >> Isso foi um desvio rápido na estética só para mostrar a direção em que você pode ir. 1217 01:04:38,000 --> 01:04:40,000 Eu vou voltar para o mais feio um por agora só porque 1218 01:04:40,000 --> 01:04:44,000 não há distrações com material Twitter, e deixe-me ir em frente e abrir 1219 01:04:44,000 --> 01:04:51,000 froshims2, o que, mais uma vez, difere apenas na acção register2.php, 1220 01:04:51,000 --> 01:04:55,000 e vamos dar uma olhada no que o efeito é aqui. 1221 01:04:55,000 --> 01:04:57,000 Deixe-me ir em frente e digite em Davi. 1222 01:04:57,000 --> 01:04:59,000 Eu não vou ser o capitão desta vez. 1223 01:04:59,000 --> 01:05:01,000 Eu vou dizer masculino, Matthews, registo. 1224 01:05:01,000 --> 01:05:05,000 Droga. Ok, isso é um parafuso até da minha parte. 1225 01:05:05,000 --> 01:05:07,000 Aguardem. 1226 01:05:07,000 --> 01:05:17,000 Register2, linha 22, se vazio ou-não. 1227 01:05:17,000 --> 01:05:19,000 Vamos recarregar. 1228 01:05:19,000 --> 01:05:22,000 Ok, ao submeter este formulário o que aconteceu? 1229 01:05:22,000 --> 01:05:25,000 Eu digitei David, verificada masculino, clicado Matthews, registo. 1230 01:05:25,000 --> 01:05:27,000 Você está registrado. (Bem, na verdade não.) 1231 01:05:27,000 --> 01:05:32,000 Este é claramente um passo além de apenas imprimir o conteúdo de alguma variável, 1232 01:05:32,000 --> 01:05:34,000 mas o que é esse arquivo realmente está fazendo? 1233 01:05:34,000 --> 01:05:37,000 Em register2.php 1234 01:05:37,000 --> 01:05:40,000 perceber que eu tenho um novo código. 1235 01:05:40,000 --> 01:05:44,000 Dentro do meu corpo tag eu tenho essencialmente uma pessoa se construir, 1236 01:05:44,000 --> 01:05:47,000 mas porque eu estou co-mistura isso com um pouco de HTML 1237 01:05:47,000 --> 01:05:51,000 Eu tenho que entrar e sair do modo PHP e para trás, por isso vamos ver o que eu estou fazendo. 1238 01:05:51,000 --> 01:05:55,000 >> Na primeira linha aqui eu estou dizendo se é o caso 1239 01:05:55,000 --> 01:06:00,000 que o posto de super global está vazia para a chave de nome, 1240 01:06:00,000 --> 01:06:04,000 Em outras palavras, se o usuário não me dar um valor para o nome no formulário, 1241 01:06:04,000 --> 01:06:07,000 em seguida, esvazie vai retornar true, pois o valor está vazio. 1242 01:06:07,000 --> 01:06:11,000 Ou-notar as barras verticais, se o gênero é vazia 1243 01:06:11,000 --> 01:06:15,000 dentro desta super especial global, o que, mais uma vez, representa o conteúdo do formulário, 1244 01:06:15,000 --> 01:06:19,000 ou o dormitório é vazio, então eu estou indo para ir em frente e gritar com o usuário. 1245 01:06:19,000 --> 01:06:22,000 Como? Bem, repare que eu vou dizer que você deve fornecer seu nome, gênero e dormitório. 1246 01:06:22,000 --> 01:06:24,000 Vamos realmente induzir esse erro. 1247 01:06:24,000 --> 01:06:27,000 Deixe-me voltar à minha forma. Deixe-me recarregar para limpá-la. 1248 01:06:27,000 --> 01:06:30,000 E eu só vou dar-lhes Davi, e eles não precisam saber de onde eu moro. 1249 01:06:30,000 --> 01:06:33,000 Registre-se. Aparentemente, eu preciso dizer-lhes onde eu moro. 1250 01:06:33,000 --> 01:06:35,000 Você deve fornecer seu nome, gênero e dormitório. Voltar. 1251 01:06:35,000 --> 01:06:39,000 >> E eu poderia clique para voltar à forma, mas por que isso? 1252 01:06:39,000 --> 01:06:43,000 Bem, em que o nome caso não estava vazio, mas sexo era, e dormitório foi, 1253 01:06:43,000 --> 01:06:47,000 assim que esta expressão inteira avaliado como verdadeiro, e mesmo que a sintaxe é um pouco novo, 1254 01:06:47,000 --> 01:06:51,000 novamente, entramos PHP modo, familiar if, 1255 01:06:51,000 --> 01:06:54,000 mas a parte de novo aqui é apenas esta cólon, e eu estraguei tudo, omitindo um parêntese 1256 01:06:54,000 --> 01:06:57,000 por acidente, mas observar o cólon, e isso significa 1257 01:06:57,000 --> 01:07:00,000 mesmo que nós estamos saindo PHP tudo modo 1258 01:07:00,000 --> 01:07:03,000 que se segue deve ser cuspido na íntegra para o navegador 1259 01:07:03,000 --> 01:07:07,000 até que você veja um bloco de outra pessoa, como fazemos aqui, 1260 01:07:07,000 --> 01:07:10,000 caso em que você deveria cuspir isso 1261 01:07:10,000 --> 01:07:13,000 até ver o endif, de modo algum sintaxe um pouco nova 1262 01:07:13,000 --> 01:07:16,000 que me permite alternar entre HTML e PHP. 1263 01:07:16,000 --> 01:07:19,000 Podemos limpar isso eventualmente, mas, por agora, 1264 01:07:19,000 --> 01:07:22,000 é uma espécie de uma maneira convincente de verificação de erros no formulário. 1265 01:07:22,000 --> 01:07:25,000 >> Agora, eu digo que você não está realmente registrado porque, obviamente, nós não fizemos nada, mas os dados, 1266 01:07:25,000 --> 01:07:28,000 então vamos realmente tentar fazer algo legal. 1267 01:07:28,000 --> 01:07:33,000 Em froshims3 a única diferença é que eu vou apresentar para register3, 1268 01:07:33,000 --> 01:07:35,000 de modo que o código HTML não é o mesmo. 1269 01:07:35,000 --> 01:07:38,000 Em register3 perceber isso. 1270 01:07:38,000 --> 01:07:40,000 Este é um tipo de sexy. 1271 01:07:40,000 --> 01:07:44,000 No topo Eu estou usando uma declaração exigir, de modo que este é como # include. 1272 01:07:44,000 --> 01:07:46,000 Desta vez não é stdio.h ou qualquer coisa assim. 1273 01:07:46,000 --> 01:07:50,000 É uma biblioteca PHP, e este é chamado PHPMailer. 1274 01:07:50,000 --> 01:07:53,000 Como eu sabia de incluir precisamente esta seqüência citada? 1275 01:07:53,000 --> 01:07:56,000 Eu li na documentação, por isso, quando me disseram que colocar isso no topo do arquivo 1276 01:07:56,000 --> 01:08:00,000 se você quiser usar uma biblioteca especial chamada PHPMailer que faz o que diz. 1277 01:08:00,000 --> 01:08:03,000 Ele permite que você envie e-mail via PHP. 1278 01:08:03,000 --> 01:08:05,000 Agora vamos rolar mais. 1279 01:08:05,000 --> 01:08:08,000 >> Aviso para começar Eu estou no modo de PHP esse tempo todo, 1280 01:08:08,000 --> 01:08:11,000 agora perceber até aqui depois de importar essa biblioteca, 1281 01:08:11,000 --> 01:08:13,000  por assim dizer, estou fazendo algumas checagens. 1282 01:08:13,000 --> 01:08:16,000 Se for o caso, que o nome não está vazio 1283 01:08:16,000 --> 01:08:19,000 e de gênero não é vazio-notar os pontos de exclamação- 1284 01:08:19,000 --> 01:08:24,000 e dormitório não é vazia, então o usuário logicamente preenchido o formulário, pelo menos o suficiente. 1285 01:08:24,000 --> 01:08:28,000 Eu não me importo se eles estão capitão ou não. Eu só preciso de seu nome, gênero e dormitório. 1286 01:08:28,000 --> 01:08:31,000 Se eles têm enchido os para fora, de modo que nenhum desses campos estão vazios 1287 01:08:31,000 --> 01:08:33,000 esta é ligeiramente nova sintaxe. 1288 01:08:33,000 --> 01:08:36,000 PHP, como um aparte, é uma linguagem de programação orientada a objeto 1289 01:08:36,000 --> 01:08:39,000 que alguns de vocês podem se lembrar de APCS ou similares. 1290 01:08:39,000 --> 01:08:42,000 Por agora, se não conhece, só sei que para usar esta biblioteca 1291 01:08:42,000 --> 01:08:45,000 você tem que escrever uma linha de código como este utilizando uma palavra nova, 1292 01:08:45,000 --> 01:08:47,000 literalmente uma nova palavra-chave chamada nova. 1293 01:08:47,000 --> 01:08:50,000 Mas, além disso, temos uma sintaxe familiar. 1294 01:08:50,000 --> 01:08:54,000 É um operador de seta, o que é semelhante ao que foi utilizado para estruturas no contexto de ponteiros. 1295 01:08:54,000 --> 01:08:57,000 Para hoje o PHP não tem ponteiros, 1296 01:08:57,000 --> 01:09:01,000 mas sei agora que dentro da variável de correio 1297 01:09:01,000 --> 01:09:05,000 é essencialmente um tipo de um ponteiro para uma biblioteca especial 1298 01:09:05,000 --> 01:09:08,000 que alguém escreveu, e se eu quiser acessar a funcionalidade específica 1299 01:09:08,000 --> 01:09:12,000 dentro da biblioteca que eu faço, como em C, use o operador seta, 1300 01:09:12,000 --> 01:09:14,000 mesmo que estes não são realmente ponteiros. 1301 01:09:14,000 --> 01:09:16,000 É uma espécie de versão própria do PHP mesmo. 1302 01:09:16,000 --> 01:09:20,000 Isso significa ir para a biblioteca e chamar a função IsSMTP. 1303 01:09:20,000 --> 01:09:23,000 SMTP, recall, de nossos guerreiros do líquido refere-se enviar e-mail, 1304 01:09:23,000 --> 01:09:28,000 e que apenas significa usar um servidor de e-mail para este IMs Frosh registro. 1305 01:09:28,000 --> 01:09:30,000 >> O anfitrião é que eu quero usar? 1306 01:09:30,000 --> 01:09:34,000 Bem, Harvard, se você Google volta, tem um servidor de e-mail chamado smtp.fas.harvard.edu. 1307 01:09:34,000 --> 01:09:37,000 Se você está jogando junto em casa ou você vive em uma rede Comcast 1308 01:09:37,000 --> 01:09:40,000 que poderia ser algo como smtp.comcast.net. 1309 01:09:40,000 --> 01:09:43,000 É totalmente depende de onde você mora e que seu provedor é. 1310 01:09:43,000 --> 01:09:47,000 Depois que eu estou indo para o meu endereço de arbitrariamente ser jharvard@cs50.net. 1311 01:09:47,000 --> 01:09:52,000 Estou indo então para definir a dirigir a ser jharvard@cs50.net. 1312 01:09:52,000 --> 01:09:55,000 A única maneira que eu sabia que estas funções foram chamados SetFrom e AddAddress 1313 01:09:55,000 --> 01:09:57,000 é, mais uma vez, eu li a documentação. 1314 01:09:57,000 --> 01:09:59,000 Isso não é uma espécie de passe de mágica conhecida de todos os programadores. 1315 01:09:59,000 --> 01:10:02,000 Então eu definir um assunto para "registro". 1316 01:10:02,000 --> 01:10:07,000 E agora esta linha é um pouco feio, porque o que o operador ponto significa em PHP? 1317 01:10:07,000 --> 01:10:09,000 Alguém sabe? 1318 01:10:09,000 --> 01:10:11,000 Concatenar. 1319 01:10:11,000 --> 01:10:14,000 Em C, é uma dor no pescoço para concatenar duas seqüências conjunto. 1320 01:10:14,000 --> 01:10:17,000 Você tem que lidar com malloc ou realloc ou todas essas coisas 1321 01:10:17,000 --> 01:10:20,000 apenas para aumentar o comprimento de uma corda. 1322 01:10:20,000 --> 01:10:22,000 No PHP, JavaScript e em outros idiomas 1323 01:10:22,000 --> 01:10:24,000 geralmente você pode fazer isso com um único personagem. 1324 01:10:24,000 --> 01:10:28,000 Neste caso, ponto significa tomar essa string aqui 1325 01:10:28,000 --> 01:10:30,000 e anexar a ele essa seqüência. 1326 01:10:30,000 --> 01:10:32,000 >> Ah, e por falar nisso, anexar a ele essa seqüência, 1327 01:10:32,000 --> 01:10:34,000 que passa a ser uma variável dentro desse mundial super. 1328 01:10:34,000 --> 01:10:37,000 Em seguida, acrescentar a ela uma nova linha, portanto, todos esses pontos significa apenas 1329 01:10:37,000 --> 01:10:39,000 continuar a fazer uma seqüência maior e maior e maior, 1330 01:10:39,000 --> 01:10:43,000 e você não precisa se preocupar com tudo sobre malloc ou similar em uma linguagem como esta, 1331 01:10:43,000 --> 01:10:46,000 e há outras maneiras de fazer isso, mas este é um dos mais rápidos 1332 01:10:46,000 --> 01:10:48,000 maneiras de colocá-lo para fora. 1333 01:10:48,000 --> 01:10:50,000 O que se está fazendo? 1334 01:10:50,000 --> 01:10:55,000 É a criação de um corpo de e-mail que vai dizer o nome: Capitão: Gênero: Dormitório: 1335 01:10:55,000 --> 01:10:58,000 todos em linhas separadas, e então, finalmente, 1336 01:10:58,000 --> 01:11:00,000 uma linha de código, e eu vou ignorar isso por enquanto. 1337 01:11:00,000 --> 01:11:02,000 Se == false significa apenas que se algo deu errado, 1338 01:11:02,000 --> 01:11:04,000 mas a magia acontece aqui. 1339 01:11:04,000 --> 01:11:08,000 Enviar e-mail significa enviar este e-mail. 1340 01:11:08,000 --> 01:11:10,000 Vamos ver o que o resultado líquido é. 1341 01:11:10,000 --> 01:11:13,000 Na parte inferior do arquivo, observe que vai dizer que você está realmente registrado 1342 01:11:13,000 --> 01:11:15,000 se eu chegar a esse ponto. 1343 01:11:15,000 --> 01:11:18,000 Se, porém, o usuário estraga, observe que começamos este 1344 01:11:18,000 --> 01:11:21,000 se a condição por aqui, se não está vazio e não vazio 1345 01:11:21,000 --> 01:11:24,000 e não esvaziar vamos enviar o email. 1346 01:11:24,000 --> 01:11:27,000 Caso contrário, vamos enviar esta linha de código, 1347 01:11:27,000 --> 01:11:30,000 que vai ter o efeito, como você verá no pset 7, de redirecionar o usuário 1348 01:11:30,000 --> 01:11:35,000 de volta para onde eles vieram froshims3.php. 1349 01:11:35,000 --> 01:11:38,000 >> Dedos cruzados, caso contrário, esta vai ser a demonstração mais decepcionante hoje. 1350 01:11:38,000 --> 01:11:40,000 Aqui vamos nós. 1351 01:11:40,000 --> 01:11:42,000 Deixe-me abrir a minha caixa de entrada de e-mail para jharvard no Gmail. 1352 01:11:42,000 --> 01:11:44,000 Nenhum e-mail agora. Tudo bem. 1353 01:11:44,000 --> 01:11:53,000 Agora deixe-me abrir froshims3, que é o terceiro e último exemplo, vamos olhar para aqui. 1354 01:11:53,000 --> 01:11:55,000 Ok, aqui vamos nós. 1355 01:11:55,000 --> 01:12:00,000 Nate, ele vai ser macho, capitão de, digamos, Apley. 1356 01:12:00,000 --> 01:12:04,000 Registre-se. Ok, você está realmente registrado. 1357 01:12:04,000 --> 01:12:07,000 Agora, se eu rolar para o meu e-mail, oh, meu Deus. 1358 01:12:07,000 --> 01:12:09,000 Acabo dinamicamente enviou um e-mail na web. 1359 01:12:09,000 --> 01:12:11,000 >> Vamos deixar com essa nota. 1360 01:12:11,000 --> 01:12:16,000 Um vídeo é para a próxima palestra que perdemos. Até a próxima semana. 1361 01:12:16,000 --> 01:12:18,000 [CS50.TV]