>> Za početak premostiti ono može biti vaš jedini iskustvo
s web programiranja, što sam Mislio sam da bih napraviti je ukrao par
primjera da Možda ste vidjeli u 50 godina
ako ga je prošlost godine ili dvije ili ne mora imati
ako ga je prije nekoliko godina
da su dječji koraci prema piridin znaju kao MBC,
Model View Controller, i što to znači?
To je, vidjet ćemo opet možda je samo način početna
očistiti dizajn neke web-based komad softvera,
ili je mogao biti na strani klijenta temelji kao dobro, ali mi ćemo ga koristiti
u kontekstu PHP, tako da možemo početi
da bi više kompleks projekti i vrsta
odvojenih različitih tipova Kod unutar aplikacije;
posebno, tako da kad smo ima više ljudi koji rade
Na projektu je dosta lakše izvući linije.
Dakle, prvo neka je uzme pogled na suboptimalnom način
provedbenih nešto.
Pretpostavimo da sam htjela napraviti super Web jednostavna tečaj za 50
ili bilo koje druge klase, a da klasa ima stvari
poput predavanja i nastavni plan i program.
Mogao bih napraviti nešto poput H1 tag na vrhu moje stranice
i neuređen popis s stavke popisa li u cilju
samo imati popis s grafičkim oznakama u opcije izbornika, tako super jednostavna.
Pa kako bismo mogli to učiniti?
Pa, dopustite mi da ide u moj Terminal prozor ovdje,
i obavijest da sam dobio čitanje ja i povezat ćemo se ovaj kod
na internetskoj stranici naravno a u malo,
i obavijest da sam dobio index dot htm - index dot php.
Pa neka mi ići naprijed i otvoriti da, i siguran dosta je to vrsta
glupavo da je ova čak zove php
jer sve što imam je komentar PHP
a onda sve ostalo je samo sirovo html code.
Ali opet to je verzija nula,
pa korak prema nešto zanimljivije,
ali primijetiti da je teško sam kodirane CS50 kao naslov, CS50 u H1,
i sada imam Predavanja povezati,
Sada imam nastavnom planu vezu.
U redu, tako da se ne Čini sve što je nerazumno
dok ne slijedite vezu kao predavanja, i shvatite
to u redu da je to drugačije sadržaja, ali to je vrsta
istu stvar; to je naslov stranice i neuređen liste.
Kliknem tjedan nula od prošle godine, a to je vrsta
ista stvar, H1 tag i neuređen popis
i onda na kraju sam kliknite to, i sam doći do neke lišća,
što je slajdovi iz da je posebno predavanje.
Dakle, nešto mi govori Ja sam o dodvoravanje.
Ako sam otvoriti predavanja dot php obavijest
da je to prilično mnogo kopija i zalijepiti iz prethodnog datoteku;
Upravo sam promijenio naslov na H1, i što ti linkovi su.
Što je još gore, ako odem u tjednu nula dot php,
to je isto kopirati zalijepiti posao
sa samo malo Sadržaj praćka.
Dakle, sigurno postoji prilika ovdje za poboljšanje,
i sigurno to bi trebalo biti dobro pravilo od oka;
bilo koju osjećaju sami kopiranje
i zalijepiti nešto više nego možda jednom,
crvene zastave treba nadam se početi otići.
No, kako ćemo ići o poboljšanju ovo?
Pa, postoji nekoliko načina, a tehnike koje možete koristiti
u PHP razvijali vrijeme, ali idemo probati ovaj jedan.
Pusti me u jednoj verziji, pa sljedeća iteracija to,
i neka mi pokušati očistiš malo.
Točno, jedan od php-a Najjednostavniji mehanizmi
za rješavanje ovog problema je old school zahtijevaju funkciju,
i to poprilicno ne kopiju i lijepljenje sadržaja
neke datoteke upravo ovdje, kao što je c oštri su,
i drugi jezici imaju Vrlo slični konstrukti.
Tako to izgleda malo čudno sada,
to definitivno nije dovršiti potražnja web stranicu,
ali vjerojatno ono što je unutar header dot php.
Sve druge stvari, zar ne, html tag, tag glavu,
oznaka, sve stvari koja je iznad glavnog sustini
stranice, koji je nedvojbeno Samo Popis bez rednih brojeva,
au podnožju je vjerojatno poput zatvorenog tijela oznaku,
zatvorenom HTML-a tag; prilično nezanimljiv
ali duplicirajuća stvari.
U redu, i je li Dovoljno je da odem
u zaglavlju dot php to je samo vrsta siroče fragmenta
s vrha, a ako sam ići u podnožje dot php,
to je siroče fragment od dna,
i ja koristim one isto fragmenti u mojim drugim datotekama,
poput predavanja dot php.
U redu, tako da ono što je bolje o tome bi ti rekao?
Da?
>> Jednostavnost.
>> Jednostavnost?
Ne znam tu vrstu izgledom puno strašnije mi sada, zar ne?
>> Ako sam htio promijeniti svoje header, ne bi
ga promijeniti u svemu natrag poput datoteka.
Vi samo ga mijenjati u svom zaglavlju.
>> Točno, pa možda u taj osjećaj je jednostavnije,
možda bih ga uokviriti, kao da je Upravo to je lakše da ga ažurirati.
To je možda malo čišći
jer ste ažurirati to na jednom mjestu.
Dakle, to je prilično uvjerljiv; Što je downside
ovog pristupa ili ono što je problem ostaje
da mi stvarno nisu riješeni?
Da?
[Off Mic Komentar]
Da, točno, mislim, ja sam Još uvijek kopiranje i lijepljenje;
to je malo manje, ali samo ja izvukao dva od tih datoteka,
i oni prilično mnogo Još uvijek izgledala identično.
Bilo je potrebno na vrhu, zahtijevaju na dnu,
i neuređen Popis u sredini
koji je i sam bio još Strukturno isti.
Štoviše, primijetiti, ako sam zapravo vidjeli ovaj primjer,
Pustite me da Verzija One sada,
i obavijest Imam CS50 Predavanje Syllabus.
Uh, CS50 Tjedan Zero Tjedan Jedan i CS50 srijeda petak,
Ja sam nekako smanjiti gola.
Što je - ono što su bili ti naslovi prije toga?
[Off Mic Komentar]
Bili su poput predavanja u Tjedan Zero, kao što je to vrsta
od seksi, a to je zapravo imao neki dinamičnost na njega,
i to je neka vrsta - Ja sam samo vrsta punting sada
i samo pod pretpostavkom da Cijela Web stranica je CS50
i dobro to radi, ali to je sigurno ne kao elegantan
ili kao neka vrsta ravno naprijed kao što je nekad bio,
ali to ima smisla, jer ako pogledate index dot php
i predavanja dot php i tjedan nula dot php,
oni su svi, uključujući Isto datoteka,
pa kako možemo poboljšati ovo?
Koja je sljedeća iteracija ovaj broj vjerojatno će učiniti?
[Off Mic Komentar]
Da, točno, pa ako - i neka mi ukratko
sa smo u biti žele da parameterize da zaglavlje
tako da da postoji još Teško kodirane H1 tag, ali stvari
između, otvoren i bliski tag,
je vjerojatno dinamična, i dolazi od nečeg drugog.
Možda "dobili niz" ili stvar nakon upitnik
u URL-u su negdje drugo, pa neka je pogledati.
Dakle, ako sam ići u verziji dva,
Sada primijetiti da sam dobio dodatnu datoteku,
to izgleda kao pomagači dot php.
Ja stvarno ne znam gdje je to početi pa ću početi upravo
indeksa kao što je uvijek bilo, a sada primijetiti da je malo drugačija,
tako da sam dobio zahtijeva line
na vrhu zahtijeva pomagači dot php,
ali mogu ga nazvati što god želim,
ali sada primijetiti linije tri postoji funkcija poziva
pružiti zaglavlje, koja je Zanimljivo je samo u onoj mjeri u
kao što se prenosi u očito, prilagođeni naslov
za tu određenu stranicu.
U međuvremenu postoji donijeti podnožja na dnu,
a ja ne trebate bilo parametru postoji to je samo
footer, ali sada se čini
biti korak prema bolje rješenje, uzvratiti udarac glavom traje,
i što napraviti trg zagrade ukazuju za one
koji nisu vidjeli php ikada ili u neko vrijeme?
[Off Mic Komentar]
Da, to je polje.
To je asocijativno polje ili hash koji povezuje ključeve
s vrijednostima; to je kao Java Skripte, prigovor zapis,
ili drugim jezicima, Slične syntaxs.
U redu, tako da ono što je u pomagača dot php?
U pomagači dot php je Samo nekoliko funkcija,
donijeti zaglavlje i donijeti podnožje.
Dakle, par detalja ako je manje poznato,
Dakle, prije svega na činjenicu
da donese header traje Podaci argument da je očito
dodjeljuje prazna Niz postoji znači što?
Što to znači da to dosegne otvorena zagrada zatvorena zagrada
kao parametar u PHP-u?
To je zadana vrijednost.
Dakle, ako ne prođe u nizu ili neki argument god
na uzvratiti zaglavlju ili donijeti podnožje funkciju,
Ja barem mogu vjerovati kako je autor tih funkcija
da će podaci minimalno biti prazna polja;
to neće biti nedefinirani ili netočno, ili nešto slično,
to će biti upravo ono što Dala sam kao zadano.
Sada je to malo svojevrsno hackish način utovara simbola
u svoje ime prostora da se tako izrazim,
, ali to radi prilično dobro u tom je cilju
provedbe vlastite vrste siromah je templating motor.
U redu, tu je puno alata vani za Python i Ruby
i php koji vam daju templating sposobnosti
i to je upravo ono što želimo.
Želimo predložak koji ima H1 otvoreni tag, h1 zatvorena oznaku,
i svojevrsni mjesto nositelj u sredini,
i želimo ispuniti one mjesto nositelji putem ove funkcije,
tako da je ova funkcija izdvojiti samo tako dogodi
da vam sljedeće sposobnosti.
Ako ste je dobio asocijativni od polja s ključnim parova vrijednosti
poput Foo jednaka bar, ekstrakt će stvoriti lokalnu varijablu
zove učinkovito znak dolara Foo i dati mu vrijednost bara
tako da eksplodira svoj asocijativni Niz od ključnih parova vrijednosti
u nove varijable s odgovarajuće vrijednosti.
A onda je potrebna dot zaglavlje točka PHP je isti kao i ranije,
tako što ćemo vjerojatno idući vidjeti unutar header dot php?
Vjerojatno je dobio taj H1 tag i bliski tag; što se događa
da se unutar nje Vjerojatno između njega?
[Off Mic Komentar]
Točno, tu je vjerojatno neki spomen znak dolara naslov
i siguran dosta, ako sam povećavanje Na to postoji moj naslov tag,
tu je moj H1 tag, a unutar o je dinamična umetanje
u znak dolara naslov, ali samo za dobru mjeru,
Radim ovaj html specijalnu naplatiti atrociously nazvana
funkcija, ali je korisna; što učiniti
ili što je to u zaštiti protiv?
To je zapravo otopina na prijetnju koju se aludira;
što bi nas dovelo do.
[Off Mic Komentar]
Točno, pa ako zlonamjerni korisnik ili bezazlen žrtva
od phishing napada klik na link
koji je u sebi imao upitnik i nešto poput Foo jednaka,
a onda je vrijednost od foo je zapravo
kao otvoreni zagrada Scenarij, zatvorena zagrada,
a onda neka JavaScript kod;
ako nisi to nazivamo dugo je glavna funkcija,
ti bi se stvarno zaraza sirovo html na svoju web stranicu,
Rezultat koji je da bi moglo biti izigran.
Možda se prevariti korisnika u izvršavanju JavaScript koda
da on ili ona nije zapravo ne namjeravam.
I iako se obično ti si samo sebe ranjavanje,
kao što samo vi znate idiot će se upisati
u otvorenom pismu nosača, zatvorena zagrada, i reći upozorenje
ili nešto slično i ga ili sama učiniti
u nekom čudnom ishodom, ako ne bi prevario
u klikom na link koji ima sirovo JavaScript ugrađen u njemu
kao i vrijednost tog atributa,
možete između ostalog ukrasti nečije kolačiće
jer ima svojstvo Dokument pod nazivom dot Cookie
u JavaScriptu koji vam omogućuje zgrabiti korisnikovu kolačić sesije,
a ako se prisjetimo onoga što Sjednica otmice napada je,
duljimo, to je jedna način zapravo prevariti nekoga
u dajući vam da virtualno Ruka pečat, a zatim se
preko svoje Facebook račun ili neku drugu vrstu računa.
U redu, tako da je ovo je malo dugo,
ali to je samo pomoću sirovo html code.
To je ekvivalent pozivanja odjek
ili ispisati učinkovito i U biti ste umetanja
koja dinamički.
Dakle, što više i dalje ovdje?
Pa, dopustite mi da odem u Verzija Tri ovdje,
pa ćemo vidjeti nešto drugačija -
Isto Točan raspored sliku ali obavijest
da ovaj put ćemo generalizirati zaglavlje i podnožje
kao predloške, tako da ono što Ne mislim da?
Što je jedna stvar to je drugačije ovdje?
Što se promijenilo od posljednja verzija?
Suptilni, ali je nedvojbeno samo bolje čišći dizajn.
Da?
[Off Mic Komentar]
Da, postoji samo jedan standardni donijeti funkciju;
Nisam poseban slučaj donijeti header ili donijeti podnožje,
od kojih su oba te ako Opoziv iz pomagača dot php,
mi smo prilično mnogo identične osim njihovih imena
i predlošci su uključeni.
Zašto ne samo parameterize donijeti funkcija
i uzeti jedan argument, to je Naziv predloška,
a druga opcija argument koje su ključne parova vrijednosti
koje želite priključiti u.
Dakle, ako sam sada pogledati pomagači dot obavijest php
da sam se Malo ljubitelj sada.
Ja sam zapravo provjere radi file postoji i ako je tako ići naprijed
i zahtijevaju ga; samo u slučaju korisnik slučajno vrste
na neki lažno ime predloška ste Ne želim da se baci na pogrešku
u programu, tako možemo minimalno ih učiniti
favoriziraju ovdje.
U redu, ali možemo uzeti korak dalje?
U ovoj verziji ovdje primijetiti sljedeće.
Upravo sam upisali ls, i ono odmah skoči
out je nešto drugačija.
Dakle, postoje dvije direktorije, pravo,
pa to je sad korak ka ono što će na kraju biti više
pravilan okvir.
To je vrsta neuredan od mene da se bacanje sve
moje sadržaj unutar javno dostupni katalog
koji doslovno se zove javni.
I iako na žalost, puno okvira,
Oni stariji pogotovo, pa čak i neke web postovi,
Dream Host među njima, snage li staviti sve datoteke
u protuvrijednosti javni imenik, čak
ako je vaše datoteke mogu su lozinke baze podataka
i korisnička imena ili drugih takvih uvjerenja,
to uopće nije dobar dizajn.
Mnogo bolje je staviti samo
u javni imenik ono što je apsolutno
da se user dostupni, i sve ostalo
da ste uključujući kao pomagači dot php,
nema razloga da to trebao biti dostupan putem web
browser s URL-a.
To bi moglo biti potpuno bezopasan ako korisnik želi vidjeti, možda
koji su parovi, ali to je samo Princip njega,
i ne daj Bože da se zapravo radi imaju korisničko ime ili zaporku;
ne želite Korisnik slučajno
ili namjerno biti moći pristupiti.
Dakle, nismo sasvim u savršena pristup ovdje,
ali primijetiti sljedeće sada.
U indeks dot php, primijetiti da Ja sam još uvijek zahtijevaju pomagače,
ali ja sam to radio na takav način da sam nekako organizirati sve
datoteke koje će biti uključeni
u podmapu naziva uobičajeno uključuje,
i onda sam nazvati donijeti za zaglavlje i podnožje kao i prije.
Dakle, jedina stvar Ja sam učinio je vrsta
od reorganizirati svoje direktorije da se malo više anal
o strukturi datoteka.
Ali, ako mi sada ići na ovo peti primjer,
primijetiti da smo sada imati trio mape,
a to je malo zabludu u ovom trenutku
jer je zbog jednostavnosti poradi klasi,
Ja sam samo bačen sve
u John Harvard Javni imenik samo
tako da možemo ploviti preko Preglednik, ali obavijest -
ignorirati ovaj dio samo na trenutak,
Činjenica da sam tamo.
Uočite da imam tri poddirektoriji: javna,
predložaka, a uključuje.
Ideja je da se sada u ispravno konfiguriran web poslužitelj sam
bi se reći da je ovaj Apache web stranica ima javno dostupne
datoteke ovdje i nigdje drugdje.
Dakle, ono što datoteku mislite Idem vidjeti što je unutra
javnih ako upišete ls?
Ono što je najmanje jedna datoteka to je vjerojatno tamo?
[Off Mic Komentar]
Dobro indeks dot php, i ono što je datoteka očito ne
tamo među ostalima?
Kao pomagači dot PHP, zaglavlje dot php, footer dot php;
sve fragmente sve funkcionalnosti
koji zapravo ne trebaju biti javno dostupni,
to mora biti korisna po dosjeima
koje su javno dostupne, ali oni sami,
Nema korisnik treba vidjeti ili istra URL za pomagače dot php.
Uočite da umjesto ako odem
u uključuje postoji pomagači dot php,
a ako idem u predloške,
postoji footer i header dot php.
Iskreno, mogao sam staviti ih je u istom direktoriju,
ali ja pokušavam biti još više analni o održavanju datoteke
da su samo svojevrsni statička predlošci različita
iz funkcionalnih datoteke kao pomagači dot php,
a ja sam samo držeći se neki prilično uobičajene konvencije
nazivajući direktorije uključuje i predloške.
Dakle, jedina stvar koja promijenio je onda opet put.
Ako idemo do ovdje primijetiti da sam sada samo
uključiti relativnu imenik,
dot dot slash uključuje pomagači dot php,
ili ja mogu biti malo više pravilno i zapravo učiniti nešto
ovako, php i dosta
jezika ima ovi posebni simboli
koje predstavljaju trenutna slika u imeniku,
tako naglašavaju donju dir naglašavaju podvlačenje predstavlja
god imenik je ove datoteke,
pa ako samo spojite s operatorom točaka, da
kako bi se postigla Isti rezultat,
i ima tendenciju da se malo više robustan, jer možete dobiti
u situacijama s relativna Katalozi su samo govoreći točku
ili dot dot mogu zapravo Vas dovesti na krivo mjesto,
pa to je uglavnom Malo više robustan.
U redu, pa što ipak ostaje?
Što ste još Ne bih o tome?
Ono što bi se moglo poboljšati, a vi To je komentirao ranije mislim
da postoji još neka pitanja?
[Off Mic Komentar]
Desno, sigurno nemamo za početak pisanja kao web-mjesta
koje izgledaju ovako, zar ne?
To ne osjeća sve to puno bolje,
još ima copy paste.
Ja još uvijek imam zahtijevaju liniju na vrhu.
Ja još uvijek imam donese header donijeti podnožje.
Postoji puno dupliciranja.
Da?
[Off Mic Komentar]
Da, točno, tako da smo poduzeli korak prema vrsti cijepanje
do "C" od "V", pa MVC je Model View Controller;
Regulator je vrsta mozak zahtjeva.
Model ima tendenciju da se podaci ili neka zajednička funkcionalnosti,
i pogled teži da bude estetika, predložak,
pa smo poduzeli korak naprijed ka odvajanja "c" od "V"
jer mi sada barem imati Ovaj predložak u imeniku,
, ali čak i tu smo u biti imati jedan kontroler po datoteci.
To ne izgleda kao da je koliko je logika ovdje događa,
, ali index dot php je učinkovito kontroler.
Kada posjetite URL i završava u indeksnom dot php,
sve logike da provodi ta stranica je u pravu
u index dot PHP, i Isto za predavanja dot php.
Isto za tjedan nula dot php.
Tako smo nekako strone naše Logika sve više mjesta,
i čini se kao to se ne događa
u mjerilu jako dobro kada bismo nisu četiri, ali četrdeset stranica
ako je svaka stranica počinje s ja kopiranje stariju verziju
datoteke i samo ugađati neke
sadržaja unutar njega.
Tako smo samo uzeti korak prema tome,
i jedan od alata mi ćemo uvesti
u srijedu je Framer zove "Laravel"
i to je vrlo popularan php okvir,
druge one su "Fuelphp."
Tu je starija pod nazivom "codeigniter."
Ima jedna zove "Cake".
Ima jedan pod nazivom "Simfonija".
Mislim, ako Google PHP okvira,
tu je zločest Broj poput okvira
da su ljudi koji provode.
Laravel je jedan od više se i uglovima;
to je jedan od usisavača one, a vi ćete
da u konačnici to pomaže uštedjeti dosta
vremena, iako postoji malo krivulja učenja,
ali da će se voditi što više srijedu.
Štoviše, mi ćemo uvesti ono što se zove "ORM."
U ovom slučaju, mi ćemo koristiti nešto što dolazi
s ovim okvirom zove Laravel.
To se zove "elokventna" i ovo je samo sloj koda
koji vam omogućuje da se među ostalim stvari razgovarati s bazama podataka.
I ovdje, neka mi ukrade Primjer je to bilo nedavno
ili atavizam za neki od vas od 50 godina.
Ako ste uzeli 50, a jesi "CS50 financije,"
možda podsjetiti datoteke koje pišete i ponovo napisao da izgleda
ovako, ovo je prijava dot php, i na vrijeme,
pogotovo jer smo ne potrošiti mnogo vremena
na PHP osnove rano,
to samo po sebi može imati bila prilično zahtjevna,
i tako smo mi, u stvari, pokušajte pojednostaviti dizajn.
Mi stvarno ne odvajaju "M" od "V" iz "C" sve što je mnogo
za probleme koji "Sedam CS50 Finance"
ali primijetiti jednu stvar nadamo se da treba početi
uskoro trljati vam ne valja Tako je nešto poput ovoga.
Mislim, ne samo da je to bilo prijaviti dot php kontroler.
Također je govorio neposredno
na bazi posebno pomoću nastavak, koji se ne događa
u mjerilu jako dobro kada počnete raditi s jednom
ili dva ili tri partnera.
Na primjer, ako je jedan od partneri odgovoran
za stvaranje tablica baze podataka i dolazi
do svoje indekse i figuring
što bi trebao biti ključ, primarne ključeve, stranih ključeva,
i sve to, odlučujući o imena tablica i sve to.
Sada je druga osoba u Skupina treba znati sve
dizajnerskih odluka on ili ona je napravila, a sada je potrebno
na hard kod te odluke u svoju datoteku, tako da sada on
ili ona je lijepa koliko ograničen
da nikad više promijeniti one table imena.
Nikad više promijeniti oni podnijeli imena
bez vas obavijestiti.
Osim toga, ne možete stvarno lako raditi na istoj datoteci
bez sudara međusobno ako
ili ona je stalno promjenom imena,
i imate stari verzije i tako dalje,
pa to je samo pozivajući puno i puno glavobolje.
Štoviše, kao što ćemo vidjet zadugo,
čak i ako nije potrebno
učiniti osobito sofisticirane upit ovdje,
jednom kad počnete s višestrukim stolovi, dva stola, tri, pet,
Deset tablice u MySQL ili općenito relacijskih baza podataka,
morate pridružiti one tablice Često ako poznajemo, i imate
kombinirati podatke iz jedna s drugom,
i iskreno vaši Nastavak upite početi da se više i više,
i više, a još kompleks, i to upravo počinje
da se puno lakše griješiti
i puno teže dobili ono pravo.
I tako alate kao što su Elokventan i ORM ide
kako bi nam pomogli oblikovati naše podatke i to je također brzo se
generirati kod koje smo morati početi upite baze podataka
u sofisticiranije načine.
Dakle, ako imate primarni ključ ovamo i strani ključ
ovamo, sve što je potrebno učiniti je naučiti da ORM,
Povezanog objekta Mapper, kakav je taj odnos
i to će shvatiti što upite za izvršenje za vas.
A samo u rijetkim slučajeva ti treba
to nužno pisati Nastavak kod sebe.
Ako stvarno želite fino podešavanje nešto,
, ali za najveći dio, možete samo početi liječenje osobe
u svojim bazama podataka kao što je istina objekti, a ne ovi ravni redovi
da ste na neki način morati rekonstruirati i de normalizovati.