[Powered by Google Translate] [Article 8] [Menys Còmode]
[Nate Hardison] [Harvard University]
[Aquesta és CS50.] [CS50.TV]
>> Benvinguts a la nostra segona a última secció.
En aquesta setmana parlarem de PHP, i després la setmana
farem un petit repàs per la prova 1.
Anem a partir de la pàgina 3 del problema estableix pack,
i treballarem a través de la secció de preguntes amb força rapidesa.
A la pàgina 3, vam començar a parlar de la diferència entre C i PHP
en el sentit que PHP és un llenguatge de tipus dinàmics,
mentre que C és estàtic de tipus,
i ningú ha fet molt ràpid cap codificació en alguna cosa com PHP
o Python o Ruby abans, JavaScript?
Totalment nou? Bé.
>> Tots aquests llenguatges que acabo d'esmentar
són molt diferents de llenguatges com C i C + + i Java
en el sentit que quan es declara una variable que no ha de declarar
Quin tipus de variable és, pel que en C que estaven atrapats haver de dir sempre
això serà una variable int, o això serà una variable char *,
mentre que amb PHP, amb Python, amb Ruby,
amb una gran quantitat d'idiomes més modernes que no han de fer això en absolut.
Vostè acaba de declarar la variable, i en el cas de PHP
vostè declara que és una variable amb el prefix amb un signe $,
i després el tipus de la variable es determina per qualsevol valor que està sostenint,
que és una mena de fresc.
Per jugar amb això una mica, tenim exemple de codi PHP aquí
entre les etiquetes d'inici i fi.
Estem utilitzant aquest tipus de com HTML en el sentit que
tenim aquestes esquadres aquí per obrir i tancar.
Veuràs això amb HTML.
Veurà la mateixa classe de sintaxi de XML també.
>> Això indica el començament d'un bloc de PHP.
Aquesta php? És específic de PHP.
Tanquem tot amb un> també.
Anem a obrir un arxiu en el nostre dispositiu mitjançant el que vol.
En aquest paquet es diu cridar dynamic.php.
En veritat, es pot dir el que vulguis, però el nom de fitxer
i serà important més endavant, de manera que només recorda com es digui.
Vaig a canviar l'aparell,
i jo vaig a fer un directori per
secció 9 Jo crec que estem en aquest moment.
I anem a entrar a la secció 9,
i jo vaig a utilitzar gedit.
A veure, gedit, i jo vaig a trucar dynamic.php meu.
Boom.
Dins dynamic.php, ja que s'indiquen fitxers PHP
i vull executar aquest a través de l'intèrpret PHP
He de començar tot d'aquells amb etiquetes obertes,
així que vaig a començar a aquells immediatament,
donar-me una mica d'espai entre les etiquetes,
i llavors l'objectiu d'aquest exercici era jugar amb
aquesta funció es diu gettype, per gettype, aquesta funció aquí.
>> Recordeu que no hi ha cap guió o un espai o un guió ni res d'això
que separa les dues paraules, obtenir i escriure, només una paraula del tot.
Però el que això farà és si pas en una variable per gettype,
per exemple, $ var o $ x,
això em dirà en una mena de format de depuració
el que el nom d'aquest tipus és.
Anem a experimentar aquí.
En particular, si un mira cap enrere en l'especificació del conjunt de processadors
tenim unes poques línies de codi diferents aquí.
A la primera línia de codi que inicialitza aquesta variable, $ var,
que és igual a 7, i després tenim aquesta línia printf
que diu: hey, var printf està en blanc.
Printf és una de les moltes formes en que pots imprimir coses en PHP.
Sovint, vostè veurà la funció d'eco en lloc de printf,
printf però tots estem familiaritzats amb haver estat programant en C per un temps.
El que en realitat es pot fer és que veurem si funciona copiar i enganxar.
Vaig a donar-li una oportunitat.
Anem a anar de nou cap a l'aparell.
Bé, i aquí anem.
I l'espai és una mica estrany, però aquí anem.
Tenim el codi aquí.
>> [Estudiant] És estil no és bo a la pestanya ell?
Com diu?
[Estudiant] És convencional a la pestanya d'això?
Bé, així que Sam li pregunta si és convenció a la fitxa o no.
En general sí.
En aquest cas he optat per no fer-ho.
Honestament, vostè veurà coses diferents entre els diferents programadors.
PHP se sol utilitzar amb freqüència en combinació amb HTML
i altres idiomes, de manera que de vegades la impressió es veurà una mica estrany
si guió en PHP inici i fi.
Realment depèn.
En aquest cas, la còpia i enganxar no lliga les pestanyes per a mi,
però sens dubte és, com vostè ha dit, fer-lo més clar.
Molt bé, si guarda aquest codi en dynamic.php
llavors el que es pot fer és baixar a la finestra de terminal on estic per aquí
en gedit, i per fer l'equivalent de compilació
usant make i després executar el codi en C
tot el que té a veure amb l'arxiu PHP és posar en marxa l'intèrpret PHP,
que és un petit programa anomenat PHP,
i l'argument que dóna a l'intèrpret és el fitxer que voleu interpretar.
En aquest cas, dynamic.php.
Vaja, on el poso?
Oh, em vaig posar a la secció 9, i aquí estic. Per això.
>> Ara si em quedo una altra vegada
veiem que en la meva primera trucada funció gettype
var és un nombre enter.
En la següent var és una cadena, i després en el tercer var és un boolean.
L'interessant d'això és que si ens desplacem de nou veiem que
aquests són els tipus similars als que teníem en C.
Vam tenir INT en C.
Hem tingut sort de cadenes en C,
així cadenes no eren un tipus totalment de fiar en el sentit que
nostra cadena CS50 era realment què?
Com diu? Missy?
[Missy] Char *.
Sí, va ser aquest char * que utilitzem.
Al començament del semestre que feiem servir el tipus de cadena,
però en realitat era un char * sota el capó.
Acabem de tipus definit, mentre que en PHP aquestes cadenes són un tipus real.
No hi ha res més d'això tipus char *.
>> Vas a veure que podem fer moltes més coses amb les cadenes
molt més fàcilment en PHP que vam poder a C,
i, finalment, tenim aquest tipus boolean, i la gran diferència aquí és que
si es desplaça cap avall, veiem que el nom d'aquest tipus
Ara string sencer, booleà i en lloc de, int i bool
i com es recullen diferents llenguatges de programació,
suposant que en algun moment de les seves vides que vostè entri en contacte amb
els diferents t'adonaràs de petits capricis com aquest
on C diu sencers sencers.
Alguns en diuen sencers.
Hi ha altres termes que vostè trobi.
Int gran que hem vist avui en SQL.
També hi ha nombre i després bool, boolean,
tot tipus de diferències allà.
>> Això no és molt interessant, però ara em vaig a donar una mica de temps-
si s'amplia fora a treballar a través d'aquest exercici en la part inferior de la pàgina 3
on se li pregunta quins tipus corresponen a aquests valors aquí a la part inferior.
Comptem amb 3,50.
Tenim aquesta cosa aquí, que és interessant.
No hem vist això abans, encara que si vostè ha estat seguint al llarg de conferència
vostè probablement ja sap el que és això.
Després tenim això, que això és una espècie de funky.
Vostè reconeix això.
Què és això en C?
Sam? Què li oferim en aquest C?
Obriria un arxiu anomenat dynamic.php i fer-ho llegible.
Sí, i quin seria el tipus de variable que volem assignar a aquest? Estrella de l'arxiu. >>
Exactament, volem assignar a un arxiu d'estrella.
Això és legítim PHP també.
Executeu això. Mireu el que succeeix quan es passa això en gettype.
I després també fes un cop d'ull al que és nul, el que podria ser en PHP.
Et vaig a donar un parell de minuts.
Vostè, literalment, pot copiar i enganxar aquests valors en,
i després farem una trucada a l'atzar poc sobre vostè
i veure el que tens.
>> [Estudiant] Tinc una pregunta. << Yeah.
En una de les conferències David va dir que hi ha alguna cosa que vostè pot posar a la part superior del seu arxiu
de manera que vostè no ha d'escriure en PHP cada vegada.
¿Què ha estat això?
Probablement estava parlant de l'explosió lliura, l'explosió hash.
És una directiva que si marca l'arxiu com executable
llavors el que fa és quan s'executa l'arxiu
que li dirà al programa de shell
per utilitzar l'intèrpret de PHP per interpretar els continguts de l'arxiu.
La pregunta és: quina va ser la línia especial
que podríem incloure en la part superior dels nostres arxius PHP per no haver d'incloure
aquesta línia de PHP o PHP aquest ordre cada vegada que vulgui executar l'arxiu?
I vostè pot fer això amb un munt d'arxius diferents.
Crec que depèn de la ubicació del binari PHP s'emmagatzema,
però sovint usr / bin / php és un bon lloc per començar.
Podeu evitar-ho exactament per tornar al seu aparell
i escrivint quina php.
La comanda que s'adona de quan estàs executant binari
o una ordre a l'arxiu corresponent.
Això em diu que el PHP és realment aliasing aquest arxiu binari
que s'emmagatzema en usr / bin, que és on molts dels binaris del sistema estan instal · lats.
Per exemple, si em desplaço fins al cim, ara que he posat aquest #! en línia aquí
Em pot desplaçar-se cap avall, i puc tractar d'executar
dynamic.php, però em surt aquest error sobre el permís que se'ls nega,
i el que això significa és que aquest arxiu no està donant permisos d'execució.
No està marcat com un arxiu que algú pot córrer.
>> En fer make o Clang i tens un arxiu executable de la mateixa
el compilador va ser prou intel · ligent per saber que hey, estic construint un executable.
És possible que vulgueu per a la seva execució, de manera que seria configurar
els permisos per a vostè.
Aquest no és el cas, però, quan es crea un arxiu normal de zero,
La raó és en general no desitja tenir cap fitxer al sistema sigui executable,
pel que en realitat han d'anar i fer-ho manualment.
La manera més fàcil de fer-ho és amb la comanda chmod,
i chmod + x diu afegir el bit executable
perquè no és la part de lectura, el bit d'escriptura i el bit executable,
r, w i x,
i dient: chmod + x s'encén el bit executable
per llavors l'arxiu que especifica, que en aquest cas serà dynamic.php.
>> [Estudiant] és que encén per tot el món?
A veure això, així que com puc comprovar per veure els permisos?
Saps com m'agradaria comprovar els permisos d'un arxiu?
[Resposta dels estudiants inaudible]
Com? >> [Estudiant] XSD.
XSD ens dóna l'arxiu en hacks.
Llistat de tots els arxius,-l, es em mostri tots els arxius en el meu directori
una mica en el seu llistat llarg, detallat, i aquí veiem que
aquest arxiu dynamic.php
va ser modificada per última vegada 5 de novembre a 04:21 PM.
El propietari d'aquest arxiu es jharvard.
Aquest és l'usuari que ha iniciat la sessió
Aquest és l'usuari estic treballant com,
i si vostè està també en l'aparell que està també treballant com jharvard usuari.
Vostè està en el grup d'estudiants,
i aquestes són les coses que es veuen sovint.
>> Podem entrar en molt detall aquí,
però en la seva major part el que vols veure quan vostè està mirant per veure
si o no un arxiu és executable és principalment
l'usuari que té l'arxiu, el propietari,
de manera que aquest jharvard, i llavors tenim
els bits de permisos d'aquí a l'esquerra,
i la manera de llegir això és que l'últim bit
típicament s'utilitza per canviar la si més no en-en aquest cas
això últim sovint s'ajustarà a l'anunci que indiqui
que l'arxiu és un directori i no un arxiu normal.
Llavors els 3 bits a la dreta aquí
determinar els permisos que el propietari de l'arxiu té,
pel que en aquest cas jharvard, com a propietari de l'arxiu, pot llegir i escriure en aquest arxiu,
però no hi ha un guió dient que jharvard no pot executar aquest fitxer.
Els propers 3 bits són per al grup, de manera que aquest és el grup d'estudiants,
així que si hi ha diversos usuaris al meu aparell,
i que tenia múltiples usuaris com a part del grup d'estudiants,
llavors tots poden llegir l'arxiu, però no pot escriure,
i de la mateixa manera els altres, el món
només pot llegir l'arxiu també.
Hi ha una valoració crítica bona i llarga sobre això,
així que vostè pot llegir en línia.
En l'especificació del conjunt de problemes d'entrar en això amb més detall.
>> [Estudiant] El 218 es refereix al món?
El 218 és-off de la part superior del meu cap m'estic oblidant,
però no.
Anem a veure. Estic cega en això ara mateix.
Tornar al que anàvem a fer amb aquest chmod + x
on volíem donar permisos dynamic.php executables,
i el dubte era si això donaria permisos d'execució per a tothom
o només jharvard, i podem veure això
d'executar les ordres i escrivint ls-l,
i ara veiem que està marcada com executable.
Es veu que hi va haver un canvi de color.
Ara dynamic.php apareix en verd,
i sembla que la resposta a la pregunta és què, Charlotte?
[Charlotte] Només jharvard. >> Només jharvard, sí.
>> Si volem convertir el bit d'execució a tot el món per
Com podem fer això?
Alguna idea? >> A + x?
Sí, exactament.
Charlotte va dir que podem fer chmod + x d'una de dynamic.php,
i ara si correm ls-l veiem que els bits d'execució
són, en efecte encesa per a tots.
I en realitat es pot fer el contrari d'això, el que es pot apagar per a tots
amb menys.
Ara s'ha apagat, i ara podem tornar a engegar per jharvard
pel que en realitat podem executar ara,
i ara que es veu quan s'executa el codi d'aquest especial #! línia a la part superior,
#! línia, va dir a la closca,
va dir al nostre terminal hey, quan l'arxiu s'executa,
utilitzar / usr / bin / php per interpretar aquest arxiu
i després imprimir el resultat.
[Pregunta estudiant inaudible]
És clar, deixa passar de tornada. Igual que aquest.
Vostè veurà totes aquestes directives començar amb aquest lliura i després el signe d'exclamació,
de vegades anomenat un cop shebang, hash.
>> [Estudiant] Com podem córrer amb dynamic.php php abans que sigui executable?
La pregunta era: com podem executar està utilitzant el binari de PHP
mentre dynamic.php no és executable?
Això és súper important perquè així és exactament com
que treballarà quan s'escriu conjunt de problemes 7.
La majoria dels arxius de temps de PHP no són directament executables.
La forma en que funciona és perquè és el binari PHP que és executable.
L'intèrpret és el que està sent executat,
i per tant el que està fent és, literalment, xarrupant en tot el contingut
del nostre arxiu i dynamic.php línia que va per la línia
i executar aquests comandaments, així que usant el nostre arxiu PHP
com una llista d'instruccions.
No és directament executora.
Aquí és on diem que aquests arxius s'interpreten en temps d'execució.
És un llenguatge de temps d'execució en lloc d'una cosa que es determina en temps de compilació,
no és un llenguatge compilat com C
>> Hi ha una manera d'aconseguir un llenguatge de temps d'execució per actuar com si fos un llenguatge de temps de compilació,
com si vostè té tot el rodatge realitzat al servidor
en lloc de, ja saps el que vull dir?
Sí, així que la pregunta és
¿Hi ha alguna manera d'aconseguir executar idiomes moment d'actuar més com els tipus en temps de compilació d'idiomes?
I aquí estan, vull dir, que és una àrea activa d'investigació per moltes d'aquestes empreses.
Crec que Facebook ha fet una gran feina amb PHP
i la compilació de baix, pel que és més ràpid, optimitzant el seu
ja que el seu lloc està construït en PHP.
Si vostè ha estat seguint Node.js en absolut,
que és una espècie d'intèrpret de JavaScript
per ser capaç d'executar JavaScript fora del navegador, als afores del seu navegador web,
perquè tradicionalment JavaScript acaba de funcionar dins de Firefox o Chrome,
i que s'utilitza per fer animacions fresc succeir en una pàgina web
i fer que la seva pàgina web dinàmica.
Això ha estat construït sobre una gran quantitat de treball que ha fet Google
que JavaScript i C + +
uneixen, així que hi ha un munt de recerca activa per
obtenir aquests llenguatges per interactuar i optimitzar,
principalment perquè molta gent pot codificar en PHP i JavaScript
perquè és molt més fàcil.
És molt més agradable. No té punters.
No ha tipus que suren al seu voltant.
Volien obtenir els beneficis d'aquests idiomes en temps de compilació
amb tota la comprovació del tipus i la velocitat i l'ús de memòria més baixa i que tot
mentre que encara manté la flexibilitat i la facilitat d'ús d'aquests els més nous.
>> De tornada al nostre pla original d'atac.
Tenim algunes d'aquestes preguntes aquí a la nostra especificació de problemes.
Anem a anar a través d'ells molt ràpidament, i anirem per l'habitació.
Charlotte, quin tipus és de 3,50?
[Charlotte] Això és un doble. >> És un doble.
Jimmy, què és aquest proper? >> Una matriu.
Una matriu, impressionant, i Jared, quina és la funció fopen?
[Jared] És un recurs. >> És un recurs.
Això és una mica d'un ésser nou, no un estel de l'arxiu, no un arxiu.
És un recurs és el tipus en PHP,
i ho sento, Ella, la hipòtesi nul · la és l'últim?
Null.
Null, com s'escriu en PHP? >> La mateixa forma.
De la mateixa manera, capitals? >> Yeah.
Sí, està bé.
Aquí, tenim un doble, tenim una matriu,
tenim un recurs, i llavors tenim nul.
Anem a veure ara si l'has vist-
veurem, de manera que ara crec que el que jo també vull fer és aixecar
aquesta pàgina web aquí, aquest php.net / manual,
així que si vostès de copiar i obrir un navegador web.
Vaig a aixecar Chrome, ja que in
Vull mostrar que això no només perquè
podem parlar tot el dia sobre els tipus i totes aquestes coses divertides
sinó perquè aquest és el manual de PHP,
i hi ha una gran quantitat de programadors de PHP que hi ha.
Hi ha un munt de llocs web PHP per aquí,
i com a resultat, hi ha una gran quantitat de documentació sobre PHP,
i el manual, aquest php.net, és un molt bon lloc per anar
quan tens preguntes sobre quina és la millor manera de fer X en PHP
o el que és una funció sembla?
Només tipus de familiaritzar-se amb l'aspecte que té, perquè
se li ve aquí sovint, una mica per ajustar problema 7.
>> Si vostè acaba damunt de fer un projecte final que utilitza PHP
aquest serà un lloc que es convertirà molt ben informat.
Sovint, la manera de fer això és que utilitzen Google per buscar el lloc,
i no utilitzar el quadre de cerca que passa aquí a la part superior dreta, que és una espècie de petit.
Si vostè està buscant a Google voltant buscant alguna cosa que fer amb PHP i ens veiem
un dels enllaços manuals aparèixer normalment es pot confiar que
com un recurs bastant bo.
Impressionant, tan fora d'aquest tipus, només per curiositat,
quins no ho hem vist?
Qualsevol cosa que no hem vist aquí?
[Estudiant] Recursos. >> Vam veure recurs a la crida fopen.
[Estudiant] Objectes. >> Objectes que no hem vist amb seguretat.
Devolucions de trucada que no hem vist.
Hi ha alguns d'aquests pseudo-tipus.
Sens dubte, només vaig veure sencer i doble.
No arribem a veure alguns dels altres, així que si fem clic sobre els nombres enters
podem veure hi ha enters qualssevol altres que tenen aquí?
Són tots tan sencer, nombre enter, nombre enter.
Alguns idiomes tenen grans tipus sencers,
com vam veure en MySQL avui va haver int i després int gran.
Cool.
>> Així, PHP manual.
Tornem a la nostra especificacions conjunt de problemes, i ara vaig a desplaçar-se cap avall a la pàgina 4.
Una de les coses que succeeix quan rep aquests idiomes
que no tenen aquest tipus estàtics, de manera que aquests idiomes en què ha de declarar
el tipus de variable de fins a un front
és que et donen casos en què podria començar a tenir variables de diferents tipus
interactuen entre ells,
i PHP fa això quan tracta de fer
el que considera que és el més sensat
quan es té 2 tipus diferents interactuen entre ells.
Per exemple, si ens fixem en aquestes línies de codi aquí
veus que tenim el que succeeix quan
tractem d'afegir la cadena 1 fins al nombre enter 2.
Què passa si tractem d'afegir una cadena que no és un valor numèric
sinó més aviat personatges reals, CS amb el número 50?
Llavors veurem, hi ha alguna cosa diferent que el que succeeix amb
en lloc d'afegir una cadena a un nombre que va a afegir un nombre a una cadena,
i així successivament i així successivament fins al punt en què estem rebent
algun tipus de coses rares aquí on tenim 7 + veritat.
Què diables vol dir això?
>> Si vostès van per davant i enganxar una mica d'aquest codi en l'aparell.
Vostè pot mantenir-lo en dynamic.php.
Anem a veure què passa.
[Estudiant] Només ha d'utilitzar la impressió no, printf?
Sí, i trobareu que la impressió és també una funció vàlida per imprimir en PHP.
Hi ha moltes maneres diferents de fer-ho.
Anem a veure amb un parell dels exemples més endavant, una vegada que comença a parlar
sobre l'únic problema que escriurem
i després la concentració problema que escriurem
que tot i que tenim fopen i fclose
que no és sovint la forma més senzilla de llegir en el contingut d'un arxiu.
PHP té un munt d'aquests romanents C-like.
[Estudiant] Quan poso en tots els 6 d'aquestes coses que només et donen un nombre com una sortida.
[Nate H.] Quan es posa en tots els 6 d'aquestes coses.
Anem a veure que és perquè és possible-
una cosa és que aquestes trucades d'impressió no s'acaben al final amb noves línies.
No hi ha nova línia que separa cadascuna d'aquestes trucades d'impressió,
així que potser vostè està rebent un gran nombre,
i no deixa de ser amalgama de caràcters de nova línia.
[Estudiant] Bé, com puc estar segur-
Bé, hi ha un munt de maneres diferents.
Manualment, pot posar en una impressió d'un caràcter de nova línia,
un ressò d'un caràcter de nova línia,
imprimir de nova línia.
[Estudiant] Així que trobo és el mateix que printf?
>> Printf és com printf
on s'està imprimint una cadena amb format.
El estàs subministrament de la cadena de format i, a continuació totes les variables de marcador de posició.
Sovint és una cosa que no s'utilitza-
veurem, com un descàrrec de responsabilitat,
Estic menys familiaritzat amb PHP que jo amb els idiomes de llocs web,
i quan he programat en PHP que no solen usar printf
perquè em resulta més ràpid utilitzar les funcions d'interpolació de cadenes que té,
que entrarem i et vaig a mostrar en un segon,
mentre que en C que tipus de haver de fer això hacky per aconseguir que s'imprimeixi correctament.
En realitat es pot posar directament en les variables de les cadenes en PHP.
Printf és una mica massa llarg per al que faig. Sí, Ella.
[Ella] En general, si vostè aconsegueix error d'anàlisi significa això-
igual que en C no li dirà exactament on és l'error i el que és,
¿Això vol dir mirar a través del seu codi complet i la figura cap a fora?
És típicament més específic que això.
Crec que en aquest cas era una mica apagat,
així que crec que en aquest cas ens faltava un punt i coma.
Es tractava de donar sentit a tot,
així com els llenguatges interpretats, l'intèrpret es tractarà
i fer tot el possible perquè tot funcioni correctament.
>> Vas a veure, per exemple, en JavaScript
Vas sovint-line declaracions finals amb un punt i coma igual que ho fan en PHP,
tal com ho fan en C.
En JavaScript alguns dels intèrprets de JavaScript
en molts dels navegadors posarà en punt i coma per a vostè
si li passa que se'ls falta.
Van a tractar de donar cabuda a alguns descuit de la seva part.
Aquí és on podria estar tractant i tractant i tractant de fer que les coses funcionin,
i, finalment, s'arriba a un punt on diu bé,
No puc fer les coses en el rescat, i aquí és on vostè obtindrà un nombre de línia
que pot semblar una mica fora del lloc exacte.
Està bé, així que anirem a través d'aquest molt ràpid.
Ens va deixar amb Ella, així que anirem a Missy,
i Missy, què impressió de la cadena 1 més el nombre 2 li donar?
[Missy] 3. >> 3.
Això té sentit? Una cosa així?
Et dóna un nombre? Et dóna una cadena?
[Missy] Diversos. >> Es tracta d'un nombre.
Però val la impressió, pel que et donarà algun tipus de cadena.
>> Una de les coses que podem fer per comprovar això
és si ho fem $ var = 1 + 2
i llavors diem ressò de gettype,
així que estem utilitzant un tercer tipus d'impressió aquí.
Ara podem veure el que passa aquí.
Aquí el que tenim és que tenim un nombre enter d'això.
Tot i que es van anar sumant aquesta cadena en un nombre,
que no et donin una cadena a partir d'aquesta, igual que Missy va dir.
Estàvem preparant un sencer.
Està bé, així que anem a veure, al costat de dalt, Kevin.
CS + 50? >> [Kevin] 50.
[Nate H.] 50. Això té sentit?
[Kevin] Yeah.
[Nate H.] Per què? Per què té sentit per a tu?
[Kevin] Perquè és només tenir la cadena, amb número zero valor.
Sí, molt bé.
Tipus de situacions ambigües, però és bo saber el que passa.
Stella, què passa després amb el número 1 + cadena 2?
[Stella] 3. >> 3 de nou.
I en aquest cas, no obtenim una cadena o un nombre?
>> Anem a donar-li una oportunitat.
Algú més ràpid que jo obtenir la resposta? Charlotte?
Oh, no ho va fer-bé, anem a veure, farem el mateix tipus de coses
on tenim un nombre més una cadena, i que repetirem el tipus,
veure el que tenim.
També vam rebre un nombre enter.
No importa quina és la cadena, que un és el nombre.
Encara obtindrem un nombre enter.
És encara va a fer el que es podria esperar.
D'acord, Sam, què passa amb 90 + 9 ampolles de cervesa a la paret?
[Sam] 99. >> 99.
No hi havia ampolles de cervesa a la paret, però.
Ens fa una mica més d'informació sobre el que està passant.
[Sam] Si haguessis escrit amb lletres 9
llavors tindria 90, no?
[Nate H.] Yeah.
La pregunta era si ens haguéssim escrit 9 sobre com N-I-N-E
hauríem aconseguit 99 o 90?
Ens agradaria obtenir 90.
És, literalment, només a la recerca de caràcters de dos dígits.
No és prou intel · ligent per reconèixer les paraules de nombres i aquestes coses. Sí
>> [Estudiant] Existeix tal cosa com l'encasellament en PHP?
Existeix, i és exactament la manera com ho faria en C.
Què hi ha de 10/7, Charlotte?
[Charlotte] 1,4285.
[Nate H.] Sí, i què podria ser sorprenent sobre això?
Què passaria si ho fessis aquest mateix tipus de coses en C,
si ho has fet 10/7 en C?
[Charlotte] Només li donaria vostè, depenent de com es typecasted suposo
seria donar-li només un nombre limitat de dígits després del punt decimal.
Sí, de manera que un nombre limitat de dígits després del punt decimal.
Quina altra cosa podria ser, li donarà cap dígit després del decimal?
Sovint, no tan nou, depenent de com ho està typecasting
que pot o no pot convertir en un nombre de coma flotant.
Aquí era una mica agradable que ho va fer.
Si haguéssim mostrat això quan vam començar a fer aquest tipus de coses en C
probablement hauria tingut sentit una mica més
que no només ha d'anar a 1.
I, finalment, Jamie, què hi ha de 7 + veritat?
[Jamie] 8. >> 8.
Què significa això?
Suposo que només dóna el veritable valor d'1.
Si. Què passa si canviem això a fals?
[Estudiant] 7.
Sí, així que recorda on es parla d'aquests valors binaris,
1 és activat, 0 és apagat?
Ara tenim cert és 1, 0 és fals,
i és possible que no hem vist en els exemples C que hem fet aquest semestre passat,
però històricament el tipus bool al carrer no ha estat un tipus real,
així que la gent ha utilitzat 0 i 1 en el lloc de veritable i fals.
Aquesta és una manifestació d'això.
>> Bé, així que una part important de tot això
és que tenim aquests tipus.
Ells poden interactuar entre ells.
Sovint poden interactuar entre si de manera que siguin agradables, com hem vist aquí.
És agradable ser capaç de tenir una cadena i el número 2, sumar-los i obtenir 3.
Això té sentit.
No obstant això, quan vostè està escrivint pàgines web, i especialment quan vostè està processant
entrada de l'usuari, pel que diuen que ha escrit un formulari web
que recull la informació de l'usuari i després es va a processar
en la part posterior, al costat del servidor en el codi PHP
si estàs esperant que el valor que l'usuari va escriure i presentar
a la seva forma de ser un enter o com un nombre de punt flotant o alguna cosa per l'estil
ha d'emetre explícitament
i després fer una mica de comprovació de tipus.
>> No vol dependre només d'aquest sistema de manipulació de tipus per fer les coses funcionen,
sobretot per raons de seguretat i només per la solidesa del seu lloc web.
Només és una cosa a tenir en compte que cada vegada que vostè està manejant les dades del formulari,
tot el que ve al correu o les superglobales get
assegureu-vos que sempre validar i convertir i encasellar-hi.
I igual que parlàvem fa un moment que encasellament
en PHP és exactament el mateix que en C, on té els parèntesis
i després el tipus.
Tingueu-ho en compte.
Una de les funcions que li serà útil quan vostè està fent això
és que hem estat utilitzant, i això és una mica com un apart-
hem estat usant aquesta funció gettype aquí
per esbrinar el tipus d'una variable,
i si bé això és útil per a la depuració i per veure quin tipus d'una variable és
no voleu utilitzar això, per exemple, en una condició on
vostè està comprovant per veure si gettype de $ var = sencer fer alguna cosa.
Això és dolent, dolent, dolent.
En el seu lloc hi ha aquestes funcions trucades és sencer, és una cadena,
és array que voleu utilitzar en el seu lloc, de manera que en aquest cas
el que m'agradaria fer en lloc d'aquest tipus aquí
S'utilitza el nombre enter és var.
I estan sovint plantejada * is_ en el sentit que podria reemplaçar el * amb número sencer,
cadena, etcètera, i només per assegurar-se que realment ràpida
Es tracta int php.
Sembla que pot fer qualsevol és int o s'hagi sencer també?
Sí, àlies, sobrenoms tan sencers int.
Cool.
>> Com ho estem fent?
Anem a agafar el ritme una mica.
Ara anem a parlar sobre les matrius, així com es pot veure
a la següent part de l'especificació es parla de com les matrius en PHP
són lleugerament diferents del que són en C.
En veritat, són una mena d'amalgama de
les matrius que hem arribat a conèixer i estimar en C
on tot és del mateix tipus
emmagatzemen consecutivament i de forma contigua a la memòria,
i vostè té aquests índexs numèrics.
Vostè té l'índex 0, l'índex 1, índex 2,
i guarda els valors en els índexs.
També al carrer, quan va escriure Speller, que molts de vostès
va fer l'enfocament de la taula hash, i va veure que no teníem
un tipus diferent d'emmagatzematge en què es cartografia
la clau d'un valor, de manera que en intentar desar alguna cosa a la taula hash
calia especificar que volia guardar amb una clau específica,
i que la clau determina la ubicació del valor i on seria emmagatzemat.
Vostè té classe d'aquests dos conceptes succeint al mateix temps en una matriu de PHP,
i, com a resultat, sovint ens criden a aquestes matrius associatives
on s'associa una clau en un valor.
En la següent part es parla d'un array PHP simple
on tenim tecles a, b, i c,
totes les cadenes, l'assignació als nombres enters 1, 2, i 3.
I vostè pot tenir claus de diferents tipus.
>> Vostè pot tenir algunes claus que són cadenes, algunes claus que són nombres enters.
Pot tenir valors de diferents tipus.
Vostè pot tenir un valor que és una cadena, un valor que és un nombre enter,
un valor que és un objecte o una altra matriu, per exemple,
tots en el mateix objecte de matriu, que és una mica estrany.
No ha de tenir una matriu que s'acaba d'aconseguir un tipus d'element en el mateix.
Vostè pot tenir moltes coses diferents passant aquí.
L'altra cosa a tenir en compte és que quan vostè veu alguna cosa com això en el seu codi,
que és PHP vàlid per declarar una matriu com aquesta, 0, 1, 2, 3, 4, 5,
que es declara un arranjament de $ inicialitzat a ser aquesta matriu.
Però el que en realitat estàs rebent sota el capó és aquest tipus de implícit
generació de claus on tenim 0 a 0, 1 a 1, 2 a 2, 3 a 3.
I resulta que, fins i tot si vostè té un arranjament com aquest noi aquí
on té a, b i c com les tecles de
i després de començar a utilitzar el mètode push matriu per a poder fer servir aquesta matriu com una pila,
així que vostè pot veure que aquest objecte de matriu, aquesta matriu és en realitat es sobrecarregui.
Podem utilitzar-lo com una matriu. Podem utilitzar com una taula hash.
Podem utilitzar-lo com una pila.
En començar a empènyer les coses en aquesta sèrie
la primera cosa que empènyer a aquest serà l'índex 0 i l'índex 1 i l'índex 2.
Vostè pot obtenir aquest tipus de generació implícita de tecles
llevat que s'especifiqui de forma explícita.
La forma en què s'especifiqui explícitament tecles, és clar, és mitjançant l'ús d'aquesta notació suport,
que és similar a les matrius excepte que en lloc de permetre que únicament
índexs sencers d'aquí, ara permetem que res.
Si desitja que el seu clau sigui una cadena, que t'ho especifica així.
Si vostè vol que sigui un int, cal identificar-lo amb el int que voleu utilitzar.
>> Preguntes sobre els que fins ara?
Una de les coses bones sobre aquesta idea
és que es pot només tingui un valor emmagatzemat amb una clau particular.
Si tornem al nostre aparell-em deixa esborrar algunes d'aquestes coses.
I diguem que inicialitzar una matriu a ser 0, 1, 2, fet.
Si jo ara sé que, per exemple, si jo trec $ arr [0]
Em vaig a posar el valor 0 imprimir,
i ja que no tan sols pot ser un valor emmagatzemat d'una clau particular
si guardo alguna cosa en $ arr [0], diguem a,
llavors sé que quan em poso $ arr [0] de nou
Jo no vaig a obtenir 0 imprimir com abans.
Jo només vaig a aconseguir una.
Així que això és bàsicament dient que no puc tenir $ arr [0] emmagatzemar 2 valors diferents.
No es pot emmagatzemar tant en 0 i la cadena, com això literalment reemplaça
el que estava en $ arr [0] prèviament.
La raó Porto això a col · lació és córrer, a veure què passa.
Mira que tinc 0 imprimir i després aquí baix.
No hi ha una nova línia allà perquè era mandrós i no indicar un polz
El millor d'això és que podem utilitzar això com una manera
per captar aquesta idea d'un conjunt
on no podem tenir diverses claus dins d'una matriu.
No podem tenir claus idèntiques dins d'una matriu.
No puc permetre que la tecla 0 i el valor 1 i la tecla 0 i un valor
o la tecla 0 i el valor vertader.
Les claus són tot només hi ha una clau a la matriu.
Tot i que pot tenir el mateix valor emmagatzemat
diverses vegades a la matriu en virtut de diferents claus
que no és possible tenir claus idèntiques diverses vegades en la matriu de PHP.
>> Si ens fixem en el problema següent, unique.php,
on volem obrir un arxiu PHP
que conté una llista de cadenes, una cadena per línia,
i volem trobar totes les cadenes úniques en aquest arxiu
tot el que hem de fer és utilitzar una d'aquestes matrius de PHP
i l'ús de les cadenes a l'arxiu com les claus d'aquest array
i mantenir l'actualització de la nostra matriu com emmagatzemem aquestes noves claus.
En llegir cada línia del fitxer que pot emmagatzemar en la matriu,
i al final tindrem com les nostres claus en el nostre array
totes les cadenes úniques dins de l'arxiu.
Això té sentit?
Anem a veure com funciona això.
Anem a obrir, d'acord a les especificacions, un nou arxiu anomenat unique.php.
Obriu. Oops, ho sento, nou arxiu.
Anem a començar amb les etiquetes de l'inici i el final mateix.
Anem a guardar-lo en la secció 9, i anem a cridar unique.php.
Bé, ara zoom in
La idea és obrir un arxiu,
llegir en arxiu línia per línia.
Per a cada línia a l'arxiu
tindrem una matriu on tenim
la línia com la clau.
I després, quan arribem a la final aquí
Tecles $ arr són les úniques línies
de les actuacions, ja que sabem que si poso la línia a la matriu
moltes vegades s'acaba de mantenir reemplaçant el valor anterior,
i que en realitat es pot posar com line array en si mateix així com així.
>> Això és una mica estrany.
Estem emmagatzemant el mateix valor de clau parell una i altra vegada i una altra,
però ja que es garanteix que no hi haurà només una clau anomenada línia
de manera que si tenim un arxiu que diu-un arxiu de sons d'animals i té guau, guau,
miau, miau, mu, mu, i cada vegada que llegim un soroll animal fora
com trama i l'emmagatzemem en la nostra matriu obtenim trama, i després la segona vegada
emmagatzemem trama es sobreescriurà la primera vegada que l'emmagatzema.
Al final, només tindrà una entrada a la matriu
per a cada un dels sorolls dels animals al nostre animal arxiu de sorolls.
Vostès se senten segurs que vostè pot fer front a l'obertura d'un arxiu en PHP?
Una forma de fer-ho-anem a repassar aquesta manera ràpidament, que ho faci
és amb fopen, com hem vist anteriorment.
Pot fopen some_file.txt.
Pot obrir en mode de lectura, igual que en C.
Aquesta és una forma perfectament vàlida per fer-ho.
També després de la lectura a l'arxiu línia per línia
tenen les mateixes funcions, moltes d'elles, que ho va fer al C.
Vostè té fgets.
Vostè té feof, encara que no ens agrada fer servir aquesta
perquè, recordi, que no era molta en C.
Pot fer-ho de la mateixa manera,
però aquí és una cosa realment genial.
Ho sento, no vull fer $ arxiu, però hi ha una funció anomenada arxiu en PHP,
i aquesta funció aquí és genial, perquè el llegeix tot el contingut
l'arxiu que especifiqueu, per some_file.txt,
llegeix tot el contingut d'aquest fitxer en una matriu
i després li permet iterar sobre ella, la qual cosa és bastant enginyós.
>> Si ens anem, per exemple, al nostre navegador web
i ens fixem en Google per a l'arxiu PHP
vostè pot veure aquí que el manual diu que l'arxiu es llegeix un arxiu sencer en una matriu,
i podem file_get_contents per tornar el contingut d'un arxiu com una cadena,
però en general només el rep com un conjunt és molt bonic perquè el que fa
l'hi trenca de manera que cada element
de la matriu és una línia de l'arxiu,
pel que si ens fixem en l'arxiu 0, que és la primera línia de l'arxiu.
Arxiu 1, segona línia, l'arxiu 2, tercera línia, i així successivament i així successivament.
No seria agradable si això era tot el que havia de fer en C?
Bastant enginyós.
David va mostrar en aquesta conferència, i va ser l'idioma que va mostrar
que, a més del nostre estàndard de bucle en PHP que havíem de
for ($ i = 0; i <10, i + +),
i vostè pot fer això en PHP també, el mateix:
també tenim aquesta construcció fresc anomenat foreach.
Foreach és realment útil quan iterar sobre matrius o les estructures de dades
ja que li permet treure cada element de la matriu
sense haver de fer-ho manualment la indexació de tu mateix,
sense haver de crear manualment una variable índex, incrementar,
treure el valor de la matriu en aquest moment, perquè això és una cosa molt comú que fer.
>> Vostè probablement ha fet un munt de vegades quan estava fent coses C
al llarg del semestre, de manera que amb aquesta foreach
podem iterar sobre aquest conjunt d'arxius,
i la sintaxi és que volem ara llaç sobre aquesta matriu
i especificar que la variable que utilitzarem per emmagatzemar
l'element d'aquesta matriu local, local per a l'àmbit d'aplicació d'aquest bucle foreach,
és que anem a anomenar línia.
Si es tracta d'un arxiu de només paraules i no hi ha una sola paraula en una línia
que podríem anomenar paraula, així, en realitat només li dono un nom,
el que vulguis dir,
i després dins del bucle que pot fer el que vulguis amb aquesta línia variable.
Si no és suficient per obtenir el valor de la matriu i també obtenir
l'índex juntament amb ell es pot especificar un nom per l'índex
així com el valor, i ara vostè té accés a 2 variables.
Tens $ i i la línia
on $ i és l'índex a la matriu,
i la línia és la línia que recupera l'arxiu.
Per exemple, si volem imprimir fet 0 línia de l'arxiu d'aquest tipus,
podríem fer-ho de la mateixa manera que aquest, "Línia $ i del fitxer és $ line"
i aquí és una cosa que també no han vist encara ni
on acabo totalment saltat% aquest negoci sencer% s d
que hem hagut d'enfrontar a C, i en el seu lloc m'he anat directament a
escrivint les variables en línia en el meu cadena.
>> Això es diu interpolació variable, cadena d'interpolació
on està farcit de les variables en el dret, i l'intèrpret de PHP
és prou intel · ligent quan està llegint a través d'una cadena que comença amb cometes-
No cometes simples, amb cadenes entre cometes senzilles que vostè no pot fer això-
però amb dobles cadenes entre cometes com es llegeix a través d'ella està buscant per les variables.
Està caçant, i si veu les variables es prendrà el valor de la variable
i ficar-ho en la cadena si es pot convertir en una representació de cadena,
que és bastant enginyós.
Per ara, anem a comentar la resta de tot,
salvar això, i el que podem fer ara és que podem obrir un arxiu
que podem anomenar some_file.txt-let 's crear un nou arxiu-
i ens pot posar en un munt de coses sense sentit en aquí només per provar tot el que fos,
el guarda, en diuen some_file.txt, com estic fent aquí dalt a la part superior,
i ara si el zoom només per assegurar-se que tot és al mateix directori
sembla que tinc unique.php i some_file.txt al mateix directori.
Si em quedo unique.php php
veure com s'imprimeix cada línia del meu arxiu i quin és el límit?
>> Això és molt poderós, no?
Mira, ens va prendre 3 línies de codi per obrir un arxiu.
Bé, 4 línies de codi. No puc comptar avui, clarament.
Però en realitat només 2 línies interessants de codi, perquè els altres 2 van ser les claus,
però en aquest codi molt hem estat capaços d'obrir un arxiu, iterar a través d'ell,
tregui el número de línia i la línia en si
i s'imprimeixi.
Cool stuff. Charlotte.
[Charlotte] Tinc una pregunta sobre la sintaxi.
Així foreach acords amb cada línia del fitxer que s'obre,
i després, quan volem fer les coses amb cada línia que acaba de fer-ho com
i després associar el valor.
[Nate H.] El que pot fer aquí mateix-el dubte era
el foreach té a veure amb la matriu, de manera que la sintaxi foreach
és realment foreach i observi que no hi ha espai
o qualsevol cosa entre ell i per a cada un el.
Ells han d'anar a la dreta al costat de l'altra,
i llavors es pren en una matriu,
i després tens aquesta altra paraula clau es diu com el que ha de ser-hi,
i després, després de la qual vostè pot posar un nom de variable,
en aquest cas vostè estarà tirant dels valors de la matriu,
no dels índexs, o si ho fa com ho he escrit a sota
obtenir les claus i els valors.
Vostè té foreach element de la matriu o el parell de la matriu com la forma adequada per al valor
o com el valor just.
Depenent del que necessiti, si vostè no necessita les claus,
llavors vostè pot anar amb el valor.
Si voleu que les tecles que pot anar amb ells.
>> [Charlotte] També em vaig adonar que mai va declarar la io línia.
Com tan sols saben el que són?
[Nate H.] Què entén vostè per declarar?
[Charlotte] Mai els vaig dir el que o la línia de mitjans.
[Nate H.] mai Ens van dir que l'ordinador el que significa o la línia en termes de-
[Charlotte] Que estan indexades o que-són
[Nate H.] Mai hem dit que això se suposa que és l'índex o la clau i el valor,
i això és perquè aquest és l'intèrpret PHP.
Això serveix com la declaració i diu bé, la clau serà
una variable anomenada i s'emmagatzema en una variable anomenada i.
El valor s'emmagatzemarà en una variable anomenada línia,
així que això serveix com a declaració d'aquestes variables
i diu que $ i és una clau, i $ line és un valor.
Sí, Ella.
[Ella] Si les claus no es fan numèricament
Com decidir quin ordre d'imprimir tot?
És igual que l'ordre en que van entrar a?
[Nate H.] Anem a donar-li una oportunitat.
Crearem una variable anomenada arr,
i podem fer una va a 7.
Diguem que 0 va a un altre matriu amb 1, 2 o poma.
Diguem 7 passa a 1, b passa a 2,
i 3 passa a 4.
Això és una mica boig buscant un exemple perquè estem barrejant
cadenes i sencers per tot el lloc.
No hi ha una ordre real a aquesta matriu.
Vull dir, tot el que podíem demanar per ordre alfabètic de les claus.
Podríem demanar tot en ordre alfabètic pel valor.
>> Podríem tractar de tenir en compte que algunes són cadenes, alguns són sencers,
i que es podia tractar de convertir a tots en el mateix tipus i veure què passa,
o podríem considerar-los en el valor en què ja van entrar
on posem a aquest tipus en primer lloc, a aquest tipus en segon lloc, a aquest tipus en tercer lloc,
aquest tipus en el quart, etc.
Anem a veure el que passa quan ens trobem aquest codi.
Si ens desplacem cap avall i fer el mateix tipus de coses,
i aquí no s'està imprimint les noves línies.
Quan ho vaig llegir coses del fitxer, va ser inclòs les noves línies en els valors,
que va ser per això que imprimeix molt bé, mentre que aquí no ho va fer,
així que per això tot està aixafat junts.
Anem a afegir a la nova línia per fer les coses bé.
Anem a repetir l'execució, i aquí el
mira el que va passar.
S'imprimirà tot en l'ordre en que posem a la matriu.
Sense preservar l'ordre en aquest sentit.
>> Tornant al problema de visitants únics
on volem ser capaços de repetir un arxiu,
i donarem some_file.txt,
i anem a iterar sobre ella d'aquesta manera.
Vam dir que volíem utilitzar una matriu per assegurar-se que ens van donar tot el
línies úniques d'allí, i podríem fer-ho molt fàcilment
amb només emmagatzemar en una matriu que, per descomptat, declarar fora de l'àmbit d'un bucle,
i ens va dir que si fem servir les línies a l'arxiu com les claus en la nostra gamma
si entrem en una línia duplicada estaríem anul · lant el valor anterior.
No és sempre possible tenir dues claus que són idèntics en la mateixa matriu.
Podem fer precisament això.
Ens desfarem d'aquesta declaració ressò aquí.
Aquí està guardant la línia a l'arxiu en el nostre arsenal
utilitzant si mateix com la clau.
No hi ha res a ella, i resulta que ni tan sols necessita aquesta clau.
No cal que em variable.
En aquest punt, si haguéssim de fer un altre bucle foreach
i estàvem a un bucle sobre cada arr
i la línia d'ara, si ens fem ressò-oops, em sap greu.
No podem fer servir la coma. Hem de fer servir això com a paraula clau.
Ara bé, si ens fem ressò de la línia que hem d'obtenir totes les paraules úniques a l'arxiu.
Si pugem a some_file.txt,
i diguem que fem poma, plàtan, poma, poma, plàtan,
si anem a imprimir totes les paraules úniques en aquest arxiu només ha de rebre
poma i plàtan per imprimir.
Si estalviem això, ara aquí tornarem a augmentar,
php unique.php, i ta-da.
Hem uniqued amb èxit l'arxiu.
>> L'última part d'aquest problema se li demana que ordenar aquesta matriu abans d'imprimir
perquè en aquest senzill exemple que acabem de fer
vam tenir la sort en el sentit que l'arxiu
que vam fer aquest exemple inventat amb pomes i plàtans.
Va ser ordenat ja.
Però l'ús de la funció de classificació simple que vostè pot ordenar una matriu, que és bastant enginyós.
L'última cosa que volia parlar amb vosaltres sobre molt ràpid
és que aquest tipus de PHP està molt bé, i és super útil
saber que fer si mai ha de fer coses petites, ràpides programació.
Per exemple, si he d'escriure un programa que, per exemple,
posa a tothom en seccions que no aniré i escriure en C.
Això serà llarg.
Serà una mena de dolor, especialment si hi ha arxius involucrats,
com vostès han vist.
És tan bonic que només amb això molt codi aquí
hem estat capaços d'extreure a través d'un arxiu, extraieu tots els valors únics
i els imprimeix de tornada.
>> No obstant això, per als seus treballs, dels seus projectes,
si vostè està construint llocs web amb PHP és que el poder
ens estem quedant nostres arxius PHP a través d'aquest intèrpret,
i l'intèrpret està processant tot dins de les etiquetes PHP,
deixant tota la resta intacte i escopint els resultats.
Podem fer això per construir HTML mitjançant programació.
Ara bé, si ens remuntem a l'especificació, l'últim problema a l'especificació
parla d'aquesta idea de les concentracions
i la creació d'un menú desplegable,
que pot o no vol fer, depenent del que el projecte final està fent,
que permet a l'usuari seleccionar d'una llista de totes les concentracions possibles
seva única concentració.
Ara, aquest és un tipus de dolor que escriure això
i hem de fer tot això de forma manual, especialment quan vostè està tenint per assegurar
que té tots els suports angulars en el lloc correcte i totes les cites en el lloc correcte,
així que amb PHP es pot fer això mitjançant programació, i vostè pot fer això molt ràpidament.
>> Anem a veure com es fa això.
Anem a obrir un nou arxiu.
Posarem en les nostres etiquetes PHP.
Anem a cridar concentrations.php,
i ara, quan vostè està fent això, una mica d'alguna cosa bona per pensar
quan vostè està tractant de barrejar i combinar la seva PHP i l'HTML
és determinar, d'acord, quina és la part que vull generar mitjançant programació?
Quina és la part que pot generar mitjançant programació?
És cert que es pot fer tot de la seva HTML
dins dels blocs de PHP.
Vostè pot repetir tot l'HTML com cadenes.
Per exemple, si vull començar a fer les etiquetes seleccionades dins de PHP
El que puc dir d'eco, per exemple seleccionar el nom = concentració,
i després per sota que podria tenir una altra etiqueta eco
o altre ressò anomenat tancar la selecció.
Aquesta és una manera de fer-ho, perquè el que és a dir, literalment, farà
és imprimir aquesta cadena quan s'executa a través de l'intèrpret PHP,
de manera que el resultat serà HTML.
Si guarda aquest arxiu, ja que és en aquests moments
i corro concentrations.php php
mira el que tinc.
Tinc aquesta etiqueta de selecció obert prop.
>> Si hagués de fer això i jo anàvem a salvar aquest resultat a un arxiu,
dir, concentrations.html-espera, sembla que el l ha passat a l'altre costat-
ara si m'obro aquí concentrations.html veieu que jo tinc un arxiu HTML vàlid.
Això és una mica estrany?
Estem usant PHP per crear HTML, crear HTML vàlid.
La manera com ho estem fent és que estem només tenir la impressió de PHP
el codi HTML que volem imprimir.
Això és literalment com els llocs web de PHP estan funcionant.
Quan vostè visita un lloc web que el manté a una mena
alguna cosa, alguna cosa, alguna cosa dot com slash index.php
l'equip està literalment cridar index.php,
executar a través de l'intèrpret PHP, i tot el que surt escombraries
que està enviant de tornada al navegador i dir hey, navegador, interpretar això com HTML.
El millor és que pot ser un mal de escriure constantment ressò, ressò, ressò, ressò
i tancar tot en cites com aquesta, així que si vols escriure
el codi HTML que serà estàtic vostè mateix ho pot fer d'aquesta manera,
posar fora, el tanca,
i aquí només es col · loca dins de les etiquetes PHP que vostè coneix
vol generar mitjançant programació, i en aquest cas es tracta de les etiquetes d'opció
que són un mal de generar.
>> Per exemple, es podria generar un miler d'etiquetes d'opció
fent alguna cosa com això, $ i <1000, i + +
i dient valor eco-option = $ crits, no puc fer això.
Bé, anem a donar-li una oportunitat i veure què passa.
$ I i després dir $ i </ option.
En lloc d'haver de escriure aquesta etiqueta opció mil vegades diferents
Estic utilitzant el codi PHP per generar de forma automàtica, mitjançant programació.
Una mica enginyós. Si.
Recordo que això s'esmenta ni a la conferència o el tutorial,
però quina és la diferència entre les cometes,
les normals i aquestes coses simples?
Això és realment una cosa que he fet malament aquí que jo anava a mostrar.
Les cometes simples no permeten els caràcters especials,
així que tot l'interior d'una sola cadena entre cometes s'interpreta literalment.
Si jo tingués un \ n dins cometes simples i llevat això, per exemple,
i ara vaig per aquí i executar-
oops, on vaig?
Oh, és perquè es va oblidar el $.
>> Ara bé, si obro-en realitat, aquí, anem a desfer-nos de la que escriu a un arxiu.
Anem a llegir-lo.
Aquí podeu veure que tinc aquest literal \ n a la cadena, com no és una nova línia actual,
i de la mateixa manera, en lloc de realment interpolant el valor d'aquesta variable
em va donar la $ i en si, que és una espècie de dolor.
La forma d'evitar això és utilitzar les cometes dobles,
i després, quan s'utilitza cometes dobles que en realitat es
adequadament interpolar els valors de totes aquestes variables a aquí
i també reconeixen aquesta \ n per ser la nova línia que és
i no \ n.
Amb els sols és agradable quan tens
personatges que podrien ser interpretats com caràcters especials, perquè llavors vostè no ha de
escapar d'ells constantment.
Les coses poden causar problemes, i moltes vegades la manera com ho fan,
només per fer les coses fàcils, és que si vaig a tenir res
HTML com en el meu codi vaig a incloure dins de cometes simples d'edició
i després utilitzar aquest operador de concatenació
per concatenar les variables polz
Aquesta és una altra manera de fer-ho
on tenim el punt que va a connectar aquesta és una cadena
amb això amb això amb això,
i ara no ha de fugir d'aquestes cometes dobles.
No cal utilitzar aquest tipus d'escapar.
Ells literalment va a imprimir com cometes i després aquest noi aquí.
Aquesta és una altra manera de barrejar tot junt.
>> [Estudiant] A més, quan es va fer ressò de gettype no hi ha cometes en absolut.
Bé, així que és una espècie d'eco especial en el sentit que no és necessari parèntesi.
No ha de tenir necessàriament les cometes al voltant de les variables,
com que és vàlid dir echo $ i, i que interpretarà això com una cadena.
Es farà el repartiment, així que vam poder fer això, i això és vàlid també, però nosaltres no ho necessitem.
És opcional.
En conjunt de problemes d'aquesta setmana mirar cap a fora per a una gran quantitat d'aquest tipus de coses
on vostè està barrejant i combinant HTML amb PHP
igual que aquest, i ara si que desplaçar-se cap enrere i correm aquest
podem veure que tenim un munt de valors d'opció
que acaba d'imprimir.
Tenim tot això que he HTML generat molt ràpid per a nosaltres.
Ho deixo com a exercici.
És molt similar a la lectura d'arxius que vam fer anteriorment.
>> Hi ha un arxiu concentrations.txt que es pot baixar de la CDN,
i es pot obrir utilitzant el mateix truc foreach que vam fer abans,
foreach i només cal fer-se ressò d'una opció i endoll
els valors adequats, les tecles i índexs,
i després et donen un menú desplegable que literalment crea
programació per a tots vostès de les diferents concentracions de Harvard.
Una cosa molt útil a tenir.
Hi ha un munt de coses de configuració per aquesta tasca.
Si no ho ha fet ja prendre la següent mitja hora, una hora,
algun temps aquesta nit definitivament amb seguretat,
caminar a través de l'especificació de conjunt de problemes,
veure el que està passant amb la creació dels vhosts, l'amfitrió local, totes aquestes coses.
Una cosa a destacar és que en aquests moments
en la majoria dels conjunts de problemes que hem estat anant a la carpeta de Dropbox
i després descarregar el butlletí de problemes zip i descomprimir.
Per aquest conjunt de problemes que vostè no desitja.
Vols anar a aquest directori vhosts.
Et vull entrar en vhosts i entrar al directori del servidor local dins d'ella,
i aquí és on vostè vol baixar l'arxiu zip,
descomprimir, i estar llest per anar.
Vas a haver de seguir els passos de prop.
>> Si vostè té alguna pregunta, envieu un correu electrònic, publicar-los en discutir, arribar a horari d'oficina.
Gràcies nois. La setmana que ve tindrem una sessió de revisió de la prova.
Gaudeixi del seu conjunt de problemes últim. Espero que tot va molt bé.
[CS50.TV]