>> [Glazbom]
>> DAVID J. Malan: U redu.
Ovo je CS50.
To je početak tjedna osam.
A možda podsjetiti da smo stali Posljednji put gleda na novom jeziku
uopce.
U stvari, to je jedan prilično lagan i to nije ni
programski jezik.
To je jezik za označavanje koji nam omogućuje zapravo strukturirati i napraviti web stranice.
A kad vam nešto drugo u kombinaciji s this--
ili će uskoro, ukoliko to već niste učinili.
Idemo koristiti kaskadno Style Sheets ili CSS, koje
je još jedna vrsta jezika sa svojstvima i vrijednostima
to će činimo Stvari kao što su promijenili boju
i promijenite položaj i ove vrste ugađanje.
No, danas i dalje, počinjemo usredotočiti na snažnije jezika,
Stvarni programski jezici poput PHP.
>> Dakle, PHP je oko za neko vrijeme.
I kao što ćete vidjeti, to je dizajniran prvenstveno
rano za stvarne koristiti za web razvoj
i zapravo stvaraju web stranice.
Pa što vrste značajke ne jezik
potrebno kako bi weba Stranice dinamično s njom?
>> Drugim riječima, ako želite generirati Sadržaj dynamically-- poput Facebook-a
Tekuće, koji se stalno mijenja, ili instant poruke koje poskočiti iz vremena
da time-- kao što je Ključni dio funkcionalnosti
trebate u programskom jeziku da bi vam neka dinamički
ispisati nove informacije na ekranu?
>> UČENIK: Šifra.
DAVID J. Malan: Šifra.
U redu.
Uzet ćemo to.
Malo precizniji.
Mislim, mogli bismo napraviti ovo sa C, iskreno.
Bilo bi bol u vratu.
But-- je to opredjeljenje?
>> UČENIK: Da.
Varijable, možda?
DAVID J. Malan: varijable.
U redu, sigurno.
Varijable svakako može nam pomoći.
Pa čak i nešto jednostavnije.
Koristili smo se u prvi Program prvog dana
kad smo zapravo rekao "Pozdrav svijetu".
>> UČENIK: Print.
>> DAVID J. Malan: Ispis, zar ne?
Ispis ili printf u Svijet C. Dakle, sve ovo vrijeme,
imali smo u našem zbrinjavanje language-- C,
U particular-- pa čak i Blok za tu stvar da je
može generirati nizove teksta.
>> Pa, ako je HTML, kao što smo vidjeli prošlog tjedna, je Samo cijela hrpa nizova teksta
iako s otvorenim zagradama i zatvorena zagrade i neka pjesmica
a razlog za to, i onda smo mogli uistinu
početak stvaranja web stranice bilo ručno ih upišete u gedit
ili Microsoft Word, za to matter-- mi samo treba za uređivanje teksta.
>> Ili bismo mogli pisati kod, na svoj prijedlog
ranije, da će nas pustiti dinamički generirati HTML,
i to je ono što ćemo početi raditi s PHP
i na kraju čak i sa jezik zove JavaScript,
je koristiti jedan jezik za generiranje drugi.
I doista, to je ono što Facebook i mnoge, mnoge druge web stranice
to zapravo dinamički prikaz novih informacija za vas.
>> Tako ćemo početi s this-- a grobni izgleda linija, ali jedna
To je zapravo prilično moćan.
Do sada smo koristili C, koji je sastavio jezik.
I samo brzo recap-- sastaviti jezik ima što karakteristiku?
Vi očito treba sastaviti da, ali što to znači?
Da?
>> STUDENT: To mora biti sklopljeni u strojni kod.
>> DAVID J. Malan: U redu.
To treba biti sklopljen u strojni kod.
Dakle, uzmite izvornog koda, koja je vrsta Engleski-slično.
Možete pretvoriti da je nešto niža razina,
koji se u konačnici zove Objekt code-- 0-a i 1-a.
I to ti je 0 i 1 koji procesora, poput onih koje je Intel,
zapravo razumijem.
>> Sada, PHP i Python i Ruby i JavaScript i grozdovi drugi
jezici nisu sastavljeni jezici, ali tumačiti jezika,
što znači da ih samo upisati, a zatim ne ih pretvoriti u 0-a i 1-a.
Umjesto toga samo pružiti zatim kao ulaz u programu tuđe,
zove tumač.
A ta osoba je Program je dizajniran
razumjeti ono što svaki i svaki simbol u Pythonu ili PHP
ili Ruby ili bilo koji broj drugim jezicima znači.
>> I tako sve što je potrebno je nešto poput ovoga.
Dakle, u stvari, ja ću prijeći na aparatu
ovdje, samo u bilo Stari prozor, a mi smo
ići naprijed i otvoriti file zove, kažu, zdravo.
Sada već, možda bih spasio to čak s nastavkom datoteke,
ali ja ću učiniti nešto još jednostavnije ovdje.
Ja ću ići naprijed i početi Ova datoteka s ovim tajanstvenim sintakse.
Dakle, "korisnik, bin, ENV, za okoliš, php. "
>> To je jednostavno jedna linija koda koji je će reći moja operativni sustav,
idu naći u vašem lokalnom okoliš što god da je,
gdje god PHP is-- na interpreter-- i ići naprijed i koristiti taj tumača
protumačiti sljedeći kod.
Sada, to je vrsta ružna osobina PHP.
No, u tom jeziku, bilo Vrijeme pišete PHP kod,
morate imati jedan od ovih ružna PHP oznake označavanju početak
Vaše code-- <? php.
>> No, u nastavku se ovdje, ja sada mogu učiniti nešto vrlo jednostavna, kao i printf Pozdrav zarezom
Svijet backslash n blizu citat, u neposrednoj blizini zagradu.
A onda samo za dobro mjera, idem
ići naprijed i blizu moj php tag ovamo
Tako da sve izgleda lijepo lijepo ispisati.
>> I čim sam kliknite Spremi, gedit je dovoljno zapravo pametna
gledati u tom prvom redu i shvatili, oh, pišete PHP koda.
Neka mi sintakse vrhunac to s bojama
Ovdje tako da stoji out malo više.
Ali sada ću ići do mog prozora terminala.
Ja ću povećavanje.
>> Ovaj program je nazvan "Hello" pa ću napraviti točkica crta Pozdrav,
ali dopuštenje uskraćeno.
I bash.
Mi zapravo čuo da je Prije stvar par tjedana
U kontekstu kontuzija, jedan od onih bugova.
>> No Permission denied smo vidjeli prije, možda u nekom drugom kontekstu.
Se bilo tko sjetiti kako možda nešto popraviti
gdje dopuštenje odbijen kao što je ovaj?
Što je naredba, barem?
>> UČENIK: Chmod.
DAVID J. Malan: Da, chmod, za promjenu načina datoteke.
A vi ćete dobiti sve više koristi za ovaj sljedeći tjedan s naknadnim problema
set.
Ali za sada, idem mijenjati Način da ne bude čitljiva,
ali dati svima executeability privilegije, sposobnost
pokrenuti ovu datoteku.
A ja ću se dodijeliti da je do datoteke pozdravi.
>> Ako ja sada napraviti dot udarac Pozdrav ući, te Vidite, u stvari, moj program, Pozdrav svijetu.
A ono što sam učinio je korak Jasno preskočiti uopce?
Izrada.
Dakle, samo sam trčao ovaj program vrlo jednostavno.
>> I ispada da možete to učiniti sa puno sintakse podsjeća C.
Pusti me na današnjem koda, koji sam stavio u moj vhost imenik
Ovdje, za prave razloge mi ćemo se vratiti.
I ja ću ići u, recimo, uvjeti 1.
>> I vidjet ćete ovdje, prvi i prije svega, cijela hrpa komentara.
No, to je zapravo re-kreacija u PHP
programa smo učinili u tjednu jedan se zove uvjeti 1.c
gdje je svrha u Život ovog programa
očito pitati Korisnik za cijeli broj
a zatim napraviti neki fluffy Analiza na njega kod kojega
što reći, ako je to pozitivno ili negativna ili jednaka nuli.
I ja sam to dovesti do samo zato, osim možda jedan mali detalj,
to je ne razlikuje tako daleko od C.
>> Što je jedna od karakteristika da se ovdje možda iskoči
na vas kao malo drugačiji?
Možda dvije stvari.
Da?
>> UČENIK: Dolar znak n?
>> DAVID J. Malan: Da.
Dakle dolar znak nje je prisutan.
I dolar znakovi, što vidjet ćemo, ide
da se popraviti na početak bilo koje varijable u PHP-u.
To je i dobro i bad-- dobro u da je to vrsta očito što je
varijabla, loše u tome što je još jedna stvar za tip.
A tu je još jedna što imamo ne baš
vidi, barem po ovom pravopisu. Da?
>> UČENIK: Readline.
>> DAVID J. Malan: Readline.
Readline nismo vidjeli, samo po sebi, u C, iako postoji nešto
Sličan, ali smo koristiti getstring, i to je njegov kolega.
Dakle, ako idem u to katalog, koji se dogoditi da se,
kao što ću objasniti malo u mom vhost imenik i moj izvor katalog,
i ja ići naprijed i učiniti točkica crta conditions-- whoops-- dot slash
Uvjeti 1, vidjet ćete, opet, Isto issue-- dopuštenje uskraćeno.
>> Pa neka mi povećavanje i napraviti chmod plus x o uvjetima, dot uvjetima Slash.
Htio bih cijeli broj, molim te, 50.
A mogli smo igrati ovo Igra cijeli dan.
To će se ponašati upravo kao što je učinio u tjednu jednom.
>> U redu, tako nije sve što je drugačije, osim Ne samo da je blagi malo sintakse,
ali na vrhu, opet sam imala tu liniju koja
dopustio da stvoriti nešto što Izgleda poput programa C nazivom Pozdrav,
nazivaju uvjeti 1.
Ali to nije 0-a i one Ja sam izvršavanju izravno.
Ona umjesto da je radi toga Tumač čije ime
događa da se identična jezika.
Program se zove PHP, i moj broj ispod linije jedan je prošao u nju.
>> Mi možemo učiniti još prilično jednostavan Primjer podsjeća na nešto
smo napravili prije nekoliko tjedana.
Opet, ovo je vrsta proizvoljna komad koda
koji očito ne ono kad ga pokrenuti?
Što se to događa ispisati, valjda?
>> Dakle, u početku na liniji 16, to je će reći x je sada 2, vjerojatno.
% D je ista kao i za printf $.
Pa onda to rotacije, točka, dot, dot, u skladu 17.
A onda se postroje 18 Pojavljuje pozvati funkciju kubu.
A gdje je Cubed definira?
>> Pa, to izgleda u redu 25, tako da nije sve što je drugačije.
Imam neke komentare gore da, ali za najveći dio,
to je prilično jednostavan portanje ili pretvorbe
iz C programa na PHP verzije.
No, tu su sada par razlike koje možda trebao iskočiti.
Što je još drugačije o tome kako Možda napisati ovaj isti program u C?
>> UČENIK: [nečujan].
>> DAVID J. Malan: Postoji nema prototipa do vrha.
Tako PHP-- i iskreno, Puno moderne languages--
su puno pametnije i korisnije nego C sastavljače da vas
Možete staviti funkciju ovdje, možete staviti funkciju ovdje,
i tumač ide da vam učiniti uslugu čitanja
Cijeli datoteku prije nego što odluči da neke funkcije ne postoji.
Tako lijepo poboljšanja godina kasnije.
No, tu je i nešto inače drugačije ili uopće ne postoji ovdje.
Da?
>> UČENIK: [nečujan].
DAVID J. Malan: Nemamo se proglasiti vrste varijabli,
pa ćemo vidjeti prije dugo da postoje različite vrste u PHP,
ali ne morate ih odrediti, koji je i dobro i loše.
A tu je još jedna stvar koja nedostaje.
>> UČENIK: Nema knjižnice.
>> DAVID J. Malan: Nema knjižnice.
U redu, tako da je lijepo.
Mi smo dobili puno više izvan okvira.
Dakle, tu je zapravo puno više stvari nego što sam mislio bili drugačiji.
Što mislite o načinu na leđima?
Što je to?
Recimo to još jednom?
>> UČENIK: Pointer.
>> DAVID J. Malan: Nema naputke.
Redu, barem u ovom primjeru, br.
To je pošteno.
Dakle, ne postoje smjernice u PHP-u zapravo uopće.
Postoji nešto što se zove reference, ali nećemo potrošiti previše vremena tamo.
A što drugo?
>> UČENIK: Glavni.
DAVID J. Malan: Glavni.
Dakle, to je bio neki problem Mislio sam.
Obavijest nema glavna ulazna točka.
Vi jednostavno početi pisati svoj kod.
A to je zapravo će biti povoljno
kad smo prijelaz trenutak da se zapravo pomoću
taj isti jezik za web-based programiranje, za koje smo
ne žele imati samo jednu ulaznu točku.
Mi možda želite imati hrpu URL-ova, hrpa različitih datoteka
Sve uzimanje unos korisnika i proizvodnju izlaz.
>> No, ovdje je vrlo obeshrabrujuće Primjer koji sam obećao prošli put,
naime, u toj mapi Ovdje, pravopisne pogreške.
Tako je u ovom datoteke Speller, koje smo neće trošiti previše vremena, postoji
suštini porting-- P-O-R-T. To je samo riječ dao kad, recimo,
pretvoriti iz jednog jezika u drugu ručno obično.
>> To je portanje PC verzija Speller iz PSET 5.
A ja u biti pokušao pretvoriti to redak po redak što je više mogu.
Dakle, ako vam se sviđa takve stvari, to zapravo vrijedi u nekom trenutku
ih vuče kako se rame uz strana i vidjeti što je ista
i što je drugačije.
No, oni su prilično prokleto slično.
Ako se sjećate što bukvar čak izgledao,
iako nisi morati promijeniti ovu sliku,
to je prilično slično strukturno sa samo nekoliko
promjena tu i tamo.
>> Dakle, to je samo reći da je to prilično jednostavno pretvoriti Speller
iz C u PHP.
No, u rječniku, postoji nešto još uvjerljiviji.
Dopustite mi ići naprijed i stvoriti moja dictionary.php datoteka.
Tako je malo drugačiji u tome mi ćemo ga zovu .php umjesto .c.
Budući da je ovo PHP file, sam do-- nešto annoyingly-- imaju
pokrenuti datoteku s php tag kao što je to.
I ja ću ići naprijed i definirati nekoliko funkcija.
Funkcija zove ček, što je će uzeti u riječi kao prije.
No, ovaj argument je će imati dolar
potpisati, jer smo, opet, koristeći PHP.
Druga funkcija od dictionary.c je opterećenje
i to je u ime rječniku, tako da ću dobiti tu funkciju proradio.
>> Još jedan u dictionary.c bilo što?
Veličina je bio jedan od najljepših one, na barem ako je zadržao neku varijablu okolo.
tako da veličina samo mora vratiti varijablu.
A tu je iskrcati.
>> Dakle, bilo je to četiri funkcije u problemu postaviti 5
da li je potrebno provesti s nekih struktura podataka ili strukture.
Tako sam obećao da će u PHP, možemo proglasiti
hash stol, na primjer, sve to lakše.
U stvari, ako želim hash tablicu, Samo ću otići kao što je to
a tu je moj hash tablicu.
I to je napomena, obeshrabrujuće, da smo stali na prošli put.
I znate što, ako sam htio varijabla za veličinu, dobro,
ovo nije sve koji se razlikuje od C,
ali ja ću ići naprijed i učiniti.
I primijetiti nikakvu vrstu podataka.
A ja ću se vratiti kasnije Zapravo dodati neke komentare ovdje.
Ali što je s opterećenjem?
>> Ako dolar znak rječnik je ime moje datoteke
a ja zapravo želim učitati riječi u ovoj tablici sada,
Ja zapravo može učiniti nešto prilično jednostavan.
One-- a to je minorly annoying-- u PHP,
morate odrediti unutar od funkcije ako vas
želite pristupiti nekim globalno varijabla koja je definirana vani.
>> No, to nije osobito Zanimljivo upravo sada.
Ono što je još zanimljivije je to za svaku konstrukt koji sam spomenuo prošli put.
I ispada da PHP ima funkciju naziva datoteka čija je svrha u životu
je otvoriti datoteku i pročitati u sve njezine linije u nizu
i predati ih natrag.
>> Koji je reći što mogu učiniti tako rječnika da je sada učinkovito kada sam nazvati datoteku,
ovo će me predati natrag niz riječi iz datoteke.
To nije sve što je dobro.
Još uvijek će biti linija riječi, nešto linearno.
Ali ja mogu ići naprijed i ponoviti preko svake od tih riječi pomoću
da sintakse smo vidjeli ukratko prošli put.
A vi ćete ga vidjeti više u narednom PSET.
>> Ali sada imam petlje Ponavljanje preko svake riječi u rječniku.
I na svakoj iteraciji, sjećam ja sam nazivajući trenutnu riječ "riječ."
I sve to će potrajati do stavi riječi u rječnik je
će biti riječi pogodak "istina".
To je moj umetak funkcija.
To je moja funkcija opterećenja za moju rječniku.
Sada je malo varaju jer, znaš ono, tu je zapravo
backslash nje je na kraju riječi da sam vjerojatno trebala riješiti,
ali to nije problem jer PHP ima funkcija zove nasjeckati što doslovno
kotleti off jedan znak na samom kraju.
Dakle, nema problema.
Mi smo otišli naprijed i zapravo skraćena da bi upravo to.
I sada bi trebao vjerojatno pratiti veličine, tako-a neka barem ne this--
Veličina ++.
Ja mogu učiniti što prije.
A onda je to vjerojatno će raditi sasvim u redu, tako da je povratak istina.
Gotovo.
PSET 5.
>> [Smijeh]
>> DAVID J. Malan: U redu.
Mi ćemo to učiniti opet sa sljedećim PSET, previše.
Pa što je s veličinom?
Pa, to je jedan nadajmo se radi o kao što se i očekuje posljednji put,
iako moram učiniti ova glupa globalna stvar.
To je samo artefakt iz Dizajn jezik-a.
>> Ali ček malo više zanimljiv.
Dakle, ako sam prošao na dolar prijavite riječ, sam prvi put
Želite imati pristup da je globalna varijabla stol.
A sad ako želim provjerite je li riječ postoji,
Ja jednostavno mogu reći, ako je istina da Sljedeće je postavljen u tablici,
onda ići naprijed i povratak istina; drugo, return false.
Gotovo.
Druga polovica PSET 5.
>> U redu, pa opet, ja sam rezanje nekoliko uglova.
U pravednosti, trebao sam vjerojatno provesti još nekoliko sekundi
na ovoj provedbe.
A ja vjerojatno ne bi trebao ismijavati sve sati ste stavili na PSET toliko.
Dakle strtolower je funkcija.
Nešto slično egzistencijalistički u C, barem znakova,
ali PHP je dobio cijeli niz verziju.
>> To će prisiliti sve u mala slova, a neke od vas
Možda učinili canonicalize što što su stavljanjem u svom rječniku.
A sada to možete učiniti u C, previše.
To nema nikakve veze s PHP.
>> Ali svaki put imate Boolean stanje,
kao nešto na liniji 10 postoji, što je samo
će ocijeniti da se istina ili lažna, a ako je vaš drugi očito
se vraća true ili false, što sam mogao jednostavno stvarno ovo seksi
i samo učiniti nešto poput ovoga.
Tako da je moj ček funkcija.
Dobro, ako Boolean vraća true ili false,
neka je samo to vratiti odmah.
>> A tu je još nekoliko ugađanje Mogao sam napraviti tu i tamo.
Load-- prebacivanja, usput, što je učinio.
Ništa raditi tamo.
Budući da sve memorije u PHP i mnogi drugi jezici
je zapravo uspio za vas.
Dakle, budući da je u C, što je što ste naučili bolno,
sve što malloc ili calloc ili realloc, morate se osloboditi.
Sve što fopen, morate fclose, tako da se u konačnici resursi su oslobođeni
te alate kao što su Valgrind ne primijetiti i ne žale,
što je dobra stvar za rad na njima.
>> No, sigurno, mora postojati biti neki ulov, zar ne?
Inače, mi vrsta izgubiti cijela hrpa tjedana.
Tako je bilo koji broj razloga Zato smo nekako iskoristiti ovu putanju,
ali postoji trade-off.
Dobro, ovo je bio tematski.
>> Pa što bi moglo trade-off Ovdje se kreće, s C u PHP?
Osjećaj sve pobijediti do sada, osim malo ružnoće ovdje ili ondje.
Da.
Što je to?
>> UČENIK: [nečujan] memorije.
DAVID J. Malan: Brzina.
U redu.
Pa, moja brzina je vrlo brzo.
Pravo?
No, brzina izvršenja programa?
U redu, tako da je fer točka.
>> Dakle, kao što bi se to dogodilo, ja unaprijed cued se i moje probati rješenje, jedan
Imao sam na velikoj ploči je rješenje probati-based,
i moram da je u ovom direktoriju ovdje.
Tako sam u trenutku, mogu ići naprijed i pokrenuti ovo Biblije kralja Jamesa,
udarajući Enter.
A to je, nadamo se točno Provedba na kraju,
daje mi vremena u ukupno od 0.38 sekundi za to
jedan pomalo proizvoljna primjer.
>> A ako ja sad ići u to drugi terminal prozor
ovdje gdje sam prvi put otvorio gedit, neka da odem u današnjem code-- koji, opet,
je u ovom direktoriju here-- i neka mi ići naprijed i pokrenuti Speller.
Dakle, samo da bude jasno, ovo je PHP verzija.
Ja sam samo pokazuje vrhu tome ovdje.
>> Dakle, ako ja Speller od tilda CS50 PSET 5 tekstovi, kralj James, ući.
To je još uvijek brže od pisanja je u C, ali ukupno vrijeme
je, obavijest, 0.93, dok je moj C-based provedba bila je 0,38.
Tako da je non-trivijalna razlika.
>> A ovo je samo na jednu datoteku.
Ako ste bili pokrenuti dva Programi u odnosu na velikom brodu
i imaju hrpu ulaza testira, to bi sigurno zbrojiti.
A ako smo imali još veće skupove podataka, To je, također, bi zbrojiti sve više.
Tako da, plaćati neku cijenu brzine je doista slučaj.
Što još?
Da?
>> UČENIK: Količina RAM korištenja.
>> DAVID J. Malan: Količina RAM korištenja.
Pa nisam davao jednu sekundu Mislio prilikom pisanja ovog PHP
verzija kao i na koliko memorije Bio sam pomoću.
Ja sam potpuno odgađanja da je PHP Sam i tko je napisao taj program.
A to bi moglo biti u redu, ali ako ja zapravo jako
stalo cijeđenje koliko izvedbu iz mog programa ili iz moje web stranice
ili iz bilo kojeg alata Ja sam zgrada, možda
PHP, doista, nije pravi jezik.
>> A u stvari, to je razlog zašto, za primjer, mnoge web servers--
stvarni programi koji posluživati ​​web content--
nije zapisano u PHP ili Python ili Ruby.
Oni su napisani, kao i sada ćete učiniti s PSEt 6,
u C, tako da možete stisnuti svaki zalogaj izvedbe iz nje
i stvarno vježba Kontrola finozrnati nad onim što je
događa ispod napa, a ne samo uzeti
zdravo za gotovo neke veće Razina struktura podataka.
>> Razmislite, nakon svega, tko u PHP provedena
da je pojam hash table-- to je zapravo više
ispravno zove asocijativni array-- on ili ona imati bilo kakvu ideju
inputa ćete biti stavljanje u strukturi?
Dakle očito nije, zar ne?
To je generički alat u priručniku koji je
uvjetom da svatko tko želi ga koristiti, i tako sigurno da
Ne može biti optimiziran u konačnici za točno ono što želite učiniti.
>> Tako trgovina-offs-- vrijeme razvoja moglo razlikuju, nastup možda razlikuju,
Složenost ili memorije mogli razlikovati.
I tako što ćete sve je da postoji
će biti drugačije Alati za trgovinu.
A u stvari za super većinu ljudi završne projekte u ovoj klasi,
Vjerovali ili ne, C ne ide da bude pravo jezik za korištenje.
>> A u stvari, jedna od takeaways konačnici za bilo koju klasu kao što je ovaj
je da se razmišljate o tome, dobro, što bi trebalo skinuti
polica kada želite riješiti neki problem.
I doista, mi ćemo prijeći taj most čak i više kao što smo gledati na više jezika
čak i izvan danas.
>> Tako ćemo prijelaz sada možda i više upoznat kontekst
za korištenje jezika poput PHP.
To je nešto uobičajeno za korištenje na naredbenog retka, pisanje skripti
kao što sam učinio, ali to je mnogo, mnogo češći.
Te je namijenjena da se koristi u oblik datoteke koje obično završavaju
U .php-- ali to je Ne prerequisite--
da sami generiraju web sadržaja.
>> Pa neka mi ići naprijed i otvoriti neke primjeri sam pripremiti unaprijed.
I to su zapravo svojevrsni istina priče u toj jednoj od prvih stvari
Ja sam ikada učinio nakon završetka CS50 i možda, mislim,
CS51 godina je moj cimer i ja pomagali
pokrenuti brucoš intramuralnih sportski program, koji je, u to vrijeme,
bio brucoš registracije za razne sportske ispunjavanjem komad papira,
kako su je zvali, hodajući preko dvorišta do Wigglessworthovoj,
i pada u nekim Pad Proctor vrata.
A onda on ili ona će proći kroz ih, a onda zapravo nam ručno e-mail
da smo bili registrirani za neki sport.
>> Pa jasno, prilika za poboljšanje.
Ovih dana, možda ćete se obratiti samo Google obrasci, ali natrag u dan,
imali smo zapravo do for-- to nije ni to dugo ago-- doći
za programiranje jezik koji nije PHP.
U to vrijeme, bilo je nešto što se zove Perl,
koji je otišao iz Voguea tada.
No, ideja je ista.
>> A ja u biti sjeo pokušati da luka ide Perl inačice PHP,
ali u punom disclaimer, nije dao bilo kakvu pomisao na estetici samo još.
Dakle, ovdje je web stranica.
Ova je datoteka.
Ako sam povećavanje, njegova očito zove froshim0.php
Samo zato što je naš prvi Primjer u ovoj seriji.
I primijetiti da je ono što se pojavljuje biti vrlo ružno HTML obliku,
ali oblik je zanimljiva jer omogućuje
mi osigurati unos korisnika u pregledniku.
>> Sad zadnji put kad smo imali oblik, kako bi koga smo predati našu upita parametar,
red parametar kako se zvao?
Dakle Googleu, zar ne?
Mi smo potpuno punted na ideji radiš ništa s tim ulaz.
>> Ali danas, možemo početi proizvoditi izlaz.
I ponašanje idem vidjeti Ovdje početku je prilično trivijalna.
David ću prekrižite spol Ovdje, kažu Matthews ovdje.
Neću biti kapetan.
Idem kliknite registar.
I primijetiti da URL-ima promijenila se registrirati-0.php,
a onda je ovo ružno tekst ovdje.
Dao sam ne misli da oblikovanje toga.
>> No, ono što je zanimljivo je da su tri Vrijednosti su očito prošla u.
To je PHP je vrsta ekvivalent printf--
vidjet ćemo što to zapravo zove u bit-- koji samo ispisuje
ono što ste prošli u nju.
Dakle, to sugerira da je tom obliku imala najmanje tri polja na njega,
a ti me vidjeli ih upisati.
Jedan je bio moje ime, jedan je bio spol, jedan je bio dom.
A kapetan nije ni dobili poslao u poslužitelja jer nisam to provjeriti.
>> Dakle, ovo je za reći očito, kad pošaljete stvari na webu,
Ne samo da URL ponekad change-- ponekad ne.
U stvari, naziv datoteke promijenio, ali ono što je odsutna iz URL-a
da nismo vidjeli posljednji put s Googleom.
Da?
>> UČENIK: Ne niza upita
>> DAVID J. Malan: Nema niza upita.
Nema upitnika nešto.
Nema upitnik q jednako mačke, kao što smo prošli put.
A tu je svakako nema Naziv upitnik jednak
David ili spavaonica jednako Matthews, pa gdje to sve ide?
>> Pa, neka mi se vratiti na gedit ovdje i otvoriti prvi od tih datoteka
u mom vhost, lokalni domaćin, javni katalog ovdje i otići u froshim0.
Tako ispada da je gotovo sve ove stranice je samo HTML.
A to bi moglo biti upoznati s tobom, ali to će uskoro biti više s PSET 6
i PSET 7 i 8 PSET.
Ali to je samo HTML stranice.
>> A zanimljiva stvar Čini se da je ovdje.
Oblik oznake čije djelovanje atribut ima vrijednost registra 0.
Zato kad sam podnijeti to, to ide do te datoteke.
Ali metoda je različita today-- Post.
Tako ispada tu je najmanje dvije metode na webu koriste
za slanje informacija iz preglednika na poslužitelju.
Nabavite ga stavlja u URL.
Post stavlja ga negdje drugdje.
A kada i zašto bi vas zapravo žele web stranicu
koristiti posta onda umjesto od dobiti, samo intuitivno?
Svaka web stranica.
Kakav podataka treba biti donesen samo by zaključak sada preko vratnice razliku
da se, ako smo vidjeli dva razlike?
UČENIK: [nečujan] osigurati.
DAVID J. Malan: Ako želite nešto biti siguran.
Dakle, možda ćete upisati lozinku na web stranici, kreditne kartice
na web stranici bi vrsta tih suboptimalne
Ako preglednik staviti Vrijednost unutar URL-a.
Zašto?
Možete ga vidjeti, koji ne Čini se da takva velika stvar,
ali izgledi su prilično često hoda daleko od vašeg računala ili korištenja računala
laboratorijima, i tako je netko drugo ili čak cimer
lako mogao prošetati i vidjeti da privatne podatke.
Kada pošaljete e-mail putem weba, vjerojatno
Ne želim da se podaci kraj u URL-u, kao dobro.
I tako je bilo koji broj razloga Zato smo možda želite staviti ga ovdje.
I photos-- pravu, ja ne mogu ni sasvim zamisliti kako bi se grafički,
kao JPEG, i staviti ga u URL.
Ti bi mogao to učiniti.
Postoji načini ga kodiraju, ali to je samo ne jednostavan kao što je to.
>> Dakle, registrirajte 0 je zapravo Vrlo underwhelming.
Sve to govori doslovno je to.
Ona ispisuje unutar neke HTML oznake sljedeće.
Imam PHP oznaku ovdje smješteno unutar unaprijed oznake.
"Pre" samo znači unaprijed oblikovanog teksta, mono-razmaknute, poput pisaćeg stroja.
>> Printr je ispis rekurzivna funkcija.
A tu je i ovo zanimljiva stvar ovdje.
A mi ćemo se vratiti na to jer ima druge,
ali dolar znak podcrtavanja Post Čini se da je
varijabla u PHP-u u kojem ništa šaljete iz preglednika na poslužitelj
dobiva pohranjena za vas.
A vidjet ćemo kako doći na ta informacija prije dugo.
>> Ali prvo, idemo natrag malo drugačiji primjer.
Idete u register-- ili a, froshims1.php,
koji izgleda malo drukčije.
Uzeo sam malo više napor s oblikovanjem,
iako je još uvijek prilično ružno.
Ali ja ću ići naprijed i upisati "Davida" sada.
Muški.
Mi ćemo provjeriti "kapetana" ovaj put.
Mi ćemo učiniti Matthews.
I registrirajte.
>> I ovaj put, kaže, hm, zapravo i nije.
U redu, tako da ono što je registrirati 1?
Pusti me u otvorenom registar 1 and-- hm.
U redu, tako da je ovo Zanimljivo, i to
je stepenica sada prema više zanimljivih programa.
>> Obavijest vrhu ove datoteke ima PHP oznaka, kao i neki komentari.
A to su, za sada, distrakcija pa neka je samo dobiti osloboditi od tih komentara
baš kao i oni u C. I tvrdim s ovim komad koda s komentarom
da je to kod potvrđivanju podnesak.
>> Pa, ispada da varijable kao što su dolar znak
naglašavaju posta su zove super globals.
Oni su poput njih posebne globalne varijable
da su samo omnibus-danas dostupni unutar vašeg programa.
A možete koristiti kvadrat nosača oznake index na njih ne koristi brojeve
kao što su 0, 1, 2, 3, ali stvarne riječi.
>> Tako možete misliti dolar znak naglašavaju dužnost kao svojevrstan hash tablicu
da bi mogao proći ključ u, pregledna riječ-između uglatim zagradama,
i to će vam vratiti Vrijednost koju korisnik zapravo pruža.
PHP ima funkciju zove prazna koji samo
kaže da ili ne, to varijabla je prazna ili ne.
Imamo ove dvostruke barovi, što samo znači ili, kao u C.
>> Tako je na snazi, ova linija 4 je samo govoreći, ako korisnik nije dao ime
ili nije dao spol ili nije dati spavaonica, ići naprijed i preusmjeriti ga
ili joj preko ove linije ovdje.
Dakle, ovo je malo zagonetan, ali to samo znači doslovno
vratite se na ovom mjestu, pa punts korisnika
natrag gdje god on ili ona dolazi.
Ali to je malo neelegantan da sam teško ga kodirani.
>> Ali što ako je to uvjet ako se ne ocjenjuje se istina?
Što ako korisnik nije mi dati mu ili njezino ime i spavaonica i spol?
Da, ako uvjet nije će ocijeniti da istina,
tako da ne udariti izlaz na liniji 7.
Dakle, što se događa?
A to je ono što je zanimljivo o PHP.
>> Možete ispustiti ui iz PHP način, da se tako izrazim.
Ako želite neki broj izvršiti, možete otvoriti i zatvoriti PHP oznaku
i stavio kod tamo kao što sam učinio ovdje.
Čim zatvorite PHP oznaka, poslužitelj
se samo ide ispljunuti što god tamo stavili.
I doista, to je bio dio originalni dizajn PHP,
u dobru iu zlu, bio je to commingling koda i markup
jezik.
I vidjet ćemo da je to vrlo Brzo devolves u nered.
I tako ćemo učiniti bolje od to u konačnici, ali jednostavno
primijetiti lakoća s kojom ja sam zapravo u mogućnosti izvršiti neke logike.
>> Ali ipak malo underwhelming.
Idemo otvoriti verziju dva Frosh IM, koji
očito podnosi register2.php.
Dakle, ova datoteka se zapravo događa da izgledaju gotovo isto.
Ja ću ići na Frosh IM 2.
No, u Frosh IM 2, da vidimo što će se dogoditi.
>> Davide, kliknite na gumb, kao što je to se zove; Matthews, nema kapetana.
Registrirajte se.
Prijavljeni ste.
Ne baš.
Ma čekaj, samo smo učinili da je, primjerice, nije li?
U redu, stand by.
Mi ćemo učiniti sve tri.
Očito nešto je o dogoditi s Gmailom.
Mi ćemo doći.
>> Dakle Frosh IM 3 izgleda ovako.
Ne razlikuju.
Ali kad sam to David, muškarac, Matthews, te Registrirajte se, ovu treću i konačnu verziju
potraživanja, jednostavno vam, registrirani su stvarno.
To je vrsta nebitna.
Ali ja tvrdim s ovim Treća i konačna verzija
Sada sam ponovno točno ono što je moj cimer i ja sagradio za Frosh IM
prije programske godina.
I to je bio jednostavan.
Nije bilo baze podataka, Nema Excel tablicu.
Ali što je još važnije, nema više papira
jer ono što smo učinili s ovim programom bio je zapravo e-mail Proctor, koji je
je prethodno primio ove stvari putem obrazaca.
>> A očito smo programirani ovo takav način da kad netko registrira,
John Harvard je e-mail račun proctor-- ili sam u ovom slučaju,
Ivan Harvard-- sa sljedećim text-- "Ta osoba samo registrirani."
Ime je David, kapetan je prazno; spol, muški; i spavaonica, Matthews.
>> Dakle, ono što se tamo dogodilo?
Pa, datoteke u pitanje je očito register3.php.
I ako sam otvoriti ovaj, vidjet ćete i moć koda kao što je ovaj
i, iskreno, nesigurnost sustava kao što su e-mail.
Upravo sam se pretvarao da učinkovito John Harvard na sljedeći način.
>> Imam otvoren php tag do vrha, koji je Samo kaže da ovdje dolazi neki PHP kod.
Ovdje dolje, ispada vani su knjižnice u PHP.
Vi jednostavno ne trebaju uključuju zaglavlje datoteke kao mnogo.
Možete dobiti više s sudopera, da se tako izrazim.
>> No, ovaj put u redu 4, radim žele poseban knjižnica zove
PHP-om, što je nešto što vas možete instalirati besplatno u mnogim sustavima.
Ovdje dolje sam potvrđivanju podnesak jednostavno
provjeravajući je li korisnik dobije mi ime, spol i spavaonica.
I ako je tako, samo naprijed i instancu cirkularnu.
>> Možete misliti na to kao linija koda koji samo dodjeljuje.
To je poput malloc, ali to je malo više seksi
u koje ste spomenuli ne samo malloc a neki generički broj.
Kažeš, dajte mi jedan od njih, dajte mi novu jedan od njih.
>> A ako ste programirati Java ili C ++, ili drugih jezika,
možda ste vidjeli.
No, kratko je to, ako je nepoznata, ova linija
stavlja na dolar znak mail Poseban struct zove
Objekt koji je izgrađen-u e funkcionalnost.
A u stvari, primjećuju i slično sintakse.
>> Ovo nije pokazivač, sam po sebi.
PHP samo koristi istu sintaksu.
Ova linija je rekao uporabu SMTP-- Simple Mail Transfer
Protokol, što je samo protokol koji se koristi za slanje e-pošte.
To je navodeći uporabu Harvard je SMTP poslužitelj, koji se
je negdje ovdje na kampusu.
>> To govori ono TCP broj porta razgovarati,
a ja samo shvatio da je od strane googling ili molba za pomoć stol.
A onda, jer Harvarda koristi neke sigurnosni sustav na mail server--
barem za šifriranje promet između tebe i njega,
iako svatko može poslati it-- Idem uključili TLS protokola
za vođenje to sigurno.
>> No, to je mjesto gdje se stvari dobili pomalo zastrašujuće.
Ja mogu samo arbitrarno kažu da sam jharvard,
a ja mogu samo arbitrarno Ovdje sam e-mail.
I onda ja mogu navesti Predmet s ovom linijom ovdje.
>> I to samo izgleda ružno, ali to je samo hrpa ulančavanje.
Ispada PHP ima super korisnu simbol, kao i neke jezike, operater točka,
koja je upravo doslovno concatenates Niz nakon niza nakon niza,
a vi ne morate malloc ili slici iz ukupne duljine niza.
Vi samo to učiniti.
I doista, jer sam nadovezivanjem U sve te stvari s tim točkicama,
to je razlog zašto sam e-mail Poslali izgledala kao što je učinio.
>> A onda na kraju ovdje, šaljem mail.
Dakle, ako je to netočno, Samo ću umrijeti,
što je funkcija koja samo ispisuje na zaslonu neke poruke o pogrešci.
Međutim, to je, u stvari, nazivajući slanja funkciju.
Inače, ako se sve to ne uspije, to me preusmjerava ovamo.
>> A zašto sam vidjeti da Ja sam registriran stvarno?
Pa, to se dogodilo upravo ovdje.
Tako sam donijeti ovo gore za nekoliko razloga.
>> Jedan od njih, to je točno kako, ako ste izgraditi neke web stranice za konačni projekt
ili stvarnom svijetu, ovo je kako ste poslati e-mail podsjetnike
do vaših kupaca ili pretplatnika.
Ovaj je kako možete poslati lozinku podsjetnike.
To je, kako se šalju poruke ljudima da imaju novi Facebook
Poruka na čekanju ili nešto slično.
>> No, to također govori Činjenica da se to moglo
su vrlo dobro iz Davin ili bilo tko drugi.
A ja kažem ovo vrsta s osmijehom jer sam
sasvim siguran što se događa kroz nekoliko svojih umova u ovom trenutku.
Ali ovo je jedna od onih učinite I. kažu, ne kao ja kakve stvari,
jer je trivijalan krivotvoriti e-pošte kao što je ovaj.
Ali, kao što ste možda vidjeli ili pročitati u Crimson,
u zadnje vrijeme to je također prilično trivijalno za ljude
ih pratiti natrag do neke podrijetla.
I pitajte me neko vrijeme, možda na CS50 ručak, kako sam prvi put
Upoznali vrlo blisko gotovo u ur odbora mnogo godina
Prije kad sam otkrila kako je internet radio.
Tako je u bilo nešto case-- nakon što je učinio ur odbora.
>> Dakle, u svakom slučaju, je cijela hrpa super globals,
nakon što se zove ovdje, od kojih je jedan smo saw-- dolar znak donju posta.
Tu je kolega zove get, što je gdje stvari iz URL-a
završi ide.
I tu je cijela hrpa drugih, too-- sjednica i poslužitelj i cookie.
Mi ćemo se vratiti Cookie neki drugi put,
no sjednica je vrsta cool jer upravo now-- do now--
sve što smo učinili s web-preglednik je vrsta bez državljanstva, da se tako izrazim.
Mogu kliknuti okolo, pristup datoteke na poslužitelj, nešto
se događa na ekranu, ali onda veza zatvara.
Internet Explorer ili Ikona Firefox prestane proklizavati
a vi samo vidjeti što koja web-stranica sadrži.
>> Dakle, HTTP je bez državljanstva u tome nakon što čini vezu,
dobiva neke podatke, to je to.
Nema više veze, za razliku od Skype, za razliku od FaceTime, za razliku od Gchat, koji
održava konstantna Veza s poslužiteljem.
Web je iz temelja isključen, iako ćemo
vidi prije dugo koliko možemo simulirati stvari
kao što su Facebook chat i Gchat, koji održavaju illusion--
ili stvarno ne održavaju stalna veza pomoću
više moderna tehnologija.
>> Ali ako idem na, recimo, counter.php, ovo je još jedan jednostavan primjer,
kao što ćemo vidjeti, koji je trenutno misli Posjetio sam web nula vremena.
Ali ako ja jednostavno učitajte stranicu, to nekako zna da sam bio ovdje prije.
Ako sam ponovo učitati, to zna da sam bio ovdje prije.
I opet i opet i opet i opet.
>> Dakle, postoji neki plus-plussing događa, ali obavijest
mala stvar vrti sve tako Kratko se vrhu, a zatim odvaja,
pa to nije kao što sam konstantno Priključak na moj aparat.
Pa, ako idem u counter.php, primijetiti kako je jednostavno.
Prvi put sam nazvati ovaj posebni funkcija koja uskoro ćete
počnete uzimati zdravo za gotovo zove sjednici početak.
Početak sjednice.
>> A sjednici odsada je samo će biti kanta, poput kupovine
košarica u kojoj možete staviti vrijednosti i vrsta povjerenje kao programer
da oni će biti ovdje kad koje korisnik dolazi back-- sekundu
poslije, sat kasnije, čak i godinu dana kasnije, tako dugo dok on ili ona ne nestane
njihovi kolačiće, kao što smo na kraju ćemo vidjeti.
A sada sam samo ako je stanje ovdje.
Dakle, ako u sljedećem ključu, zove brojač, postavljena unutar
ove super global-- ovo mljeveno meso stol, ako will-- zove sjednicu,
onda ići naprijed i zgrabite vrijednost od session-- think
to kao kupovinu cart-- i pohraniti ga
u privremenu varijablu pod nazivom brojač.
>> Inače, ako je vrijednost brojača je nije postavljen u tzv košarici,
samo ga inicijalizirati 0.
Na kraju, ovdje dolje, otići i vratiti u kolica ili na sjednici
vrijednost brojača +1.
Tako ispada da je ova Poseban spremnik here--
koja, opet, je jedan od njih povezan polja, niz koje možete indeksa
u riječi umjesto numbers-- nastave i nakon korisnik ide dalje.
Opet ću se vratiti na stranicu sada.
Prošlo je minutu ili tako.
Ali pamti da sam bio ovdje 19 puta prije.
Ovo je moj 20 posjeta.
>> I tako to će biti ključ provedbi bilo koju web stranicu koja pamti
da ste prijavljeni, da ste stavili nešto doslovni u vašoj košarici
kupiti ili da imate neke Broj poruka na čekanju.
Bilo kada želite zapamtiti podatke,
vidjet ćemo da je PHP, kao što su nekoliko drugih jezika,
pruža nam se s ovom iluzijom države iako, kao što ćete vidjeti u PSET 6,
što radite HTTP zahtjeve od klijenta do poslužitelja, to je to.
Nakon što ste dobili natrag da odgovor, ništa više
vraćaju s poslužitelja po defaultu.
No, vidjet ćemo kako raditi oko toga.
>> Pa sad, pokušajmo očistiti ovo gore malo.
Vidjeli smo nekoliko različiti primjeri tamo.
Oh, i kao po strani, one koji poznaju ili upoznati,
razlog da Frosh IM primjer otišao
od izgleda stvarno ružno slightly-- dobro,
još ugly-- blago manje ružna iako još uvijek ružna
je, jer ako gledamo na izvorni kod ovdje
ispada da sam to na samom vrhu datoteke.
>> Ispada da je bootstrap je jedan od mnogih slobodno dostupni knjižnice vani
koje postoje ne za programskim jezicima Uvijek, ali za CSS ili JavaScript
ili HTML ili bilo koji broj jezika.
>> I ti ljudi here-- izvorno izašao
od Twitter-- samo cijela hrpa stilova.
To je masivni datoteka Ovdje je netko napisao,
ili je netko napisao, tijekom vremena koje određuje boje i oblikovanje
i sitnica, tako da ja mogu vrsta posuditi svoju sintaksu
i ne moraju shvatiti kako nokautirati moju formu.
To također minified tako da se računalo može
razumijem to, ali ne nužno čovjek.
Dakle, to je samo zato stilizacija tamo promijenilo.
>> Ali neka je sada bolje u pogledu dizajna,
jer ako ostanemo dolje ova cesta predugo,
naš broj će se dobili neuredan i Messier.
Tako ćemo se usredotočiti na ovim primjerima ovdje.
Posljednji za danas.
>> Dakle, ovdje je super jednostavna Verzija 1.0 od CS50 web stranici.
To ima samo veze s predavanja i nastavni plan i program,
i to pomoću taj neuređen popis tag-- UL oznaku da mi se prošli put.
A ako u stvari, ako sam otvaraju View Page Source
vidjet ćete da je to stvarno, stvarno jednostavan HTML.
A u stvari, iako je to PHP datoteku ispod haube,
to je još uvijek samo pljuvanje se samo HTML za sada.
>> Dakle, ako ja kliknite na predavanja, vidimo se to dogoditi.
A ako ja kliknite na tjedan nula, vidimo to.
A ako ja kliknite na Srijeda, vidimo to.
A to je očito bio PDF od slajdova iz tog dana.
Sve što sam učinio je veza s sidro tag na ovaj URL ovdje.
>> Dakle, to je samo reći da je ovo lijepa jednostavna verzija CS50 web stranici.
Da vidimo kako se to provodi.
Ako odem u mvc0 imenik, vidjet ćemo nekoliko datoteka.
Jedan od njih je PROČITAJME, pa ako neke je to prebrzo,
možete samo guranje oko više ležerno kasnije.
I obavijest ovdje je index.php datoteke.
Ispada da ako vi sami, ljudski,
Ne odrediti konačni ime u URL, web poslužitelj obično
zaključuje neki zadani naziv za vas.
Indeks dot nešto je uglavnom zadana.
>> Pa to je zato maloprije kad sam posjetio ovaj URL ovdje,
nema naziv datoteke, nema datoteka produžetak, nema rok u URL.
To samo znala nekako magično tražiti index.php.
To je samo konvencija.
Može se zvati ništa.
>> Dakle, ako ja sada ići u index.php, vidjet ćete
da, indeed-- neka je dobili osloboditi od komentara
ovdje, jer tamo je stvarno ništa zanimljivo it--
to je samo teško kodirana HTML.
Dakle, to je u skladu, ipak, s mojim zahtjevom
da možete izmiješati HTML i PHP.
Nema stvarne programiranje logika ovdje.
>> I ostale datoteke su prilično koliko jednako nezanimljiv.
To je samo teško-kodirani tjedna jedan Ovdje u tjedan jedan m i tjednu jednom w,
za ponedjeljak i srijedu.
A onda, ako sam otvoriti tjedan nula, primijetiti da je gotovo identični.
>> I to je vrsta ključni takeaway.
Obavijest koliko suvišno je to.
Ove datoteke jedva promijeniti, a ipak sam izvukao jednu od tih copy / paste radnih mjesta
gdje sam uzeo jednu file-- valjda U tjednu zero-- ga kopirati
kada je jedan tjedan došao oko, i praćka nekoliko vrijednosti.
Vjerojatno smo trebali biti u mogućnosti to učiniti bolje od ovoga.
>> Dakle, idemo natrag do MVC i otići u jednu verziju.
I primijetiti Imam nekoliko slika, jer ono što
bio je zajednički svim tim datotekama samo Trenutak ago-- ako idem natrag u verziji 0,
Idemo natrag u indeks, i samo postulate--
Jednom sam se osloboditi od comments-- što je dio ove stranice
je vjerojatno u svakom od mojih datoteka?
Samo ga zovu.
Koji linije umnožavati Vjerojatno preko svih tih stranica?
Da?
>> UČENIK: [nečujan].
>> DAVID J. Malan: 1 do 9.
Da, apsolutno.
1 do 9, osim možda 8 mijenja malo jer CS50
postaje predavanja ili Tjedan nula ili nešto.
No, gotovo identični.
Dakle, sve ove stvari je samo vrsta kopirati i zalijepiti.
A tu je par druge linije se mogu sjetiti
to su vjerojatno jednaki preko svih datoteka.
>> UČENIK: 12 i 13.
DAVID J. Malan: Da.
Naravno, 12, 13, i 14, vjerojatno, Upravo zbog toga je zanimljivih stvari
se događa na linijama 11 i 10, tako da će to činiti.
Pa pogledajmo verzija 1, koja nastoji poboljšati na to.
U verziji 1. ovoga MVC example-- mi ćemo objasniti što znači MVC u moment--
ako idem u indeksu, je vrsta izgleda malo zbunjujuće sada.
Nije to baš tako jednostavno kao i prije.
>> Ali jednom kada počnete čitati pažljivo, to je
prilično jednostavan što radi.
Navodno se postroje 1 i Linija 8 zamijenili
sve stvari koje ste upravo identified-- iako je samo za dobru mjeru,
Ostavio sam ULS postoji samo u slučaju neke dana nije imala popis stvari.
I tako je potrebna je vrsta kao što funta uključiti u C. primjeraka i paste
sadržaj učinkovito upravo ovdje u ovu datoteku.
>> Tako je u header.php, kao i vi Možda zaključiti iz naziva,
će biti u zaglavlju stranice.
To je vrsta siročad ovdje.
To ima samo vrh na njega, ali nema više sadržaja u nastavku.
>> A ako gledam podnožje međuvremenu, koji je bio drugi datoteku mentioned--
ovo je čak i manje zanimljiva, ali opet, to je uobičajeno za sve.
Dakle, ovo je podnožje.
To je zaglavlje.
To je datoteka koja je mijenjaju, pa zašto ne
pokušati faktor iz zajedništvo s ove dvije linije ovdje?
>> Ali možemo očistiti ovo se malo dalje.
Ja ću ići naprijed i otvaraju verziju u kojoj dva
vidjet ćemo da postoji nova datoteka, helpers.php.
Vidjet ćemo što je to u ovom trenutku.
Idemo na indeks, kao što je polazna točka kao i prije.
>> I sada primijetiti sam zahtijevaju helpers.php, ne zaglavlje ili podnožje.
Ali pomagači je vrsta sviđa helpers.c i helpers.h iz PSET 2
ili PSET 3 davno kada zapravo ni tražiti i naći tu PSET,
i imali ste sve kodu za sortiranje i traži u zasebnu datoteku.
To je ono što se ovdje događa.
>> A sada linije 3 izgleda malo drukčije.
I to je samo jedan redak.
Da bi se to još više Jasno, sam mogao samo
Ne da je to stilski dosljedna uz sve ostalo što smo učinili.
Ali to zapravo nije mijenja funkcionalnost.
To je samo jedna linija koda stvarne.
>> Navodno, postoji funkcija negdje zove uzvratiti udarac glavom
i to je mjesto gdje se stvari dobiti prilično moćan.
Obavijest da je unutar svojih zagrada je ono što drugi dio sintakse?
To je vjerojatno malo teško je reći, ali primijetiti there's-- ću staviti neke bijele
Prostor.
Postoji četvornih zagrade.
>> I četvornih nosači smo vidjeli malo prije U kontekstu asocijativnim polja,
koje su, opet, kao što je hash tablice.
A ako mislite sada C, Redoslijed argumenata u funkciji
mora uvijek biti isti.
Morate zapamtiti što se naručiti is-- X, Y, Z ili Z, Y, x--
i morate ih uvijek pružiti u istom redoslijedu ili pogledati ih
Ako ste zaboravili.
>> No, čini se da je pametan način donošenja proizvoljnu vrijednost ključa
para pri čemu naslov je ime je argument u ovom slučaju
i CS50 je njegova vrijednost.
A činjenica da imam ovi četvornih nosači
Ovdje znači da sam mogao Također dolazi u nečemu
kao i tjedan je 1 ili 0 ili 2 ili 3.
Tako smo parametrirati ova funkcija tako
da to može potrajati i više ulaza, ali za sada je to samo jedan.
>> Ako ja sada ići u helpers.php, primijetiti ono što radi.
To je malo novih funkcionalnosti,
ali za sada samo uzeti na vjeri da je to
sintaksa s kojom definirati ulogu u PHP.
Vi doslovno kažu funkciju.
Ne odrediti povratak tipa, te da je u skladu
s promjenjiva detalj ranije gdje se zapravo ne snažno tipa.
>> To samo specificira da, po defaultu, ova
Potrebno je asocijativni Niz kao argument.
I znate što?
Ako korisnik ne prođe jedan u, pretpostavljamo zadanu vrijednost.
>> To je značajka koja C nema za nas, što je lijepo, jer sada
podataka, čak i ako vas ne daj mu ništa,
će biti Niz ali prazna jedan.
I kao stranu, ekstrakta Upravo radi nešto funky
gdje to traje sve tipke iz toga asocijativni niz, sve stvari
možete staviti u uglatim zagradama, i stvara varijable iz njih
kako bismo u konačnici može imati pristup da ih u footet.php i header.php.
To je nešto apstraktno, pa neka mi isticati.
>> U index.php, primijetiti da sam prolazi u ključnom vrijednosti par naslova
u vrijednosti od CS50.
Ako sada pogledate helpers.php, primijetiti da RenderHeader
je vađenje da su podaci koje sam prolazila u, a zatim zahtijevaju header.php.
Ono što sam učinio je vrsta siromah-a Provedba sada od sljedećeg.
>> Ako sam otvoriti header.php, Obavijest da sam više ne tvrdi
kodirana riječ CS50 u ovom zaglavlju datoteke.
Ja sam stavio ovo doduše, kruto nazivom funkcija, HTML posebne znakova,
tamo.
Ali primijetiti ono što sam učinio.
Imam otvoren HTML.
I onda imamo otvorenu glavu i otvoreno naslov.
>> A onda unutar naslov je otvoren i bliski oznake, imam malo PHP koda.
I to je lijepo, ali sintakse, što samo znači odjek van.
To doslovno znači this-- jeka following--
ali to je više seksi pisati.
Echo iz naslova koji je donesen u.
>> Ali što mislite HTML Posebna char je sve o,
pogotovo ako imate neki od njih prije HTML iskustva?
Koji znakovi mogu biti opasno proći na stranicu
gdje ste dinamički generira Web stranica s kodom ovako?
Pusti me na ovu sliku, verzija dva, i vidjeti ako ja ne mogu izazvati ovo.
>> Verzija dva je to.
I primijetiti sve je u redu, radi dobro.
Ali pretpostavljam da idem u index.php i Ja precizirao da naslov moju stranicu
Nije CS50.
To je uzbuna otvorena zagrada skripta Pozdrav svijetu, u neposrednoj blizini jednog citat,
u blizini zagrada, točka, otvorena zagrada, Slash skripte.
>> Skripta, kao što ćemo na kraju vidjeti, je oznaka
koje možete koristiti da koristite drugoga programski jezik zove
JavaScript unutar web stranice.
A sada primjetiti logiku ovdje.
Ovdje je ključ zove naslov.
Ovdje je to luda dugo vrijednost sada.
>> Ali ako idem na pomagače page- odnosno, stranica zaglavlje,
Zovem ovu funkciju na taj naslov prvog.
Dakle, ako ja sada ponovno ovu stranicu, ja ovo vidjeti, što izgleda smiješno,
ali to je sigurno.
To samo izgleda glupo.
>> No, pretpostavimo, umjesto Zaboravio sam ovo.
I zapamti moje riječi, broj različit od nule od vas će se zaboraviti da to učinite
a vi ćete dobiti neki marljivi Učenik ili prijatelj dolazi
Vama na CS50 sajmu ili anonimno noću poking okolo na svoju web stranicu
i bitno ubrizgavanje kod Bez znanja vas na svoje stranice
nekako.
>> Jer ako ja jednostavno pljunuti kako naslov ovdje i naslov
there-- dobro, ako je naslov doslovno izgleda ovako i PHP
kao jezik koji se može pljuvati iz drugog jezika teksta,
ovo je doslovno ide zamijeniti tu oznaku s,
Naravno, ono što sam stavio na drugom mjestu.
>> Dakle, ako ja sad ići tamo i ponovno nakon poništiti one sigurnosne mehanizme,
Sada moram pozdraviti ovdje svijet.
Sada to nije sve što je velika nositi, ali ti bi mogao učiniti nešto
malo više zlonamjerni Ovdje, kao što postoji
Drugi tags-- kao što ćemo vidjeti nakon što trošimo više vremena u JavaScript-- kao mjestu
dot href dobiva, citat, citat, HTTP business.com, ali suprotno od toga
od neki dan.
A sada možete izazvati web Stranica je zapravo ići odmah
na ovoj web stranici ovdje.
>> I zapravo, ne želim čak i ići na business.com
jer ne želim da znaju što je to.
No, to je, također, će izazvati kod se ubrizgava stranicu.
Dakle, to je samo reći da iako uvodimo super rano na neke
tih složenije strukture, to je sve prema kraju, pazeći
da je vaš broj nije ranjivi.
>> Tako je sada treća verzija ovdje.
To je sve malo ljubitelj.
Nisam zapravo like-- analni strana mene
bio uzimajući malo iznerviran Činjenica da sam funkcija zove
RenderHeader i RenderFooter koji su gotovo identični.
Dakle, to palo na pamet, zašto ne Ja parametriranje ove funkcije
u samo jednom zove žbuke, su to uzeti drugi argument
kao ime šablone, konačni da render-- bilo zaglavlje ili podnožje?
A onda po želji, ako želim proći u nekim ključnim parovima vrijednosti
kao što sam učiniti za naslov za header, ali ne i za podnožja,
Mogao bih to učiniti.
>> I tako sada, ako idem u helpers.php, to je malo složeniji.
A ja ću mahati ruke na pojedinosti, ali to je samo jedna funkcija.
Dakle, to je korak ka boljem dizajnu.
>> Možemo uzeti taj jedan korak dalje.
Ako odem u svoju četvrtinu verzija toga, primijetiti sada
da radim nešto čak i više vrsta zagonetan.
I znam da je ovo Puno apsorbirati odjednom,
ali mi smo samo vrsta čišćenja stvari.
Sada sam stavljajući svoje pomagače datoteku u mapu pod nazivom
includes-- samo proizvoljna imenovati gdje želim staviti stvari
da želim include-- a zatim Ostatak je to isto.
>> Ali ako ja sada gledati u gedit, Obavijest da je sam stečen osloboditi
od svih tih drugih datoteka i imam ih preselili, primjerice, u ovdje.
A onda je u predložaka, Imam ovo ovdje, previše.
I tako je to sve sada prema koraku korištenja puno bolji dizajn uzorak.
I mi smo vrlo brzo će se odmaknuti
iz PHP-a zadani funkcionalnosti, koje smo započeli ovdje,
gdje se samo izmiješati PHP, i vaš HTML, CSS i vaš,
a vi samo ga ispljune i idete o svom putu.
To neće biti jako održivi.
Baš kao u C, počeli smo pomoću više datoteka i više funkcija
i faktoring stvari koje van.
Mi ćemo učiniti isto ovdje.
A u stvari, u peti i konačni verzija ovdje, ja sam još jednu stvar.
Možete čak koristiti dot točku, koja je, opet, samo je roditelj katalog.
Da bi se još više sigurnosti svjesni, jer ako gledam na slušanje
Ovdje petu i konačnu verziju, najave da imam jedan katalog ovdje zove
javnosti, a zatim na istoj razini, da se tako izrazim,
Imam uključuje i predložaka a zatim da tekstualnu datoteku obavijesna.
>> A razlog sam strukturiran to sviđa this-- i tako mnoge web
Domaćini, posebno onih pet dolara mjesec one ili 10 dolara mjesečno one,
Ako ste ikada imali jedan od tih services-- tako što mnogi od njih ne
je oni samo očekuju da deponij sve vaših datoteka u jedan katalog,
kao što smo učinili već s ovaj prvi primjer.
>> No, čim početi izgradnja više sofisticirane web stranice koje upravo spremaju
Podaci vam je stalo i datoteke koje stalo, zapravo organiziranje stvari
pravilno i sa više sigurnosti svijest u um može
počnemo braniti Protiv sve prijatelje
da imate bilo u ili izvan ove klase koji je,
Čim počnete izradu Programi sebe na webu,
će početi branje na vas i na njih.
>> I tako ćemo gledati konačnici na ovaj dizajn.
To je samo slika koja prikazuje sljedeće.
Idemo staviti sve naše programiranje logike u jednoj ili više datoteka,
a mi ćemo samo početak nazivajući one kontrolere.
To je mjesto gdje se mozak Naše web stranice su zapravo.
Onda ćemo imaju pogled i pogled
su kao jednostavan kao samo odvojeno files-- zove predloške, često.
Oni su samo Estetika moju stranicu,
ono što želim stranicu izgledati like-- bojama i izgledu
i položaji sve varijable.
>> I onda još zanimljivije da smo na kraju ćete doći do
je model, koji će biti samo Riječ smo slap na drugim tehnologijama
koje donosimo u Slika, kao i stvarnim baze podataka,
tako da kada želite za spremanje podataka,
ne samo poslati e-mail na svoj Proctor ili za sebe,
vi zapravo ga pohraniti u bazi podataka korištenjem drugi jezik poznat kao SQL.
I tako ćemo ostaviti ovdje danas i pokupiti s tim u srijedu
i uvesti baze podataka tada.
>> [Glazbom]