[Powered by Google Translate] [Semana 8]
[David J Malan] [Harvard University]
[Esta é CS50.] [CS50.TV]
>> Benvido de volta.
Este é CS50, e este é o inicio da semana 8.
Un par de oportunidades, esta semana,
entre eles esa conversa aquí, en que algúns alimentos será servido.
Para máis detalles confía os slides que están en liña.
E tamén outro evento esta semana polo noso propio Thomas Carriero.
El é un dos compañeiros CS50 do ex xefe de ensino que está agora no Dropbox,
e é a cara que se entusiasmem por US co que vostede sabe o que,
por iso, se quere máis que a cabeza da súa conversa esta tarde para Dropbox e moito máis.
CS50 xantar é este venres.
Facer unirse a nós, se vostede é capaz, 01:15, como de costume, no lume e xeo.
>> E agora nós mergullo en algo chamado de Seminarios.
Os nosos CS50 Seminarios, Recall, son esas clases opcionais liderados polos compañeiros de ensino
e asistentes do curso e amigos do curso,
persoas dun grupo do campus chamado ABCD, que é un grupo de
tecnófilos no campus, así como un grupo chamado HCS,
a Harvard Computer Society, alumnos de graduación que están similarmente interesados ​​en computación.
A programación deste ano inclúe seminarios de seminarios sobre Android e IOS e JavaScript
e PHP, Unix, Vin, e máis, para entender que estes seminarios están chegando.
Se desexa RSVP para calquera deles ir a URL alí.
Nós, entón, publicaremos na web do curso os tempos e lugares, xa que son finalizados.
Pero sei que paga a pena alí de 5 anos de seminarios anteriores dispoñíbeis en liña,
moitos dos cales aínda están moi actual en termos de tecnoloxías pode
quero xogar con para os seus proxectos finais, así que a cabeza alí para algúns vídeos dispoñibles da mesma.
>> CSS, aqueles de vostedes que está familiarizado coa CSS xa,
o que é iso en poucas palabras?
O que é CSS?
É CSS, eo que significa isto?
O que iso fai para nós, CSS?
Todo ben, imos quentar con un máis doado, HTML, linguaxe de marcado de hipertexto.
O que iso fai para nós?
Calquera persoa en todo?
Está quedando realmente difícil facer estas preguntas.
HTML, linguaxe de marcado de hipertexto.
Si? Non?
[Resposta do alumno inaudível]
Ok, bo, que nos permite marcar texto para amosar nun navegador web.
Non é unha linguaxe de programación.
É de feito unha linguaxe de marcado, o que significa que instrúe o navegador como amosar
información, de xeito que o máis simple encarnación deste, como vimos
é algo super simples, como negritar, aberto soporte b soporte pechado, di
facer este texto en negriña, e que en realidade é só unha das moitas formas
no que podemos facer, e, de feito, estes días unha visión mellor
para estilizar a súa páxina web, facendo as cousas en negriña e cursiva
e centrado e xustificaba e semellantes, non é feito por medio de etiquetas HTML só
senón cunha técnica chamada CSS, follas de estilo en cascada.
Esta é unha linguaxe en si.
Ela tamén non é unha linguaxe de programación, pero-
todos, este é o Dan, que mantén unirse a nós hoxe.
Algunhas dificultades técnicas. Non é un problema.
>> CSS nos permite estilizar unha páxina
definindo o que son chamados de propiedades, así que imos dar un ollo niso
por medio de exemplos básicos.
Deixe-me ir ao aparello hoxe.
Eu teño a fonte de 8 directorio luns en aquí,
e eu estou indo para ir en un directorio chamado CSS, onde temos unha morea
Arquivos esperando por nós aquí,
e neste cartafol que temos, por exemplo search0.html, a última vez.
Agora, recordar con search0 deixamos esta nota
por tipo de aplicación do Google ou realmente só o fin da fronte para el unha semana,
e entender que tivemos algunhas novas etiquetas alí.
Tivemos h1 a un título grande, en negra,
forma, o que nos permitiu realmente ten un formulario HTML entrada do usuario.
Acción, cal era o significado dun atributo action
na etiqueta de forma HTML?
Cal foi o significado desta acción,?
Eu só vou facer iso hoxe.
Acción é o destino onde o formulario vai ser sometido.
O feito de que a acción que se = "google.com / search"
significa que cando o usuario fai clic no botón de envío ou equivalente
calquera que sexa a forma que campos cubertos van ser enviados para o noso servidor non
ou o noso aparello, senón para que URL específica en Google.
E o método que vai empregar é chamado de obter,
e, polo de agora, só unha técnica para pasar información xunto a un servidor web
por medio da URL, por iso imos dar unha rápida ollada para atrás en como funciona isto.
>> Teña en conta que hai unha entrada cuxo nome é q
cuxo tipo é texto e, a continuación, unha segunda entrada do tipo presentar
cuxo valor é CS50 Investigación, e de feito, se abrirmos este ficheiro aquí,
search0.html, é unha forma super sinxelo,
e se eu buscar algo como ciencia da computación
e escriba Intro ou faga clic en Buscar CS50
entender que o que pasa é ademais de obter en Google
Eu especificamente rematou no URL na parte superior,
google.com / search? q = ordenador + ciencia
e ciencia da computación é, obviamente, o que eu escriba dentro
O + significa só que é onde un carácter de espazo foi,
e é feito polo navegador só para asegurarse de que non hai
confusión e espazo en branco na URL real.
E, a continuación, q, por suposto, é o nome do parámetro.
Nós non vimos coma nós, o programador, realmente pode acceder q aínda.
Podemos supoñer que Google sabe o que facer con iso aquí,
pero nós imos chegar alí no debido tempo hoxe.
>> Pero deixe-me dar un ollo en vez de search1.html,
que se parece un pouco diferente, porque eu decidín que este formulario aquí foi un pouco manco.
Quero dicir, é na esquina superior esquerda.
Non hai realmente ningunha estética a el, e así que eu quero para estilizar este
un pouco máis como Google, cuxa páxina de inicio, recall,
aínda que non pode visita-lo que, moitas veces, parece que iso hoxe en Halloween.
Se en vez abrir unha versión deste arquivo, 1.html investigación, eu centrado lo.
, Menos mal feo, pero polo menos agora eu comece a controlar a estética desta páxina
non só a reserva de feito.
Imos dar un ollo a unha procura, e non hai realmente só unha diferenza aquí,
que pode ir para fóra para vostede, ou quizais non,
pero o que é a liña de un ou tramo de diferencia?
>> Hai este atributo de estilo, entón dedúcese que en HTML
a maioría dos elementos, a maioría das etiquetas pode ter un atributo estilo sobre eles,
e dentro dese atributo de estilo é unha cadea,
e que cadea e CSS.
Podes poñer follas de estilo en cascada alí
especificando-lo como un nome de propiedade
seguida de dous puntos, seguido por un valor.
Esta é unha especie de decisión de proxecto infeliz, hai algúns anos
que CSS é unha linguaxe en si mesma,
pero sintaticamente é moi diferente de HTML.
Neste caso, vemos que dentro do meu sitio, que é escrito en HTML,
Eu teño CSS dentro desas citas, e do Convenio para CSS
é que ten o que se chama unha propiedade seguido, novamente, dous puntos,
seguido polo valor da propiedade, por iso non hai signo igual.
Non hai citas adicional.
É só iso colonos par valor separado clave,
e liña de texto fai exactamente o que di.
El aliñar o texto no corpo da páxina, que é realmente o valor da páxina,
no centro.
>> Ok, entón o resultado final, para quedar claro, é esta.
Non todos os máis sexy iso, pero polo menos é centrado e un pouco máis como Google real.
Pero e se eu, no canto abrir versión 2 do presente
e apuntar aquí unha marca totalmente nova?
Agora na cabeza da miña páxina, que anteriormente só tiña que etiqueta
en todos os exemplos anteriores?
El só tiña ese, o título.
Un momento detrás da marca de cabeza ollou coma este.
Agora, en vez ten unha marca de estilo dentro dela,
e iso tamén, eu pido desculpas, sintaticamente parece moi distinto do HTML,
pero se acostuma, que dentro da marca de estilo
Agora podo fatorar o que era un momento atrás
un atributo, o atributo de estilo, e podo poñelas na parte superior da miña páxina.
>> Por que?
Ben, este é un paso para limpar as cousas, así como en escribir código C
nós, ás veces, escribir funcións para fatorar funcionalidade común.
É só un pouco máis limpo para comezar a fatoração de cousas como a estética
para unha localización central, en vez de ter todo intercalan en todo o seu HTML.
Isto tamén fai o que di, aínda que non haxa un pouco de novo sintaxe.
Iso aquí é un selector, e do corpo significa só seleccionar o elemento do corpo
e aplicar as seguintes propiedades para el.
Ben, a propiedade é exactamente o mesmo.
Para unha boa medida que eu engade un punto e coma ao final,
que tende a ser de convencións, e envolto esa propiedade toda
entre chaves, porque eu podería realmente ter cousas distintas aquí.
Eu podería realmente dicir algo así como color: blue;
>> Agora iso non vai ser un paso para nada todo o que máis fermosa,
pero se eu volver agora a versión 2 que eu polo menos xa fixo o corpo do meu
texto páxina toda azul.
O botón permanece o mesmo porque é un insumo. Non é texto normal.
Pero todo o que é texto, como CS50 Busca encima, é en azul feito.
Unha vez máis, todo o que fixemos agora é eliminar a marca do corpo, previo aviso,
o atributo de estilo, e nós temos consignado iso aquí.
Isto non é unha gran mellora, pero se tomamos un paso adiante
entender o que podemos facer nesta terceira versión aquí.
>> En search3.html páxina web é case idéntico
excepto para o novo tag agora?
Enlace, entón esta non é moi apropiadamente chamado
porque non está ligando, no sentido dun hiperenlace previsión.
En vez diso, vostede é medio de facer o equivalente a # include C
cal a marca de enlace con un atributo href
é un atributo rel di dalle
e copia e pega o contido de un arquivo chamado search3.css aquí, esencialmente.
El non chega a facelo, pero ese é o espírito da cousa.
El di que vai abrir o ficheiro, search3.css,
e trata-lo como se o usuario tivese ingresaran iso aquí na cabeza da páxina
así como eu fixen no exemplo anterior.
Search3.css, mentres, é moi sinxelo.
É realmente só contén exactamente o que foi un momento atrás
na marca de estilo, pero eu teño consignado aquí fóra no seu propio arquivo.
>> Aínda que non pase moito tempo a todos HTML ou programación web
só intuitivamente cal é a motivación, quizais, por fatoração
este pequeno tramo ata de CSS no seu propio arquivo
e incluíndo o con esta etiqueta enlace aquí?
[Resposta do alumno inaudível]
Ok, é máis fácil de ler no sentido de que ten o seu CSS nun arquivo CSS.
Ten o seu código HTML no seu arquivo HTML, por iso é máis lexible nese sentido.
O que máis pode ser atractivo? Si
[Resposta do alumno inaudível]
Si, para que poida inclui-lo moitas veces, entón agora nós estamos facendo estes
exemplos básicos con arquivos individuais, pero imos supor que está realmente facendo
un sitio de verdade, como vai a pset 7 ou o seu proxecto final, quizais,
e quere ter varias páxinas web, como é certamente común en
á rede mundial real Xeral, e que sería unha especie de coxo
ter que copiar e pegar a mesma cor azul
e mesmo texto aliñado centro en cada unha desas páxinas.
En vez diso, fai máis sentido para fatorar, así como temos feito en C
co arquivo h., poñelas nun lugar central,
neste search3.css caso, e entón permitir que calquera arquivo
no seu sitio web para realmente incluír este ficheiro a través de esa marca aquí na liña 16.
Como é tipicamente o caso, que comezou coa versión 0, que tipo de obras
pero non é necesariamente o mellor, e con cada etapa,
busca 1, busca 2, e agora busca 3 tivemos estes pasos de bebé
para os proxectos que son un pouco máis limpo e máis preparatorio
para as páxinas máis complexas que podemos facer na estrada.
>> Deixe-me abrir un último exemplo aquí só para amosar
páxina aínda máis estilizado, pero primeiro imos ollar para o código HTML.
Este é search4.html, e notar que estruturalmente é case o mesmo
excepto para a introdución dunha nova marca, DIV.
Div é unha marca que presenta unha división da páxina.
Podes pensar niso como un rectángulo invisible.
É unha especie de crea unha franxa de zona na web
que pode estilizar todos dunha vez.
O que eu teño feito aquí é a seguinte.
Dentro do meu corpo tag, que foi alí todo o tempo,
Eu estou dicindo crear unha división da páxina aquí a través de liñas de 45 a 47,
o que significa, esencialmente, dar-me un rectángulo invisible na parte superior da páxina.
Entón me dea un segundo rectángulo, aínda invisible, a continuación diso,
e identifica-lo polo contido de nome, e logo, por último,
dáme unha terceira división da páxina na parte inferior
chamado ID.
Imos ver por que eu fixen iso en só un momento,
pero conceptualmente Teño unha división de cabeceira.
Eu teño unha división de contidos, e eu teño unha división rodapé da páxina
aínda que estes sexan só na reserva.
O usuario non vai ver tres rectángulos,
pero unha especie de estructuralmente hai detrás das escenas
son realmente presente.
>> Agora, quen se importa? Por que realmente facer isto?
Todo o máis na páxina é o mesmo que xa vimos antes.
Aquí está a miña forma. Aquí está a miña entrada, a miña entrada, unha quebra de liña e así por diante.
Aquí está a imaxe, no entanto, entón imos ver de onde veu iso en só un momento.
Aquí está o pé, que é novo, só porque eu quería introducir
contido un pouco máis aquí.
Se rolar ata entender que ID desta div é cabeceira.
O ID deste div é o contido, eo ID dun presente é de rodapé.
E, como o nome suxire, cando ten un atributo ID
HTML, por definición, debe identificarse
un dos elementos, un dos tags na súa páxina.
O fardo é totalmente en que se lembre que ten un ID cabeceira xa.
Tes un rodapé. Tes un ID de contido xa.
O ordenador non vai descubrir o que un ID dispoñible é para ti,
así pode accidentalmente dar 2 tags un ID de cabeceira,
e que sería só mal.
>> Ten que ter en conta o que creou,
pero unha vez que tes feito isto observe o que podemos facer aquí.
Agora podo especificar na miña marca de estilo na parte superior
ou equivalentemente no meu arquivo CSS, se eu aínda estaba a usar esta versión,
Eu podo dicir # header, eo que iso significa que, independentemente tag
neste sitio ten unha identificación de cabeceira
e #, só por convención humana, representa ID.
O sinal de sostido ou libra signo representa ID.
Cabeceira é o nome que eu dei.
Isto significa aplicar esta propiedade CSS
para calquera tag nesta páxina ten un ID de cabeceira.
Mesmo aquí.
Aplicar esta propiedade, que pasa a ser o mesmo, a calquera elemento
cuxo ID é o contido, e despois aquí
notar que eu teño un pouco máis sofisticado, con rodapé.
Calquera elemento cuxo ID e rodapé, de que non pode haber só un, por definición,
vai adiante e faga o seu tamaño de fonte menor,
súa ousada peso da fonte, a súa marxe de 20 píxeles.
>> O que significa isto?
É só unha marxe na parte superior, parte inferior, e á esquerda e á dereita.
Isto significa dar-me unha marxe de 20 píxeles invisible en torno a el
só para empuxar todo máis lonxe del un pouco, como se pode facer en Word,
Microsoft Word ou Pages ou similar.
E entón o texto aliñar centro.
Imos ver o resultado final, e despois imos volver ata o tramo de un remanescente de CSS alí.
Esta é a versión 4, o noso pasado para os exemplos de investigación, e é máis sexy, moi, moi.
Agora, con xustiza, eu só Googled "Google xerador de logotipo da fonte."
E o que me permitiu crear un GIF, un formato de imaxe, que parece que non.
En realidade, pode facelo tamén.
Temos "Google xerador de logotipo fontes."
>> Imos ver se podemos facelo.
Ok, creo que este é o sitio que eu usei.
Podemos dicir Ec 10, por exemplo, e facerlles a súa propia.
Podes xogar con iso o día enteiro e, a continuación, prema co botón dereito sobre el
e despois baixar o GIF real, que é todo o que eu fixen.
E, de feito, é por iso que no meu HTML, lembre, aquí
Eu tiña unha etiqueta de imaxe, o que vimos brevemente a semana pasada
cuxa fonte é logo.gif.
E o que unha vez foi a motivación para ter ese atributo alt,
este atributo alternativa?
Si
[Resposta do alumno inaudível]
Bo, para dúas razóns moi, se o navegador non pode puxar arriba a imaxe
porque ten unha conexión de rede lenta ou a imaxe está danada
ou algo así, polo menos, o ser humano pode ver "CS50 busca"
e, a continuación, tamén por razóns de accesibilidade.
Se vostede ten un usuario que é cego e está a usar un lector de pantalla
e, polo tanto, obviamente, non pode ver as imaxes poden polo menos
escoitar texto se o seu ordenador fala a eles.
>> En xeral, esta é a mellor práctica, cando se trata da accesibilidade das páxinas
para que os usuarios, mesmo nesa situación pode escoitar ou ver, por así dicir,
que é o que está na súa páxina.
Hai outra cousa que eu fixen aquí
que é un pouco interesante, e imos ver máis sobre isto en conxunto de problemas 7
a través dun dos curtas liderados por un dos compañeiros de ensino.
Pero # contidos refírese a etiqueta
cuxo ID é o contido, pero despois hai un espazo en branco, e entón hai a entrada de palabra.
Ben, o que é interesante sobre CSS é que pode
refírense a marcas nunha especie de páxina xerarquicamente,
e que ese tramo de vía CSS é atopar a etiqueta
cuxo ID é o contido, e despois aplicar as seguintes propiedades
para todas as marcas de entrada que son descendentes de contidos,
é dicir, que son recuadas no interior do mesmo.
Retirada, de novo, é só importante para o equipo, e non ao humano,
pero por convención que guión cousas como nós ir máis fondo nunha páxina,
así, isto significa aplicar unha marxe de 5 píxeles a calquera elemento de entrada
que está en algún lugar dentro ou aninhado dentro
o elemento cuxo ID é o contido.
>> Quen é que iso se aplica?
Ben, non hai realmente só esas dúas caras aquí.
Teña en conta que dentro da forma hai dúas entradas,
como ten habido para todos estes exemplos.
Pero aviso que estas dúas entradas ocorrer de ser aniñados dentro,
aínda que un pouco profundamente, un par de capas de retirada,
dentro da etiqueta cuxo ID é o contido.
O que significa isto?
Ou tamén para o navegador aquí podes ver sempre así lixeiramente-
deixe-me aproximarse que hai un pouco de recheo entre o botón
e entre o campo de texto.
>> Deixe-me temporalmente desactivar isto.
Deixe-me ir para o meu CSS, e deixe-me ir adiante e só
cambiar esa marxe de 5 píxeles para 0 píxeles.
Deixe-me ir á fronte e, a continuación, gardar o ficheiro, volva para o motor de procura
e recargar, e ve no medio da páxina.
Todo quedou comprimido xuntos, e cando chicoteado este exemplo
Eu penso que parecía parvo co campo de texto e, a continuación, o botón inmediatamente debaixo dela.
Eu quería almofada-lo un pouco, entón eu presentei marxes.
O que non imos facer é ir na aula a través da varias decenas
Propiedades CSS que existen porque, de novo, hai cousas como o tamaño da fonte,
peso da fonte, marxe, texto aliñar, e unha ducia de outros poucos,
e imos encamiñar-lo no conxunto de problemas 7 a varios tutoriais online
e as referencias que lle permiten escoller esas cousas.
Pero o que é realmente importante ao final do día
>> é entender como estas cousas son aplicadas.
De novo, se temos a marca de estilo dentro da cal
poden ir os seletores, o tipo de identificadores que especifican
para quen queira aplicar esas propiedades,
e despois se pon as propiedades como par valor-chave
separados por dous puntos e terminou cun punto e coma,
ou pode copiar todos os que e poñelas nun arquivo CSS separado
en si mesmo.
Todo ben, todas as preguntas sobre os conceptos
ou a gran figura da CSS?
Vai ver de novo máis do mesmo en pset 7,
pero imos mantelo xeralmente moi sinxelo.
Non? Todo ben.
É hora de unha linguaxe de programación real,
e imos volver un pouco de CSS na forma dun exemplo.
PHP é realmente unha linguaxe marabillosas accesibles
na medida en que é case equivalente ao sintaticamente C.
Noutras palabras, se sabe C, vostede sabe o PHP maior parte,
polo menos sintaticamente, a pesar de existiren algunhas novas funcionalidades
e algúns novos conceptos que imos ter de ollar.
>> Pero para a maior parte, agora que a transición de C para PHP
a maior parte do novo material é realmente a gran figura,
como usa unha linguaxe de programa na web en vez de
na liña de comandos ou nun ventá piscando como temos benvida a facer ata agora.
Para referencia, especialmente con pset 7 eo proxecto final en diante,
non aproveitar esa URL aquí se desexa ler sobre as formalidades de PHP.
É realmente como un libro en liña de balde de forma eficaz,
e tamén vai descubrir que o que é realmente agradable sobre PHP
é que hai centos de funcións que veñen con el,
mentres que en C non necesariamente teñen acceso a
máis funcións que estaban na biblioteca de matemáticas, a biblioteca CS50.
En PHP e unha morea de linguas modernas, Python e Ruby entre eles,
ten acceso a tantas máis funcións, o que significa que comeza a escribir
moito menos código, pois pode estar sobre os ombreiros de outras persoas
que xa teña escrito algunhas cousas para ti.
>> Imos dar un rápido paseo da sintaxe do PHP e logo escribir algúns exemplos.
O que é legal sobre o PHP en primeiro lugar
é que non hai función principal.
Se queres escribir un programa en PHP que acaba de comezar a escribir código,
e non ten que se preocupar de inicio.
Non hai int. Non hai retorno.
Non hai argv, argc o que é necesario cando escribe o programa.
En vez diso pode simplemente comezar a escribir código, e iso é, en parte,
porque o PHP é o que se chama unha linguaxe interpretada.
C foi compilado, e foi compilado no sentido de que comeza
con código fonte, executa-lo través Clang, que é un compilador,
e, finalmente, tras un certo número de pasos que obter o código obxecto, 0s e 1s.
PHP e Python e Ruby e Pearl e outros
diferentes tipos de linguas en que non recompila-los.
Non é preciso ir a partir do código fonte para 0s e 1s.
Basta con executar o código fonte, e corre o código fonte
escribindo nun ficheiro de texto normal, que remata en. php, neste caso,
en vez de. c, e que o programa fai no seu ordenador
é literalmente interpreta o seu código liña por liña por liña.
>> Noutras palabras, no canto de escribir un programa e executar o programa
directamente ti, en vez de escribir un programa con un arquivo con extensión. php.
Entón executar un programa real chamado php.exe, se está en Windows,
ou só PHP, se está en Mac OS ou Linux,
e proporcionar como entrada para o programa PHP seu propio código fonte,
eo seu propósito na vida é ler o seu cume código para abaixo, de esquerda a dereita,
e facer o que dixo a el facer.
>> Imos ver o que iso vai significar sintaticamente.
No PHP temos condicións.
Este slide é idéntico ao que viu a semana 1
porque sintaticamente condicións, IFS e else IFS e else en PHP
exactamente así.
Cando se trata de expresións booleanas que van exactamente así.
Cando se trata de anding cousas xuntos como boleanos que vai exactamente así.
Cambia a mesma aparencia, e terá a vantaxe en PHP
que os interruptores en C só podería cambiar nun char ou int.
Vostede non pode conectar un valor de cadea.
No PHP pode realmente ter unha expresión
que é unha variable cuxo contido é unha cadea,
e pode realmente facer comparación de cadea en forma real intuitivo,
Non comparación punteiro, a fin de decidir se a facer caso i ou j ou outra cousa.
Imos ver o que potencialmente antes de tempo.
>> Loops tamén marabillosas son os mesmos.
Para loops ter unha inicialización, unha condición, e un número de actualizacións.
Mentres lazos tamén existen en PHP.
Facer mentres lazos tamén existen en PHP,
e matrices existe no PHP, pero é aquí onde a sintaxe comeza a estar un pouco diferente,
pero os conceptos son os mesmos, e os conceptos son realmente a mesma
como eran en 0 Semana co scratch.
Primeiro e máis importante é o sinal $.
Esta foi unha decisión de proxecto en PHP que calquera variable
en PHP por deseño comeza co signo $.
Non hai máis X, Y, Z. Agora $ X, Y $, $ Z só porque.
É algo para manter presente, e agora no lado dereito
este é semellante a unha matriz,
pero estamos usando corchetes aquí.
En PHP e JavaScript, como vai finalmente ver
declarar unha matriz que fai colchete aberto e pechado colchete,
e entón tes unha lista separada por comas de valores, se ints
ou cordas ou caracteres que quere, dentro do que a expresión de alí.
>> Agora, como fixemos algo como isto en C?
Cal foi a sintaxe para estaticamente declarar unha matriz de números coñecidos?
Foi chaves, diferenza tan pequena aquí, pero en ambos os PHP
e, finalmente, el só usa Javascript corchetes, entón realmente
O único detalle interesante aquí é o sinal $ para o nome da variable
e tamén os corchetes, e hai unha cousa curiosa
que foi omitido, así como sobre o lado esquerdo do sinal de =.
O que falta que estamos esixindo hai semanas? Si
[Resposta do alumno inaudível]
O tamaño, polo que non hai mención ao tamaño da matriz.
Francamente, non hai ningunha mención de corchetes no lado esquerdo
do signo = eo que máis falta na liña?
Si >> [Resposta do alumno inaudível]
O tipo, entón o que é interesante, en especial sobre o PHP
é que non é fortemente tipado como C é,
e que está fortemente ingresaran no sentido de que debe dicir char,
ten que dicir int, debe dicir float.
>> Sempre que sexa unha variable que ten que dicir Clang que o seu tipo é.
PHP é un pouco máis preguiceiro.
É vagamente ingresaran no sentido de que
pode ter coches alegóricos e chars e cordas
e ints e así por diante, pero a propia linguaxe
realmente non lle importa o que pon dentro dunha variable.
Non ten que saber con antelación o tipo de datos
Vai nunha variable.
É enteiramente ata ti, entón iso é bo
en que non ten que se preocupar tanto cos datos escribindo
e se preocupe que os seus argumentos son e así por diante.
Isto tamén significa que, eventualmente, funcións PHP vai ser capaz de retornar
ou un int do tempo e, se cadra, de cando en vez
eles van voltar un bool, un falso boolean, por exemplo, para indicar que algo deu errado.
Iso nos dá algúns upsides, pero tamén nos fará tipo de proxecto por
un pouco máis preguiceiro cando se trata de dixitación de datos.
>> O que máis hai para manter presente aquí?
Variables ollar bastante como este, polo tanto $ s = "Ola, mundo".
Isto é, se cadra, detectada a partir do exemplo anterior,
e nós temos un outro tipo de lazo.
Este nós imos realmente ver de cando en vez, xa que é moi útil,
unha construción foreach.
Neste caso, o loop foreach leva dentro parénteses súas tres palabras normalmente,
$ Algo primeiro, que é o que matriz quere iterar sobre os membros,
entón, literalmente, a palabra clave como, e entón, finalmente,
outro nome de variable que comeza a escoller.
Pode ser foo, bar, ou elemento,
e que esta construción fai
é a matriz $ contén 10 elementos
cada iteração desta matriz, desculpe, cada iteração deste lazo
o elemento variable chamada vai ser actualizado
para ser o primeiro elemento na matriz, a continuación, o segundo elemento da matriz,
a continuación, o terceiro elemento da matriz, obviando así a necesidade
para facer a notación de corchetes lixeiramente irritante cadrado e
$ I, a fin de índice nunha matriz.
PHP fai todo este traballo para ti e en cada iteração
só lle entrega o próximo elemento da matriz
sen ter que saber ou se preocupan co seu lugar de índice numérico.
>> E entón, finalmente, polo momento, hai outra característica do PHP
que vai ser moi útil, especialmente cando comezamos a programación na web,
e que é coñecido como unha matriz asociativa.
As matrices que sabemos ata agora como 20 segundos atrás
e para as últimas 8 semanas son numéricamente indexadas matrices,
tipo de matrices tradicionais, onde os índices son ints,
0, 1, 2, todo o camiño cara arriba.
As matrices de asociación son moito máis poderosos.
Eles permiten que teña claves arbitrarias,
índices arbitrarios e valores arbitrarios.
Considerando que, nunha matriz tradicional é 0, 1, 2,
nunha matriz asociativa que pode ter un índice
ou unha chave de foo cuxo valor é bar.
Pode entón ter outra clave cuxo nome é Baz e cuxo valor é qux.
>> Unha vez máis, estúpidas informática xenéricos nomes de variables aquí,
pero o punto é que esa matriz non ten soporte 0 ou soporte 1.
É vez vai ter soporte foo e soporte de Baz.
Este é moito máis versátil que nós imos ser capaces de asociar
palabras con outras palabras, as chaves con valores completamente arbitrariamente,
e nós imos ser capaces de obter eses valores de retorno en tempo constante
pois debaixo da capa que unha matriz asociativa
realmente esta é unha táboa hash.
Lembre que unha táboa hash permite que poña en algunha entrada
como poñer a palabra David se quere inserir David nalgún tipo de dicionario,
e despois voltar un valor normalmente.
No caso de Speller, verdadeiro ou falso.
David ou calquera palabra que está ou non está no dicionario.
Unha matriz asociativa é realmente só unha táboa hash,
pero é unha encarnación máis agradable do mesmo.
Como veremos, iso vai permitir facer algunhas cousas
moi, moi facilmente.
>> Imos dar un ollo a algunhas básica do PHP
exemplos para ver o que podemos facer con esta linguaxe.
Deixe-me ir adiante e abrir-se no noso directorio de orixe hoxe
un arquivo chamado hello1.php.
Este ficheiro é un comentario do que é o código real,
entón deixe-me realmente eliminar todos os comentarios a partir do arquivo
e presentar-lle, quizais, o máis sinxelo programa PHP aquí.
5 liñas, e algúns dos que son espazos en branco,
para notar algunhas diferenzas clave aquí.
O ficheiro é chamado hello1.php.
A primeira liña, pero é <? PHP.
Similares en espírito á HTML
que a secuencia de caracteres di ao computador
"Ei, ordenador, aí ven un programa en que estamos en PHP."
El asegura que non está confuso que é algunha outra lingua.
A liña 2 é un espazo interesante branco.
A liña 3 é o noso vello amigo printf,
Neste momento, no contexto PHP.
PHP ten a súa propia versión de printf, que se comporta exactamente o mesmo,
de xeito que este é só ir para imprimir "Ola mundo".
E entón esa etiqueta oposto aquí,>, significa que é todo para o meu código PHP.
>> Imos ver como executar tanto.
Eu vou volver para a miña xanela de terminal aquí.
Eu estou indo a ir para o meu directorio PHP.
Teña en conta que temos unha morea de arquivos, o primeiro dos cales é ola.php.
Deixe-me ir adiante e executar este hello1.php, entrar.
Permiso denegado. Okay.
Como temos fixado cousas como esta no pasado?
¿Que é iso? >> [Resposta do alumno inaudível]
Necesitamos ler e escribir, pero deixe-me facer ls-l.
Teña en conta que esta saída un tanto enigmático polo cal hello1
parece ser lidos e escritos polo me
pero lexible por todos.
Acontece que este realmente non é un paso na dirección certa.
A diferenza, unha vez máis, cunha linguaxe interpretada
é que non executar o programa directamente.
Vostede vez executado un intérprete e entrega-lo o código
que escribiu para que poida interpretala lo liña por liña.
Neste caso, o intérprete ou programa que eu realmente quero correr
chámase literalmente PHP.
>> En algún lugar neste disco duro do aparello hai un programa
alguén escribiu chamado PHP, ou en Windows php.exe.
O que eu vou facer aquí é que eu vou rodar o PHP
pero dá-lo como un argumento de liña de comandos do código que escribín,
e entón eu vou reducir e presione enter.
Córrese o meu programa para min, de arriba abaixo, de esquerda a dereita.
Deixe-me ir á fronte e abrir unha pequena variación desta.
O aviso hello2.php que isto tamén
é principalmente comentarios, entón deixe-me librar-se deles como unha distracción,
eo que é claramente diferente agora sobre este ficheiro?
Hai esa nova liña, un tanto enigmática na parte superior.
Na liña 1 e #! / Bin / php.
Ben é unha convención sobre Linux e Mac OS para binarios,
así / bin significa que esta é unha carpeta que contén unha chea de binarios
que está programado, un dos cales é o PHP.
O #! é alcumado shebang,
que é a forma máis rápida de dicir isto, eo que iso significa
é que cando executar este programa agora hai unha información na parte superior do arquivo
que di ao computador o intérprete de usar.
>> Queda un pouco aburrido se tivese que dicir aos seus usuarios e os seus clientes
"Ei, escribir este programa chamado hello1.php".
Todo o que tes que facer é para sempre executar o PHP e, a continuación, o nome do programa.
Francamente, sería só máis agradable para realizar hello1.php,
e, de feito, podemos, se faga o seguinte.
Deixe-me ir adiante e facer ls-l, e aviso en hello2 aínda é só ler escribir
e en seguida, ler ler, por iso aínda non podo facer iso, hello2.php.
Pero introduciu esta sempre así momentaneamente última vez, o mando chmod.
Se eu fai un chmod + x, o que significa que todos os executabilidade máis,
e despois hello2.php e despois facer ls-l novo entender o que cambiou.
Un, Linux está me amosando o nome do ficheiro en verde para transmitir a idea de
que é executable, pero, máis importante aínda, no lado da man esquerda
entender que o pouco que representa X para executable xa foi definido.
O que isto significa é agora podo correr ./hello2.php como de costume,
presione enter, e por mor da shebang na parte superior do arquivo
iso é unha información, de novo, a Linux que di
usar este intérprete para executar este ficheiro.
Non se preocupe en facer o usuario a escribir realmente iso.
>> E o que é legal é agora que é medio irrelevante para os meus clientes ou meus amigos
o idioma que eu escribín este programa, para que eu poida ir adiante con mv
e renomear esa cousa de hello2, por exemplo.
E agora eu fai ./hello2
e zoom out meu programa segue a funcionar.
Estas extensións de arquivo son unha convención humana que é necesario
para algo así como Clang e facer que mirar para eles.
Pero para PHP, eu podería chamar iso de nada extensión de arquivo que quero.
Eu podería enganar o mundo a pensar que eu son realmente bo en Ruby,
e eu podería escribir hello2.rb e executa isto,
e listo, agora eu teño a versión Ruby, que é unha mentira completa.
Pero as extensións de arquivo son sen sentido
Se o ficheiro é executable e ten esa información especial no principio do ficheiro.
>> Agora, como un aparte, deixe-me amosar-lle rapidamente a versión 3,
que é unha especie de truco útil saber.
En hello3 eu fixen algo un pouco mal
que eu vou actualizar o código fonte en liña.
Na versión 3 verifícase que na maioría dos ordenadores Linux
hai un programa chamado Estructural para o medio ambiente,
eo que podes facer aquí é se non ten idea de onde o PHP
instalar na unidade de disco duro, porque de feito pode variar con base no ordenador
que alguén está a usar, Estructural di só executa Estructural,
que é na maioría dos sistemas, e descubrir onde o PHP é.
Só un truco común para que non ten que se preocupar en atopar para fóra onde un programa.
Pero se importa para descubrir onde un programa e non ter se importado ata agora
pode utilizar o comando que.
>> Deixe-me afastar e tipo que php,
e entender que me di que é, en realidade, en usr / bin / php.
É unha especie de mentira. Tamén no lixo.
É só me amosando o primeiro hit.
Se xa se preguntas onde é Clang, que Clang, que está en usr / bin / bumbum,
que facer, usr / bin / facer, e iso significa que todo ese tempo
podería ter sido escribindo usr / bin / clang entrar para realizar Clang,
pero é o tipo de tedioso para facelo, entón algunhas carpetas
como usr / bin e bin son consideradas padróns
de xeito que o ordenador sabe mirar para eles para ti.
Calquera dúbida sobre como escribir un super, super sinxelo programa World Ola
en PHP e logo executa-lo?
Porque agora nós imos comezar a introducir a sintaxe máis atractivo.
Todo ben, aquí imos nós.
Estes programas que vimos, en realidade, todos eles antes.
>> Se eu abrir, por exemplo, imos facer beer1.php,
non imos pasar por varias versións deste, pero o que eu fixen
foi eu sentei e derramou ou convertido
meu código C para o código PHP aquí.
A maior parte do inicio do ficheiro e comentarios aquí.
Acontece que hai unha nova función que necesitamos chamado readline.
GetString, recall, a partir Semana 0 foi unha cousa CS50.
PHP vén coa súa función amigable, chamada readline
que leva un argumento que especifica o poder
que quere amosar ao usuario, e que fai readline
é el retorna o que o usuario escribe Pol
Neste caso, eu estou declarando unha variable chamada $ n.
Eu son almacenar nel o valor de retorno de readline
despois de avisar o usuario con esa secuencia.
Só para backup, para realmente executar esa cousa, deixe-me ir adiante
e realizar beer1.php php.
Cantas botellas haberá? Imos facer dous esta vez.
Intro. Isto é todo.
>> O programa é funcionalmente idéntico ao da versión C de semanas.
Pero sintaticamente imos ver o que é diferente.
Despois de que eu recibir un int a partir da notificación do usuario que eu estou facendo algunha comprobación de erros,
e n é menor que 1 me saír e eu imprimir
unha mensaxe moito para o usuario e saída con 1.
Isto tamén é un pouco diferente.
C o que imos facer? C volvemos 1.
No PHP vostede saír con unha, que francamente é que eu creo que un pouco máis intuitiva
porque está literalmente saír do programa.
Todo ben, e entón aquí a música irritante é idéntico sintaticamente
con excepción da variable, entón aquí na liña 24 en diante
notar o meu lazo for é case o mesmo,
pero eu teño R $ diante do I e n,
e que tamén está en falta a partir da liña 26 que tivemos no pasado
cando se declara unha variable i?
Non hai ningún tipo.
É incorrecto en PHP para dicir int.
Vostede simplemente non precisa facer iso.
O ordenador, o intérprete de PHP é intelixente o suficiente para entender
que se pór un número de $ I será tratado
como un número para ti.
E entón aquí estamos na ficha $ i $ i $ i - 1.
Todo isto é o mesmo, e entón aquí nós facemos un "Guau, iso é aburrido" printf
e despois saír (0).
>> Unha vez máis, o takeaway aquí é que aínda que nós imos gastar relativamente
pouco de tempo en PHP, certamente contra o que fixemos en C,
é case o mesmo, e así o que imos facer hoxe e na próxima semana
e ademais é centrar realmente nalgunhas das novas ideas.
Só para ver que outra cousa non traducir máis de C,
Este foi un programa super simples que fixemos a semana 1
ou 2, que un valor de cubos.
Pero o que era interesante no momento sobre este programa é que
introduciu a noción de función personalizada escrito que nós mesmos escribiron.
A sintaxe do PHP é case o mesmo.
Aquí está o meu programa encima.
Teña en conta de novo ausente é calquera noción de inicio.
Comezar a escribir código, e iso é o que vai comezar executado polo intérprete.
Eu imprimir x agora é 2, presuntamente.
Entón eu reclamar cubing ...
Entón eu chamar a función cubo e pasar $ x
e asignar o valor de retorno a $ x.
Entón eu afirmo que é en cubos, e entón eu digo iso, o que espero
vai dicir que x é agora 8.
A sintaxe para a función en PHP é sempre así lixeiramente diferente.
Novo falta é o tipo de retorno.
Novo falta é o tipo de retorno e tamén falta é que outro tipo?
[Resposta do alumno inaudível]
Ben, ok, iso é bo. Imos volver a iso nun segundo.
>> Non temos, por exemplo, int aquí.
Non, por exemplo, ter int aquí porque, unha vez máis, en PHP
simplemente non precisa e non debe facelo,
pero hai esta nova contrasinal chamada función.
O PHP é case un pouco máis claro, porque cando quere unha función
vostede literalmente dicir función, é darlle un nome e, a continuación, unha lista separada por comas
se algún dos seus argumentos.
Non é preciso dicir nula ou algo así, e despois de retorno é o mesmo,
$ A $ * a * $ a.
O que tamén está falta? Sammy apuntou que aquí.
Na parte superior do ficheiro completamente ausente en PHP tamén é un prototipo.
Isto tamén é por deseño.
Linguas e intérpretes como PHP son máis espertos que C sempre foi
en compiladores como Clang.
>> Lembre que Clang, se non dixo a el que existe cubo,
Se non diga a el que printf existe como un prototipo
ou cun # include, así, el estaba indo a berrar con vostede e nin sequera compilar o código.
PHP e linguaxes máis modernas son moito máis intelixentes cando se trata de agasallo.
Eles van encargarase de ler todo o seu código
e entón berrar con vostede só se atopa en ningún lugar cubo.
Non importa se cubo é no fondo ou na parte superior ou mesmo nalgún ficheiro separado.
Linguaxes PHP e similares son agora intelixente o suficiente para ollar fronte
en todo antes de considerar como tendo cometido un erro.
Onde iso nos deixa?
>> Imos facer un último exemplo aquí en condicións,
e se eu abrir aviso conditions2.php tamén
sintaxe aquí é case o mesmo.
Está a usar readline vez de GetString, pero que a liña é a mesma que antes,
"Gustaríame un enteiro por favor."
Eu, entón, ter unha condición que, outra, e logo outra persoa,
pero funcionalmente este programa tamén é idéntico ao que fixemos semanas,
por iso, se eu executar esa cousa, php de conditions2,
e eu dar-lle un número como 23 -
Eu escollín un número positivo. Se eu darlle -1 eu peguei un número negativo.
Se eu dou 0 Eu, en realidade tomou 0.
Entón, quen lle importa todo isto?
Ben, un tipo divertido de exercicios aquí
polo menos para min era ir cara atrás e ver o quão rápido eu podería aplicar pset 5,
o pset erros ortográficos.
Lembre que había un ficheiro chamado speller.c,
e había un ficheiro chamado dictionary.c.
O que eu fixen foi tipo de gasto uns minutos e eu convertinse o código C
para o código PHP, e non imos gastar moito tempo en Speller
porque así como en pset 5, vostede realmente non precisa
gastar moito tempo en Speller en si, porque a súa atención estaba no dicionario.
>> Basta dicir que, se ler Speller,
este ficheiro aquí, que é moi fermoso equivalente ao código C
que lle deu a pset 5.
Acaba engadido preto de US $ nalgúns lugares.
Eu mudei os nomes das funcións determinadas, non existe no PHP.
Hai unha cousa adicional aquí, preg_match,
que é o xeito un pouco máis sofisticado de facer algo, pero imos voltar a iso eventualmente.
Pero en fin, Speller é case idéntica, e se ollar ben no fondo
o que, eventualmente, cospe é este aquí,
palabras con erros ortográficos, palabras de dicionario, palabras no texto.
Todo ben, entón o que é interesante agora é o seguinte.
No cumio do meu arquivo que estou esixindo dictionary.php.
Así como C # include PHP ten unha función especial chamada requiren
que practicamente fai o mesmo, esixen un ficheiro chamado dictionary.php.
Como podo ir sobre a implementación pset 5?
Deixe-me ir adiante e abrir un ficheiro aquí.
Deixe-me dar unha pequena referencia aquí.
E deixe-me crear un novo arquivo e comezar a chamar esta dictionary.php.
Deixe-me poñer en outro cartafol, para que poidamos facelo en directo.
E agora eu vou zoom in
Vou comezar o meu arquivo PHP con soporte aberto php pechado soporte.
E entón aquí había algunhas funcións que eu precisaba para aplicar a pset 5,
entón deixe-me comezar a aplicar algunhas das persoas,
para comprobación de función, que tivo que levar unha palabra en como un argumento.
Nós imos facer isto e volver a el en un momento.
>> Non había carga, función que tivo no que como un argumento?
Dicionario, para que o arquivo que eu realmente quería cargar.
Houbo dimensión, función que non recibe ningún argumento
e había-función que era o outro?
Descargar, que non tomou ningunha argumentación.
Estas son as catro funcións que eu teño agora aplicar en PHP,
eo que eu vou facer é ir adiante e facelo.
Unha morea de que usou unha táboa hash en pset 5,
entón deixe-me ir adiante e crear unha táboa hash en PHP.
Feito.
Tanto me dá unha táboa hash. Ben, por que?
Un deles, a variable é chamada $ táboa, só para evocar a idea dunha táboa de hash.
Os corchetes, con todo, recordar, representan o que?
Unha matriz, pero en matrices PHP non ten que ser indexada numericamente.
Eles poden ser matrices de asociación,
o que significa que pode ter chaves arbitrarias e valores.
>> Así como no pset 5, aqueles de vostedes que fixo implementacións táboa hash
probablemente introducido a palabra e despois inserido nunha cadea de listas ligadas,
ou almacenados en algún lugar valor de verdade ou algo nese sentido.
Vostede de algunha maneira lembrou-se do feito de que a palabra estaba alí.
Por agora, que vai ser a miña táboa hash,
e agora para ir sobre como implementar a función de verificación
Eu só teño mirar para dentro desa táboa hash
e ver se unha palabra está aí.
O que eu vou facer é que eu vou dicir, se
digamos isset, que é unha función de PHP que, literalmente, significa só que é o conxunto de claves,
así isset ($ táboa [$ palabra]
e así volver true.
É iso aí. Isto é pset 5 en PHP.
Ben, con xustiza, todo ben.
Else return false, entón non está alí.
O que realmente está a suceder aquí?
Ben, se a táboa de mesa ou hash aquí máis xeral-
é unha matriz asociativa que significa que pode indexar nel
con unha palabra como "palabra", e ten que volver algún valor.
>> Estamos medio de obter un paso á fronte de nós mesmos.
Sería unha especie de bo realmente cargou o primeiro arquivo,
para carga non é tan sinxelo, pero deixe-me ir adiante e látego
unha implementación moi rápida de carga.
Deixe-me ir adiante e dicir palabras recibe ficheiro de dicionario.
A función de ficheiros en PHP abre un ficheiro
e retorna para unha serie de todas as palabras que o arquivo,
só entrega-los para ti.
Isto foi unha gran dor tamén, non foi?
Agora foreach, esta é a nosa nova construción, foreach ($ palabras $ palabra).
Este ciclo vai comezar a iteração sobre as palabras de matriz
e asignar á variable $ palabra cada palabra no ficheiro
dende o primeiro para o segundo para o terceiro ao cuarto todo o camiño
entón eu non teño que facer o chat [i] notación e similares.
E o que eu estou simplemente vai facer para cada unha desas palabras
e almacena-lo na miña mesa de indexación na táboa
e despois facer realidade, porque para lembrar
que unha palabra no meu dicionario é todo o que eu teño que facer
e tipo de virar un pouco e dicir esta palabra na miña táboa hash é alí, é certo.
E se non está alí, eu non teño que poñer explicitamente falsa,
en caso contrario, eu tería que poñer falsa para todas as palabras posibles no universo.
>> É suficiente para min só para definir un valor de índice
a verdade se unha palabra é, en realidade, na miña táboa hash.
Agora, eu estou cortando un par de cantos aquí que eu vou acenar as mans menos por agora,
, Pero agora a función de carga está feito.
Eu cargar todas as palabras a partir do ficheiro nun array.
Eu iterar desa matriz e para cada palabra na matriz
Eu liga-lo na miña táboa hash cunha liña de código.
Isto é divertido. Vostede sabe como podemos implementar tamaño agora?
Ben, o tamaño é sempre moi doado, na xustiza.
Aquí podemos só facer retornar a conta de mesa.
Isto é moi fácil tamén, contar o número de cousas enriba da mesa.
Isto é realmente o tipo de non máis eficiente.
Eu probablemente debería ter un tamaño variable chamada para que poidamos facelo
en tempo constante, pero que é moi fácil.
Ah, e en seguida, descargar, se realmente queremos ser anal aquí
podemos dicir que é como descargar algo.
Vostede acaba de definir a variable igual a unha matriz baleira,
e se librar de todo o que estaba alí.
Non hai necesidade de conectar de balde.
>> Unha vez máis, eu corte algúns cantos, e pido desculpas para a asignación conxunto de problemas 5
quizais en C, pero agora vai adiante e facer iso,
Vou rodar a versión que escribín con anterioridade
só para que eu non cometa erros sintáticos calquera.
Deixe-me ir adiante e executar Speller. A utilización é a mesma.
Aquí está un arquivo de dicionario que contén só a palabra foo.
Aquí está un arquivo de texto que contén só foo bar.
Imos deletrear comprobar iso, Speller así, usando este ficheiro de dicionario sobre este arquivo de texto.
Non hai unha palabra grafada incorrectamente, bar, e listo.
Feito con pset 5.
Imos dar un intervalo de 5 minutos aquí, e nós imos volver e máis en PHP.
Todo ben, estamos de volta.
Imos facer-me odiar por un tempo.
Imos agora ver si realmente este non era un positivo
realmente implementar isto en PHP.
Concedido, levou 45 segundos para executar.
>> Pero imos adiante agora e executar as cousas.
Deixe-me ir adiante e executar unha versión C
de Speller, e imos executa-lo nun dos maiores arquivos,
que é a Biblia King James.
E iso aquí é en-imos para a nosa carpeta C,
Speller en King James, a 5.
Unha morea de palabras con erros ortográficos.
Ok, entón esta é a saída que probablemente ten aínda que ás veces son un pouco diferentes,
se ten todo funciona correctamente, e así que o tempo en total, para a comprobación ortográfica
a Biblia King James foi 0,38 segundo, de modo moi bo usar esa aplicación.
Agora déixeme ir a versión de PHP, que acaba de escribir.
Déixame correr Speller en King James.
Oops, ignorar este erro. Eu estou no directorio incorrecto.
Speller sobre King James, a 5.
Case listo.
>> Ok, o astuto observador vai entender que foi máis de 3 segundos de alí.
Ese é o verdadeiro tempo en execución.
Acontece que é preciso tempo para cuspir gran cantidade de texto fóra
porque buffer cuestións, pero longa historia curta,
que foi de 3,15 segundos de tempo de máquina, tempo de CPU,
versus o que foi un momento atrás?
Como 0,3.
Quero dicir, é unha orde de magnitude máis lento, entón onde é que
desaceleración ridículo benvida?
Ben, como foi o caso coa maioría todo o proxecto de decisión que fixemos
na clase ao longo dos últimos nove semanas hai case sempre esa compensación.
Ás veces, só un espazo entre, por veces, entre o espazo eo tempo,
espazo, tempo e esforzo de desenvolvemento, e de feito aquí, aínda que
que salvou unha cantidade enorme de tempo, quizais potencialmente 10-20-30 horas
tempo de desenvolvemento aplicar o corrector ortográfico
chicoteando o en só 45 segundos con esta linguaxe
o prezo que pagamos é que é unha orde de magnitude máis lento, como resultado,
e este é xeralmente o caso máis calquera linguaxe interpretada,
PHP, Python, Ruby, Pearl ou outros en que
se está indo a executa-lo a través dun intérprete e que lea o seu código
liña por liña, de arriba abaixo, de esquerda a dereita,
intermedio que vai levar moito tempo propio,
eo que estaba sentindo aquí en 3 segundos en vez de 0,3 segundo
é o feito de non existir este intermediario que ten que literalmente interpretar o noso código
liña por liña, e Deus me libre se está dentro dun loop
cun enorme arquivo contendo centos de miles de palabras.
>> Esta sobrecarga vai sumar e sumar e sumar e sumar.
Para unha ferramenta como esta probablemente non é a mellor linguaxe a empregar para a implementación
un corrector ortográfico se inmediatez é de interese para os seus usuarios e para ti.
Pero o luxo que temos en un momento e se
usar unha linguaxe como PHP ou unha morea de linguaxes interpretadas
no contexto da web, para que o asunto, ten o beneficio
que a Internet é moito máis lento que a maioría dos ordenadores.
Ten unha CPU GHz no seu computador, 2 GHz, talvez aínda máis nos días de hoxe.
Pero a realidade está en internet hai unha cantidade elevada de latencia
que para un navegador para falar con un servidor, aínda que vimos a semana pasada
que iso é moi rápido, metade dun milésimo de segundo ou así,
que tamén engade-se, e se está baixando cousas como unha imaxe
ou unha foto no Facebook ou recibindo mensaxes instantáneas sobre conversacións de Facebook,
Gchat ou similares, todos estes tempos de ida e volta
entre o navegador eo servidor de inicio para sumar,
o que fai a súa escolla particular da linguaxe, en moitos casos
non tan relevante, entón está moi ben usando unha linguaxe un pouco máis lento
como PHP ou Python ou Ruby
pero para os que existen upsides enormes para vostede e os seus compañeiros
e os seus amigos, porque pode aplicar cousas moito máis rápido.
E ademais, ten moito menos risco de fallos de seguridade determinados.
Non hai punteiros en PHP.
Non hai fallos seg que pode facilmente inducir
do mesmo xeito que podería no C.
Con C é super preto do hardware.
Con linguaxes PHP e semellante é unha especie de nivel superior, por así dicir,
con unha morea de defensas entre vostede eo que está realmente a suceder
dentro da máquina, e é só un troco.
>> Temos chegado ao punto de ter esas máis modernas, linguaxes de alto nivel
como PHP por mor das leccións aprendidas en linguaxes como PHP en C.
Pero se non entende o que está a suceder debaixo do capo de todo este tempo
certamente non pode tomar as decisións de deseño apropiadas,
e, por suposto, cando se trata de traballar nun lugar como Facebook ou Google
ou calquera destes lugares que están cada vez máis xogar con grandes conxuntos de datos
mesmo se voltar e facer PREMED e estamos a traballar con algúns MD
nalgúns gran conxunto de datos que inclúen pacientes e médicos
e como usar as ferramentas certas é inmensamente atractiva
porque doutra forma a súa análise dun conxunto de datos pode levar segundos,
ou pode literalmente levar horas.
Este é só un exemplo, para non frustra-lo con esforzo, canto máis
foi en C, pero para axudar a entender que cando implementar algo en C
realmente entender, ou en teoría, realmente comprender
como todo é ou debería estar traballando, e ten o control case total
sobre o que está a suceder debaixo do capó, e con esas linguaxes de alto nivel
ten que abrir man de máis control para as persoas que inventaron
e están suxeitos máis para as súas decisións de deseño que o seu.
Pero se tomamos como certo que o desempeño
non é tan importante na Web por mor destas outras cuestións,
velocidades de rede son só un pouco máis lento que as velocidades de CPU de calquera xeito,
así podemos clasificar de dar ao luxo de usar unha linguaxe un pouco máis lento
os upsides son podemos desenvolver cousas 10 veces máis rápido ou máis.
>> Imos ver como podemos comezar a usar isto.
Deixe-me ir a un cartafol
entre os exemplos de hoxe denominado frosh.ims,
e este foi realmente persoalmente motivado polo feito de que o primeiro
Eu escribín para a web anos despois de tomar CS50 e CS51
era un sitio para o programa de mensaxería instantánea Frosh, deportes Caloiro intramuros,
que na época era bastante anos, que no momento
non había ningún sitio para o programa, aínda que non houbese unha web,
e en canto había un inspector en Wigglesworth en que se quixese
para se rexistrar para VOLEI ou fútbol ou o que queira que cubrir un anaco de papel.
Vostede, entón, atravesar o patio.
Vostede, entón, bater na súa porta e deslize na súa porta ou a man ao Proctor
un anaco de papel co seu nome, se quere ou non que ser un capitán do equipo,
o que o deporte que quería facer, eo que estaba dentro do dormitorio
Era unha especie de unha maneira antiga escola de facer as cousas, e este foi un nobre
oportunidade de automatizar unha gran cantidade de este proceso.
É só ir ao sitio web. Escribe algo dentro
Vostede recibe un correo electrónico de confirmación, e listo, está feito.
>> Esta foi a primeira cousa que eu fixen, aínda que nunha linguaxe chamada Pearl,
pero é relativamente fácil de facer en PHP, e iso é unha especie de representante
dos problemas que pode comezar a resolver cando se pode expresar
programaticamente e non ten que confiar en cousas como sitios de Google
ou Excel ou ferramentas que son entregados a vostede.
Vostedes agora teñen a capacidade de facer cousas como esta.
Esta é unha versión super feo dun formulario,
pero imos usalo para o inicio da conversa en que este é
aproximadamente o que a forma parecía anos para nós
para permitir que as persoas na web para rexistrar para Frosh IMS.
Pedimos a un nome, unha caixa de selección para se ou non quería ser capitán,
home ou muller, e entón o que eles estaban no dormitorio,
e despois irían enviar este formulario.
Imos primeiro ollar debaixo do capó HTML que representa a esta páxina.
Deixe-me ir froshims0,
e como un aparte, para pset 7 Estou levando a concedido
os directorios e os cartafoles que estou poñendo as cousas dentro
Imos leva-lo a través exactamente onde a cousa ten que ir no aparello,
cales comandos mod ten que correr, entón non se preocupe con toda a
detalles estúpidos sincronización desde o get-go aquí.
>> Todo ben, aquí está froshims0.php.
Deixe-me rolar para abaixo, eo que é curioso aquí,
este é un arquivo PHP, mais o que está dentro del, de forma clara?
É un monte de HTML, e de feito, PHP orixes
realmente eran para ser unha linguaxe web-céntrica.
Un momento atrás, usouse para aplicar o exemplo cervexa,
as condicións de exemplo, o exemplo Ola, e iso é bo.
Podes usar o PHP como unha linguaxe de script
onde un script é realmente só unha nomenclatura dada a un programa rápido e sucio
ou algo que escribe en un guión ou, máis xeralmente unha linguaxe interpretada.
PHP é super útil para que, porque xa viu como rapidamente
relativamente podemos látego de programas en PHP.
Pero foi realmente deseñado para ser usado para a web,
e deseñado para a web no sentido de que notar-se aquí no inicio do arquivo
Eu comezan con <? PHP.
Entón eu teño unha morea de comentarios inútiles, concedidos, pero entón eu pechar o modo PHP.
Pero entón eu caer no modo HTML.
>> O que é interesante sobre o PHP é mesmo que o ficheiro remata en. PHP
xeralmente está feito para ser mesturados con HTML,
algún código PHP, algúns HTML.
E imos ver que, finalmente, podemos empezar a provocar os separados
e manter o noso HTML separado do noso PHP en conxunto,
pero as orixes do PHP realmente eran para darlle esta flexibilidade,
que se quere un pouco de HTML só escribilo lo, e que será
cuspir idéntica ao navegador.
Pero se precisa de técnica de programación,
algúns códigos de programación, tamén se pode colocar-lo no mesmo arquivo exacto, como veremos en breve.
Aquí está o meu HTML.
Eu teño un título deste Frosh para mensaxería instantánea.
Eu teño unha marca do corpo que ten un pouco de CSS con el para todo centro no medio,
e aquí eu teño un formulario que, ao parecer, vai ser presentado
para un novo ficheiro chamado register0.php, por iso imos ver que en un momento.
Está a usar un método chamado de post, que imos volver tamén.
Entón eu teño algunhas entradas de formulario, un nome chamado, cuxo tipo é o texto,
aquel cuxo nome é o capitán, cuxo tipo é opción,
e iso, nós non vimos isto antes, pero fai exactamente o que di.
Vai ter unha caixa de verificación en vez de unha caixa de texto.
Aquí debaixo tes un botón de radio, que é un destes botóns circulares
que pode escoller un ou outro.
>> Teña en conta que é deliberado que eu dei os dous botóns de radio o nome do xénero.
Isto é como comeza a exclusión mutua en que ten que premer
ou este ou aquel, e premendo o outro
ela desmarcada o outro, entón ten que darlles o mesmo nome
se queres que eles sexan mutuamente exclusivos así.
E entón para dormitorio, eu non creo que vimos que aínda, pero é un menú de selección, un menú desplegable.
A etiqueta para iso é de selección.
Vostede, entón, dar o menú desplegable un nome,
e entón tes unha morea desas opcións.
O primeiro, só por estética, é unha cadea baleira.
Eu só quería que o drop down para estar en branco por defecto,
e despois hai Apley, Canaday, Grays, e así por diante.
E noten a dicotomía aquí.
A opción no drop down ten un valor,
pero, a continuación, que ten un nome humano-friendly, que neste exemplo,
é idéntica, pero realmente quería ser anal poderiamos ter
o valor deste suspendido ser só a versión curta,
Grays, pero podemos realmente dicir Grays Salón de que o ser humano realmente ve,
pero iso non é tan interesante, entón eu só mantiven simple e fíxolles idéntica.
A continuación, na parte inferior, temos un botón de envío
o que vimos antes, pero Repare que eu só lle deu unha palabra diferente.
En vez de CS50 investigación dei o rótulo de "Rexistrar".
>> O resultado final é a páxina aquí, e de novo,
onde é que isto sometido?
El está sometido a algún arquivo, o valor do atributo de acción,
que foi register0.php.
Imos ver o que realmente acontece aquí.
Deixe-me ir adiante e enche este formulario, di David,
masculino, Matthews, e entón eu vou dicir se dar de alta.
Deixe-me afastar e prema en rexistrarse.
Ok, entón medio inútil, pero imos ver o que está realmente a suceder.
Teña en conta que a URL cambiou para ser register0.php.
O que é curiosamente ausente da URL, con todo, aínda que acaba de enviar un formulario?
[Resposta do alumno inaudível]
Ok, iso é só un usuario de Chrome ser agradable estes días.
Isto é realmente alí. Eles só esconde-lo para aforrar espazo.
Pero o pensamento bo, bo pensamento.
Cara ao outro lado da dirección, porén, o que falta? Si
[Estudante] A cadea de consulta.
A cadea de consulta, de modo lembrar dos nosos exemplos sinxelos de procura de Google.
Así que eu premer no botón enviar a URL
levoume a Google, pero despois houbo? q = ciencia da computación ou calquera cousa que eu tiña escrito dentro
Isto é porque usamos o método get co exemplo de investigación.
>> Esta vez, estamos usando o método en vez diso?
Publicar, e unha das distincións inmediatas
entre get e post é que o post non poñer a entrada do usuario na URL.
El escóndese. Aínda envía.
En realidade, o que estamos vendo no navegador aquí, como imos revelar nun momento
mirando register0, é que eu só estou vendo o contido
da matriz que foron sometidos desde o navegador ao servidor.
Pero o URL non ten unha?, Non ten ningún contrasinal
ou valores, e por que é isto?
Ben, pos permite enviar os datos do formulario para un servidor,
pero non poñelas na URL, entón que tipo de información é post
particularmente apropiado para, se cadra, cando está pedindo que o usuario
escribir entrada para un formulario?
Algo así como un contrasinal, algo así como o que máis?
Números de tarxeta de crédito.
Todo o que é levemente sensible probablemente non quere acabar na URL
mesmo porque iso significa que o seu compañeiro de cuarto ou membro da familia pode simplemente vasculham través
súa historia de internet e, a continuación, literalmente, ver as súas claves,
literalmente ver os seus números de tarxeta de crédito porque a maioría dos navegadores
Lembre-se da historia que quere URLs que estivo menos,
por iso, só porque iso sería unha mala idea.
Usando esconde mensaxe que detallan do usuario.
>> Ademais, como é que fai a carga de unha foto no Facebook?
Así, os únicos dous mecanismos que realmente pode usar,
aínda que hai algúns outros, máis arcanas, é obter e publicar.
Como posiblemente subida de unha foto a través dunha URL?
Pode realmente facelo.
Pode tomar un JPEG ou bitmap ou GIF e pode representa-lo en hexadecimal
ou algo chamado de base 64.
En vez de base 16 usa base 64, que esencialmente se parece
Caracteres ASCII, e realmente pode subir unha foto a través dunha URL
despois dun punto de interrogación, pero xeralmente hai límites de tamaño.
A maioría dos navegadores forzar URLs a non máis que 1.000 caracteres,
quizais 2.000 caracteres ou similares, de xeito que non pode cargar
10 MB foto no Facebook.
Por que usa post, así, entón polo de agora se pon os parámetros na URL,
o que é bo e útil ás veces, pero para algo sensible ou gran
post é o camiño a percorrer.
¿Que é register0 realmente está facendo aquí?
Ben, se eu abrir register0 aviso de que esta é unha páxina super sinxelo,
pero está demostrando o feito de que eu poida co-mesturan-se, para mellor ou para peor,
HTML con PHP.
Este arquivo enteiro, excepto para os comentarios na parte superior, son HTML
excepto por este cara aquí.
>> Observe no medio do meu código PHP,
no medio do meu HTML, eu teño sorte de, temporalmente,
entrou no modo de PHP.
Eu estou chamando unha función especial chamada de impresión r.
Isto significa imprimir recursiva eo que fai é recursivamente imprime
calquera variable que entrega-lo, punto e coma, sae do modo PHP.
E a etiqueta pre dálle texto pre-formatado,
mono texto espazo para que cada espazo que realmente velo.
Ela non desaparece. ¿Que é unha mensaxe?
Ben, o que é interesante e convincente sobre o PHP
é que sempre que enviar un formulario usando get ou post
todo o que é enviado a vostede por un navegador
PHP-se descobre que os pares de valores clave son,
descobre que non hai signos de igual, figuras fóra se hai un punto de interrogación.
El fai todo o traballo duro para ti, e entón el lle entrega unha matriz asociativa
contén todo o que o usuario introduciu no formulario.
Ben, o que fixo os campos desta forma ten?
>> Que tiña 4 campos.
Un deles era un campo de texto chamado nome.
Un deles era unha opción chamada capitán.
Un deles era un botón de radio chamado xénero,
e un era un menú desplegable chamado dormitorio,
para notar cando imprimir recursivamente
O contido desta variable especial.
Esta é unha variable global especial chamado literalmente $ _POST, todo en maiúsculas.
Esta é unha variable global especial que o PHP só crea para ti
e as mans a vostede para que poida acceder todo
que foi presentada a través dun formulario por un usuario.
E chamando r impresión sobre el, non faría iso nunha aplicación normal.
Estamos facendo isto para ver o interior desta variable,
eo que está dentro del, así, catro chaves,
4 parámetros http, por así dicir,
nome, capitán, sexo, dormitorio, e en seguida, os valores que o usuario
ingresaran cunha excepción.
Eu fixen tipo D-A-V-I-D.
Eu verifiquei a caixa, porén, para o sexo masculino, que aparentemente presentou un valor
só m ser sucinto.
>> Cando selecionei Matthews, que é o valor que foi seleccionado,
e iso é un pouco parvo, pero é a convención.
Cando chequei a caixa, un valor de en "on", foi presentado para a caixa de verificación.
Se eu non tiña comprobado, ningún valor sería enviado calquera.
Este é só dar insights sobre o que está dentro desta variable global especial,
e é tan especial que se chama dunha variable super global.
Existe en todos os lugares para dentro do seu código para que poida acceder a ela de feito.
Este non é que convincente, entón imos realmente usar o mundial de súper
e realmente tentar rexistrar a alguén.
En froshims1 Vou facer un cambio.
Eu estou cambiando a acción a ser register1.php,
e eu estou facendo algo.
Eu estaba medio avergoñado pola calidade da miña páxina alí.
É moi horrible, honestamente, polo que acaba
que pode usar moi facilmente na web
JavaScript outras persoas código CSS outras persoas
que teño escrito e de código aberto e dispoñible como unha biblioteca,
por así dicir, e, por exemplo, aquí estou usando unha biblioteca dispoñible libremente,
unha morea de código que alguén escribiu.
>> Twitter pasou a escribir este código, e chámase a biblioteca bootstrap,
e é só unha morea de follas de estilo CSS, un grupo de. css
que alguén escribiu e descubriu como obter todo de bo e bonito
para que persoas como nós pode se preocupar un pouco menos coa estética e concentrarse moito máis
sobre a lóxica ea programación real.
Ligando-nos con esa etiqueta, que é a mesma marca eu adoitaba lembrar para styles3.css anteriormente,
Agora teño acceso a un ficheiro chamado bootstrap.min.css.
Min significa só que minified-lo e eles se librar de todo o espazo branco e así por diante
só para asegurarse que non está me mandando máis bytes que realmente precisa.
Pero alí é unha morea de CSS, entón eu agora abrir a versión 1 do Frosh IMS
entender que o meu arquivo é sempre máis fermosa.
Agora aínda é só branco e negro, pero aviso que só usando a súa folla de estilo
e utilizar determinados recursos de que no meu formulario, non é sorprendente,
pero é sempre máis limpo do que era antes, e que o proxector non está facendo xustiza.
Hai pequenas liñas ao redor dos botóns grises e ao redor do campo de texto aquí
pero é sempre máis limpo do que era antes.
>> Agora, na xustiza, eu tiven que cambiar a miña reserva un pouco.
Esta é a versión 1, e entender que eu usei algunhas marcas novas,
e, honestamente, eu non tiña idea de como facelo ata que eu lea a documentación
á biblioteca de Twitter bootstrap, e eles me dixeron que se quere utilizar a nosa biblioteca
usar un elemento fieldset dentro da súa maneira,
poñer a palabra que quere amosar ao lado dun campo dentro dunha marca de etiqueta,
a continuación, dar a súa contribución dun nome, como antes,
e despois para a caixa de verificación, non só envolve-lo en un elemento de etiqueta,
usar algo chamado de clase, para que nós non vimos isto antes,
pero vai ver isto en un dos shorts pset 7 de.
Unha clase en CSS permite que faga algo moi parecido co ID,
pero antes, cando tivemos unha identificación co símbolo #
que foi a un e só un elemento.
O que é legal sobre unha clase que varios elementos poden ter a mesma clase
ou o material CSS mesma aplicada a el.
>> Pero, de novo, máis nas persoas que a curto, eo resto diso é só copiar e pegar
da súa documentación, onde eu engade unha etiqueta aquí e alí.
E ao final, porque eu inclui a etiqueta ligazón na parte superior,
todo parece máis bonito automaticamente
simplemente por ter marcado a miña páxina de forma que
Twitter espera, e hai moitas maneiras diferentes
de facelo, e iso é realmente moi apropiado.
Neste punto, o semestre, como podes ver en especificación pset 7, a
Buscando por aí, lendo sobre bibliotecas, utilizando CSS doutras persoas
e JavaScript para resolver problemas auxiliares
para o conxunto de problemas en si é seguro Recoméndaselle e é a forma
Web está construída nestes días, por estar sobre os ombreiros de outras persoas
para que poida realmente concentrarse nos problemas novos e interesantes.
Pero imos agora concentrar-se, unha vez máis, a lóxica.
>> Iso foi un desvío rápido na estética só para mostrar a dirección en que pode ir.
Vou volver para o máis feo un por agora só porque
non hai distraccións con material Twitter, e deixe-me ir adiante e abrir
froshims2, o que, unha vez máis, difire só na acción register2.php,
e imos dar un ollo ao que o efecto é aquí.
Deixe-me ir adiante e escribe en David.
Eu non vou ser o capitán desta vez.
Eu vou dicir masculino, Matthews, rexistro.
Drogas. Ok, iso é un parafuso ata da miña parte.
Agarde.
Register2, liña 22, baleiro ou-non.
Imos actualizar.
Ok, ao someter este formulario o que pasou?
Eu escriba David, comprobada masculino, premendo Matthews, rexistro.
Vostede está rexistrado. (Ben, en realidade non.)
Este é claramente un paso alén de só imprimir o contido de algunha variable,
pero o que é o ficheiro realmente está facendo?
En register2.php
entender que eu teño un novo código.
Dentro do meu corpo tag eu teño esencialmente unha persoa construír,
senón porque eu estou co-mestura que cun pouco de HTML
Eu teño que entrar e saír do modo PHP e cara atrás, por iso imos ver o que eu estou facendo.
>> Na primeira liña aquí estou dicindo se é o caso
que o posto de super global está baleira para a clave de nome,
Noutras palabras, se o usuario non me dar un valor ao nome do formulario,
a continuación, baleirar vai voltar true, pois o valor está baleiro.
Ou-notar as barrotes verticais, o xénero é baleira
dentro desta super especial global, o que, unha vez máis, representa o contido do formulario,
ou o dormitorio é baleiro, entón eu estou indo a ir adiante e berrar co usuario.
Como? Ben, repare que eu vou dicir que ten que proporcionar o seu nome, xénero e dormitorio.
Imos realmente inducir ese erro.
Deixe-me volver á miña maneira. Deixe-me volver cargar para limpa-la.
E eu só vou dar-lles David, e non precisan saber de onde eu vivo.
Registre-se. Ao parecer, eu teño que dicir-lles onde eu vivo.
Debe proporcionar o seu nome, xénero e dormitorio. Volver.
>> E eu podería clic para voltar á forma, pero por que isto?
Ben, en que o nome se non estaba baleiro, pero sexo era, e dormitorio foi,
así que esta expresión enteira avaliado como verdadeiro, e aínda que a sintaxe é un pouco novo,
novo, entramos PHP xeito, familiar if,
pero a parte de novo aquí é só esta colonos, e eu estraguei todo, omitindo un paréntese
por accidente, pero observar o colon, e iso significa
aínda que nós estamos saíndo PHP todo para
que segue debe ser cuspido completa para o navegador
ata que vexa un bloque de outra persoa, como facemos aquí,
caso en que debería cuspir iso
ata ver o endif, de ningún xeito sintaxe un pouco nova
que me permite cambiar entre HTML e PHP.
Podemos borrar iso eventualmente, pero, por agora,
é unha especie de unha maneira convincente de verificación de erros no formulario.
>> Agora, eu digo que non está realmente rexistrado porque obviamente, non fixemos nada, pero os datos,
entón imos realmente tentar facer algo legal.
En froshims3 a única diferenza é que eu vou presentar para register3,
de xeito que o código HTML non é o mesmo.
En register3 entender iso.
Este é un tipo de sexy.
Arriba Estou usando unha declaración esixir, de xeito que este é como # include.
Esta vez non é stdio.h ou algo así.
É unha biblioteca PHP, e este é chamado PHPMailer.
Como eu sabía de incluír precisamente esta secuencia citada?
Lin na documentación, por iso, cando me dixeron que poñer isto na parte superior do arquivo
Se quere usar unha biblioteca especial chamada PHPMailer que fai o que di.
El permite enviar correo-e PHP.
Agora imos rodar máis.
>> Aviso para comezar Eu estou no modo de PHP ese tempo,
agora entender ata aquí despois de importar esta biblioteca,
por así dicir, estou facendo algunhas checagens.
Se é o caso, que o nome non está baleiro
e de xénero non é baleiro-notar os puntos de exclamación-
e dormitorio non é baleira, entón o usuario loxicamente cuberto o formulario, polo menos o suficiente.
Eu non me importa se eles están capitán ou non. Eu só teño o seu nome, xénero e dormitorio.
Se eles teñen enchido os para fóra, de xeito que ningún deses campos están baleiros
esta é lixeiramente nova sintaxe.
PHP, como un aparte, é unha linguaxe de programación orientada a obxecto
que algúns de vostedes poden lembrar de APCS ou similares.
Por agora, non se coñece, só sei que para utilizar esta biblioteca
ten que escribir unha liña de código coma este cunha palabra nova,
literalmente unha nova palabra chave chamada nova.
Pero, ademais, temos unha sintaxe familiar.
É un operador de frecha, o que é semellante ao que foi utilizado para estruturas no contexto punteiros.
Para hoxe PHP non ten punteiros,
pero sei agora que dentro da variable de correo
é esencialmente un tipo de un punteiro para unha biblioteca especial
que alguén escribiu, e se eu queira acceder a funcionalidade específica
dentro da biblioteca que fago, como en C, use o operador frecha,
aínda que estes non son realmente punteiros.
É unha especie de versión propia do PHP mesmo.
Isto significa ir á biblioteca e chamar a función IsSMTP.
SMTP, recall, dos nosos guerreiros do líquido refírese a enviar correo-e,
e que só significa usar un servidor de correo-e a este IMS Frosh rexistro.
>> O anfitrión é que quero usar?
Ben, Harvard, se Google volta, ten un servidor de correo-e chamado smtp.fas.harvard.edu.
Se está xogando xunto na casa ou vostede vive nunha rede Comcast
que podería ser algo así como smtp.comcast.net.
É totalmente depende de onde vostede vive e que o seu fornecedor é.
Despois que eu estou indo para o meu enderezo de arbitrariamente ser jharvard@cs50.net.
Estou indo entón para definir a dirixir a jharvard@cs50.net.
A única forma que eu sabía que estas funcións foron chamados SetFrom e AddAddress
é, unha vez máis, eu li a documentación.
Isto non é unha especie de pase de máxica coñecida de todos os desenvolvedores.
Entón eu definir un asunto para "rexistro".
E agora esta liña é un pouco feo, porque o que o operador punto significa en PHP?
Alguén sabe?
Concatenar.
C, é unha dor no pescozo para concatenar dúas secuencias conxunto.
Ten que tratar con malloc ou realloc ou todas esas cousas
só para aumentar a lonxitude dunha corda.
No PHP, Javascript e noutros idiomas
xeralmente pode facelo cun único personaxe.
Neste caso, o punto significa tomar esa cadea aquí
e engadir a el esa secuencia.
>> Ah, e por certo, engadir a el esa secuencia,
que pasa a ser unha variable dentro dese mundo super.
A continuación, engadir a ela unha nova liña, polo tanto, todos estes puntos significa só
continuar a facer unha secuencia maior e máis e máis grande,
e non se preocupe con todo sobre malloc ou similar nunha linguaxe como esta,
e hai outras formas de facelo, pero este é un dos máis rápidos
formas de poñer-lo para fóra.
O que se está facendo?
É a creación dun corpo de correo-e que vai dicir o nome: Capitán: Xénero: Dormitorio:
todos en liñas separadas, e entón, finalmente,
unha liña de código, e eu vou ignorar isto por agora.
Se == false significa só que algo deu mal,
pero a maxia acontece aquí.
Enviar correo-e significa enviar este correo-e.
Imos ver o que o resultado líquido é.
Na parte inferior do ficheiro, observe que vai dicir que está realmente rexistrado
se eu chegar a ese punto.
Se, porén, o usuario romper, observe que comezamos este
a condición por aquí, se non está baleiro e non branco
e non baleirar imos enviar o correo electrónico.
Se non, imos enviar esta liña de código,
que vai ter o efecto, como podes ver no pset 7, de redireccionar ao usuario
de volta cara a onde se viñeron froshims3.php.
>> Dedos cruzados, se non, este vai ser a demostración máis decepcionante hoxe.
Aquí imos nós.
Deixe-me abrir a miña caixa de entrada de correo electrónico para jharvard en Gmail.
Ningún correo-e agora. Todo ben.
Agora déixeme abrir froshims3, que é o terceiro e último exemplo, imos ollar para aquí.
Ok, aquí imos nós.
Nate, que vai ser macho, capitán de, digamos, Apley.
Registre-se. Ok, está realmente rexistrado.
Agora, se eu rolar para o meu correo-e, oh, meu Deus.
Acabo dinámicamente enviou un correo-e na web.
>> Imos deixar con esta nota.
Un vídeo para a próxima charla que perdemos. Ata a próxima semana.
[CS50.TV]