[Powered by Google Translate] [Setmana 8]
[David J Malan] [Harvard University]
[Aquesta és CS50.] [CS50.TV]
>> Benvingut de nou.
Això és CS50, i aquest és el començament de la setmana 8.
Fa un parell d'oportunitats aquesta setmana,
entre ells aquesta xerrada aquí, en la qual alguns aliments seran servits.
Per més detalls, fes un cop d'ull a les diapositives que estan en línia.
I també un altre esdeveniment d'aquesta setmana pel nostre propi Carriero Thomas.
És un dels exbecaris de Head CS50 d'ensenyament que ara està en Dropbox,
i ell és el tipus que ens va connectar amb la saps què,
així que si vols més que el cap de la seva xerrada d'aquesta tarda per Dropbox i més.
CS50 dinar és aquest divendres.
S'uneixen a nosaltres, si li és possible, 1:15, com sempre, en Fire and Ice.
>> I ara ens submergim en una cosa anomenada Seminaris.
Els nostres Seminaris CS50, record, són aquestes classes opcionals dirigides pels companys docents
i els assistents del curs i amics del curs,
gent d'un grup al campus anomenat ABCD, que és un grup de
tecnòfils al campus, així com d'un grup anomenat HCS,
la Harvard Computer Society, els estudiants que estan igualment interessats en la computació.
Llista d'enguany inclou seminaris de seminaris sobre Android i iOS i JavaScript
i PHP, Unix, Vim, i més, per adonar-se que aquests seminaris s'aproximen.
Per fer reserves per qualsevol d'ells es dirigeixen a aquesta URL allà.
A continuació, es publica a la pàgina web del curs dels temps i llocs, un cop es finalitzin.
Però val la pena saber que hi ha 5 anys de seminaris anteriors disponibles en línia,
molts dels quals estan encara molt actual en termes de tecnologies que podeu,
vull jugar amb per als seus projectes finals, de manera que el cap allà per alguns vídeos disponibles d'aquest.
>> CSS, aquells de vostès que estan familiaritzats amb CSS i,
Què és en poques paraules?
Què és CSS?
Es fulls d'estil, i què significa això?
Què és el que fan per nosaltres, CSS?
Molt bé, anem a escalfar amb una més fàcil, HTML, llenguatge de marques d'hipertext.
Què és el que fan per nosaltres?
Qualsevol persona en absolut?
S'està fent molt difícil fer aquestes preguntes.
HTML, HyperText Markup Language.
Sí? No?
[Resposta dels estudiants inaudible]
Bé, bé, que ens permet marcar text per mostrar en un navegador web.
No és un llenguatge de programació.
És realment un llenguatge de marques, el que significa que indica al navegador com mostrar
informació, de manera que la simple encarnació d'aquesta com hem vist
és una cosa super simple com boldfacing, obert abraçadora abraçadora tancada b diu
fan d'aquest text en negreta, i que en realitat és només una de les moltes maneres
en el qual podem fer això, i de fet, en aquests dies un millor enfocament
per estilitzar la teva pàgina web, fent les coses en negreta i cursiva
i centrat i justificat i similars, no es porta a terme a través de les etiquetes HTML només
sinó més aviat amb una tècnica anomenada CSS, Cascading Style Sheets.
Aquest és un llenguatge en si mateix.
Això tampoc és un llenguatge de programació, però-
a tots, aquest és Dan, que manté acompanyar avui.
Algunes dificultats tècniques. No és un problema.
>> CSS ens permet estilitzar una pàgina
mitjançant l'establiment del que es denominen propietats, així que anem a fer una ullada a això
mitjançant alguns exemples bàsics.
Déjame entrar en l'aparell avui.
Tinc la font 8 Dilluns directori aquí,
i jo vaig a anar a un directori anomenat CSS, on tenim un munt
d'arxius que ens esperen aquí,
i en aquesta carpeta tenim, per exemple, search0.html des de l'última vegada.
Ara, recordo amb search0 de partir en aquesta nota
per tipus d'implementació de Google o en realitat només la part davantera per a una setmana o així que fa,
i l'avís que teníem algunes etiquetes noves allà.
Vam tenir h1 per un títol gran, en negreta,
manera, el que ens va permetre tenen de fet un formulari HTML per entrada d'usuari.
Acció, quin va ser el significat d'un atribut d'acció
en l'etiqueta de formulari HTML?
Quin era el significat d'aquesta acció?
Vaig a fer això avui.
L'acció és la destinació a on la forma serà sotmès.
El fet que l'acció que diu = "google.com / recerca"
significa que quan l'usuari fa clic al botó d'enviar o equivalent
independentment de la forma que van omplir els camps seran enviats al nostre servidor no
o el nostre aparell, sinó més aviat a la adreça explícita a Google.
I el mètode que utilitzarà s'anomena aconseguir,
i obtenir, per ara, és només una tècnica per passar informació al llarg d'un servidor web
a través de la URL, així que anem a fer un ràpid cop d'ull a com funciona això.
>> Tingueu en compte que hi ha una entrada el nom és q
el tipus és text i després una segona entrada del tipus de presentar
el valor és CS50 Search, i de fet, si ens obrim aquest arxiu aquí
search0.html, és una forma súper simple,
i si busco alguna cosa com la informàtica
i després prem enter o feu clic a Cerca CS50
compte que el que passa és més enllà d'arribar a Google
He específicament acabar en aquest URL a la part superior,
google.com / search? q = ordinador + ciència,
i ciències de la computació és, òbviament, el que he escrit polz
El + només significa que és on un caràcter d'espai era,
i es fa pel navegador només per assegurar-se que no hi ha
confusió i l'espai en blanc a l'adreça URL real.
I llavors q, és clar, és el nom del paràmetre.
No hem vist com, el programador, en realitat es pot accedir q encara.
Podem suposar que Google sap què fer amb això aquí,
però arribarem al moment oportú avui.
>> Però deixeu-me fer una ullada en comptes de search1.html,
que s'assembla una mica diferent perquè he decidit que aquesta forma aquí estava una mica coix.
Vull dir, que està a la part superior esquerra.
En realitat no hi ha estètica a la mateixa, i per això vull estilitzar aquesta
una mica més com Google, la pàgina d'inici, recordar,
encara que és possible que no el visiten molt sovint, es veu així avui per Halloween.
Si en lloc d'obrir una versió d'aquest arxiu, 1.html recerca, m'he centrat.
, Still bastant lleig, però almenys ara he començat a controlar l'estètica d'aquesta pàgina
no només per marcar fins dels mateixos.
Fem una ullada a una recerca, i no hi ha realment només una diferència aquí,
que podria saltar a la vista, o potser no,
però quina és la línia d'un fragment o de la diferència?
>> Hi ha un atribut d'estil, pel que resulta que en HTML
la majoria dels elements, la majoria de les etiquetes poden tenir un atribut d'estil en ells,
i dins d'aquest atribut style és una cadena entre cometes,
i que la cadena entre cometes és CSS.
Vostè pot posar fulles d'estil en cascada allà
especificant com un nom de propietat
seguit de dos punts seguit d'un valor.
Això és una mica d'una decisió de disseny desafortunat fa alguns anys
que CSS és un llenguatge en si mateix,
però sintàcticament és molt diferent d'HTML.
En aquest cas, veiem que dins de la meva pàgina web, que és HTML,
Tinc CSS dins d'aquestes cites, i la convenció de CSS
és que vostè té el que s'anomena una propietat seguit, novament, dos punts,
seguit pel valor d'aquesta propietat, així que no hi ha signe igual.
No hi ha cites més.
És només està separada per dos punts parell de valors clau,
i la línia de text fa exactament el que diu.
S'alinea el text en el cos de la pàgina, que és realment el coratge de la pàgina,
al centre.
>> D'acord, llavors el resultat final, per ser clars, és aquest.
No tot el que més sexy, però almenys està centrat i una mica més al real de Google.
Però, i si en comptes obrir la versió 2 d'aquest
i assenyalar aquí una nova etiqueta en total?
Ara, a la capçalera de la meva pàgina, que abans només havia de etiqueta
en tots els exemples anteriors?
S'acaba de tenir això, el títol.
Fa un moment l'etiqueta del cap es veia així.
Ara, en canvi, té un estil dins de l'etiqueta de la mateixa,
i això també, demano disculpes, sintàcticament es veu molt diferent d'HTML,
però t'acostumes a ell, per la qual cosa dins de l'etiqueta d'estil
Ara puc factoritzar el que era fa un moment
un atribut, l'atribut d'estil, i ho puc posar a la part superior de la meva pàgina.
>> Per què?
Bé, aquest és un pas cap netejant les coses, igual que en l'escriptura de codi C
nosaltres de vegades escriure funcions per factoritzar la funcionalitat comuna.
És només una mica més net per iniciar factoring coses com l'estètica
a un lloc central en lloc de tenir-ho tot s'intercalen al llarg de la seva HTML.
Això també fa el que diu, encara que hi ha una mica de nova sintaxi.
Això aquí és un selector, i el cos només significa seleccionar l'element del cos
i aplicar les propietats a la mateixa.
Doncs bé, la propietat és exactament el mateix.
Per si de cas he afegit un punt i coma al final,
que tendeix a ser la convenció, i m'he embolicat tot aquest immoble
entre claus perquè jo podia tenir coses diferents aquí.
De fet, em podria dir alguna cosa com a color: blue;
>> Ara bé, això tampoc serà un pas cap al no res tot el que més bonic,
però si ara tornar a la versió 2 que he fet com a mínim ara el cos de la meva
pàgina de text de tot blau.
El botó es manté igual perquè és una entrada. No és pur text.
Però tota la resta que és text, com CS50 Cerca a la part alta, és de color blau fet.
Un cop més, tot el que hem fet ara és eliminar del cos de l'etiqueta, rètol,
l'atribut d'estil, i hem factoritzat un cop d'ull aquí.
Això no és una gran millora, però si prenem un pas més enllà
adonar-se del que podem fer en aquesta tercera versió aquí.
>> A search3.html la pàgina web és gairebé idèntic
a excepció del que nou tag ara?
Link, de manera que aquest no està molt ben anomenat
perquè no es va a associar en el sentit d'un enllaç clicable.
Més aviat, estàs de sort fent l'equivalent de # include en C
de manera que l'etiqueta d'enllaç amb un atribut href
i un atribut rel diu que endavant
còpia i enganxa el contingut d'un arxiu anomenat search3.css aquí, essencialment.
No tot això, però aquest és l'esperit de la mateixa.
Diu que anar obert aquest arxiu, search3.css,
i tractar-la com si l'usuari hagués escrit aquí mateix a la capçalera de la pàgina
igual que ho va fer en l'exemple anterior.
Search3.css, per la seva banda, és bastant simple.
En realitat, només es guarden el que estava fa un moment
en l'etiqueta d'estil, però no tinc factoritzar un cop d'ull aquí al seu propi arxiu.
>> Tot i que no he passat molt de temps en absolut en HTML o programació web
només intuïtivament el que és la motivació, potser, per factoritzar
aquest petit fragment de CSS, fins i tot en el seu propi arxiu
i després fins i tot amb aquesta etiqueta link aquí?
[Resposta dels estudiants inaudible]
Bé, és més fàcil de llegir en el sentit que té la CSS en un arxiu CSS.
Vostè té el seu codi HTML a l'arxiu HTML, pel que és més fàcil de llegir en aquest sentit.
Quina altra cosa podria ser convincent? Si.
[Resposta dels estudiants inaudible]
Sí, perquè pugui incloure'l en moltes ocasions, de manera que ara estem fent aquests
exemples bàsics amb arxius individuals, però suposo que en realitat estàs fent
un lloc web real com la teva voluntat per pset 7 o el projecte final potser,
i desitja tenir diverses pàgines web, com és bastant comú en
la web actual Wide, i seria una espècie de esguerrat
a haver de copiar i enganxar el mateix color blau
i el mateix text alineat centre en cadascuna d'aquestes pàgines.
Més aviat, té més sentit per excloure, com hem fet en C
amb l'arxiu. h, el va posar en un lloc central,
en aquest cas search3.css, i després permetre que qualsevol arxiu
a la seva pàgina web per incloure aquest arxiu en realitat a través d'aquesta etiqueta aquí a la línia 16.
Com sol ser el cas, vam començar amb la versió 0, quin tipus d'obres
però no és necessàriament la millor, i amb cada pas,
recerca d'una recerca de 2, 3 i ara busca que hem pres aquests passos de nadó
cap dissenys que són una mica més netes i són més preparatòria
per les pàgines més complexes que podem fer en el futur.
>> Permetin-me obrir un últim exemple aquí només per mostrar
una pàgina encara més estilitzat, però primer anem a veure el codi HTML.
Això és search4.html, i noti que estructuralment és gairebé el mateix
excepte per la introducció d'una nova etiqueta, DIV.
Div és una etiqueta que introdueix una divisió de la pàgina.
Vostè pot pensar en això com un rectangle invisible.
D'alguna manera crea una franja d'àrea en la pàgina web
que es pot estilitzar tots alhora.
El que he fet aquí és la següent.
A l'interior del meu cos de l'etiqueta, que ha estat allà tot el temps,
Dic crear una divisió de la pàgina aquí a través de les línies 45 a la 47,
i això significa essencialment donar-me un rectangle invisible al llarg de la part superior de la pàgina.
Llavors dóna'm un segon rectangle, encara que invisible, més avall,
i s'identifiquen pel nom de contingut i, a continuació, finalment,
dóna'm una tercera divisió de la pàgina a la part inferior
anomenat ID.
Anem a veure què he fet això en un moment,
però conceptualment Tinc una divisió de capçalera.
Tinc una divisió de continguts, i tinc una divisió peu de pàgina de la pàgina
tot i que aquests són només en el marcat.
L'usuari no va a veure 3 rectangles,
però tipus d'estructura hi ha darrere de les escenes
que estan realment presents.
>> Ara, què hi fa? Per què ho fan realment?
Tota la resta a la pàgina és el mateix que hem vist abans.
Aquesta és la meva manera. Aquí està la meva entrada, la meva entrada, un salt de línia i així successivament.
Aquí està una imatge, però, així que ja veurem on va sortir en un moment.
Aquí hi ha un peu de pàgina, que és nou, només perquè volia introduir
contingut una mica més aquí.
Si ens desplacem fins notar que l'ID d'aquest div és capçalera.
La identificació d'aquest div és el contingut i la identificació d'aquesta és peu de pàgina.
I com el seu nom ho indica, quan es té un atribut ID
en HTML, per definició, ha d'identificar exclusivament
un dels elements, una de les etiquetes a la pàgina.
La responsabilitat recau totalment en vostè recordar que té un ID de capçalera ja.
Vostè té un peu de pàgina. Vostè té un ID de contingut ja.
L'equip no va a entendre el que és una identificació disponible per a vostè,
de manera que accidentalment podria donar una identificació 2 etiquetes de capçalera,
i això seria un error.
>> Cal tenir en compte el que han creat,
però una vegada que hagis fet això fixa't en el que podem fer aquí.
Ara pot especificar en la meva etiqueta d'estil en la part superior
o equivalentment en el meu arxiu CSS, si jo encara estava fent servir aquesta versió,
Puc dir # header, i és el que vol dir que qualsevol etiqueta
en aquesta pàgina web té un ID de capçalera
i #, només per convenció humana, representa l'ID.
El signe de sostingut o la lliura signe representa identificació.
Capçalera és el nom que li vaig donar.
Això vol dir aplicar aquesta propietat CSS
a qualsevol variable d'aquesta pàgina té un ID de capçalera.
El mateix passa aquí.
Aplicar aquesta propietat, que passa a ser el mateix, a qualsevol element
amb identificador el contingut, i després aquí
adonar que tinc una mica més de luxe amb peu de pàgina.
Qualsevol element el ID és peu de pàgina, de la qual no pot ser només un, per definició,
seguir endavant i fer la seva mida de font més petit,
seva font en negreta pes, el seu marge de 20 píxels.
>> Què significa això?
És només un marge a la part superior, inferior, esquerra i el de dreta.
Això vol donar-me un marge de 20-píxel invisible al seu voltant
només per empènyer tota la resta fora una mica, que es pot fer en Word,
Microsoft Word o Pages o similar.
I després alinear text central.
Anem a veure el resultat final, i després anem a tornar fins el fragment restant de CSS allà.
Aquesta és la versió 4, l'últim dels exemples de recerca, i és molt més sexy, molt.
Ara, per ser justos, només Google "font generador google logo".
I això em va permetre crear un GIF, un format d'imatge, que sembla que no.
De fet, vostè pot fer això també.
Tenim "google logo generador fonts."
>> A veure si podem fer això.
Bé, crec que aquest és el lloc web que he fet servir.
Podem dir Ec 10, per exemple, i fer que el seu propi.
Vostè pot jugar amb això tot el dia i després a la dreta feu clic
i després descarregar el GIF real, que és tot el que vaig fer.
I de fet, és per això que en el meu HTML, recordar, aquí
Jo tenia una etiqueta d'imatge, que vam veure breument la setmana passada
la font és logo.gif.
I el que de nou va ser la motivació per tenir aquest atribut alt,
aquest atribut alternativa?
Si.
[Resposta dels estudiants inaudible]
Bé, de manera que 2 raons realment, si el navegador no pot aixecar la imatge
perquè vostè té una connexió de xarxa lenta o la imatge està danyada
o alguna cosa així com que almenys l'ésser humà pot veure "CS50 recerca"
i després també per raons d'accessibilitat.
Si vostè té un usuari que és cec i utilitza un lector de pantalla
de manera que, òbviament, no pot veure les imatges almenys poden
escoltar el text si el seu ordinador se'ls parla.
>> En general, aquesta és la millor pràctica quan es tracta de l'accessibilitat de les pàgines
perquè els usuaris fins i tot en aquesta situació pot sentir o veure, per dir-ho,
què és el que està a la seva pàgina.
Hi ha una altra cosa que el vaig fer aquí
que és una mica interessant, i veurem més sobre això en conjunt de problemes 7
a través d'un dels curts dirigits per un dels companys docents.
Però # contingut es refereix a l'etiqueta
amb identificador el contingut, però després hi ha un espai en blanc, i després hi ha la paraula d'entrada.
Bé, l'interessant de CSS és que es pot
es refereixen a les etiquetes en una pàgina classificar de forma jeràrquica,
i el que això significa fragment de CSS és trobar l'etiqueta
amb identificador el contingut, i després aplicar les següents propietats
a totes les etiquetes d'entrada que són descendents de contingut,
és a dir que s'aplica sagnia dins d'ella.
Indentació, de nou, només és important per a l'equip, no a la humana,
però per convenció guió coses a mesura que aprofundim en una pàgina,
així que això significa aplicar un marge de 5 píxels a qualsevol element d'entrada
que en algun lloc dins o niat dins
l'element el ID és el contingut.
>> Qui fa això s'aplica?
Bé, en realitat hi ha només aquests 2 nois aquí.
Tingueu en compte que a l'interior de la forma hi ha 2 entrades,
ja que ha estat durant tots aquests exemples.
Però cal notar que les 2 entrades succeeix que llisca per l'interior,
encara que una mica profunda, un parell de capes de sangria,
dins de l'etiqueta amb identificador el contingut.
Què vol dir això?
Si anem al navegador aquí es pot veure molt lleugerament-
m'ho dius a mi apropar-que hi ha una mica de farciment entre el botó
i entre el camp de text.
>> Permetin-me temporalment apaga això.
Deixa sortir el meu CSS, i em va deixar anar endavant i només
canviar aquest marge de 5 píxels a 0 píxels.
Deixa anar per davant i després i guardar l'arxiu, torni al motor de cerca
i tornar a carregar i veure el centre de la pàgina.
Tot es comprimeixen junts, i quan per primera vegada assotat aquest exemple fins
Vaig pensar que es veia estúpid amb el camp de text i després en el botó immediatament sota.
Volia coixinet ell una mica, així que va introduir marges.
El que no farà a classe és anar a través de les diverses dotzenes
CSS propietats que existeixen perquè, de nou, hi ha coses com la mida de font,
pes de la font, marges, alinear el text, i una dotzena d'altres pocs,
i li refereixen en conjunt de problemes 7 a diversos tutorials en línia
i les referències que li permeten recollir aquestes coses.
Però el que realment importa al final del dia
>> és entendre com aquestes coses s'apliquen.
Un cop més, si tenim l'estil dins de l'etiqueta dels quals
pot anar als selectors, el tipus d'identificadors que especifiquen
A qui desitja aplicar aquestes propietats,
i després de posar les propietats com parell de valors clau
separats per dos punts i va acabar amb un punt i coma,
o es pot extreure de tot això i posar-ho en un arxiu CSS
en si mateix.
Molt bé, qualsevol pregunta sobre els conceptes
o el gran quadre de CSS?
Tu nou veurem més d'ell en pset 7,
però seguirem en general bastant simple.
No? Està bé.
És hora que un llenguatge de programació real,
i tornarem a una mica de CSS en forma d'un exemple.
PHP és en realitat un llenguatge meravellosament accessible
en què estigui sintàcticament gairebé equivalent a C.
En altres paraules, si vostè sap C, ja saps PHP per a la major part,
almenys sintàcticament, tot i que hi ha algunes noves característiques
i alguns conceptes nous que haurem de mirar.
>> No obstant això, per a la major part, ara que la transició de C a PHP
la major part del nou material és realment en el panorama general,
com s'utilitza un llenguatge de programa al web en lloc de
en la línia d'ordres o en un missatge parpellejant, ja que hem estat fent fins ara.
Com a referència, especialment amb pset 7 i el projecte final en endavant,
s'aprofiten d'aquesta URL aquí si voleu llegir sobre les formalitats de PHP.
De fet, és com un llibre de text en línia gratis amb eficàcia,
i vostè també trobareu que el que és realment bo de PHP
és que hi ha centenars de funcions que vénen amb el mateix,
mentre que en C que no necessàriament tenen accés a
més funcions que estaven a la biblioteca matemàtica, la biblioteca CS50.
En PHP i un munt de llengües modernes, Python i Ruby, entre ells,
, Tindrà accés a tantes funcions més, el que significa que has d'escriure
molt menys codi, ja que pot estar dret sobre les espatlles dels altres
que ja han escrit algunes coses per a tu.
>> Fem un ràpid recorregut per la sintaxi de PHP i després escriure alguns exemples.
El millor de PHP, abans que res,
és que no hi ha funció principal.
Per escriure un programa en PHP que acaba de començar a escriure codi,
i vostè no s'ha de preocupar de principal.
No hi ha int. No hi ha retorn.
No hi ha argv, argc que es requereix quan s'escriu el programa.
Més aviat pot simplement començar a escriure codi, i això és en part
pel fet que PHP és el que s'anomena un llenguatge interpretat.
C va ser compilat, i que va ser compilat en el sentit que s'iniciï
amb el codi font, s'executa a través de Clang, que és un compilador,
i, finalment, després d'una certa quantitat de passos que obtenir el codi objecte, 0s i 1s.
PHP i Python i Ruby i Pearl i altres
diferents tipus d'idiomes que no els compilar.
No et vas a partir del codi font de 0s i 1s.
Vostè acaba d'executar el codi font, i s'executa el codi font
escrivint en un arxiu de text normal, acabat en. php en aquest cas
en lloc de. c, i el que fa el programa en el seu ordinador
s'interpreta literalment el codi línia per línia per línia.
>> En altres paraules, en lloc d'escriure un programa i executar el programa
directament en el seu lloc escriure un programa amb un arxiu amb extensió. php.
A continuació, s'executa un programa anomenat php.exe, si estàs en Windows,
PHP o simplement si estàs en Mac OS o Linux,
i es proporciona com a entrada al programa PHP seu propi codi font,
i el seu propòsit en la vida és llegir el seu codi de dalt a baix, d'esquerra a dreta,
i fer el que he dit.
>> Vegem el que això voldrà dir sintàcticament.
En PHP tenim condicions.
Aquesta diapositiva és idèntic al que vam veure a la setmana 1
perquè sintàcticament condicions, IFS i IFS else i else en PHP
exactament així.
Quan es tracta d'expressions booleanes que seran exactament així.
Quan es tracta de Anding coses junts com booleans que serà exactament així.
Canvia el mateix aspecte, i vostè té el benefici afegit en PHP
que els interruptors en C només podia encendre un char o int.
No es podia encendre un valor de cadena.
En PHP vostè pot realment tenir una expressió
que és una variable el contingut és una cadena,
i en realitat es pot fer la comparació de cadenes a la forma intuïtiva real,
No punter comparació, per tal de decidir si fer cas i j o una altra cosa.
Veurem que possiblement en poc temps.
>> Loops massa meravellosament són els mateixos.
Per bucles tenen una inicialització, una condició, i un cert nombre de canvis.
Encara que també existeixen bucles en PHP.
És bucles while també existeixen en PHP,
i existeixen matrius en PHP, però aquí és on la sintaxi comença a ser una mica diferent,
però els conceptes són els mateixos, i els conceptes realment són els mateixos
com ho van ser en 0 Setmana amb Scratch.
En primer lloc hi ha el signe $.
Aquesta va ser una decisió de disseny en PHP de manera que qualsevol variable
en PHP de disseny comença amb signe $.
No hi ha més X, I, Z. És ara $ x, $ i, $ Z perquè sí.
És una cosa a tenir en compte, i ara en el costat dret
això és similar a una matriu,
però estem usant claudàtors aquí.
En PHP i JavaScript, ja que finalment veurà,
per declarar una matriu de fer claudàtor obert i tancat claudàtor,
i llavors vostè té una llista separada per comes de valors, ja sigui sencers
o cadenes de caràcters, o el que vulguis, dins d'aquesta expressió hi.
>> Ara, com fem alguna cosa com això en C?
Quina és la sintaxi per declarar estàticament una matriu de nombres coneguts?
Va ser claus, la diferència tan petita aquí, però tant en PHP
i, finalment, que només utilitza JavaScript claudàtors, pel que realment
l'únic detall interessant és el signe $ per al nom de la variable
i també els claudàtors, i hi ha una cosa curiosa
que s'ha omès també al costat de l'esquerra del signe =.
El que cal que hem estat requerint des de fa setmanes? Si.
[Resposta dels estudiants inaudible]
La mida, de manera que no hi ha cap menció de la mida de la matriu.
Francament, no hi ha menció de claudàtors a la banda esquerra
del signe =, i el que més falta en la línia?
Si. >> [Inaudible resposta dels estudiants]
El tipus, així que el que és interessant en particular sobre PHP
és que no és un llenguatge fortament tipat com C és,
i això és inflexible en el sentit que cal dir char,
ha de dir int, ha de dir flotador.
>> Cada vegada que desitgi una variable que ha de dir-li al seu Clang quin tipus és.
PHP és una mica mandrós.
S'escriuen lliurement en el sentit que
vostè pot tenir flotadors i caràcters i cadenes
i INT i així successivament, però el propi idioma
en realitat no importa el que vostè posa dins d'una variable.
No ha d'informar per endavant quin tipus de dades
va en una variable.
És totalment de vostè, així que és agradable
en què vostè no ha de preocupar tant sobre les dades a escriure
i preocupant el que els seus arguments són i així successivament.
Això també significa que, finalment, les funcions en PHP serà capaç de tornar
o bé més d'un int el temps, i un cop que potser en tant
van a tornar un bool, un valor lògic fals, per exemple, per significar que alguna cosa va sortir malament.
Això ens dóna algunes Upsides, sinó que també ens farà per tipus de disseny
una mica més fluix quan es tracta de tipus de dades.
>> Què més cal tenir en compte aquí?
Variables mirar com això, així que $ s = "hola, món".
Aquesta és potser inferir a partir de l'exemple anterior,
i tenim un altre tipus de bucle.
Aquesta realitat ens veurem de tant en tant, ja que és bastant pràctic,
construir un foreach.
En aquest cas, el bucle foreach porta dins dels seus parèntesi 3 paraules típicament,
$ Una cosa en primer lloc, que és el que vols array per iterar sobre els membres,
llavors, literalment, la paraula clau com, a continuació, finalment,
altre nom de variable que pots triar.
Pot ser foo, bar, o element,
i el que aquesta construcció no
és si la matriu $ conté 10 elements
en cada iteració d'aquest conjunt-ho sento, en cada iteració d'aquest bucle
l'element variable anomenada serà actualitzada
per ser el primer element de la matriu, llavors el segon element de la matriu,
a continuació, el tercer element de la matriu, evitant així la necessitat
per fer el suport de notació quadrada lleugerament molest i
$ I a fi d'índex en una matriu.
PHP fa tot aquest treball per vostè i en cada iteració
només et lliura el següent element de la matriu
sense que hagi de conèixer o preocupar-se per la seva posició d'índex numèric.
>> I després, finalment, per ara, no hi ha una altra característica de PHP
que serà enormement útil, especialment quan vam començar la programació al web,
i que es coneix com una matriu associativa.
Els arranjaments que coneixem fins ara com de 20 segons fa
i durant els últims 8 setmanes es indexat numèricament arrays,
tipus d'arranjaments tradicionals, on els índexs són sencers,
0, 1, 2, tot el camí cap amunt.
Les matrius associatives són molt més poderosos.
Et permeten tenir claus arbitràries,
índexs arbitraris i valors arbitraris.
Mentre que en una matriu tradicional és 0, 1, 2,
en una matriu associativa que pot tenir un índex
o una tecla de foo el valor és bar.
A continuació, pot tenir una altra clau el nom és baz i el valor és qux.
>> Un cop més, estúpids informàtics genèrics noms de les variables aquí,
però el punt és que aquesta sèrie no té suport 0 o suport 1.
Està vegada tindrà suport foo i baz suport.
Això és molt més versàtil en què serem capaços d'associar
paraules amb altres paraules, les claus amb valors completament arbitrària,
i serem capaços d'obtenir aquests valors en el temps constant
per sota de la caputxa del que és un array associatiu
realment és una taula hash.
Recordem que una taula hash li permet posar en alguna entrada
com posar en la paraula David si desitja inserir David en una mena de diccionari,
i després tornar algun valor típicament.
En el cas de l'ortografia, veritable o falsa.
David o qualsevol paraula que estigui o no és al diccionari.
Una matriu associativa és en realitat una taula hash,
però és una encarnació d'usuari molt més amigable d'aquesta.
Com veurem, això permetrà que fem algunes coses
molt, molt fàcilment.
>> Fem una ullada a alguns bàsics PHP
exemples i veure el que podem fer amb aquest llenguatge.
Deixin-me seguir endavant i obrir en el nostre directori d'origen avui
un arxiu anomenat hello1.php.
Aquest arxiu és més un comentari del que és el codi real,
així que realment em tregui tots els comentaris a l'arxiu
i presentar a vostè potser el programa més simple PHP aquí.
5 línies, i alguns dels que són els espais en blanc,
així notar algunes diferències clau aquí.
L'arxiu es diu hello1.php.
La primera línia, però, és <? Php.
D'esperit similar a l'HTML,
seqüència de caràcters que indica a l'ordinador
"Hey, ordinador, aquí ve un programa que estem en en PHP."
S'assegura que no està confós que és algun altre idioma.
Línia 2 és un espai en blanc interessant.
La línia 3 és el nostre vell amic printf,
aquesta vegada en el context de PHP.
PHP té la seva pròpia versió de printf que es comporta exactament igual,
així que això és només voleu imprimir "hola, món".
I llavors aquesta etiqueta contrari aquí,>, significa que és per a mi codi PHP.
>> Anem a veure com manejar això.
Vaig a tornar a la meva finestra de terminal aquí.
Vaig a entrar al meu directori PHP.
Recordeu que tenim un munt d'arxius, el primer dels quals és hello.php.
Deixin-me seguir endavant i executar aquest hello1.php, entrar.
Permís denegat. Bé.
Com ens hem fixat aquest tipus de coses en el passat?
Què és això? >> [Resposta dels estudiants inaudible]
Necessitem llegir i escriure, però em deixa fer ls-l.
Recordi que aquesta sortida una mica críptica qual hello1
sembla ser de lectura i escriptura per mi
però llegible per tots els altres.
Resulta que aquest fet no és un pas en la direcció correcta.
La diferència, de nou, amb un llenguatge interpretat
és que no s'executi el programa directament.
En el seu lloc, iniciar un intèrpret i lliurar el codi
que has escrit perquè pugui interpretar línia per línia.
En aquest cas, l'intèrpret o el programa que s'utilitza voleu executar
és, literalment, anomenat PHP.
>> En algun lloc d'aquest disc dur de la màquina hi ha un programa
algú va escriure anomenat PHP, o en Windows php.exe.
El que vaig a fer aquí és que vaig a córrer realment PHP
però el dóna com un argument de línia d'ordres el codi que he escrit,
i després vaig a allunyar la imatge i prem enter.
S'executa el meu programa per a mi, de dalt a baix, d'esquerra a dreta.
Deixin-me seguir endavant i obrir una variació lleu d'això.
En hello2.php avís que això també
és majoritàriament comentaris, així que anem a desfer-me d'ells com una distracció,
i el que és clarament diferent ara sobre aquest arxiu?
Hi ha una nova línia, una mica críptica a la part superior.
A la línia 1 és #! / Bin / php.
Bin és una convenció a Linux i Mac OS per binaris,
de manera que / bin significa que és una carpeta que conté un munt d'arxius binaris
que es programa, una de les quals és PHP.
El #! És anomenat shebang,
que és la forma més ràpida de dir-ho, i el que significa aquest
és que quan s'executa aquest programa ara hi ha una al · lusió a la part superior de l'arxiu
que li diu a l'ordinador quin intèrpret d'usar.
>> Es posa una mica molest si has de dir als seus usuaris i clients
"Hey, escrivim aquest programa anomenat hello1.php".
Tot el que has de fer és córrer PHP per sempre i després el nom d'aquest programa.
Francament, no seria més que agradable per córrer hello1.php,
i, de fet, podem si fem el següent.
Deixin-me seguir endavant i fer ls-l, i l'avís a hello2 encara és només de lectura i escriptura
i després llegir llegir, així que encara no puc fer això, hello2.php.
Però hem introduït aquesta molt breument l'última vegada, la comanda chmod.
Si ho faig chmod a + x, el que significa tot executabilitat plus,
i després hello2.php i després fer ls-l de nou notar el que ha canviat.
Un, Linux em mostra el nom del fitxer en verd per transmetre la idea
que és executable, però que és més important, a la banda esquerra
compte que el bit que representa per x executable ha estat fixada.
El que això significa és ara puc córrer ./hello2.php com de costum,
prem enter, ia causa de tot l'assumpte a la part superior de l'arxiu
que hi ha una pista, un cop més, que diu a Linux
utilitzar aquest intèrpret per executar aquest comandament.
No et preocupis per fer que la persona realment escriure.
>> I el que és bo és que és una cosa irrellevant als meus clients o els meus amics
idioma que vaig escriure aquest programa, així que em pot seguir endavant amb mv
i canviar el nom d'aquesta cosa hello2, per exemple.
I ara si m'ho ./hello2
i allunyar meu programa segueix funcionant.
Aquestes extensions d'arxiu són una convenció humana que cal
per a alguna cosa com Clang i fer de buscar.
Però per a PHP, jo podria anomenar això qualsevol cosa extensió d'arxiu que vull.
Podia enganyar al món fent-li creure que sóc realment bo en Ruby,
i jo podria escriure hello2.rb i després executar-lo,
i llest, ara tinc la versió de Ruby, que és una completa mentida.
No obstant això, les extensions dels arxius no tenen sentit
si l'arxiu és executable i té aquesta pista especial a la part superior de l'arxiu.
>> Ara, en un apart, permetin-me mostrar ràpidament la versió 3,
que és una mena de truc útil conèixer.
En hello3 vaig fer una cosa una mica malament
que vaig a actualitzar la línia de codi font.
En la versió 3, és que en la majoria de sistemes Linux
hi ha un programa anomenat env per al medi ambient,
i el que pots fer aquí és que si vostè no té cap idea d'on PHP
està instal · lat al disc dur local, ja que en realitat podria variar en funció de l'ordinador
que algú està fent servir, env només diu executi env,
que es troba en la majoria dels sistemes, i esbrinar on PHP és.
Només un truc comú pel que no s'ha de preocupar de saber que un programa és.
Però si t'importa per saber on és un programa i no s'ha atès fins ara
pot utilitzar la comanda que.
>> Permetin-me fer un zoom cap a fora i quin tipus php,
i noti que em diu que és en realitat en usr / bin / php.
És una espècie de mentida. També en sortida.
Es m'acaba de mostrar el primer cop.
Si t'has preguntat on Clang és a dir, que Clang, que està en usr / bin / clang,
de fer, usr / bin / make, i el que això significa és que tot aquest temps
que podria haver estat escrivint usr / bin / clang Intro per executar Clang,
però és una mica tediós per fer-ho, de manera que algunes carpetes
com usr / bin bin i se suposa que són valors predeterminats
de manera que l'equip sap de mirar en ells per a vostè.
Qualsevol pregunta sobre com escriure un super, super senzill programa Hello World
en PHP i després l'executa?
Perquè ara començarem a introduir la sintaxi més convincents.
Molt bé, aquí anem.
Aquests programes que hem vist a tots ells abans.
>> Si obro, per exemple, farem beer1.php,
no anirem a través de diverses versions d'això, però el que vaig fer
Em vaig asseure i va vessar o es converteixen
el meu codi C per al codi PHP aquí.
La major part de la part superior de l'arxiu és comentaris aquí.
Resulta que hi ha una nova funció que necessitem anomenada readline.
GetString, el record, des de la setmana 0 en endavant va ser una cosa CS50.
PHP ve amb el seu propi fàcil d'usar funció anomenada readline
que pren un argument que especifica l'indicador
que vol mostrar a l'usuari, i fa el que readline
es retorna tot el que l'usuari escriu polz
En aquest cas, estic declarant una variable anomenada $ n.
Estic emmagatzemant-hi el valor de retorn de readline
després de preguntar a l'usuari amb aquesta cadena.
Simplement còpia de seguretat, per executar realment aquesta cosa, deixa anar per davant
i executar beer1.php php.
Quantes ampolles hi haurà? Anem a fer aquesta vegada 2.
Retorn. Això és tot.
>> El programa és funcionalment idèntica a la versió C de setmanes enrere.
Però sintàcticament anem a veure el que és diferent.
Després d'obtenir un int partir de la notificació d'usuari que estic fent una mica de comprovació d'errors,
i si n és menor que 1 vaig deixar i em imprimir
un missatge no per a l'usuari i amb la sortida 1.
Això també és una mica diferent.
En C, què vam fer? En C vam tornar 1.
En PHP sortir amb 1, que, francament, crec que és una mica més intuïtiu
perquè estàs literalment sortir del programa.
Molt bé, i llavors aquí la cançó molesta és sintàcticament idèntic
a excepció de la variable, de manera que aquí baix, en la línia 24 en endavant
compte del meu bucle for és gairebé el mateix,
però tinc $ davant i i n,
i el que és també falta de la línia 26 que hem tingut en el passat
quan es declara una variable i?
No hi ha cap tipus.
No és correcte dir que en PHP int.
Simplement no cal fer això.
La computadora, l'intèrpret PHP és prou intel · ligent per adonar-se
que si es posa un nombre en $ I aquest serà tractat
com un nombre per a tu.
I aquí ens connecti $ i, $ i, $ i - 1.
Tot això és el mateix, i llavors aquí fem una "Wow, això és molest" printf
i després sortir (0).
>> Un cop més, el menjar per emportar és que tot i que passarem relativament
poc temps en PHP, sens dubte enfront del que vam fer a C,
que és gairebé el mateix, i així ho farem avui i la setmana que ve
i més enllà és realment centrar-se en algunes de les noves idees.
Només per veure que una altra cosa es tradueix per sobre de C,
Aquest va ser un programa super simple que vam fer a la Setmana 1
o 2 en cubs que un valor.
Però l'interessant en el moment d'aquest programa és que
introduir la noció d'una funció personalitzada escrit que nosaltres mateixos hem escrit.
La sintaxi de PHP és gairebé el mateix.
Aquí està el meu programa fins a la part superior.
Noti un cop més absent és qualsevol noció de principal.
Començo a escriure codi, i això és el que va a aconseguir executat per l'intèrpret.
Puc imprimir x ara és 2, és de suposar.
Llavors em diuen cubicar ...
Llavors crida a la funció cub i passi $ x
i assigni el valor retornat a $ x.
Llavors em diuen que està en cubs, i després em diuen això, que és d'esperar
direm que x és ara 8.
La sintaxi de la funció en PHP és molt lleugerament diferent.
Un cop més falta és el tipus de retorn.
Un cop més falta és el tipus de retorn i també és el que falta un altre tipus?
[Resposta dels estudiants inaudible]
Bé, està bé, això és bo. Anem a tornar a això en un segon.
>> No tenim, per exemple, int aquí.
No tenim, per exemple, han int aquí perquè, de nou, en PHP
simplement no és necessari i no ha de fer això,
sinó que hi ha aquesta nova paraula clau es diu funció.
En PHP és gairebé una mica més clar, perquè quan es desitja una funció
que literalment diuen funció, li dones un nom i una llista separada per comes
si algun dels seus arguments.
No cal dir nul · la o alguna cosa així, i després de retorn és el mateix,
$ A * a * $ $ a.
El que també falta? Sammy assenyalem aquí.
A la part superior de l'arxiu completament absent en PHP també és un prototip.
Això també és per disseny.
Idiomes i intèrprets com PHP són més intel · ligents que mai ho va ser C
en els compiladors com Clang.
>> Recordem que Clang, si no ho dic que existeix cub,
si no ho dic que printf existeix com un prototip
o amb un # include, bé, havia de cridar a vostè i ni tan sols compilar el codi.
PHP i altres idiomes moderns són molt més intel · ligents quan es tracta d'això.
Ells s'encarreguen de llegir a través de tot el codi
i després criden a vostè només si es troba en cap part del cub.
Tant se val si és galleda a la part inferior o la part superior o fins i tot en algun arxiu separat.
Llenguatges PHP i similars són ara prou intel · ligent com per mirar cap endavant
en tot considerant que abans per haver comès un error.
On ens deixa això?
>> Anem a fer un últim exemple aquí a les condicions,
i si obro avís conditions2.php massa
sintaxi aquí és gairebé el mateix.
Estic usant readline en lloc de GetString, però aquesta línia és la mateixa que abans,
"M'agradaria un enter per favor."
Després, hi ha una condició si, una persona si, a continuació, una persona,
però funcionalment aquest programa també és idèntic al que vam fer setmanes enrere,
així que si em quedo això, php de Condiciones2,
i li dono un nombre com 23 -
Vaig triar un nombre positiu. Si li dono -1 vaig agafar un nombre negatiu.
Si li dono 0 Jo a la veritat recollir 0.
Llavors, qui es preocupa de tot això?
Bé, un de la classe de diversió exercicis aquí
almenys per a mi era anar cap enrere i veure la rapidesa amb què podria posar en pràctica pset 5,
el conjunt de processadors faltes d'ortografia.
Recordem que hi havia un arxiu anomenat speller.c,
i hi havia un arxiu anomenat dictionary.c.
El que jo vaig fer va ser una mica gastat uns minuts i em vaig convertir el codi C
de codi PHP, i no anem a passar molt temps en Speller
perquè igual que en el conjunt de processadors 5 vostè realment no necessita
passen molt de temps en ortografia si mateix perquè la seva atenció estava en diccionari.
>> Només cal dir que si vostè llegeix a través d'ortografia,
aquest arxiu aquí, que és més o menys equivalent al codi C
li va donar per pset 5.
Acabo d'afegir una mica de $ en els llocs.
He canviat alguns noms de funció si no existeix en PHP.
Hi ha una cosa addicional aquí, preg_match,
que és la forma una mica més elegant de fer alguna cosa, però anem a tornar a aquest temps.
Però en fi, ortografia és gairebé idèntic, i si ens fixem en la part inferior
el que finalment escup és això aquí,
paraules mal escrites, les paraules en el diccionari, les paraules en el text.
Molt bé, així que l'interessant ara és la següent.
A la part superior del meu arxiu que estic requerint dictionary.php.
Igual que C ha # include PHP permet una cosa anomenada requereixen
que més o menys fa el mateix, requereixen un arxiu anomenat dictionary.php.
Com puc anar sobre l'aplicació pset 5?
Deixin-me seguir endavant i obrir un arxiu aquí.
Permetin-me prendre una petita referència aquí.
I em deixa crear un nou arxiu i començar a trucar a aquest dictionary.php.
Permetin-me dir-ho d'una altra carpeta perquè puguem fer això en viu.
I ara vaig a fer un zoom in
Vaig a començar meu arxiu PHP amb suport obert php tancat suport.
I llavors aquí hi ha algunes funcions que es necessiten per posar en pràctica per pset 5,
així que començarem a aplicar algunes de les persones,
així que la funció de verificació, que va haver de prendre una paraula com a argument.
Farem això i tornar-hi en un moment.
>> Es carrega la funció, que va tenir en el que com un argument?
Diccionari, per la qual cosa l'arxiu que jo realment volia carregar.
Hi havia mida de la funció, que no pren cap argument
i no hi havia funció, què era allò altre?
Unload, que no pren cap argument tampoc.
Aquestes són les 4 funcions que haurien d'aplicar ara en PHP,
i el que vaig a fer és seguir endavant i fer-ho.
Molts de vosaltres utilitza una taula hash en pset 5,
així que vaig a seguir endavant i crear una taula hash en PHP.
Fet.
Això em dóna una taula hash. Bé, per què?
Una, la variable es diu $ taula, només per evocar la idea d'una taula hash.
Els claudàtors, però, recordar, representen què?
Una matriu, però a una matriu PHP no ha de ser indexat numèricament.
També poden ser matrius associatives,
el que significa que vostè pot tenir claus arbitràries i valors.
>> Igual que en pset 5, aquells de vostès que van fer implementacions taula hash
probablement s'insereix la paraula i després s'insereix en una cadena de llistes enllaçades,
o emmagatzemada en algun lloc del valor de veritat o alguna cosa per l'estil.
D'alguna manera recorda el fet que la paraula hi era.
Per ara, això serà la meva taula hash,
i el que ara anar sobre l'aplicació de la funció de comprovació
Només he de mirar dins d'aquesta taula hash
i veure si una paraula hi és.
El que vaig a fer és que vaig a dir si-
diguem isset, que és una funció PHP que literalment vol dir és el conjunt de claus,
així isset ($ taula [$ paraula],
i si és així tornar true.
Això és tot. Això és pset 5 en PHP.
Bé, per ser justos, està bé.
Else return false, de manera que no hi és.
El que realment està passant aquí?
Bé, si la taula de taula o hash aquí més general-
és una matriu associativa que significa que pot indexar-hi
amb una paraula com "paraula", i cal tornar algun valor.
>> Som una espècie d'aconseguir un pas per davant de nosaltres mateixos.
Seria una cosa bonica si en realitat carrega el primer arxiu,
així que la càrrega no és tan simple, però m'ho dius a mi seguir endavant i batre
una implementació molt ràpida de la càrrega.
Deixin-me seguir endavant i dir paraules Diccionari arxiu.
La funció d'arxiu en PHP obre un arxiu
i torna a vostè una gran varietat de totes les paraules en aquest arxiu,
només els dóna a vostès.
Aquest va ser un dolor massa gran, no?
Ara foreach, aquesta és la nostra nova construcció, foreach ($ paraules es $ paraula).
Aquest cicle començarà a iterar sobre les paraules de la matriu
i assignar a la variable $ paraula cada paraula a l'arxiu
des de la primera a la segona a la tercera a la quarta tot el camí
així que no has de fer el molest [i] notació i similars.
I el que estic simplement faràs per cadascuna d'aquestes paraules
es el guardi a la meva taula d'indexació a la taula
i després fent així perquè cal recordar
que una paraula està al meu diccionari l'únic que realment hem de fer
és una espècie de tornada una mica i dir aquesta paraula en la meva taula hash hi és, és cert.
I si no hi és, no he de posar explícitament falsa,
en cas contrari, hauria de posar fals per a totes les paraules possibles en l'univers.
>> És suficient per a mi només per donar un valor d'índex
en true si una paraula està en realitat en el meu taula hash.
Ara, em vaig a tallar un parell de corbes aquí que vaig a agitar les mans menys per ara,
però ara la funció de càrrega es realitza.
Em càrrega totes les paraules a l'arxiu en una matriu.
I iterar sobre aquesta matriu, i per a cada paraula de la matriu
El connecto al meu taula hash amb una línia de codi.
Això és divertit. Saps com es pot implementar mida ara?
Doncs bé, la mida és sempre molt fàcil, per ser justos.
Aquí només puc fer recompte de tornar de taula.
Això és bastant fàcil també, compti el nombre de coses a la taula.
Això és en realitat una mica no és el més eficient.
Probablement hauria de tenir una mida variable anomenada perquè el puguem fer
en temps constant, però això és bastant fàcil.
Ah, i després descàrrega, si de veritat volem ser anal aquí
podem dir que és com es descarrega alguna cosa.
Vostè acaba de fixar una variable igual a un conjunt buit,
i es desfà de tot el que hi era.
No hi ha necessitat de cridar lliure.
>> Un cop més, he tallat alguns revolts, i em disculpo per conjunt de problemes assignant 5
potser al carrer, però si ara seguir endavant i executar això,
Vaig a córrer en realitat la versió que vaig escriure amb antelació
només perquè jo no he comès cap error de sintaxi que sigui.
Deixin-me seguir endavant i executar corrector ortogràfic. L'ús és el mateix.
Aquí hi ha un arxiu de diccionari que només conté la paraula foo.
Aquí hi ha un arxiu de text que conté només foo bar.
Anem a revisar l'ortografia d'això, així ortografia, utilitzant l'arxiu de diccionari a l'arxiu de text.
Hi ha una paraula mal escrita, bar, i llest.
Fet amb pset 5.
Anem a prendre un descans de 5 minuts aquí, i anem a tornar i més en PHP.
D'acord, estem de tornada.
Farem-m'odies per un temps.
Ara anem a veure realment si això no era un positiu
l'aplicació real d'aquesta cosa en PHP.
Per descomptat, ens va prendre 45 segons per implementar.
>> Però seguirem endavant ara i manejar les coses.
Deixin-me seguir endavant i executar una versió de C
d'ortografia, i anem a córrer en un dels majors arxius,
que és la Bíblia King James.
I aquí és on anem a entrar a la nostra carpeta de C,
Speller a King James la 5 ª.
Una gran quantitat de paraules mal escrites.
Molt bé, així que aquesta és la sortida que probablement es va fer encara si els temps són una mica diferents,
si tens tot funcionant correctament, i el temps el que en total per corregir l'ortografia
la Bíblia King James va ser 0,38 segons, així que prou bé amb aquesta implementació.
Ara vaig a anar a la versió de PHP, que acaba d'escriure.
Deixa córrer ortografia a King James.
Vaja, ignorar aquest error. Estic al directori equivocat.
Speller sobre King James la 5 ª.
Ja està gairebé fet.
>> Bé, l'astut observador s'adonarà que era més de 3 segons allà.
Aquest és el veritable temps en funcionament.
Resulta que es necessita temps per escopir gran quantitat de text fora
causa de buffer temes, però de curta llarga història,
que va ser de 3,15 segons de temps de màquina, temps de CPU,
enfront del que era fa un moment?
Igual que 0,3.
Vull dir, és un ordre de magnitud més lent, així que ¿on són aquests
desacceleració ridícul venint?
Doncs bé, com ha estat el cas amb la majoria de les decisions de disseny que hem fet
a la classe durant les últimes 9 setmanes gairebé sempre aquest equilibri.
De vegades, només entre l'espai, de vegades entre l'espai i el temps,
espai, temps i esforç de desenvolupament, i de fet aquí, encara
ens estalviem una gran quantitat de temps, potser potencialment 10.20.30 hores
el temps de desenvolupament de l'aplicació del corrector ortogràfic
amb assots que en tan sols 45 segons amb aquest llenguatge
el preu que es paga és que es tracta d'un ordre de magnitud més lent com a resultat,
i aquest és generalment el cas amb la majoria de qualsevol llenguatge interpretat,
PHP, Python, Ruby, Pearl o altres pel qual
si vostè va a executar a través d'un intèrpret i que es llegeixi el codi
línia per línia, de dalt a baix, d'esquerra a dreta,
intermediari que es va a portar el seu temps propi,
i el que se sent aquí en els 3 segons davant 0,3 segons
és el fet que existeix aquest intermediari que s'ha d'interpretar literalment el nostre codi
línia per línia, i Déu no ho vulgui, si vostè està dins d'un bucle
amb un arxiu enorme que conté centenars de milers de paraules.
>> Aquest recàrrec es va a sumar i sumar i sumar i sumar.
Per obtenir una eina com aquesta probablement no sigui el millor llenguatge a utilitzar per a l'aplicació de
un corrector ortogràfic si immediatesa és d'interès per als seus usuaris i per a tu.
Però el luxe que tenim en aquest moment és si
utilitzar un llenguatge com PHP o una gran quantitat de llenguatges interpretats
en el context de la web, per al cas, que té el benefici
que Internet és molt més lent que la majoria de les computadores.
Vostè té una CPU GHz a l'equip, 2 GHz, potser fins i tot més en aquests dies.
Però la realitat és que a Internet hi ha una gran quantitat de latència
de manera que per a un navegador per parlar amb un servidor, tot i que vam veure la setmana passada
que això és bastant ràpid, la meitat d'una mil · lèsima de segon més o menys,
que també se suma, i si vostè està descarregant coses com una imatge
o una foto de Facebook o rebre missatges instantanis a través de xerrada Facebook,
Gchat o similars, tots d'aquests temps d'anada i tornada
entre el navegador i el servidor d'inici de sumar,
que fa que la seva elecció particular de la llengua en molts casos
no és tan rellevant, pel que està molt bé utilitzar un llenguatge lleugerament més lent
com PHP o Python o Ruby
però per als que no són Upsides grans per a vostè i els seus col · legues
i els seus amics, ja que pot posar en pràctica les coses així, molt més ràpid.
I d'altra banda, té molt menys risc de certs defectes de seguretat.
No hi ha punters en PHP.
No hi ha cap error seg que fàcilment poden induir
de la mateixa manera que es pugui en C.
Amb C que està súper prop del maquinari.
Amb llenguatges PHP i similars que ets una mena de nivell superior, per dir-ho,
amb un munt de defenses entre vostè i el que realment està passant
a l'interior de la màquina, i és només una compensació.
>> Hem arribat al punt de tenir aquests més moderns llenguatges d'alt nivell
com PHP causa de les lliçons apreses en llenguatges com PHP en C.
Però si vostè no entén el que està passant sota la caputxa de tot aquest temps
que sens dubte no pot prendre les decisions de disseny correctes,
i, certament, quan es tracta de treballar en un lloc com Facebook o Google
o en qualsevol d'aquests llocs que són cada vegada més jugant amb grans conjunts de dades
fins i tot si vostè torna i es Premed i estem treballant amb algunes de les EM
en alguns gran conjunt de dades amb pacients i metges
i similars, usant les eines adequades és enormement atractiva
perquè en cas contrari l'anàlisi d'un conjunt de dades pot trigar uns segons,
o que, literalment, pot portar hores.
Aquest és només un exemple, no per frustrar amb quant esforç més
va ser en C, però que l'ajudaran a apreciar que quan es posen en pràctica alguna cosa en C
que realment entenen, o en teoria, comprendre realment
com tot el que és o hauria d'estar treballant, i vostè té un control gairebé complet
sobre el que està passant sota la caputxa, i amb aquests llenguatges d'alt nivell
vostè ha de renunciar a un major control de les persones que els inventats
i estan subjectes més a les seves decisions de disseny que la teva.
Però si donem per fet que el rendiment
no és tan important en la web a causa d'aquestes altres qüestions,
només les velocitats de xarxa són una mica més lent que la velocitat de CPU de tota manera,
perquè puguem triar de permetre el luxe d'utilitzar un llenguatge una mica més lenta
si els upsides són les coses que podem desenvolupar 10 vegades més ràpid o més.
>> Anem a veure com podem començar a utilitzar això.
Deixa anar a una carpeta
entre els exemples d'avui en dia anomenat frosh.ims,
i això va ser realment personalment motivat pel fet que la primera cosa
Vaig escriure per al web anys enrere després de prendre CS50 CS51 i
és un lloc web per al programa de missatges instantanis Frosh, esports intramurs de primer any,
que en aquest moment es tractava de bastants anys enrere, que en el moment
no hi havia lloc per al programa, tot i que hi havia una web,
i en el seu lloc hi havia un vigilant a Wigglesworth com si volgués
per registrar-se per el voleibol o el futbol o el que vostè podria omplir un full de paper.
A continuació, es camina pel pati.
A continuació, podria trucar a la seva porta i llisquen a la seva porta oa la mà al procurador
un tros de paper amb el seu nom en ell, siguin o no vols ser el capità de l'equip,
Quin esport et volia fer, i el que es polz dormitori
Era una mena de camí de la vella escola de fer les coses, i això va ser una de les principals
oportunitat per automatitzar una gran part d'aquest procés.
Vostè només ha d'anar a la pàgina web. Escrius alguna cosa polz
Vostè rep un correu electrònic de confirmació, i el braç, ja està fet.
>> Aquesta va ser la primera cosa que vaig fer, encara que en un llenguatge anomenat Pearl,
però és relativament fàcil de fer en PHP, i això és una mena de representant
dels problemes que vostè pot començar a resoldre quan pot expressar
programació i no haver de dependre de coses com els llocs de Google
o Excel o eines que es lliuren a tu.
Vostès tenen ara la capacitat de fer coses com aquesta.
Aquesta és una versió super lleig d'un formulari,
però utilitzarem per a l'inici de la conversa mitjançant el qual es tracta de
més o menys quina és la forma que semblava anys enrere per a nosaltres
perquè les persones en la web per inscriure en Frosh missatges instantanis.
Ens preguntem per un nom, una casella de verificació per saber si són o no volia ser capità,
home o dona, i llavors, què dormitori en què estaven,
i llavors s'enviï aquest formulari.
Vegem primer sota la caputxa en el codi HTML que representa aquesta pàgina web.
Déjame entrar froshims0,
i en un apart, per pset 7 estic donant per fet
els directoris i carpetes dels que estic posant les coses polz
Li guiarem a través de coses exactament on ha d'anar a l'aparell,
les comandes de mod que ha de córrer, així que no et preocupis per tot el
detalls estúpids sincronització des del primer moment aquí.
>> Molt bé, aquí està froshims0.php.
Permetin-me desplaçar-se cap avall, i el que és curiós aquí,
s'indiquen fitxers PHP, però el que hi ha dins d'ella, amb claredat?
És un munt d'HTML, PHP, i de fet els seus orígens
realment eren per ser un llenguatge centrat en la web.
Fa un moment l'utilitzem per posar en pràctica l'exemple de la cervesa,
les condicions exemple, l'exemple hola, i això està bé.
Podeu utilitzar PHP com a llenguatge de scripting
on un script és en realitat la nomenclatura donada a un programa ràpid i brut
o alguna cosa que s'escriu en un guió o més generalment un llenguatge interpretat.
PHP és super útil per als que ja has vist amb quina rapidesa
relativament podem avivar programes en PHP.
Però va ser dissenyat realment per ser utilitzat per a la Web,
i dissenyat per a la Web, en el sentit que notar aquí a la part superior de l'arxiu
Començo amb <? Php.
Llavors tinc un munt de comentaris inútils, és cert, però llavors tanco manera PHP.
Però després em deixi caure en mode HTML.
>> El que és interessant sobre PHP és tot i que l'arxiu acabat en. Php
és generalment destinat a ser barrejats amb HTML,
una mica de codi PHP, alguna cosa d'HTML.
I anem a veure amb el temps que podem començar a burlar-aquells a part
i mantenir la nostra HTML PHP separat del nostre conjunt,
però els orígens de PHP realment et donés aquesta flexibilitat,
que si vols alguna cosa d'HTML només l'escriu, i que serà
escopir idèntica al navegador.
Però si vostè necessita una mica de tècnica de programació,
algun codi de programació, també es pot posar a l'arxiu exactament el mateix, com aviat veurem.
Aquí està el meu HTML.
Tinc un títol d'aquest Frosh per missatges instantanis.
Tinc un cos de l'etiqueta que té una mica de CSS en el mateix centre de tot al centre,
i després per aquí Tinc un formulari que pel que sembla serà presentat
en un nou arxiu anomenat register0.php, així que ja veurem això en un moment.
Es tracta d'utilitzar un mètode anomenat post, que tornarem a també.
Llavors tinc algunes entrades de formulari, un nom anomenat, el tipus és text,
un el nom és el capità, el tipus és checkbox,
i això, no ho hem vist abans, però fa exactament el que diu.
Vostè rebrà una casella de verificació en lloc d'un quadre de text.
Aquí sota tens un botó de ràdio, que és un d'aquests botons circulars
que vostè pot triar aquest o aquell.
>> Recordeu que és deliberat que em va donar els dos botons de ràdio el nom del gènere.
Aquesta és la forma d'aconseguir l'exclusió mútua mitjançant el qual vostè ha de fer clic a
ja sigui aquest o aquell, i fent clic en l'altre
es desactiva l'altra, així que cal donar-los el mateix nom
si li agradaria que fossin mútuament excloents així.
I després, per dormitori, jo no crec que hàgim vist encara, però es tracta d'una selecta carta, un menú desplegable.
L'etiqueta perquè es selecciona.
A continuació, donar el menú desplegable un nom,
i llavors vostè té un munt d'aquestes opcions.
La primera, només per estètica, és una cadena buida.
Jo només volia el menú desplegable per estar en blanc per defecte,
i després hi Apley, Canaday, Grays, i així successivament.
I noti la dicotomia aquí.
L'opció del menú desplegable té un valor,
però llavors té un nom humà amb nens, que en aquest exemple
és idèntica, però si de veritat volia ser anal tenim podia
el valor d'aquest menú desplegable només ser la versió curta,
Grays, però podríem dir Grisos Hall que l'ésser humà realment veu,
però això no és tan interessant, així que em va mantenir simple i els va fer iguals.
A continuació, en el fons tenim un botó d'enviament
el que hem vist abans, però noto que només ens va donar una paraula diferent.
En lloc de buscar CS50 li vaig donar l'etiqueta de "Registre".
>> El resultat final és la pàgina aquí, i de nou,
On es presentarà a?
Es posa sotmesa a algun arxiu, el valor de l'atribut d'acció,
que era register0.php.
Anem a veure el que realment passa aquí.
Deixin-me seguir endavant i omplir el formulari, per exemple David,
mascle, Matthews, a continuació, vaig a dir registra't.
Permetin-me allunyar la imatge i feu clic a registrar-se.
Bé, alguna cosa inútil, però anem a veure el que realment està passant.
Tingueu en compte que la URL ha canviat per ser register0.php.
Què és curiosament absent de la URL, però, tot i que acaba d'enviar un formulari?
[Resposta dels estudiants inaudible]
Bé, això és ser amable usuari Chrome en aquests dies.
Això és realment allà. Acaben d'ocultar per estalviar espai.
Però el pensament bo, bon pensament.
Cap al altre extrem de la URL, però, el que falta? Si.
[Estudiant] La cadena de consulta.
La cadena, de manera que recordem dels nostres exemples senzills de cerca de Google.
Així que feu clic al botó d'enviar la URL
em va portar a Google, però després estava? q = ciències de la computació o el que sigui que jo havia escrit polz
Això és perquè utilitzem el mètode get amb l'exemple de recerca.
>> Aquesta vegada estem usant el mètode que en el seu lloc?
Publicar, i una de les distincions immediates
entre GET i POST és que després no posa la entrada de l'usuari a la URL.
És l'oculta. Encara l'envia.
De fet, el que estem veient en el navegador d'aquí, com anem a revelar en un moment
observant register0, és que estic sol veure el contingut
de la matriu que es van presentar des del navegador al servidor.
Però l'URL no té un?, No té cap paraula clau
o valors en ella, i per què és això?
Bé, després li permet enviar encara les dades del formulari a un servidor,
però no ho posa a la URL, així que quin tipus d'informació és post
particularment apropiat per potser quan vostè està demanant a l'usuari
escrigui en l'entrada a un formulari?
Una cosa així com una contrasenya, una mena de què més?
Números de targetes de crèdit.
Qualsevol cosa que sigui mitjanament sensible que probablement no vols acabar a la URL
si més no perquè significa que el seu company de quart o membre de la família només pot trolling a través de
seu historial d'Internet i, a continuació, literalment, veure les contrasenyes,
literalment veure els seus números de targeta de crèdit, perquè la majoria dels navegadors
Recordo que en la història el que les adreces URL que has estat en,
de manera que si només perquè això seria una mala idea.
Ús de cuirs missatge que detallen per part de l'usuari.
>> A més, com pujar una foto a Facebook?
Bé, els únics dos mecanismes que realment es pot utilitzar,
encara que hi ha alguns altres més complexes, és GET i POST.
Com pujar una foto possiblement a través d'una URL?
En realitat es pot fer.
Vostè pot prendre un mapa de bits o JPEG o GIF i es pot representar en hexadecimal
o alguna cosa que es diu base 64.
En lloc de base 16 s'utilitza la base 64, que essencialment s'assembla
Caràcters ASCII, i de fet pots pujar una foto a través d'una URL
després d'un signe d'interrogació, però en general hi ha límits de mida.
La majoria dels navegadors forçar URL a ser no més de 1.000 caràcters,
potser 2.000 caràcters o similars, de manera que no es pot carregar
octubre 1 MB de fotos de Facebook.
Perquè s'utilitza després també, així que per ara es posa els paràmetres a la URL,
la qual cosa és bo i útil de vegades, però per res sensible o gran
lloc és el camí a seguir.
Què fa en realitat register0 aquí?
Bé, si obro register0 avís que es tracta d'una simple pàgina super,
però està demostrant el fet que puc de barrejar, per bé o per mal,
HTML amb PHP.
Aquest arxiu complet, a excepció dels comentaris a la part superior, són HTML
a excepció d'aquest tipus aquí.
>> Observeu en el medi de la meva codi PHP,
a la meitat de la meva HTML, tinc sort de forma temporal
entrat en la manera PHP.
Vaig a trucar a una cosa anomenada impressió r.
Això significa imprimir recursiva, i el que fa és que imprimeix de forma recursiva
qualsevol variable de donar, punt i coma, fins a la sortida PHP manera.
I l'etiqueta pre li dóna pretext amb format,
text mico espai perquè cada espai que realment veure-ho.
No desapareix. Què és el missatge?
Bé, el que és interessant i convincent sobre PHP
és que cada vegada que envieu un formulari utilitzant get o post
qualsevol cosa que s'envia a vostè per un navegador
PHP mateix s'adona del que aquestes parelles de valors clau són,
s'adona que si hi ha signes d'igual, es dóna compte que si hi ha un signe d'interrogació.
Ho fa tot el treball dur per vostè, i després se li lliura una matriu associativa
conté tot el que l'usuari va escriure en el formulari.
Bé, què camps d'aquest formulari té?
>> Tenia quatre camps.
Es tractava d'un camp de text anomenat nom.
Un d'ells era una casella de verificació anomenada capità.
Un d'ells era un botó de ràdio anomenat gènere,
i un era un menú desplegable anomenat dormitori,
per notarà quan imprimeixo recursivament
el contingut d'aquesta variable especial.
Aquesta és una variable global anomenada especial, literalment, $ _POST, en majúscules.
Aquesta és una variable global especial que PHP només crea per a vostè
i les mans a vostè perquè vostè pot tenir accés a tot
que es va presentar a través d'un formulari per un usuari.
I cridant r impressió-hi, vostè no faria això en una aplicació normal.
Estem fent això per observar l'interior d'aquesta variable,
i el que hi ha dins d'ell, bé, 4 tecles,
4 http paràmetres, per dir-ho,
nom, capità, sexe, residència d'estudiants, i després els valors que l'usuari
introduir amb una excepció.
Vaig tipus D-A-V-I-D.
Vaig revisar la caixa, però, per als homes, que pel que sembla va presentar un valor
de poc m per ser succint.
>> Quan seleccioneu Matthews aquest és el valor que he seleccionat,
i aquest és una mica estúpid, però és la convenció.
Quan em vaig registrar, la caixa, el valor on, "on", va quedar sotmès a la casella de verificació.
Si jo no ho havia comprovat, sense valor hauria estat enviat alguna.
Això se'ns acaba de donar idees sobre el que hi ha dins d'aquesta variable global especial,
i és tan especial que s'anomena una variable global super.
Hi ha a tot arreu perquè dins del seu codi de manera que en realitat es pot accedir a ell.
Això no és tan convincent, així que farem servir en realitat la superfície mundial
i realment tractar de registrar a algú.
En froshims1 vaig a fer un canvi.
Vaig a canviar l'acció a ser register1.php,
i estic fent una altra cosa.
Jo estava una mica avergonyit per la qualitat de la meva pàgina web allà.
És bastant horrible, de veritat, per la qual cosa resulta
que es pot utilitzar molt fàcilment a la web
aliè JavaScript, CSS altres persones
que he escrit i de codi obert i està disponible com una biblioteca,
per així dir-ho, i per exemple, aquí estic usant una biblioteca de lliure accés,
un munt de codi que algú més va escriure.
>> Twitter va passar a escriure aquest codi, i es diu la biblioteca d'arrencada,
i és només un munt de fulls d'estil CSS, un munt de. css
que algú més va escriure i descobert la manera d'obtenir totes les coses bones i bonic
perquè la gent com nosaltres pot preocupar una mica menys per l'estètica i centrar molt més
en la lògica i la programació real.
Per la seva vinculació amb aquesta etiqueta, que és la mateixa etiqueta solia recordar per styles3.css abans,
Ara tinc accés a un arxiu anomenat bootstrap.min.css.
Min només significa que l'han minified i s'han desfet de tots els espais en blanc i així successivament
només per assegurar-se que no m'estan enviant més bytes del que realment necessita.
Però hi ha un munt de CSS, així que si ara obrir la versió 1 de Frosh IMS
adonar que el meu arxiu és definitivament més bonica.
Ara és encara només en blanc i negre, però noti que amb sols recórrer el seu full d'estil
i l'ús de certs trets d'ella en la meva manera no és sorprenent,
però sens dubte és més net que abans, i el projector no està fent justícia.
Hi ha petites línies de color gris al voltant dels botons i de tot el camp de text de la dreta aquí,
però sens dubte és més net del que era abans.
>> Ara, per ser justos, jo vaig haver de canviar la meva marcat una mica.
Aquesta és la versió 1, així que he utilitzat algunes etiquetes noves,
i honestament, no tenia ni idea de com fer això fins que vaig llegir la documentació
per a la biblioteca d'arrencada de Twitter, i em van dir que si vols utilitzar la nostra biblioteca
utilitzar un element fieldset dins de la seva forma,
posar la paraula que voleu mostrar al costat d'un camp dins d'una etiqueta de l'etiqueta,
després donar-li a la seva entrada un nom, igual que abans,
i després per la casella de verificació, no només vostè s'embolica en un element label,
utilitza una cosa anomenada una classe, així que no hem vist això abans,
però veuràs això en un conjunt de processadors de pantalons curts de 7.
Una classe en CSS li permet fer una cosa molt semblant a la identificació,
però abans, quan teníem una identificació amb el símbol #
que era per un i només únic element.
El millor d'una classe és que diversos elements poden tenir la mateixa classe
o el mateix material CSS aplicat a ell.
>> Però, de nou, més d'aquells en el curt, i la resta d'aquest és copiar i enganxar
de la documentació en la qual he afegit una etiqueta aquí i allà.
I al final, perquè he inclòs l'etiqueta a la part superior,
tot es veu més bonic automàticament
simplement per haver marcat la meva pàgina d'una manera que
Twitter s'esperava, i hi ha tantes maneres diferents
d'aquesta manera, i això és de fet molt apropiat.
En aquest punt en el semestre, com es veurà en les especificacions del conjunt de processadors 7,
Googling voltant, llegint sobre les biblioteques, l'ús de CSS dels altres
i JavaScript per solucionar els problemes secundaris
per al conjunt de problemes en si és, sens dubte encoratjat i és la manera
la web es basa en aquests dies, de peu sobre les espatlles dels altres
de manera que vostè pot concentrar-se en els problemes nous i interessants.
Però ara anem a centrar, una vegada més, la lògica.
>> Això va ser un ràpid desviament a l'estètica només per mostrar la direcció en què es pot anar.
Vaig a tornar a la més lletja un per ara només perquè
no hi ha distraccions amb coses de Twitter, i m'ho dius a mi seguir endavant i obrir
froshims2, que, de nou, només difereix en l'acció, register2.php,
i anem a fer una ullada al que l'efecte és aquí.
Deixin-me seguir endavant i escriure en David.
No seré capità d'aquest temps.
Diré masculí, Matthews registre.
Maleïda sigui. Bé, això és un cargol de dalt de la meva part.
En espera.
Registro2, línia 22, si està buit o ho sento.
Anem a recarregar.
Bé, en presentar aquest formulari el que ha passat?
He escrit en David, verificat masculí, fa clic a Matthews, registre.
S'ha registrat. (Bé, en realitat no.)
Això és clarament un pas més enllà d'imprimir el contingut d'alguna variable,
però el que està fent en realitat aquest arxiu?
En register2.php
adonar que tinc una mica de codi nou.
A l'interior del meu cos de l'etiqueta que tenen essencialment un if else,
sinó perquè estic col · barreja això amb una mica d'HTML
He de entrar i sortir de la manera PHP anada i tornada, així que anem a veure el que estic fent.
>> A la primera línia aquí que estic dient si és el cas
que el lloc està buit súper mundial per la clau de nom,
pel que en altres paraules, si l'usuari no em va donar un valor per al nom en la forma,
llavors buit tornarà true perquè el valor està buit.
O-note les barres verticals, si el gènere està buit
dins d'aquest mundial especial super, que, de nou, representa el contingut de la forma,
o el dormitori està buit, llavors jo seguiré endavant i cridar en l'usuari.
Com? Bé, fixa't que vaig a dir que vostè ha de proporcionar el seu nom, sexe, i residència d'estudiants.
Anem a induir realment aquest error.
Deixa tornar a la meva manera. Permetin-me tornar a carregar per desactivar-la.
I jo només vaig a donar-los David, i ells no necessiten saber on viu.
Registra't. Pel que sembla, cal que els digui on viu.
Vostè ha de proporcionar el seu nom, sexe i residència d'estudiants. Torna.
>> I podria clic per tornar a aquesta forma, però per què és això?
Bé, en aquest cas el nom no estava buida, però el sexe, i va ser residència d'estudiants,
pel que aquesta expressió avaluada com a veritable totalitat, i encara que la sintaxi és una mica nou,
de nou, entrar en mode PHP, familiar if,
però la novetat és precisament això còlon, i m'havia fotut al ometre un parèntesi
per accident, però observi els dos punts, i significa que
tot i que està sortint tot la manera PHP
que segueix ha escopir literalment al navegador
fins que vegi un bloc else, com ho fem aquí,
en què el seu lloc ha escopir això
fins que vegi la endif, de manera que algunes sintaxi lleugerament nou
que em permet passar d'HTML i PHP.
Podem netejar això amb el temps, però per ara,
és una espècie d'una manera convincent de comprovació d'errors del formulari.
>> Ara, jo dic que no està realment registrat perquè, òbviament, no hem fet res, però les dades,
així que en realitat tracten de fer alguna cosa fresc.
En froshims3 l'única diferència és que presentaré a register3,
de manera que l'HTML no és el mateix.
En register3 compte d'això.
Aquesta és una espècie de sexy.
A la part superior Estic utilitzant una instrucció requereix, així que això és com # include.
Aquesta vegada no és stdio.h ni res d'això.
És una llibreria PHP, i aquest es diu PHPMailer.
Com vaig saber que inclogui precisament aquesta cadena entre cometes?
Ho vaig llegir en la documentació, així que quan em van dir que em posi això en la part superior de l'arxiu
si vol utilitzar una biblioteca especial anomenada PHPMailer que fa el que diu.
Permet enviar correu electrònic a través de PHP.
Ara anem a desplaçar més lluny.
>> Avís per començar estic en mode PHP tot aquest temps,
de manera que ara notar aquí després d'importar la biblioteca,
per dir-ho, estic fent algunes comprovacions de sanitat.
Si és el cas que el nom no està buit
i el gènere no és buida-notar els signes d'exclamació punts
dormitori i no està buit, llavors l'usuari lògicament ha omplert el formulari, si més no prou.
No m'importa si són o no capità. Només necessito el seu nom, sexe, i residència d'estudiants.
Si s'han omplert aquests endavant de manera que cap d'aquests camps estan buits
això és una mica nova sintaxi.
PHP, en un apart, és un llenguatge de programació orientat a objectes
que alguns de vosaltres pot recordar de SCCA o similars.
Per ara, sinó familiar, només sé que per utilitzar aquesta biblioteca
vostè ha d'escriure una línia de codi com aquest amb una nova paraula clau,
literalment una paraula clau nova anomenada nova.
Però més enllà d'això, tenim una sintaxi familiar.
És un operador de fletxa, que és similar al que hem utilitzat per les estructures en el context dels punters.
Per avui PHP no té punters,
però sabem per ara que dins de la variable mail
és essencialment un tipus de punter a una biblioteca especial
que algú més va escriure, i si vull accedir a la funcionalitat específica
dins d'aquesta biblioteca que sí, igual que en C, utilitzeu l'operador de fletxa,
tot i que aquestes no són en realitat punters.
És una espècie de versió pròpia de PHP d'aquest.
Això vol dir anar a la biblioteca i cridar a la funció IsSMTP.
SMTP, memòria, dels nostres guerrers de la Xarxa es refereix al correu electrònic,
i això només significa utilitzar un servidor de correu electrònic per a aquest registre Frosh missatges instantanis.
>> Què acollida és el que vull fer servir?
Bé, Harvard, si es busca a Google la volta, té un servidor de correu electrònic anomenat smtp.fas.harvard.edu.
Si estàs jugant al llarg de a casa o viu en una xarxa de Comcast
pot ser que sigui alguna cosa com smtp.comcast.net.
És totalment depèn d'on vostè viu i qui és el seu proveïdor d'Internet és.
Després d'això em vaig a posar la meva adreça de manera arbitrària a ser jharvard@cs50.net.
Estic passant després a establir el abordar a ser jharvard@cs50.net.
L'única manera que sabia que aquestes funcions van ser anomenats setFrom i AddAddress
És a dir, un cop més, he llegit la documentació.
Això no és una qüestió de màgia a conèixer a tots els programadors.
Llavors em vaig posar a objecte de "registre".
I ara, aquesta línia és una mica lleig, perquè el que fa l'operador de punt mitjà en PHP?
Algú sap?
Concatenar.
En C és un dolor al coll per concatenar dues cadenes juntes.
Has de lluitar amb malloc o realloc o totes aquestes coses
només per estendre la longitud d'una cadena.
En PHP, JavaScript i en altres idiomes
normalment es pot fer això amb un sol caràcter.
En aquest cas, punt significa prendre aquesta cadena aquí
i afegir a aquesta cadena.
>> Ah, i per cert, afegir a aquesta cadena,
que passa a ser una variable d'aquest interior súper global.
A continuació, afegir a una nova línia, de manera que tots aquests punts només significa
seguir fent una cadena més gran i més gran i més gran,
i vostè no ha de preocupar en absolut per malloc o similar, en un llenguatge com aquest,
i hi ha altres maneres de fer això, però aquest és un dels més ràpids
formes d'exposar.
Què fa això?
Es tracta de crear un cos de correu electrònic que dirà el nom: Capità: Sexe: Dorm:
tot en línies separades, i després, finalment,
una línia de codi, i jo vaig a fer cas omís d'això per ara.
Si és false == simplement vol dir que si alguna cosa sortia malament,
però la màgia que succeeix aquí.
Mail Enviar significa l'enviament d'aquest correu electrònic.
Anem a veure el que el resultat net és.
A la part inferior de l'arxiu, notarà que dirà que està registrat realment
si arribar tan lluny.
Si, però, l'usuari fica la pota, observi que vam començar aquest
si la condició fins aquí, si no està buit i no buit
i no buidar enviem per correu.
En cas contrari anem a enviar aquesta línia de codi,
que tindrà l'efecte, com es veurà en el conjunt de processadors 7, de redirigir l'usuari
de tornada a on van venir, froshims3.php.
>> Creuem els dits, en cas contrari això serà la demostració més decebedora avui.
Aquí anem.
Permetin-me obrir el meu safata d'entrada de correu electrònic per jharvard a Gmail.
Cap correu electrònic ara mateix. Està bé.
Ara vaig a obrir froshims3, que és el tercer i últim exemple anem a veure aquí.
Bé, aquí anem.
Nate, que serà el capità, home, de, per exemple, Apley.
Registra't. Està bé, està registrat realment.
Ara, si em desplaço a la vostra adreça, oh, Déu meu.
Acabo dinàmicament va enviar un correu electrònic a la Web.
>> Anem a deixar-lo en aquesta nota.
Un vídeo és per a la propera conferència ens vam perdre. Ens veiem la setmana que ve.
[CS50.TV]