[Powered by Google Translate] [Săptămâna 8]
[David J Malan] [Universitatea Harvard]
[Acest lucru este CS50.] [CS50.TV]
>> Bine ai venit înapoi.
Acest lucru este CS50, iar acest lucru este începutul de 8 săptămâni.
Un tânăr de oportunități în această săptămână,
printre ele această discuție aici, la unele alimente care vor fi servite.
Pentru mai multe detalii verifica afară de slide-uri, care sunt on-line.
Și, de asemenea un alt eveniment de săptămâna aceasta de către propria noastră Thomas Carriero.
El este unul dintre CS50 lui semenii fostul didactice cap, care este acum la Dropbox,
și el e tipul care ne-a cuplat cu știi ce,
așa că, dacă vrei mai mult de acel cap de Discuție lor această după-amiază pentru Dropbox și mai mult.
CS50 masa de prânz este aceasta vineri.
Face să ni se alăture, dacă sunteți în măsură, 1:15, ca de obicei, la Fire and Ice.
>> Și acum ne arunca cu capul în ceva numit Seminarii.
Seminarii noastre CS50, retragere de pe piață, sunt aceste cursuri opționale conduse de către colegii de predare
și asistenți curs și prieteni ai cursului,
oameni dintr-un grup în campus numit ABCD, care este un grup de
tehnofili în campus, precum și un grup numit HCS,
Harvard Computer Society, studenții care sunt interesați în mod similar în calcul.
Lotul din acest an de seminarii include seminarii pe Android și iOS și JavaScript
și PHP, Unix, Vim, și mai mult, astfel încât să realizeze aceste seminarii se apropie.
Dacă doriți să RSVP pentru ca nici una dintre ele merge la acea adresă URL acolo.
Apoi vom posta pe site-ul cursului de ori și locurile odată ce acestea sunt finalizate.
Dar să știi că merită despre 5 ani de seminarii anterioare disponibile on-line,
dintre care multe sunt încă foarte mult curent, în ceea ce privește tehnologiile s-ar putea
vrei să joci cu ei pentru proiectele dvs. finale, deci nu merge pentru unele videoclipuri disponibile ale acestora.
>> CSS, aceia dintre voi care sunt familiarizați cu CSS deja,
ceea ce este într-o coajă de nucă?
Ce este CSS?
E foi de stil în cascadă, și ce înseamnă asta?
Ce face asta pentru noi, CSS?
În regulă, hai să se încălzească cu una mai ușoară, HTML, Hypertext Markup Language.
Ce face asta pentru noi?
Oricine, la toate?
Devine foarte ciudat cer aceste întrebări.
HTML, Hypertext Markup Language.
Da? Nu?
[Răspuns studentul neauzit]
Bine, bine, ne permite pentru a marca text pentru a afișa într-un browser Web.
Nu este un limbaj de programare.
E într-adevăr un limbaj de marcare, ceea ce inseamna ca browser-ul instruiește cum să afișați
informații, astfel încât cea mai simplă încarnare a acestui după cum am văzut
este ceva de super-simplu ca boldfacing, deschis suport suport b închisă spune
face acest text aldin, și că, de fapt, e doar una dintre mai multe moduri
în care putem face acest lucru, și, într-adevăr, în aceste zile o mai bună abordare
pentru a stilizării pagina dvs. de web, făcând lucruri îndrăznețe și cursive
și centrat și justificate și ca, nu se face prin tag-uri HTML în monoterapie
ci mai degrabă cu o tehnica numita CSS, Cascading Style Sheets.
Acesta este un limbaj în sine.
Acesta nu prea este un limbaj de programare, dar-
toată lumea, aceasta este Dan, care ține alături de noi astăzi.
Unele dificultăți tehnice. Nu este o problemă.
>> CSS ne permite să stiliza o pagină
prin stabilirea de ceea ce se numesc proprietăți, deci haideți să aruncăm o privire la acest
prin intermediul unor exemple de bază.
Lasă-mă să intru în aparatul de astăzi.
Am sursa de 8 luni de la directorul aici,
și am de gând să merg într-un director numit CSS în cazul în care avem o grămadă
de fișiere de așteptare pentru noi aici,
și, în acest folder avem, de exemplu, de la search0.html ultima dată.
Acum, amintesc cu search0 am plecat pe această notă
de un fel de punere în aplicare Google sau de fapt doar front-end pentru o săptămână sau cam asa ceva în urmă,
și observați că am avut unele tag-uri noi acolo.
Am avut H1 pentru o poziție de mare, îndrăzneț,
formă, care ne-a permis să avem de fapt un formular HTML pentru introduse de utilizator.
Acțiune, care a fost sensul unui atribut acțiune
pe eticheta formularul HTML?
Care a fost sensul prezentei acțiuni,?
Vreau doar să fac acest lucru astăzi.
Acțiunea este destinația la care formularul urmează să fie prezentate.
Faptul că această acțiune = spune "google.com / search"
înseamnă că, atunci când utilizatorul face clic pe butonul submit sau echivalent
indiferent de forma domeniile pe care le completat vor fi trimise la serverul nostru nu
sau aparatul nostru, ci mai degrabă de a specifica faptul că URL-ul de la Google.
Și metoda pe care o va folosi este numit obține,
și de a lua, de acum, este doar o tehnica de trecere de-a lungul informații la un server de web
prin intermediul URL-ul, deci haideți să aruncăm o privire rapidă înapoi la cum funcționează.
>> Observați că există o intrare al cărui nume este q
Tipul a cărui este un text și apoi o intrare al doilea tip prezintă
Valoarea cărui este CS50 căutare, și într-adevăr, dacă ne deschidem acest fișier aici,
search0.html, este o forma super-simplu,
și dacă am căutare pentru ceva de genul informatică
și a lovit apoi introduceți sau faceți clic pe Căutare CS50
observați că ceea ce se întâmplă este dincolo de a ajunge la Google
Am ajuns în mod special la această adresă URL în partea de sus,
google.com / search q =? + calculator știință,
și informatică este în mod evident ceea ce am tastat inch
+ Înseamnă doar că e în cazul în care un caracter spațiu a fost,
și se face de către browser-ul doar pentru a vă asigura că nu există nici o
confuzie și spațiu alb în URL-ul real.
Și apoi q, desigur, este numele parametrului.
Nu am vazut cum putem, programator, poate accesa de fapt, încă q.
Putem presupune că Google știe ce să facă cu asta aici,
dar vom ajunge acolo în timp util de astăzi.
>> Dar permiteți-mi să aruncăm o privire la locul search1.html,
care arată un pic diferit pentru ca am decis că această formă a fost aici, doar un pic lame.
Adică, e în partea stângă sus.
Nu e chiar nici o estetica la ea, și așa vreau să stiliza această
un pic mai mult ca Google, a cărui pagină de start, rechemare,
chiar dacă nu l-ar putea vizita pe care de multe ori, se pare ca acest lucru astăzi de Halloween.
Dacă deschidem loc la versiunea 1 a acestui fișier, căutare 1.html, l-am centrat.
, Încă destul de urât, dar cel puțin acum am inceput sa controleze estetica această pagină
nu doar marcarea acestora.
Să aruncăm o privire la căutare 1, și nu e doar o diferenta aici,
care ar putea sari la tine, sau poate nu,
dar ceea ce e linia de una sau fragment de diferență?
>> Nu e stilul acestui atribut, deci se pare că, în HTML
cele mai multe elemente, cele mai multe tag-uri pot avea un atribut de stil pe ele,
și în interiorul acestui atribut stil este un șir citat,
și că șirul este citat CSS.
Puteți pune foaie de stil cascada acolo
prin specificarea ca un nume de proprietate
urmată de două puncte, urmată de o valoare.
Aceasta este un fel de decizii de proiectare nefericit cu câțiva ani în urmă
faptul că CSS este un limbaj în sine,
dar punct de vedere sintactic este foarte diferit de HTML.
În acest caz, vom vedea ca in interiorul lui pagina mea de web, care este scrisă în HTML,
Am CSS interiorul acestor citate, și Convenția pentru CSS
este că aveți ceea ce se numește o proprietate, urmat de, din nou, un colon,
urmată de valoarea a bunului, astfel încât nu există nici un semn egal.
Nu e nici citate suplimentare.
E doar această pereche de colon separat valoarea cheii,
și linia de text face exact ceea ce spune.
Aceasta aliniază textul din corpul paginii, care este într-adevăr curajul de pagini,
în centru.
>> Bine, rezultatul final, apoi, să fie clar, este aceasta.
Nu toate că mai sexy, dar cel puțin este centrat și un pic mai mult ca adevarata Google.
Dar ce se întâmplă dacă am deschide loc la versiunea 2 a acestui
și subliniez aici o etichetă cu totul nouă?
Acum, în capul paginii mele, care anterior a avut doar ceea ce tag-ul
în toate exemplele anterioare?
Ea a avut doar acest lucru, titlu.
Un moment în urmă tag-ul capului arăta acest lucru.
Acum, în loc are o etichetă în interiorul stil de ea,
și asta, îmi cer scuze, punct de vedere sintactic arata foarte diferit de HTML,
dar te obișnuiești cu el, prin interiorul tag-stil
Pot factor acum ce a fost un moment în urmă
un atribut, atributul style, si eu pot pune la foarte de sus a paginii.
>> De ce?
Ei bine, acesta este un pas spre curățare lucrurile, la fel ca în scris cod C
ne-ar scrie, uneori, funcțiile de factorul în funcționalitatea comună.
E doar un pic mai curat pentru a începe de factoring lucruri, cum ar fi estetica
la o singură locație centrală, mai degrabă decât având în totul de-a lungul presăra HTML.
Aceasta prea face ceea ce spune, chiar dacă există un pic de noua sintaxă.
Acest lucru aici este un selector, și corpul înseamnă doar selectați elementul organism
și să aplice următoarele proprietăți la aceasta.
Ei bine, proprietatea este exact la fel.
Pentru o bună măsură am adăugat o virgulă la sfârșitul anului,
care tinde să fie convenție, și am înfășurat toată această proprietate
în acolade pentru că am putea avea de fapt lucruri diferite aici.
Am putea spune, de fapt ceva de genul culoare: albastru;
>> Acum, acest prea nu va fi un pas spre ceva tot ce mai frumoasa,
dar daca ma duc acum la versiunea 2 am făcut, cel puțin acum corpul meu
Pagina de text toate albastru.
Butonul rămâne același pentru că e un input. Nu e de text pur.
Dar totul altceva, care este un text, cum ar fi CS50 Căutare până sus, este în albastru fapt.
Din nou, tot ce am făcut acum este scoateți din tag-ul body, Notă,
atributul de stil, și am luat-l aici.
Aceasta nu este o îmbunătățire uriașă, dar dacă vom lua acest pas mai departe
observați ceea ce putem face în această a treia versiune aici.
>> În search3.html pagina web este aproape identică
, cu excepția pentru ceea ce etichetă nouă acum?
Link-ul, astfel încât acesta nu este foarte bună dreptate numit
pentru că nu sunteți de legătură în sensul unui hyperlink se poate face clic.
Mai degrabă, ești un fel de a face echivalentul a # include în C
prin tag-ul link-ul cu un atribut href
și un atribut rel spune merge mai departe
și copie inserați conținutul unui fișier denumit search3.css chiar aici, în esență.
Ea nu face destul de asta, dar asta e spiritul de ea.
Se spune că merge deschis dosar, search3.css,
și trata ca și cum utilizatorul ar fi introdus-o chiar aici, în capul paginii
la fel cum am făcut-o în exemplul anterior.
Search3.css, între timp, este destul de simplu.
Este într-adevăr doar conține exact ceea ce a fost un moment în urmă
în tag-ul stil, dar eu am luat-l aici la dosarul propriu.
>> Chiar dacă nu ne-am petrecut mult timp, la toate în format HTML sau programare web
doar intuitiv ce e motivația, probabil, pentru factoring din
acest fragment de mici, chiar de CSS în propriul fișier
și apoi, inclusiv cu această etichetă de link aici?
[Răspuns studentul neauzit]
Bine, e mai ușor de citit, în sensul că aveți CSS-ul într-un fișier CSS.
Ai HTML în fișierul HTML, asa ca este mult mai ușor de citit în acest sens.
Ce altceva ar putea fi convingătoare? Da,.
[Răspuns studentul neauzit]
Da, astfel încât aveți posibilitatea să includeți-l de mai multe ori, așa că acum facem aceste
exemple de bază cu fișiere individuale, dar să presupunem că sunteți de fapt face
un site adevarat ca tine va pentru PSET 7 sau proiectul final, probabil,
și doriți să aveți mai multe pagini Web, astfel cum este, cu siguranță comună pe
Web lumea actuală Wide, și ar fi un fel de lame
trebui să copiați și să lipiți aceeași culoare albastră
și același text aliniat centru în fiecare dintre aceste pagini.
Mai degrabă face mai mult sens să țină afară, la fel ca am facut in C
cu fișierul. h, pune-l într-un loc central,
în acest caz search3.css, și apoi se lasă orice fișier
în site-ul dvs. pentru a include, de fapt acel fisier prin intermediul acestei etichete aici, în linia 16.
Așa cum este de obicei cazul, am început cu versiunea 0, ce fel de lucrări
dar nu este neapărat cel mai bun, si cu fiecare pas,
căutare 1, căutare 2, 3 și acum caută-am luat acești pași pentru copii
spre modele care sunt un pic mai curat și sunt mai pregătitoare
pentru mai multe pagini complexe cu care ne-ar putea face pe drum.
>> Lasă-mă să deschid un exemplu ultima aici doar pentru a vedea
o pagină și mai stilizate, dar mai întâi să ne uităm la HTML.
Acest lucru este search4.html, și observați că structural este aproape aceeași
, cu excepția pentru introducerea unei etichete noi, div.
Div este o etichetă care introduce o divizie a paginii.
Vă puteți gândi la acest lucru ca un dreptunghi invizibil.
Este un fel de creează o fâșie de suprafață în pagina Web
pe care le puteți stiliza pe toate o dată.
Ceea ce am făcut aici este după cum urmează.
Interiorul tag corpul meu, care a fost acolo tot timpul,
Spun crea o divizie a paginii aici prin intermediul liniilor 45, prin 47,
și asta înseamnă în esență, da-mi un dreptunghi invizibil de-a lungul partea de sus a paginii.
Atunci dă-mi un dreptunghi al doilea, deși invizibil, de mai jos, care,
și-l identifice prin conținutul nume, apoi în cele din urmă,
da-mi o divizie treime din pagină la partea de jos
ID-ul numit.
Vom vedea de ce am făcut acest lucru în doar un moment,
dar conceptual, am o divizie antet.
Am o divizie de conținut, și am o divizie subsol a paginii
chiar dacă acestea sunt doar în marcaj.
Utilizatorul nu este de gând să vadă 3 dreptunghiuri,
dar un fel de structural acolo în spatele scenei
de fapt ele sunt prezente.
>> Acum, cui îi pasă? De ce de fapt acest lucru?
Orice altceva pe pagină este același ca le-am vazut inainte.
Aici e forma mea. Iată de intrare meu, intrarea mea, un sfârșit de linie și așa mai departe.
Iată o imagine, deși, așa că vom vedea în cazul în care aceasta a venit de la intr-un moment.
Aici e un subsol, care este nou, doar pentru că am vrut să introducă
Conținutul ceva mai mult aici.
Dacă am parcurge observați că ID-ul de la acest div este antet.
ID-ul acestui div este conținutul, și ID-ul acesta este subsol.
Și, după cum sugerează și numele, atunci când aveți un atribut ID
în HTML, prin definiție, trebuie să identifice în mod unic
unul dintre elemente, una dintre cele etichetele în pagina ta.
Sarcina este total pe tine să vă amintiți că aveți un ID de antet deja.
Ai un subsol. Aveți deja un ID de conținut.
Computerul nu este de gând să dau seama ce este disponibil un ID pentru tine,
astfel încât ai putea da accidental 2 tag-uri un ID de antet,
și că ar fi greșit.
>> Trebuie să păstrați în minte ceea ce ati creat,
dar odată ce ați făcut asta Notă ce putem face aici.
Eu pot specifica acum în tag-ul stilul meu de la partea de sus
sau echivalent în dosarul meu CSS, dacă am fost încă folosesc acea versiune,
Eu pot să spun # antet, și ceea ce înseamnă că este că, indiferent de tag-ul
în această pagină web are un ID de antet
# și, doar prin convenție umană, reprezintă ID-ul.
Semnul ascuțit sau diez reprezintă ID-ul.
Antet este numele pe care l-am dat.
Acest lucru înseamnă aplică această proprietate CSS
la orice etichetă în această pagină poartă un ID de antet.
Aceeași afacere aici.
Aplicați această proprietate, care se întâmplă să fie la fel, la orice element de
al cărui ID este conținut, și apoi în jos aici
Am observat un pic crescator cu subsol.
Orice element a cărui identitate este subsol, din care nu poate fi doar unul prin definiție,
mergeți mai departe și face ca dimensiunea de font mai mic,
greutatea sa îndrăzneț font, marja sa de 20 de pixeli.
>> Ce înseamnă asta?
E doar o marjă de pe partea de sus, de jos, și stânga și dreapta.
Acest lucru înseamnă să-mi dai o marjă de 20 de pixeli invizibil în jurul valorii de ea
doar pentru a împinge orice altceva de la ea un pic, ca tine s-ar putea face în Word,
Microsoft Word sau pagini sau similar.
Și apoi alinia textul centru.
Să vedem rezultatul final, iar apoi vom merge înapoi până la fragmentul cea care rămâne de CSS acolo.
Aceasta este versiunea 4, ultima noastră pentru exemplele de căutare, și e mai sexy mult, mult.
Acum, în corectitudine, am cautat pe Google doar "logo-ul Google generator de font."
Și asta mi-a permis să creeze un GIF, un format de imagine, care arată ca asta acolo.
De fapt, puteți face acest lucru prea.
Avem "Google generator de fonturi logo-ul."
>> Să vedem dacă putem face acest lucru.
Bine, cred că acest lucru este site-ul am folosit.
Putem spune CE 10, de exemplu, și să le facă propriile lor.
Puteți juca cu asta toată ziua de lungă și apoi faceți clic dreapta pe el
și apoi descărca GIF real, care este tot ceea ce am făcut.
Și într-adevăr, de aceea in HTML meu, reamintesc, aici
Am avut o etichetă imagine, pe care am văzut săptămâna trecută pe scurt
a căror sursă este logo.gif.
Și ce a fost din nou motivația pentru a avea acest atribut ALT,
această alternativă atribut?
Da,.
[Răspuns studentul neauzit]
Bine, deci 2 motive într-adevăr, în cazul în care browser-ul nu poate trage imaginea
pentru că aveți o conexiune la rețea lentă sau imaginea este corupt
sau ceva de genul asta, cel puțin uman poate vedea "CS50 căutare,"
și apoi, de asemenea, din motive de accesibilitate.
Dacă aveți un utilizator care este orb și este folosind un cititor de ecran
și, prin urmare, în mod evident, nu pot vedea imaginile pe care le pot, cel puțin
auzi textul cazul în care computerul lor este de a le vorbește.
>> În general, acest lucru este cel mai bine practică atunci când vine vorba de accesibilitate a paginilor
astfel încât utilizatorii chiar și în această situație pot auzi sau vedea, ca să spunem așa,
ceea ce este că e pe pagina ta.
Nu e un alt lucru pe care am făcut-o aici
care este un pic interesant, și vom vedea mai multe despre acest lucru în problema set 7
prin intermediul uneia dintre cele pantaloni scurți conduse de unul dintre semenii didactice.
Dar # conținut se referă la tag-ul
al cărui conținut este ID-ul, dar apoi există un caracter spațiu, și apoi e de intrare cuvântul.
Ei bine, ce e interesant despre CSS este faptul că puteți
se referă la tag-uri într-un fel de pagină ierarhic,
și ce înseamnă acest fragment de CSS este că tag-ul
al cărui conținut este ID-ul, iar apoi se aplică următoarele proprietăți
la toate etichetele de intrare, care sunt descendenti de conținut,
care este, care sunt indentate în interiorul de ea.
Indentare, din nou, este important doar pentru calculatorul, nu om,
dar, prin convenție, am liniuță lucrurile așa cum vom merge mai adânc într-o pagină,
astfel, aceasta înseamnă aplică o marjă de 5 pixeli la orice element de intrare
asta e undeva in interiorul sau imbricate în interiorul
elementul al cărui conținut este ID-ul.
>> Cine se care se aplică?
Ei bine, nu e de fapt doar aceste 2 tipi aici.
Observați că în interiorul formularului există două intrări,
ca acolo a fost pentru toate aceste exemple.
Dar observați că aceste două intrări se întâmplă să fi imbricate în interiorul,
deși un pic profund, un cuplu de indentare straturi,
interiorul tag-ul al cărui conținut este ID-ul.
Ce înseamnă?
Dacă mergem la browser-ul aici puteti vedea vreodată atât de ușor-
permiteți-mi să mări-că există un pic de umplutură între butonul
și între câmpul de text.
>> Permiteți-mi să dezactivați temporar aia.
Lasă-mă să merg până la CSS mea, și lasă-mă să merg mai departe și doar
schimba această marjă de la 5 la 0 pixeli pixeli.
Lasă-mă să mergeți mai departe și salva fișierul, du-te înapoi la motorul de căutare
și reîncărca, și urmăriți de mijloc a paginii.
Totul a fost comprimat, împreună, și când am biciuit primul acest exemplu
M-am gândit că părea a fi prostesc cu câmpul text și apoi butonul de imediat sub ea.
Am vrut să-pad-l un pic, așa că am introdus margini.
Ceea ce nu vom face în prelegerea se trece prin câteva zeci de
Proprietățile CSS care există deoarece, din nou, există lucruri, cum ar fi dimensiunea fontului,
greutate font, profit, textul alinia, și alte câteva zeci,
si te vom referi la problema setat la 7 la tutoriale diverse on-line
și referințele care vă permit să iau aceste lucruri.
Dar ceea ce este cu adevărat important, la sfârșitul zilei
>> este de a intelege modul in care aceste lucruri sunt aplicate.
Din nou, dacă avem tag-ul interior stilul de care
pot merge pe selectorii, tip de identificare care specifică
la care vrei să se aplice acestor proprietăți,
si apoi ai pus proprietățile ca pereche de valori-cheie
separate de două puncte și apoi sa încheiat cu un punct și virgulă,
sau puteți înregistra toate că afară și pune-l într-un fișier separat CSS
sine.
În regulă, orice probleme referitoare la conceptele
sau imaginea de ansamblu a CSS?
Veți vedea din nou, mai mult de ea în PSET 7,
dar ne vom păstra, în general, destul de simplu.
Nu? Bine.
E timpul pentru un limbaj de programare actuală,
și ne vom întoarce la un pic de CSS în formă de un exemplu.
PHP este de fapt un limbaj accesibil minunat
în sensul că este sintactic aproape echivalent cu C.
Cu alte cuvinte, dacă știi C, știi pentru PHP cea mai mare parte,
cel puțin sintactic, chiar dacă există unele caracteristici noi
și unele concepte noi vom trebui să se uite la.
>> Dar pentru cea mai mare parte, acum că am tranziția de la C la PHP
de cele mai multe lucruri noi este cu adevărat în imaginea de ansamblu,
modul în care utilizați un limbaj pentru programarea pe Web, spre deosebire de
la linia de comandă sau într-un prompt clipește cum am făcut până acum.
Pentru referință, în special cu PSET 7 și mai departe final al proiectului,
nu profita de acest URL aici, dacă doriți să citiți pe formalitățile de PHP.
E ca si cum de fapt un manual online gratuite eficient,
și veți găsi, de asemenea, că ceea ce e cu adevarat frumos despre PHP
este că există sute de functii care vin cu ea,
întrucât, în C nu ai avea neapărat acces la
mai multe funcții decât erau în bibliotecă matematică, biblioteca CS50.
În PHP și o mulțime de limbi moderne, Python și Ruby printre ei,
ai acces la mai multe funcții, astfel, ceea ce înseamnă că veți obține pentru a scrie
mult mai puțin cod, deoarece vă poate sta pe umerii altor oameni
care s-au scris deja anumite lucruri pentru tine.
>> Să luăm un tur rapid de sintaxa PHP și apoi scrie câteva exemple.
Ce e frumos despre PHP, în primul rând
este nu există nici o funcție principală.
Dacă doriți să scrieți un program în PHP începi scrierea de cod,
și nu trebuie să vă faceți griji cu privire la principal.
Nu e nici o int. Nu e nici o întoarcere.
Nu e nici o argv, argc care este necesar, atunci când scrieți programul.
Mai degrabă puteți începe doar scrierea de cod, și acest lucru este în parte
pentru că PHP este ceea ce se numește un limbaj interpretat.
C a fost compilat, și a fost compilat în sensul că începe să
cu codul sursă, acesta trece prin zăngănit, care este un compilator,
și în cele din urmă, după un numar de pasi vei obține codul obiect, 0s și 1s.
PHP și Python și Ruby si Pearl și altele
sunt tipuri diferite de limbile în care nu le compila.
Tu nu te duci de la codul sursă la 0s și 1s.
Tu doar să rulați codul sursă, și aveți o codul sursă
prin scrierea într-un fișier text obișnuit, care se încheie în. php, în acest caz,
în loc de c,. și ceea ce face programul pe computer
se interpretează literal linia de cod de linie cu linie.
>> Cu alte cuvinte, mai degrabă decât a scrie un program și rulați programul
direct în loc să scrii un program cu un fișier care se termină în. php.
Atunci când executați un program real numit php.exe, dacă sunteți pe Windows,
sau doar PHP daca esti pe Mac OS sau Linux,
și va oferi ca intrare pentru programul PHP codul sursa proprie,
și scopul său în viață este de a citi codul de top în jos, de la stânga la dreapta,
și face tot ce-am spus să facă.
>> Să vedem ce se va însemna punct de vedere sintactic.
În PHP avem condiții.
Acest slide este identic cu ceea ce ai văzut în săptămâna 1
deoarece condițiile punct de vedere sintactic, IFS și IFS altă și altă în PHP
arata exact ca asta.
Când vine vorba de expresii booleene au de gând să arate exact ca asta.
Când vine vorba de anding lucrurile împreună, ca booleans se va arata exact ca asta.
Întreruperi arata la fel, și veți obține avantajul suplimentar în PHP
că switch-uri în C ar putea trece doar pe un char sau int-o.
Tu nu ar putea trece pe o valoare șir.
În PHP puteți avea de fapt o expresie
că este o variabilă a cărei conținut este un șir de caractere,
și puteți face de fapt comparație șir în mod intuitiv real,
Nu comparație indicatorul, în scopul de a decide dacă să facă caz ​​i sau j sau altceva.
Vom vedea că potențial înainte de lung.
>> Bucle prea minunat sunt la fel.
Pentru bucle au o initializare, o conditie, si un numar de actualizări.
În timp ce există, de asemenea bucle în PHP.
Face în timp ce există, de asemenea bucle în PHP,
și matrice există în PHP, dar aici e în cazul în care sintaxa începe pentru a obține un pic diferit,
dar conceptele sunt aceleași, iar conceptele sunt într-adevăr aceleași
așa cum au fost în Săptămâna 0 cu Scratch.
În primul rând este semnul $.
Aceasta a fost o decizie de design în PHP, prin care orice variabilă
în PHP de design începe cu semnul $.
Nu e nici mai mult X, Y, Z. Acum e $ X, Y $, $ Z doar pentru că.
E ceva pentru a păstra în minte, iar acum pe partea dreaptă
acest lucru pare similar cu o matrice,
dar suntem folosind paranteze pătrate aici.
În PHP și în JavaScript, așa cum vom vedea în cele din urmă,
a declara o matrice faci suport deschis si inchis pătrat suport pătrat,
și atunci aveți o listă separată prin virgulă de valori, dacă Ints
sau siruri de caractere sau caractere, ce vrei, în interiorul acestei expresie acolo.
>> Acum, cum am face așa ceva în C?
Care a fost sintaxa de declarare static o serie de numere cunoscute?
A fost acolade, diferență atât de minoră aici, dar în ambele PHP
și în cele din urmă JavaScript-l folosește doar între paranteze drepte, astfel încât într-adevăr
detalii numai interesant aici este semnul $ pentru numele variabilei
și, de asemenea, între paranteze drepte, și nu e un lucru curios
care a fost omise, precum și pe partea stângă a semnului =.
Ceea ce lipsește pe care le-am fost necesitând pentru săptămâna acum? Da,.
[Răspuns studentul neauzit]
Dimensiunea, deci nu exista nici o mentiune de dimensiunea tabloului.
Sincer, nu e nici o mențiune de paranteze pătrate pe partea stângă
a semnului =, și ce altceva lipseste din linia?
Da >> [elevului răspunsul neauzit].
Tipul, astfel încât ceea ce este interesant, în special, despre PHP
este faptul că aceasta nu este un limbaj puternic tipizat ca C este,
și care este puternic tastat în sensul că trebuie să spui char,
trebuie să spun int, trebuie să vă spun float.
>> Oricand vrei o variabilă trebuie să-i spun ce tip zăngănit sa este.
PHP este un pic mai leneși.
Este vag tastat în sensul că
poti avea flotoare și caractere și șiruri
și Ints și așa mai departe, dar limba în sine
nu-i pasă cu adevărat ceea ce ai pus în interiorul unei variabile.
Nu trebuie să-l informeze în prealabil ce tip de date
se întâmplă într-o variabilă.
Este în întregime până la tine, așa că acest lucru este frumos
în care nu trebuie să vă faceți griji la fel de mult despre datele tastarea
și îngrijorătoare ce argumentele tale sunt și așa mai departe.
Acest lucru înseamnă, de asemenea, eventual funcții în PHP sunt de gând să fie în măsură să se întoarcă
fie cea mai mare o int de timp, și poate o dată într-un timp
vor returna o bool, un boolean fals, de exemplu, pentru a semnifica faptul că ceva a mers prost.
Acest lucru ne dă câteva upsides, dar, de asemenea, ne va face de către un fel de proiectare
un pic mai leneș atunci când vine vorba de tastarea datelor.
>> Ce altceva este acolo pentru a păstra în minte aici?
Variabile arata destul de genul asta, deci $ s = "Hello, World".
Asta e, probabil, deduse din exemplul anterior,
și avem un alt tip de buclă.
Aceasta vom vedea de fapt, o dată într-un timp, deoarece este destul de la îndemână,
un foreach construi.
În acest caz, bucla foreach ia în interiorul ei paranteze 3 cuvinte de obicei,
$ Ceva mai întâi, care este ceea ce vrei matrice pentru a itera peste membrii,
apoi literalmente cuvântul cheie ca, și apoi în cele din urmă,
un alt nume variabila că veți obține pentru a alege.
Acesta poate fi foo, bar, sau element,
și ceea ce face acest construct
este dacă array $ conține 10 elemente
pe fiecare iterație a acestei matrice-rău, pe fiecare iterație a buclei acest
elementul variabil chemat urmează să fie actualizată
pentru a fi primul element din matrice, apoi al doilea element din matrice,
apoi al treilea element al matricei, eliminând astfel necesitatea
pentru a face notația ușor enervant suport pătrat și
$ I, în scopul de a indicelui într-o matrice.
PHP face toate care lucreaza pentru tine si la fiecare iterație
doar iti da urmatorul element din matrice
fără a fi nevoie să cunoască sau pasă de locația sa indice numeric.
>> Și apoi în cele din urmă, pentru moment, există un alt element din PHP
care va fi extrem de utilă, mai ales atunci când vom începe de programare pe Web,
și care este cunoscut ca un tablou asociativ.
Tablouri pe care le cunosc, astfel, ceea ce de 20 de secunde în urmă
și pentru ultimii 8 săptămâni sunt indexate numeric tablouri,
un fel de matrice tradiționale în cazul în care indicii sunt Ints,
0, 1, 2, tot drumul pe sus.
Tablouri asociative sunt mult mai puternice.
Ele vă permit să aibă chei arbitrare,
Indicii arbitrare și valori arbitrare.
Întrucât într-o matrice tradițională este 0, 1, 2,
într-un tablou asociativ puteți avea un index
sau o cheie de foo a căror valoare este de bar.
Puteți avea apoi o altă cheie al cărui nume este Baz și a căror valoare este qux.
>> Din nou, stupide informatică denumirile generice variabile aici,
dar ideea este că această matrice nu are suport 0 sau suport 1.
Este în schimb va avea suport foo și suport Baz.
Acest lucru este mult mai versatil, în care vom fi capabili să se asocieze
cuvinte cu alte cuvinte, chei cu valori complet arbitrar,
și vom fi în măsură pentru a obține aceste valori înapoi în timp constanta
deoarece sub capota ceea ce o matrice asociativă
este într-adevăr este un tabel hash.
Amintiți-vă că un tabel hash vă permite să pună în unele de intrare
Vrei pus în cuvântul lui David, dacă doriți să inserați lui David într-un fel de dicționar,
și apoi te întorci o anumită valoare de obicei.
În caz de abecedar, adevărat sau fals.
David sau orice cuvânt este sau nu este în dicționar.
Un tablou asociativ este de fapt doar un tabel hash,
dar este o întrupare de utilizator mult mai prietenos din ea.
După cum vom vedea, o să ne permită să facem unele lucruri
foarte, foarte usor.
>> Să aruncăm o privire la unele de bază, PHP
exemple și să vedem ce putem face cu acest limbaj.
Lasă-mă să mergeți mai departe și să deschidă în directorul sursă noastră de astăzi
un fișier numit hello1.php.
Acest fișier este în comentariu mai mult decât este codul actual,
asa ca lasa-ma elimina de fapt toate comentariile de la dosar
și pentru a vă prezenta, probabil, cel mai simplu program de PHP chiar aici.
5 linii, iar unele dintre aceștia sunt spații albe,
observați astfel încât unele diferențe cheie aici.
Fișierul este denumit hello1.php.
Linie foarte în primul rând, deși, este <? Php.
Similare în spirit HTML,
că secvența de caractere spune calculatorul
"Hei, calculator, vine aici un program suntem în în PHP."
Aceasta vă asigură că aceasta nu se confunda asta e altă limbă.
Linia 2 este un spatiu interesant alb.
Linia 3 este vechiul nostru prieten printf,
de data aceasta, în contextul PHP.
PHP are propria versiune a printf care se comportă exact la fel,
Deci, aceasta este doar de gând să imprima "Hello, World".
Și apoi această etichetă vizavi de aici,>,? Înseamnă că e pentru codul meu PHP.
>> Să vedem cum să executați acest lucru.
Mă duc să mă întorc la fereastră terminal mea aici.
Am de gând să meargă în directorul meu PHP.
Observați că avem o grămadă de fișiere, prima dintre care este hello.php.
Lasă-mă să mergeți mai departe și a alerga acest hello1.php,, introduceți.
Permisiune refuzată. Bine.
Cum am stabilit lucruri, cum ar fi acest lucru în trecut?
Ce-i asta >> [elevului răspunsul neauzit]?
Avem nevoie de citească și să scrie, dar permiteți-mi să fac ls-l.
Amintiți-vă această ieșire oarecum criptic, prin care hello1
pare a fi citit si scris de mine
dar poate fi citit de oricine altcineva.
Se pare ca aceasta de fapt nu este un pas în direcția cea bună.
Diferența, din nou, cu un limbaj interpretat
este să nu executați programul direct.
Tu conduci în schimb un interpret și predați-l codul
pe care le-ați scris astfel încât să poată interpreta aceasta linie cu linie.
În acest caz, interpretul sau programul eu de fapt vreau să ruleze
este literalmente numit PHP.
>> Undeva pe acest hard-disk de aparat există un program de
altcineva a scris numit PHP, sau pe Windows php.exe.
Ce am de gând să fac aici este că am de gând să fugi de fapt, PHP
dar da-l ca un argument de linie de comandă codul pe care l-am scris,
și apoi mă voi depărta și a lovit introduceți.
Se rulează programul meu pentru mine, de sus în jos, de la stânga la dreapta.
Lasă-mă să mergeți mai departe și de a deschide o variație ușoară a acestui.
În anunțul de hello2.php că acest lucru prea
este cea mai mare parte comentariile, asa ca lasa-ma sa scap de cei ca o distragere a atenției,
și ceea ce este în mod clar diferit acum despre acest fișier?
Există această linie nouă, oarecum criptic în partea de sus.
În line 1 e #! / Bin / php.
Bin este o convenție pe Linux și Mac OS pentru binare,
deci / bin înseamnă acest lucru este un dosar care conține o grămadă de binare
care este programat, dintre care unul este PHP.
#! este poreclit shebang,
care este calea rapidă de a spune ea, și ce înseamnă
este că, atunci când executați acest program acum nu mai e un indiciu de la partea de sus a fișierului
care spune computerului ce interpret pentru a utiliza.
>> Ea devine un pic enervant, dacă a trebuit să spun utilizatorii dvs. și clienții dvs.
"Hei, am scris acest program numit hello1.php."
Tot ce trebuie să faceți este să rulați PHP pentru totdeauna și apoi numele acestui program.
Sincer, ar fi frumos doar pentru a rula hello1.php,
și, într-adevăr, dacă putem să facem următoarele.
Lasă-mă să mergeți mai departe și de a face ls-l, și aviz în hello2 este încă citit doar scrie
și apoi citește citesc, asa ca nu pot face încă acest lucru, hello2.php.
Dar am introdus această vreodată atât de scurt de timp trecută, comanda chmod.
Dacă aș face un chmod + x, ceea ce înseamnă toate executabil, plus,
și apoi hello2.php și apoi se ls-l observați din nou ce a fost modificat.
Unul, Linux este arătându-mi numele de fișier în verde pentru a transmite ideea
că e executabil, dar, mai important, pe partea stângă
observați că biți reprezentând x pentru executabil a fost acum stabilit.
Ce înseamnă acest lucru acum este ca eu pot rula ./hello2.php ca de obicei,
apăsați enter, și din cauza shebang de la foarte de sus a fișierului
asta e un indiciu, din nou, la Linux care spune
utiliza acest interpret pentru a rula acest fișier.
Nu vă faceți griji cu privire la forțând utilizatorul să tastați de fapt.
>> Și ceea ce este frumos este acum un fel e de irelevante pentru clienții mei sau prietenii mei
ce limba am scris acest program în, așa că am putea merge mai departe cu mv
și redenumi acest lucru pentru a hello2, de exemplu.
Și acum, dacă eu fac ./hello2
și zoom out programul meu continuă să funcționeze.
Aceste extensii de fișiere sunt o convenție umană care este necesar
pentru ceva de genul zăngănit și de a face, care le caute.
Dar pentru PHP, am putea numi acest ceva extensia vreau.
Aș putea pacali lumea să creadă că eu sunt foarte bun la Ruby,
și am putea scrie hello2.rb și apoi rulați acest lucru,
și voila, acum am versiunea Ruby, care este o minciună completă.
Dar extensiile de fișiere sunt lipsite de sens
în cazul în care fișierul este executabil si are acest indiciu special la partea de sus a fișierului.
>> Acum, ca o paranteză, lasă-mă să-ți arăt repede versiunea 3,
care este un fel de truc util să știu.
În hello3 am făcut ceva greșit puțin
pe care o voi actualiza online codul sursă.
În versiunea 3 se dovedește că pe majoritatea calculatoarelor Linux
exista un program numit env pentru mediu,
și ceea ce puteți face aici este dacă nu aveți nici o idee de unde PHP
este instalat pe hard disc, pentru că într-adevăr, s-ar putea varia în funcție de calculator
că cineva se utilizează, ENV spune doar rulați env,
care se află pe cele mai multe sisteme, și dau seama unde este PHP.
Doar un truc comun, astfel încât să nu trebuie să vă faceți griji despre găsirea în cazul în care un program este.
Dar dacă faci grijă pentru a afla în cazul în care un program este și nu ați îngrijit până în prezent
puteți folosi comanda care.
>> Lasă-mă să zoom out și tipul care php,
și observați că acesta mi-a spus că e de fapt in usr / bin / php.
E un fel de minciună. Este, de asemenea, în coșul de gunoi.
E doar aratandu-mi primul hit.
Dacă ați întrebat vreodată de unde este zăngănit, care face să răsune, care este în usr / bin / zăngănit,
ceea ce face, usr / bin / face, și ceea ce înseamnă că este tot acest timp
Ai fi putut fi tastarea usr / bin / zăngănit introduceți pentru a rula zăngănit,
dar e un fel de obositor să faci asta, asa ca unii dosare
cum ar fi usr / bin bin și se presupune a fi implicite
astfel încât computerul știe să caute în ele pentru tine.
Orice întrebări cu privire la scrierea unui super, super-simplu program de Hello World
în PHP și apoi rulează?
Pentru că acum vom începe să introducă sintaxă mai convingătoare.
În regulă, aici vom merge.
Aceste programe ne-am văzut de fapt, toate acestea înainte.
>> Dacă aș deschide, de exemplu, să facem beer1.php,
nu vom trece prin mai multe versiuni ale acestui, dar ceea ce am făcut
am fost așezat și turnat sau convertite
codul meu C la codul PHP aici.
Cele mai multe dintre partea de sus a fișierului este de comentarii aici.
Se pare că nu e o funcție nouă ne trebuie numit readline.
GetString, rechemare, de la Săptămâna 0 ulterior a fost un lucru CS50.
PHP vine cu propriul user-friendly funcție numită readline
care durează 1 argument care specifică prompte
pe care doriți să arate la utilizator, și ceea ce face readline
se returnează, indiferent de utilizator tipuri de inch
În acest caz, am declara o variabilă numită $ n.
Sunt stocarea în ea valoarea de returnare a readline
după fapt care ia determinat utilizatorul cu acest șir.
Doar pentru copii de rezervă, pentru a rula de fapt acest lucru, permiteți-mi să merg mai departe
și a alerga php beer1.php.
Câte sticle vor fi acolo? Hai să facem doar 2 de data asta.
Enter. Asta e tot.
>> Programul este funcțional identic cu versiunea C de la săptămâni în urmă.
Dar hai să vedem ce punct de vedere sintactic e diferit.
După ce am obține o int de la anunțul de utilizator care fac niște verificări eroare,
și dacă n este mai mic de 1 am renunțat și am imprima
un mesaj de scuze pentru utilizator și de ieșire cu 1.
Acest lucru este de asemenea un pic diferit.
În ceea ce C-am făcut? În C ne-am întors 1.
În PHP ieși cu 1, pe care sincer cred că este un pic mai intuitiv
pentru ca esti ieșirea literalmente programului.
Toate dreapta, și apoi în jos aici melodia enervant este identic sintactic
cu excepția variabilei, astfel încât aici, în linia 24 mai departe
observați mea pentru bucla este aproape aceeași,
dar am $ in fata lui i și n,
și ceea ce este, de asemenea, lipsește de la linia 26 pe care le-am avut în trecut
Atunci când declarăm o variabilă i?
Nu e nici un tip.
Este incorect să spun în PHP int.
Tu pur și simplu nu trebuie să faci asta.
Calculator, PHP interpret este suficient de inteligent pentru a realiza
că, dacă ai pus un număr în $ I se va trata
ca un număr pentru tine.
Și apoi aici am conectați $ i, $ i, $ i - 1.
Toate că este aceeași, și apoi în jos aici vom face un "Wow, asta e enervant" printf
și apoi ieșiți (0).
>> Din nou, aici este livrata acasa, că, chiar dacă am de gând să petreacă relativ
puțin timp în PHP, cu siguranță, față de ceea ce am făcut în C,
e aproape la fel, și așa mai departe ceea ce vom face astăzi și săptămâna viitoare
și dincolo este să se concentreze într-adevăr pe unele din ideile noi.
Doar pentru a vedea că un alt lucru se traduce preluat de la C,
acest lucru a fost un program de super-simplu am făcut în Săptămâna 1
sau 2, care tocati o valoare.
Dar ceea ce a fost interesant la timp despre acest program este faptul că
a introdus noțiunea de funcție particularizată scris că ne-a scris.
Sintaxa în PHP este aproape aceeași.
Iată programul meu până sus.
Observă din nou absent este orice noțiune de principal.
Am început scrierea de cod, și aceasta este ceea ce se întâmplă pentru a obține executat de către interpret.
Am imprima x este acum 2, probabil.
Apoi m-am pretind cubaj ...
Apoi am apela funcția cub și să treacă în $ x
și atribuie valoarea returnata la $ x.
Apoi am pretinde că este tocata, iar apoi spun acest lucru, care, sperăm,
va spun x este acum 8.
Sintaxa pentru funcția în PHP este vreodată atât de ușor diferită.
Din nou, lipsește este tipul de retur.
Din nou, lipsește este tipul de returnare și, de asemenea, lipsește este ceea ce alt tip?
[Răspuns studentul neauzit]
Ei bine, bine, asta e bine. Să revenim la faptul că într-o secundă.
>> Noi nu avem, de exemplu, int aici.
Noi nu, de exemplu, s-au int aici pentru că, din nou, în PHP
pur si simplu nu este nevoie să și nu ar trebui să facă asta,
ci mai degrabă e un cuvânt cheie nou, denumit funcție.
În PHP e aproape un pic mai clar, deoarece atunci când doriți o funcție
ai spus literalmente funcție, vă dau un nume și apoi o listă separată prin virgulă
în cazul în care oricare dintre argumentele sale.
Nu este nevoie să spun nule sau ceva de genul asta, si apoi retur este aceeași,
$ $ A * a * $ o.
Ce este, de asemenea, lipsește? Sammy a subliniat acest lucru aici.
În partea de sus a fișierului complet absente in PHP, de asemenea, este un prototip.
Acest lucru este de asemenea de proiectare.
Limbi și interpreți, cum ar fi PHP sunt mai deștepți decât a fost vreodată C
în compilatoare cum ar fi zăngănit.
>> Amintiți-vă că zăngănit, dacă nu ai spune ca acel cub există,
dacă nu l-ați spus că există ca printf, cu un prototip
sau cu o # include, de asemenea, a fost de gând să țipe la tine și nu compila chiar codul.
PHP și mai multe limbi moderne sunt mult mai deștept când vine vorba de acest lucru.
Ei vor lua asupra lor pentru a citi prin toate codului
și să strige la tine, apoi numai în cazul în care constată nicăieri cub.
Nu contează dacă cub este în partea de jos sau de sus, sau chiar, în unele dosar separat.
Limbi PHP și similare sunt acum destul de inteligent pentru a privi înainte
la tot ceea ce înainte de asimilare tine ca au facut o greseala.
În cazul în care nu ne lasă asta?
>> Să facem un exemplu aici ultima în condiții,
și dacă am deschide Notă conditions2.php prea
Sintaxa aici este aproape aceeași.
Sunt folosind readline loc de getString, dar că linia este la fel ca înainte,
"Aș dori un întreg vă rog."
Am avea atunci o condiție în cazul în care, în cazul în care o parte, și apoi un altul,
dar funcțional acest program este, de asemenea, identic cu ceea ce am făcut săptămâni în urmă,
așa că, dacă am rula acest lucru, php de conditions2,
si eu dau un număr de ca 23 -
Am ales un număr pozitiv. Dacă eu dau -1 am ales un număr negativ.
Dacă eu dau 0 am luat într-adevăr 0.
Deci, cine îi pasă de toate astea?
Ei bine, unul dintre un fel distractiv de exerciții aici
pentru mine cel puțin a fost să se întoarcă și a vedea cât de repede am putut pune în aplicare PSET 5,
greșeli de ortografie PSET.
Reamintească faptul că a existat acest fișier numit speller.c,
și acolo a fost un fișier numit dictionary.c.
Ceea ce am făcut a fost că un fel de petrecut câteva minute și m-am convertit cod C
la codul PHP, iar noi nu va petrece prea mult timp pe abecedar
pentru că la fel ca în PSET 5 nu ai nevoie cu adevărat să
petrec mult timp pe care descifrează în sine, deoarece atenția ta era pe dicționar.
>> Este suficient să spun că, dacă ați citit prin abecedar,
acest fișier aici, e destul de mult echivalent cu codul C
v-am dat pentru PSET 5.
Am adăugat doar câteva $ în locuri.
M-am schimbat anumite nume de funcții în cazul în care nu există în PHP.
Nu e un lucru suplimentar aici, preg_match,
care este modul în care un pic crescator de a face ceva, dar vom reveni la cele din urmă.
Dar, în scurt, descifrează este aproape identic, iar daca te uiti la partea de jos foarte
ceea ce în cele din urmă scuipă e asta aici,
cuvinte scrise greșit, cuvinte în dicționar, cuvinte în text.
În regulă, deci ce e interesant acum este următorul.
La partea de sus a dosarul meu am nevoie dictionary.php.
Așa cum și-a C # include PHP are o funcție specială numită necesita
că destul de mult face acelasi lucru, necesită un fișier numit dictionary.php.
Cum pot merge despre punerea în aplicare a PSET 5?
Lasă-mă să mergeți mai departe și de a deschide un fișier aici.
Lasă-mă să iau un pic de referință aici.
Și lasă-mă să creați un fișier nou și începe de asteptare acest dictionary.php.
Lasă-mă să-l pun într-un alt dosar astfel încât să putem face acest lucru trăi.
Și acum voi mări inch
Am de gând să înceapă dosarul meu PHP cu suport php deschis închis suport.
Și apoi aici, au existat cateva functii care aveam nevoie pentru punerea în aplicare pentru PSET 5,
asa ca lasa-mi să încep de punere în aplicare unele dintre acestea,
Deci, a verifica funcția, care a trebuit să ia un cuvânt într-un argument ca.
Vom face asta și vin înapoi să-l într-o clipă.
>> Nu a fost de încărcare funcție, care a avut în ceea ce ca un argument?
Dicționar, astfel încât fișierul pe care am vrut de fapt să se încarce.
Nu a fost dimensiunea funcție, care nu a luat nici un argument
și acolo a fost funcția de-ceea ce a fost alta?
Unload, care nu a luat nici un argument, fie.
Acestea sunt cele 4 functii pe care mi-ar trebui să pună în aplicare în prezent în PHP,
și ceea ce am de gând să faceți este să mergeți mai departe și de a face acest lucru.
O mulțime de ai folosit un tabel de distribuire în PSET 5,
asa ca lasa-mi merge mai departe și de a crea un tabel hash în PHP.
Adoptată.
Asta îmi dă un tabel hash. Ei bine, de ce?
Unul, variabila se numeste $ tabel, doar pentru a evoca ideea unui tabel hash.
Parantezele pătrate, deși, reamintim, reprezintă ce?
O matrice, dar în matrice PHP nu trebuie să fie numeric indexat.
Ele pot fi, de asemenea, tablouri asociative,
ceea ce înseamnă că puteți avea cheile și valorile arbitrare.
>> La fel ca în PSET 5, aceia dintre voi care au facut implementari hash de masă
ați inserat, probabil, cuvântul și apoi introdus-o într-un lanț de liste legate,
sau ați stocat undeva valoarea adevărată sau ceva în acest sens.
Ți-ai amintit cumva faptul că cuvântul a fost acolo.
Pentru moment, care va fi masa mea hash,
și așa mai departe acum de a merge despre punerea în aplicare funcția de verificare
Trebuie doar să te uiți în interiorul tabelului hash
și a vedea dacă un cuvânt este acolo.
Ceea ce am de gând să faceți este să am de gând să spun, dacă-
să zicem isset, care este o funcție PHP care literalmente înseamnă doar este set-cheie,
astfel isset ($ tabel [$ cuvânt],
și dacă da, return true.
Asta e tot. Asta e PSET 5 in PHP.
Ei bine, în corectitudine, bine.
Altfel întoarce false, așa că nu e acolo.
Ce se întâmplă de fapt aici?
Ei bine, dacă tabelul hash-sau masa aici mai general,
este un tablou asociativ care înseamnă că poate indexa în ea
cu un cuvânt cum ar fi "cuvant", și trebuie să mă întorc o valoare.
>> Suntem un fel de a face cu un pas înaintea noastră.
Acesta ar fi un fel de frumos dacă am incarcat de fapt, primul fișier,
deci sarcina nu este la fel de simplu, dar lasă-mă să merg mai departe și bici
o punere în aplicare foarte repede de încărcare.
Lasă-mă să mergeți mai departe și spun cuvinte devine dicționarul fișier.
Funcția fișier în PHP deschide un fișier
și se întoarce la tine o matrice de toate cuvintele din acest fișier,
doar le inmaneaza pentru tine.
Asta a fost o mare durere prea, nu-i așa?
Acum foreach, aceasta este noua noastră construct, foreach ($ cuvinte precum $ cuvânt).
Această buclă este de gând să înceapă iterarea peste cuvintele matrice
și atribuie variabilei $ cuvânt fiecare cuvânt în fișierul
de la prima la a doua la a treia și a patra tot felul
așa că nu trebuie să fac enervant [i] notația și place.
Și ceea ce am de gând să fac pur și simplu, pentru fiecare din aceste cuvinte
este stoca în masa mea de indexare în tabelul
si apoi faci adevărat, pentru că să-și amintească
faptul că un cuvânt este în dicționar mea tot ce am într-adevăr trebuie să fac
este un fel de flip un pic și să spună acest cuvânt în masa mea hash este acolo, adevărat.
Și dacă nu e acolo, eu nu am să afișezi explicit false,
altfel mi-ar trebui pentru a pune false pentru toate cuvintele posibile în univers.
>> Este suficient pentru mine doar pentru a stabili o valoare a indicelui
pentru adevărat dacă un cuvânt este, de fapt, în masa mea hash.
Acum, am o pereche de tăiere colțuri aici că voi flutur mâinile puțin pentru moment,
dar acum funcția de încărcare se face.
Am încărca toate cuvintele din fișierul într-o matrice.
Am itera peste asta matrice, și pentru fiecare cuvânt în matrice
L-am conectați în tabelul meu de distribuire cu 1 linie de cod.
Acest lucru este distractiv. Știi cum putem implementa dimensiunea acum?
Ei bine, marimea este intotdeauna destul de ușor, în corectitudine.
Aici putem face reveni doar numărul de masă.
Asta e destul de ușor prea, conta numărul de lucruri în tabel.
Asta e de fapt un fel de a nu mai eficient.
Ar trebui să am, probabil, o dimensiune variabilă numită astfel încât să putem face acest lucru
în timp constant, dar asta e destul de ușor.
Oh, și apoi descărcarea, dacă vrem cu adevărat să fie anal aici
putem spune că e modul în care descărcați ceva.
Puteți seta doar variabilă egală cu o matrice goală,
și-l scapa de tot ce a fost acolo.
Nu este nevoie pentru a apela gratuit.
>> Din nou, am tăiat niște colțuri, și îmi cer scuze pentru setul de probleme pentru atribuirea 5
probabil în C, dar dacă mergem acum mai departe și a alerga acest lucru,
Mă duc să curgă de fapt versiunea pe care am scris în avans
doar pentru ca nu am face nici un fel de greșeli sintactice.
Lasă-mă să mergeți mai departe și a alerga abecedar. Utilizare este același.
Aici este un fișier de dicționar care conține doar cuvântul foo.
Aici este un fișier text care conține doar foo bar.
Să vraja verifica acest lucru, asa abecedar, folosind acest fișier dicționar la acest fișier text.
Nu e un cuvânt greșit ortografiat, bar, și voila.
Adoptat cu PSET 5.
Să luăm o pauză de 5 minute aici, și ne vom întoarce și mai mult pe PHP.
În regulă, ne-am întors.
Să-mi fac-urăsc pentru o vreme.
Să vedem acum dacă acest fapt nu a fost un rezultat pozitiv
punere în aplicare a, de fapt acest lucru în PHP.
Desigur, a fost nevoie de 45 secunde pentru a pune în aplicare.
>> Dar să mergem mai departe și a alerga acum lucrurile.
Lasă-mă să merg mai departe și a alerga o versiune C
de pronuntie, iar noi îl vom rula pe unul dintre cele mai mari fișiere,
care este Biblia King James.
Și aici este faptul că, în-să mergem în directorul nostru C,
descifrează pe King James cincea.
O mulțime de cuvinte ortografiate greșit.
Ok, deci asta e, probabil, de ieșire ai luat, chiar dacă vremurile sunt un pic diferite,
daca ai totul funcționează corect, și așa dată în total pentru verificarea ortografiei
King James Bible a fost 0.38 secunde, deci destul de bine cu ajutorul că punerea în aplicare.
Acum, lasă-mă să intru în versiunea PHP, pe care tocmai am scris.
Permiteți-mi să ruleze pe care descifrează King James.
Hopa, ignora această eroare. Sunt în directorul greșit.
Descifrează pe King James cincea.
Aproape am terminat.
>> Bine, observator atent va da seama că a fost mai mult de 3 secunde acolo.
Aceasta este adevărata timpul de funcționare.
Se pare că este nevoie de timp să scuipe o mulțime de text din
din cauza tamponare probleme, dar povestea pe scurt,
care a fost de 3.15 secunde masina a timpului, CPU de timp,
față de ceea ce a fost un moment în urmă?
Ca 0.3.
Adică, e un ordin de mărime mai lent, astfel încât în ​​cazul în care este faptul că
încetinirea ridicol provin din?
Ei bine, cum a fost cazul cu cele mai multe orice decizie de design care le-am făcut
în clasa in ultimele 9 săptămâni există aproape întotdeauna acest compromis.
Uneori, doar între spațiu, uneori între spațiu și timp,
spațiu, timp și efort de dezvoltare, și într-adevăr aici, chiar dacă
am salvat o cantitate mare de timp, poate eventual 10-20-30 oră
de timpul de dezvoltare de punere în aplicare verificatorul ortografic
prin biciuire-l în doar 45 de secunde, cu aceasta limba
prețul pe care îl plătiți este că e un ordin de mărime mai lent, ca rezultat,
și acesta este, în general, cazul cu cele mai multe orice limbaj interpretat,
PHP, Python, Ruby, Pearl sau altele prin care
dacă ai de gând să-l rulați prin intermediul unui interpret și l-au citit codul
linie cu linie, de sus în jos, de la stânga la dreapta,
că intermediar este de gând să ia ceva timp proprie,
și ceea ce te simți aici, în cele 3 secunde, spre deosebire de 0.3 secunde
este faptul că nu există acest intermediar, care trebuie să interpreteze literal codul nostru
linie cu linie, și Doamne ferește, dacă ești în interiorul unei bucle
cu un fișier imens care conține sute de mii de cuvinte.
>> Această aeriene se va adăuga și adăuga până și se adaugă în sus și adăuga până.
Pentru un instrument ca aceasta, nu e probabil cel mai bun de a utiliza limbajul pentru punerea în aplicare a
un corector ortografic, dacă iminența este de interes pentru utilizatorii dvs. și pentru tine.
Dar avem de lux într-o clipă, dacă este
folosesc un limbaj cum ar fi PHP sau o mulțime de limbi interpretate
în contextul Web, pentru care contează, aveți avantajul
faptul că internetul este mult mai lent decât majoritatea calculatoarelor.
Ai un procesor GHz în calculatorul dvs., 2 GHz, poate chiar mai mult in aceste zile.
Dar realitatea este pe internet există o cantitate mare de latență
prin care, pentru un browser pentru a vorbi cu un server, chiar dacă am văzut săptămâna trecută
că e destul de rapid, de o jumătate de milisecunde sau cam asa ceva,
că prea adaugă în sus, și dacă sunteți descărcarea lucruri cum ar fi o imagine
sau o fotografie pe Facebook sau pentru a obține mesaje instant peste palavrageala pe Facebook,
Gchat sau similare, toate aceste ori tur-retur
între browser și serverul de pornire pentru a adăuga în sus,
ceea ce face alegerea dvs. special a limbii, în multe cazuri,
Nu tot ceea ce este relevant, deci esti bine folosind un limbaj ușor mai lent
cum ar fi PHP sau Python sau Ruby
dar pentru care există upsides uriașe pentru dvs. și colegii dvs.
și prietenii tăi pentru că puteți pune în aplicare lucrurile așa, atât de mult mai repede.
Și, în plus, aveți risc mult mai mic de defecte de securitate anumitor.
Nu e nici pointeri în PHP.
Nu e nici defecte pe care le SEG pot induce cu ușurință
în același mod în care ar putea, în C.
Cu C esti super-aproape la hardware-ul.
Cu limbi PHP și similare ești un fel de nivel superior, ca să spunem așa,
cu o mulțime de apărare între tine și ceea ce se întâmplă de fapt pe
în interiorul mașinii, și e doar un compromis.
>> Noi am ajuns la punctul de a avea aceste mai moderne, limbi la nivel înalt
cum ar fi PHP, din cauza lecțiilor învățate în limbi, cum ar fi PHP în C.
Dar dacă nu înțeleg ce se întâmplă sub capotă tot acest timp
cu siguranță nu pot lua deciziile corecte de proiectare,
și cu siguranță atunci când vine vorba de a lucra într-un loc cum ar fi Facebook sau Google
sau oricare dintre aceste locuri, care sunt din ce în ce joaca cu seturi mari de date
chiar dacă te duci înapoi și nu student la medicina și sunt de lucru cu unele MD
pe unele mari de date stabilit implicând pacienți și medici
și cum ar fi utilizarea instrumentelor adecvate este extrem de convingatoare
pentru că altfel analiza de un anumit set de date poate dura câteva secunde,
sau s-ar putea să ia literalmente de ore.
Acesta este doar un exemplu, să nu te frustra, cu un efort cât mai mult
era în C, dar pentru a vă ajuta să apreciem că, atunci când se pune în aplicare ceva în C
te înțelege cu adevărat, sau în teorie, să înțeleagă cu adevărat
cum totul este sau ar trebui să fie de lucru, și aveți un control aproape complet
asupra a ceea ce se întâmplă pe sub capota, si cu aceste limbi de nivel superior
va trebui să renunțe la controlul mai mult la oamenii care le-au inventat
și sunt supuse mai mult pentru a deciziile de design lor decât a ta.
Dar dacă ne ia acordat pentru faptul că performanța
nu este la fel de important pe internet din cauza acestor alte aspecte,
doar viteze de rețea sunt un pic mai lent decât viteza CPU, oricum,
astfel încât să putem rezolva de permite de a utiliza un limbaj ușor mai lent
în cazul în care sunt upsides putem dezvolta lucrurile de 10 ori mai repede sau chiar mai mult.
>> Să vedem cum putem începe să utilizați acest.
Lasă-mă să merg într-un dosar
printre exemplele de azi numit frosh.ims,
și acest lucru a fost de fapt personal motivată de faptul că foarte primul lucru
Am scris pentru Web de ani în urmă după ce a luat CS50 CS51 și
a fost un site pentru programul Frosh AI, sport intramural boboc,
care, la momentul acesta a fost în urmă cu ani suficiente că, la momentul
nu a existat nici site-ul pentru programul, chiar dacă a existat un web,
și în loc a existat o Proctor în Wigglesworth, prin care, dacă ai vrut
să se înregistreze pentru volei sau fotbal sau orice altceva v-ar umple o bucată de hârtie.
Tu ar merge apoi prin curte.
V-ar bate la usa, apoi și diapozitive în ușa lor sau o parte a Proctor
o bucată de hârtie cu numele tău pe ea, sau nu vrei sa fi un căpitan de echipă,
ce sport ai vrut să faci, și ce dormitorul ai fost inch
A fost un fel de mod de școală veche de a face lucrurile, iar acest lucru a fost un prim
posibilitatea de a automatiza o mulțime de acest proces.
Tu du-te la site-ul web. Tastați ceva inch
Veți obține un email de confirmare, iar boom-ul, ați terminat.
>> Acesta a fost primul lucru am făcut, deși într-un limbaj numit Pearl,
dar este relativ ușor de făcut în PHP, iar acest lucru este un fel de reprezentant
dintre problemele pe care le puteți începe rezolvarea atunci când vă puteți exprima
programatic și nu trebuie să se bazeze pe lucruri cum ar fi site-urile Google
sau Excel sau instrumente care sunt predate la tine.
Voi avea acum capacitatea de a face lucruri de genul asta.
Aceasta este o versiune super-urat a unui formular,
dar hai sa folosesc doar pentru începutul conversației prin care acest lucru este
aproximativ ceea ce semăna cu formularul de ani în urmă pentru noi
pentru a permite persoanelor de pe Web pentru a vă înscrie pentru Frosh AI.
Am cerut un nume, o casetă de selectare pentru a vedea dacă sunt sau nu au vrut să fie căpitan,
bărbat sau femeie, și apoi ceea ce au fost în cămin,
și apoi le va prezenta acest formular.
Să ne uităm mai întâi sub capota de la HTML care reprezintă această pagină web.
Lasă-mă să intru în froshims0,
si ca o paranteza, pentru PSET 7 Iau de la sine
directoarele și folderele pe care am pune lucrurile inch
Vă vom plimba prin exact unde lucrurile trebuie să meargă în aparat,
Mod comenzi pe care trebuie sa fugi, așa că nu vă faceți griji despre toate
detalii stupide sincronizarea de la get-du-te aici.
>> În regulă, aici e froshims0.php.
Lasă-mă să defilați în jos, și ceea ce e curios aici,
acesta este un fișier PHP, dar ceea ce este în interiorul ei, în mod clar?
E o mulțime de HTML, PHP și într-adevăr, despre originile
într-adevăr au fost pentru a fi un limbaj Web-centrice.
Un moment în urmă am folosit-o pentru a pune în aplicare exemplul bere,
în condițiile exemplu, exemplu salut, și asta e bine.
Aveți posibilitatea să utilizați PHP ca limbaj de scripting
în cazul în care un script este de fapt doar nomenclatura dat un program rapid și murdar
sau ceva pe care le scrie într-un scenariu sau mai mult, în general, un limbaj interpretat.
PHP este super util pentru că, din cauza ați văzut cât de repede
relativ putem biciul de programe în PHP.
Dar a fost într-adevăr conceput pentru a fi utilizat pentru Web,
și concepute pentru Web în sensul că observați aici, la partea de sus a fișierului
Eu încep cu <? Php.
Apoi, am o grămadă de comentarii inutile, acordate, dar apoi m-am închide PHP modul.
Dar apoi m-am picătură în modul HTML.
>> Ce este interesant despre PHP, chiar dacă este fișierul se termină în. Php
este, în general, menit să fie co-amestecate cu HTML,
unele cod PHP, unele HTML.
Și vom vedea în cele din urmă că putem începe să tachineze pe cei în afară
și să păstreze separat nostru HTML la PHP noastră cu totul,
dar originile într-adevăr au fost PHP pentru a vă oferi această flexibilitate,
că, dacă vrei ceva HTML scrie doar, și că va fi
scuipă identic cu browser-ul.
Dar, dacă aveți nevoie de o tehnica de programare,
un cod de programare, puteți pune, de asemenea, că în exact același fișier, după cum vom vedea în curând.
Iată HTML mea.
Am un titlu de asta pentru Frosh AI.
Am un tag-ul body care a luat unele CSS pe el pentru a tot ceea ce, în centrul de mijloc,
si apoi aici am un formular care aparent va fi prezentat
într-un fișier nou numit register0.php, deci vom vedea că într-o clipă.
Este folosind o metoda numita mesaj, pe care ne vom întoarce la la fel de bine.
Apoi am niște intrări de formular, un nume numita, al cărui tip este text,
una a cărei nume este căpitanul, al cărui tip este caseta,
și acest lucru, nu am mai văzut-o, dar ea face exact ceea ce spune.
Veți primi o casetă de selectare în loc de o casetă de text.
Aici aveti un buton radio, care este unul dintre aceste butoane circulare
pe care le puteți alege fie prezenta una sau că una.
>> Observă că e deliberată că i-am dat ambele butoane radio numele de gen.
Acesta este modul în care veți obține de excludere reciprocă, prin care trebuie să faceți clic
fie prezenta una sau că una, și făcând clic pe de altă parte
aceasta Debifarea alta, deci va trebui să le dea același nume
dacă doriți ca acestea să fie reciproc exclusive așa.
Și apoi pentru cămin, nu cred că am văzut încă acest lucru, dar e un meniu select, un meniu drop-down.
Tag-ul pentru că este, selectați.
Ai da apoi meniul drop-down un nume,
și atunci aveți o grămadă de aceste opțiuni.
Primul, doar pentru estetica, este un șir gol.
Am vrut doar meniurile jos pentru a fi martor în mod implicit,
și apoi acolo e Apley, Canaday, Grays, și așa mai departe.
Și observați dihotomia aici.
Opțiune în meniurile care se are o valoare,
dar atunci aceasta are un nume de om prietenos, care, în acest exemplu
este identic, dar dacă am vrut să fie anal am putea avea
valoarea acestui meniurile care se fie doar versiunea scurtă,
Grays, dar am putea spune într-adevăr că Grays Hall uman efectiv vede,
dar asta nu e tot ce interesant, așa că am pastrat-o simplu și le-a făcut identice.
Apoi, in partea de jos, avem un buton submit
pe care le-am văzut până acum, dar am observat dat un alt cuvânt.
În loc de CS50 căutare am dat eticheta "Registrul".
>> Rezultatul final este pagina de web aici, și, din nou,
în cazul în care nu se prezintă această?
Ea devine prezentat un fisier, valoarea atributului acțiunii,
care a fost register0.php.
Să vedem ce se intampla de fapt aici.
Lasă-mă să mergeți mai departe și să completeze acest formular, spune David,
Barbat, Matthews, iar apoi voi spune inregistreaza-te.
Lasă-mă să zoom out și faceți clic pe registrul.
Ok, deci un fel de inutil, dar să vedem ce se întâmplă de fapt pe.
Observați că URL-ul a schimbat pentru a fi register0.php.
Ceea ce este curios absent din URL-ul, deși, chiar dacă am prezentat doar o forma?
[Răspuns studentul neauzit]
Bine, asta e doar utilizatorul Chrome fiind prietenoase în aceste zile.
Asta e de fapt acolo. Ei se ascund doar pentru a economisi spațiu.
Dar gândul bun, gand bun.
Spre celălalt capăt al URL-ul, deși, ce lipsește? Da,.
[Student] șir de interogare.
Șir de interogare, amintesc atât de la noastre de exemple simple de căutare Google.
De îndată ce am faceți clic pe butonul trimite adresa URL
mi-a luat în Google, dar apoi a fost q =? informatică sau orice am tastat inch
Asta pentru ca am folosit metoda GET cu exemplul de căutare.
>> De data aceasta suntem folosind metoda ce loc?
Postati, și unul dintre distincțiile imediate
între GET si POST este faptul că postul nu pune de intrare de utilizator în URL-ul.
Acesta se ascunde. Ea încă îl trimite.
De fapt, ceea ce vedem în browser-ul aici, după cum vom dezvălui într-o clipă
uitandu-se la register0, se văd doar conținutul
din matrice care au fost transmise de la browser-ul la server.
Dar URL-ul nu are o?, Nu are nici cuvinte cheie
sau valori în ea, și de ce este asta?
Ei bine, vă permite să mesaj trimite în continuare date din formular la un server,
dar nu-l pune în URL-ul, deci ce fel de informații este post
în special pentru, probabil, atunci când ceri utilizatorului sa
tastați într-o formă de intrare la?
Ceva ca o parolă, ceva de genul ce altceva?
Numere de cărți de credit.
Orice lucru care e ușor sensibil probabil nu vrei se încheie până în adresa URL
în cazul în care numai pentru că aceasta înseamnă colegul tău de cameră sau de membru al familiei poate troll doar prin
istoricul dvs. de internet și apoi să vedem literalmente parolele tale,
literalmente vedea numerele de card de credit, deoarece majoritatea browser-elor
amintiți în istoria indiferent de URL-uri care le-ați fost la,
așa că, dacă numai pentru că ar fi o idee rea.
Utilizarea ascunde faptul că plasa de detaliu din partea utilizatorului.
>> De asemenea, cum a face tu a încărca o fotografie pe Facebook?
Ei bine, doar 2 mecanismele care le puteți folosi într-adevăr,
chiar dacă există câteva cele mai multe alte arcane, este GET si POST.
Cum vă încărcați o fotografie, eventual, prin intermediul unui URL?
Puteți face de fapt.
Puteți lua un JPEG sau bitmap sau GIF și puteți să-l reprezinte în hexazecimal
sau ceva numit de bază 64.
În loc de a utiliza baza 16 64 bază, care, în esență arata ca
Caractere ASCII, și puteți încărca o fotografie de fapt, prin intermediul unui URL
după un semn de întrebare, dar există, în general, limitele de mărime.
Cele mai multe browsere forța URL-uri pentru a fi nu mai mult de 1.000 de caractere,
Poate că 2.000 caractere sau similare, astfel încât să nu se poate încărca
o 10 MB pe Facebook fotografii.
Pentru că utilizați mesaj la fel de bine, astfel încât de acum se pune parametrii în adresa URL,
ceea ce este frumos și util, uneori, dar pentru nimic sensibile sau mari
mesaj este calea de a merge.
Ce este, de fapt register0 face aici?
Ei bine, daca am deschide register0 observați că aceasta este o pagină de super-simplu,
dar se demonstreze faptul că pot co-se amestece, pentru o mai bună sau mai rău pentru,
HTML cu PHP.
Acest fișier întreg, cu excepția comentariile de la partea de sus, sunt HTML
cu excepția tipul ăsta aici.
>> Observați în mijlocul codul meu PHP,
în mijlocul HTML mea, am un fel de temporar
a intrat PHP modul.
Am sunat-o funcție specială numită de imprimare R.
Aceasta înseamnă imprima recursiv, și ceea ce face este recursiv imprimă
orice variabilă-l predea, punct și virgulă, de ieșire PHP modul.
Și tag-ul de pre vă oferă pre-formatat textul,
mono textul spațiu, astfel încât fiecare spațiu veți vedea de fapt.
Ea nu dispare. Ce este postul?
Ei bine, ceea ce este interesant și convingător despre PHP
este că ori de câte ori trimiteți un formular utilizând GET sau POST
ceva care este prezentat la tine de un browser
PHP în sine seama ce acele perechi cheie valoare sunt,
Cifrele daca exista sau nu semne de șanse, figuri daca e un semn de întrebare.
Acesta face toate munca grea pentru tine, si apoi iti da un tablou asociativ
care conține tot ceea ce utilizatorul tastat în formă.
Ei bine, ce domenii au această formă avea?
>> Ea a avut 4 câmpuri.
Unul a fost un câmp de text numit nume.
Unul a fost numit căpitan o casetă de selectare.
Unul a fost un buton radio numit de gen,
și unul a fost un meniu drop-down numit cămin,
asa observați atunci când am imprima recursiv
conținutul acestei variabile speciale.
Aceasta este o variabilă specială la nivel mondial numit literal $ _POST, în toate capacele.
Aceasta este o variabilă specială la nivel mondial, care creează PHP doar pentru tine
și mâinile pentru tine, astfel încât să puteți accesa totul
care a fost prezentat prin intermediul unui formular de către un utilizator.
Și apelând r de imprimare pe ea, nu ai face asta într-o aplicație normală.
Facem asta pentru a vedea in interiorul acestei variabile,
și ceea ce este în interiorul acestuia, ei bine, 4 chei,
4 parametri http, ca să spunem așa,
numele, căpitane, sex, dormitorul, iar apoi valorile pe care utilizatorul
tastat cu o singură excepție.
Am făcut de tip D-A-V-I-D.
Am verificat caseta, deși, de sex masculin, care a prezentat o valoare aparent
de doar m pentru a fi succint.
>> Când m-am selectat Matthews că e valoarea pe care a fost selectată,
iar aceasta este un pic stupid, dar e convenție.
Când am verificat caseta, o valoare de la, "", a fost prezentat pentru caseta.
Dacă eu nu l-au verificat, nici o valoare ar fi fost trimise nici un fel.
Aceasta este doar oferindu-ne perspective în ceea ce este în interiorul acestei variabile globale specială,
și este atât de special încât se numește o variabila super-global.
Ea există peste tot în codul dvs., astfel încât să puteți accesa de fapt.
Acest lucru nu este faptul că lasă convingătoare, așa că utilizează efectiv super-global
și să încerce de fapt să se înregistreze pe cineva.
În froshims1 am de gând să facă o schimbare.
Sunt schimbarea de acțiune să fie register1.php,
și eu fac un lucru.
Am fost un fel de jenat de calitatea pagina mea acolo.
E destul de hidos, sincer, asa se pare
pe care le puteți folosi foarte ușor pe Web
altor persoane cod JavaScript, CSS altor oameni
pe care le-am scris și open source și puse la dispoziție ca o bibliotecă,
ca să spunem așa, și de exemplu, aici, eu sunt, folosind o bibliotecă disponibile în mod liber,
o grămadă de cod care altcineva a scris.
>> Twitter sa întâmplat pentru a scrie acest cod, și se numește bibliotecă bootstrap,
si e doar o grămadă de foi de stil CSS, o grămadă de fișiere. css
că altcineva a scris si-a dat seama cum să obțineți totul frumos și destul de
astfel încât oamenii ca noi pot face griji un pic mai puțin despre estetică și să se concentreze mult mai mult
pe logica de programare și actuale.
Legându-l cu acea etichetă, care este aceeași etichetă am folosit amintesc de styles3.css mai devreme,
Acum am acces la un fișier numit bootstrap.min.css.
Min înseamnă doar că am minified și le-am scăpat de toate spațiu alb și așa mai departe
doar pentru a vă asigura că nu sunt trimite-mi bytes mai mult decât de fapt am nevoie.
Dar acolo este o mulțime de CSS, deci, dacă am de-acum versiunea 1 a Frosh AI
observă că dosarul meu este cu siguranta mai frumoasa.
Acum e încă doar în alb și negru, dar observați că, prin utilizarea doar foaia de stilul lor
și utilizați anumite caracteristici ale acestuia pe forma mea nu e uimitor,
dar e cu siguranta mai curat decât a fost înainte, și proiectorul nu este de a face dreptate.
Nu e linii mici gri in jurul butoanelor și în jurul valorii de câmpul de text chiar aici,
dar e cu siguranta mai curat decât a fost înainte.
>> Acum, în corectitudine, am am avut de a schimba markup-mi un pic.
Aceasta este versiunea 1, și observați că am folosit un tag-uri câteva noi,
si sincer, am avut nici o idee cum se face acest lucru până când am citit documentația
pentru biblioteca Twitter bootstrap, si mi-au spus că dacă doriți să utilizați biblioteca noastră
utilizați un element FIELDSET în interiorul formularului,
pune cuvântul pe care doriți să apară alături de un interior câmp dintr-o etichetă etichetă,
apoi da intrare un nume, la fel ca înainte,
și apoi pentru caseta, nu numai că-l înfășurați într-un element de etichetă,
să utilizați ceva numit-o clasă, așa că nu am văzut acest lucru înainte,
dar veți vedea acest lucru în una din pantaloni scurți PSET 7 lui.
O clasă în CSS vă permite să faci ceva foarte similar cu ID-ul,
dar înainte atunci când am avut o identitate cu simbolul #
care a fost pentru unul și numai un singur element.
Ce este frumos despre o clasă este faptul că mai multe elemente pot avea aceeași clasă
sau același chestii CSS aplicată.
>> Dar, din nou, mai mult pe cei din scurt, si restul este doar copiați și inserați
din documentația lor în cazul în care am adăugat o etichetă aici și acolo.
Iar la final, pentru că am inclus tag-link-ul de sus,
totul pare mai frumos mod automat
prin simpla care a marcat pagina mea într-un mod care
Stare de nervozitate de așteptat, și nu există atât de multe moduri diferite de
de a face acest lucru, iar acest lucru este într-adevăr foarte potrivit.
În acest moment, în semestrul, după cum veți vedea în spec. PSET 7 lui,
Googling în jurul valorii de, citind pe biblioteci, folosind CSS altor oameni
și JavaScript pentru a rezolva problemele auxiliare
la setul de problema în sine este, cu siguranță încurajat și este calea
Web-ul este construit în aceste zile, stând pe umerii altor oameni
astfel încât să vă puteți concentra cu adevărat asupra problemelor noi și interesante.
Dar haideți să ne concentrăm acum pe, din nou, logica.
>> Asta a fost un ocol rapid pe estetica doar pentru a vă arăta direcția în care poți merge.
Mă duc pentru a reveni la urât unul pentru acum doar pentru că
nu exista nici o distragere cu chestii Twitter, și lasă-mă să mergeți mai departe și să se deschidă
froshims2, care, din nou, diferă numai în acțiune, register2.php,
și haideți să aruncăm o privire la ceea ce efectul este aici.
Lasă-mă să mergeți mai departe și tastați în David.
Eu nu va fi căpitanul de data asta.
Voi spune de sex masculin, Matthews, registru.
La naiba. Bine, asta e un șurub pe partea mea.
Stand by.
Register2, linia 22, în cazul în gol sau rău-.
Să reîncărca.
Bine, la trimiterea acestui formular ce sa întâmplat?
Am scris în David, verificate de sex masculin, click Matthews, registru.
Sunteți înregistrat. (Ei bine, nu chiar.)
Acest lucru este în mod clar un pas dincolo de doar imprimarea conținutul unor variabile,
dar ceea ce este de fapt acest fișier faci?
În register2.php
observați că am unele cod nou.
Interiorul tag-ul body mea am în esență, o, dacă altceva construi,
ci pentru că eu sunt co-amestec aceasta cu unele HTML
Trebuie să intre și ieși din modul PHP și înapoi, așa că hai să vedem ce fac.
>> În primul rând vreau să spun aici, dacă este cazul
că postul super-global este gol pentru cheia de nume,
Deci cu alte cuvinte, în cazul în care utilizatorul nu mi-a dat o valoare de nume în formă,
apoi gol este de gând să se întoarcă adevărat, pentru că valoarea este gol.
Sau-Observați verticale bare-ar fi dacă de gen este gol
în interiorul acestei construcții super-global, care, din nou, reprezintă conținutul formularului,
sau cămin este gol, apoi am de gând să mergeți mai departe și să strige la utilizator.
Cum? Ei bine, observați am de gând să vă spun că trebuie să furnizați numele, sexul, și dormitorul.
Să induce de fapt, greșeala asta.
Lasă-mă să mă întorc la forma mea. Lasă-mă să-l reîncărcați clar.
Și eu sunt doar de gând să le dea lui David, și ei nu trebuie să știe unde locuiesc.
Inregistreaza-te. Se pare că am nevoie să le spună unde locuiesc.
Tu trebuie să furnizeze numele, sexul și dormitorul. Du-te înapoi.
>> Și am putut clic pentru a reveni la această formă, dar de ce e asta?
Ei bine, în acest caz, numele nu era gol, dar a fost de gen, și a fost cămin,
astfel încât toată această expresie evaluată la true, și chiar dacă sintaxa este un pic nou,
din nou, am intra în modul de PHP, familiar în cazul în care declarația,
dar noua parte aici este doar acest colon, si am dat-on bară prin omiterea o paranteză
de accident, dar observați colon, iar acest lucru înseamnă
chiar daca ne iese totul modul de PHP
care urmează să fie scuipa Verbatim a browser-ului
până când veți vedea un bloc de altceva, asa cum facem noi aici,
caz în care ar trebui să scuipe în schimb acest lucru
până când veți vedea endif, astfel încât unele sintaxă ușor nou
care îmi permite să comuta între HTML și PHP.
Noi putem curăța asta în cele din urmă, dar pentru acum,
e un fel de-un mod convingător de verificarea erorilor formularul.
>> Acum, eu spun că nu ești cu adevărat, deoarece, evident, înregistrat-am făcut nimic, dar datele,
așa că hai să încercăm de fapt să facă ceva cool.
În froshims3 singura diferenta este ca eu am de gând să prezinte la register3,
deci HTML nu este aceeași.
În register3 observa acest lucru.
Acesta este un fel de sexy.
La partea de sus Sunt folosind o declarație impun, astfel încât acesta este la fel ca # include.
De data aceasta nu e stdio.h sau ceva de genul asta.
E o bibliotecă PHP, și aceasta se numește PHPMailer.
Cum am ști să includă tocmai acest șir citat?
L-am citit în documentația, astfel încât atunci când mi-au spus acest lucru la pus partea de sus a fișierului
dacă doriți să utilizați o bibliotecă specială numită PHPMailer care face ceea ce spune.
Acesta vă permite să trimiteți e-mail prin PHP.
Acum, haideți să defilați în jos în continuare.
>> Aviz să înceapă Sunt în modul PHP tot acest timp,
astfel observa acum aici, după importul acea bibliotecă,
ca să spunem așa, fac niște verificări Sanity.
Dacă e adevărat că numele nu este gol
și de gen nu este gol-observa punctele de exclamare-
și cămin nu este gol, atunci utilizatorul a completat în mod logic formularul, cel puțin suficient.
Nu-mi pasă dacă sunt sau nu căpitan. Am nevoie doar de numele lor, de gen, și dormitorul.
În cazul în care s-au umplut cele în așa fel încât nici unul din aceste domenii sunt goale
Această cifră este ușor noua sintaxă.
PHP, ca o parte, este un limbaj de programare orientat obiect
pe care unii dintre voi poate aminti de APCS sau similare.
Pentru moment, în cazul în care nefamiliar, știu doar că, pentru a folosi această bibliotecă
aveți pentru a scrie o linie de cod ca acest lucru, folosind un cuvânt cheie nou,
literalmente un cuvânt cheie nou, denumit nouă.
Dar dincolo de asta, avem o sintaxă familiare.
Este un operator de săgeată, care este similar cu ceea ce am folosit pentru struct în contextul de pointeri.
Pentru astazi PHP nu are pointeri,
dar să știi că de acum în interiorul variabilei e-mail
este în esență un fel de un pointer la o bibliotecă specială
că altcineva a scris, și dacă vreau pentru a accesa funcționalitățile specifice
interiorul bibliotecii pe care eu nu, la fel ca în C, utilizați operatorul de săgeată,
chiar dacă acestea nu sunt de fapt pointeri.
E un fel de versiunea proprie PHP cu privire la aceasta.
Acest lucru înseamnă intra în bibliotecă și apela funcția IsSMTP.
SMTP, rechemare, de la Warriors noastre de net se referă la e-mail,
și că înseamnă doar utilizează un server de e-mail pentru acest AI Frosh înregistrare.
>> Ce gazdă vreau să folosesc?
Ei bine, la Harvard, dacă Google în jurul valorii de, are un server de e-mail numit smtp.fas.harvard.edu.
Daca te joci de-a lungul la domiciliu sau locuiți într-o rețea Comcast
s-ar putea sa fie ceva de genul smtp.comcast.net.
Este cu totul depinde de locul în care locuiți și de furnizorul de servicii Internet, care este.
După aceea am de gând să-mi seta de la adresa de arbitrar pentru a fi jharvard@cs50.net.
Mă duc apoi pentru a seta pentru a aborda de a fi jharvard@cs50.net.
Singura cale am știut că aceste funcții au fost chemați SetFrom și AddAddress
este, din nou, am citit documentația.
Acest lucru nu este un fel de magie cunoscute de toți programatori.
Apoi am setat un subiect la "înregistrare".
Și acum această linie este un pic urât, deoarece ceea ce nu înseamnă operatorul punct în PHP?
Oricine știe?
Înlănțui.
În C este o durere în gât pentru a concatena 2 siruri de caractere împreună.
Ai de a face cu malloc sau realloc sau toate chestiile astea
doar pentru a prelungi durata a unui șir.
În PHP, JavaScript și în alte limbi
puteți face, de obicei, acest lucru cu un singur caracter.
În acest caz, punct înseamnă să ia acest șir aici
și adăugați-l la acest șir.
>> Oh, și apropo, să-l adăugați acest șir,
care se întâmplă să fie o variabilă în interiorul acestei super-la nivel mondial.
Apoi, adăugați-l la o nouă linie, astfel încât toate aceste puncte doar înseamnă
continua să facă un șir mai mare și mai mare și mai mare,
și nu trebuie să aibă grijă la toate despre malloc sau ca într-o limbă de acest fel,
și nu există alte moduri de a face acest lucru, dar aceasta este una dintre cel mai rapid
modalități de a-l puna.
Ce este aceasta face?
E crearea unui organism de e-mail care va spune Nume: Căpitan: Sex: Dorm:
toate pe linii separate, apoi în cele din urmă,
o linie de cod, și am de gând să ignore acest lucru pentru acum.
Dacă fals == înseamnă doar în cazul în care ceva nu a mers bine,
dar magia se întâmplă aici.
Mail Trimite înseamnă trimite acest e-mail.
Să vedem ce rezultatul net este.
La partea de jos a fișierului, observați că acesta va spune că sunt înregistrate într-adevăr
dacă aș ajunge atât de departe.
Dacă, însă, utilizatorul greșește, observați că am început această
în cazul în care condiția aici, dacă nu e gol și nu gol
și nu este gol vom trimite e-mail.
În caz contrar, vom trimite această linie de cod,
care va avea ca efect, după cum veți vedea în PSET 7, din redirectionarea utilizatorului
înapoi de unde au venit, froshims3.php.
>> Degetele încrucișate, în caz contrar aceasta va fi cea mai dezamagitoare demo astăzi.
Aici vom merge.
Lasă-mă să deschid inbox-ul de e-mail pentru jharvard în Gmail.
Nu e-mail chiar acum. Bine.
Acum, lasă-mă să deschid froshims3, care este al treilea exemplu și ultima ne vom uita la aici.
Ok, aici vom merge.
Nate, el va fi căpitan, de sex masculin, de la, să zicem, Apley.
Inregistreaza-te. Bine, sunteți înregistrat într-adevăr.
Acum, dacă am defila pe la e-mail meu, oh, Doamne.
Tocmai am trimis un e-mail dinamic pe Web.
>> Să lăsăm pe această notă.
Un videoclip este pentru viitoarea prelegere am ratat. Ne vedem săptămâna viitoare.
[CS50.TV]