>> Alustuseks ületada mida võib olla teie ainus kogemus
veebi programmeerimine, mida ma mõtlesin, et ma teha, on varastada paar
näiteid, et sa võis näha 50
kui sa võtad ta varem aasta või kahe või mitte olla
kui sa võtad ta paar aastat tagasi
mis on beebi samme püridiin tea kui MBC,
Mudel View Controller, ja mida see tähendab?
Seda me näeme jälle ehk on lihtsalt võimalus alustada
koristada disain mõnede veebipõhine tarkvara,
või võib see olla kliendi poolel aluseks on hästi, kuid me kasutame seda
kontekstis PHP nii et saaksime alustada
keerulisemad projektide ja sorteeri
eraldi erinevate koodi taotlus;
eriti nii et kui me on mitu töötavate inimeste
projektipõhiselt see on palju lihtsam tõmmata.
Nii et kõigepealt võtame vaata suboptimaalsest viis
rakendusvolituste midagi.
Oletame, et ma tahtsin teha super lihtne muidugi veebilehel 50
või muu klassi ja et klassis on asju
nagu loengud ja õppekava.
Ma võiks teha midagi h1 tag ülaosas minu leht
ja ebakorrapärane nimekirja li nimekiri kaupu, et
lihtsalt on täppidega nimekirja menüüvalikute nii super lihtne.
Niisiis, kuidas võiks seda teha?
Noh, lubage mul minna oma terminal window siin
ja teate, et mul on loetud mind ja me linkida see kood
kursuse veebilehte aastal veidi,
ja teate, et mul on index dot htm - indeks dot php.
Nii et lubage mul minna ja avada et, ja jumala eest see on selline
rumal, et seda isegi nn php
sest kõik, mis mul on php kommentaar
ja siis kõik muu on lihtsalt toores html kood.
Aga samas on see versioon null,
nii samm midagi huvitavat,
aga teate ma olen kõva kodeeritud CS50 nagu pealkiri, CS50 H1,
ja nüüd on mul loengud viitavad,
nüüd on mul ainekava link.
Olgu, nii et ei tundub kõik, mis põhjendamatu
kuni te järgite link nagu loengud ja sa mõistad,
et eks see on erinev sisu, kuid see on selline
sama asi; see pealkiri lehe ja Tavalise nimekirja.
Ma vajutan nädalas null alates eelmisel aastal ja see on selline
kohta sama, h1 tag ja Tavalise nimekirja
ja siis lõpuks ma vajutan seda, ja ma saan mõned lehed,
mis on slaide et eriti loeng.
Nii mulle tundub Ma olen umbes roomama.
Kui ma avada loengud dot php teade
et see on päris palju koopia ja kleepida eelmist pilti;
Kolisin just pealkiri h1 ja mida need lingid on.
Hullem veel, kui ma lähen arvesse nädalal null dot php,
see on sama koopia pasta töö
vaid natuke sisu Tweaked.
Seega kindlasti pole siin võimalus, et parandada,
ja kindlasti peaks see hea rusikareegel;
millal te tunnete ise kopeerides
ja kleepimine midagi rohkem kui võibolla kord
punased lipud peaks loodetavasti hakkavad kustuma.
Aga kuidas me läheme kuidas parandada seda?
Noh, seal on vähe võimalusi, ja meetodeid, mida saab kasutada
PHP on arenenud aega, kuid proovime seda.
Lubage mul minna Version üks, nii järgmisel iteratsioon,
ja lubage mul proovida koristama natuke.
Parem üks PHP Lihtsaim mehhanismid
selle probleemi lahendamiseks on vana kooli nõuavad funktsiooni,
mis päris palju teeb koopia ja kleebi sisu
Mõne faili siin, nagu c on terav hulka
ja teistes keeltes on väga sarnane konstrueerib.
Nii tundub vähe imelik nüüd,
see on kindlasti mitte lõpetada otsin veebilehe
kuid oletatavasti on sees header dot php.
Kõik muud asjad, eks, html tag, pea tag,
pealkiri tag, kõik asjad mis oli üle põhisisuks
lehe, mis on väidetavalt lihtsalt Tavalise nimekirja,
ja jalus on ilmselt nagu suletud body,
suletud html Tag; üsna ebahuvitav
kuid dubleerivaid asju.
Olgu, ja kindel piisa, kui ma lähen
päisesse dot php on see lihtsalt liiki harva fragment
ülevalt ja kui ma minna jalus dot php,
see orvuks fragment põhjaga
ja ma kasutan neid samu killud minu muid faile,
nagu loengud dot php.
Olgu, mis on parem sellest sa ütleksid?
Jah?
>> Lihtsus.
>> Lihtsus?
Ma ei tea, selline välimus palju hirmsam mulle nüüd, eks?
>> Kui ma tahan, et muuta oma header, siis ei oleks
muuta seda kõigis eelmine nagu faile.
Sa lihtsalt muuta Teie päises.
>> Täpselt nii, võib-olla Selles mõttes on see lihtsam,
võibolla ma kaadrisse nii, nagu ta on lihtsalt see on lihtsam uuendada.
See on võib-olla veidi puhtam
sest sa uuendada see on ainult üks koht.
Nii et on üsna kaalukaid; Mis negatiivsed
Selle lähenemise või Mis probleem jääb
et me pole tegelikult lahendatud?
Jah?
[Off Mic Comment]
Jah, täpselt, ma mõtlen, ma olen ikka kopeerimine ja kleepimine;
see on natuke vähem, aga ainult tõmmata kaks neid faile,
ja nad päris palju ikka vaatasin identsed.
Seal oli vaja kell top, nõuavad allosas,
ja ebakorrapärane nimekirja keskel
mis iseenesest oli ikka struktuurilt sama.
Peale seda märgata, kui ma tegelikult vaadata neid näiteks
Lubage mul minna Version Üks nüüd,
ja teate, ma pean CS50 Loeng ainekava.
Uh oh, CS50 Week Zero Nädal Üks ja CS50 kolmapäev reede,
Olen selline lõigatud nurgas.
Milline oli - millised olid need pealkirjad varem?
[Off Mic Comment]
Nad olid nagu loengud Nädal Zero, nagu see oli selline
on seksikam, ja see tegelikult olid mõned dünaamikat see,
ja see on selline - ma olen lihtsalt selline punting nüüd
ja lihtsalt, eeldades, et Kogu veebisait on CS50
ja eks see toimib, kuid see on kindlasti mitte nii elegantne
või kui mingi sirge edastada, kui ta kunagi oli,
kuid see on ka loogiline, sest kui te vaatate index dot php
ja loengute dot php ja nädal null dot php,
nad on kõik, kaasa arvatud Sama faili
Niisiis, kuidas me saame parandada seda?
Mis on järgmine iteratsioon see kood arvatavasti teeme?
[Off Mic Comment]
Jah, täpselt, nii et kui - ja andke mulle kokku
koos me põhiliselt taha parameterize et päis
nii et jah seal on veel kõva kodeeritud h1 tag, kuid asjad
vahel, avatud ja tihe tag,
Oletatavalt dünaamiline ja tulevad millegi muuga.
Võibolla "saada string" või asi küsimärk
URL olid kuskil muud, nii et võtame pilk.
Nii et kui ma minema Version Two,
nüüd teate, et ma olen sai täiendava faili
see näeb välja nagu abilised dot php.
Ma tõesti ei tea, kust alustada nii et ma hakkan lihtsalt
indeksiga nagu nagu alati, ja nüüd teate, et see on natuke erinev,
nii et mul on vaja rida
ülaosas on vaja abilised dot php,
kuid ma ei saa seda nimetada mida ma tahan,
kuid nüüd teate liinil on funktsioon kõne
muuta header, mis on huvitav ainult niivõrd,
nagu mis on vastu võetud ilmselt custom title
Selle konkreetse lehekülje.
Vahepeal seal muuta footer allosas,
ja ma ei vaja parameterization on see lihtsalt
jalus, kuid nüüd tundub,
oleks samm parema lahendus, muuta header võtab,
ja mida teha ruudu sulgudes näidata neile
kes ei ole näinud php kunagi või samas?
[Off Mic Comment]
Jah, see on massiiv.
See on assotsiatiivne massiiv või hash mis seostab võtmed
väärtustega; see on nagu Java Scripts, vastuväiteid märke,
või teistes keeltes, sarnane syntaxs.
Olgu, mis on aastal abilised dot php?
In abilised dot php on paar funktsioone,
muuta päise ja muuta jalus.
Nii paar detailid kui vähem tuttav,
nii esiteks asjaolu
et muuta päis võtab andmed argument, mis on ilmselt
määratud tühi array seal tähendab mida?
Mis see tähendab teha võrdsete sulg suletud sulg
parameetrina php?
See on vaikeväärtus.
Nii et kui ma ei liigu array või ühtegi argumenti
et muuta päise või muuta jalus funktsiooni
Ma ei vähemalt usalduse autor neid funktsioone
et andmeid minimaalselt olema tühi massiiv;
see ei ole määratud või vale, või midagi sellist,
see on täpselt see, mida Andsin selle vaikimisi.
Nüüd on see natuke omamoodi hackish viis laadimise sümbolid
oma nimi ruum niiöelda
kuid see töötab päris hästi suunas selleks
rakendamiseks oma omamoodi vaese mehe templating mootor.
Olgu, seal on palju tööriistu seal Python Ruby
ja php, et teile templating võimeid
ja see on täpselt see, mida me tahame.
Tahame template, mis on h1 avatud tag, h1 suletud tag,
ja omamoodi koht omanik keskel,
ja me tahame, et täita nende koht omanike teel selle funktsiooni
nii et see funktsioon ekstrakti lihtsalt nii juhtub,
teile järgmine võimeid.
Kui sul on assotsiatiivne massiivi võtme väärtus paare
nagu foo võrdub bar, ekstrakt loob kohaliku muutuja
kutsutakse tõhusalt dollari märk foo ja annab talle väärtuse bar
nii see plahvatab oma assotsiatiivne array põhiväärtus paarid
uusi muutujaid vastavaid väärtusi.
Ja siis on vaja dot kaudu dot PHP on sama nagu enne,
Mida me siis ilmselt läheb kiigata header dot php?
See on vist, et h1 tag ja tihe tag; mis toimub
olema sees on ilmselt vahel on?
[Off Mic Comment]
Täpselt nii, seal on ilmselt mõned mainita dollari märk pealkiri
ja jumala eest, kui ma suumida Sellel pole minu pealkiri tag,
seal on mu h1 tag ja sees see on dünaamiline sisestamise
dollari märk pealkiri, kuid lihtsalt hea meede,
Ma teen seda html erilist võta metsikult nimega
funktsioon, kuid see on kasulik; mida see teeb
või mida see kaitseb?
See on tegelikult lahus et ohu te vihjate;
sa oleks viinud meid.
[Off Mic Comment]
Täpselt nii, kui pahatahtlik kasutaja või pahaaimamatu ohvri
andmepüügirünnakuga Napsautin link
et ise oli küsimärk ja midagi nagu foo võrdub,
ja siis väärtus Foo oli tegelikult
nagu sulg script, suletud klambri
ja siis mõned JavaScript koodi;
kui sa ei helistanud see pikk põhifunktsiooni
sa oleks tegelikult nakatamine toores html oma veebilehele,
mistõttu on et võite olla meelitatakse.
Sa võid olla tricking kasutaja arvesse täidesaatva JavaScript kood
et ta tegi tegelikult ei kavatse.
Ja kuigi tavaliselt sa oled ainult endale haiget,
nagu ainult sina tead idioot läheb kirjuta
aastal avatud sulg script, suletud klambri ja öelda alert
või midagi sellist ja teha ennast
aastal mõned imelik tulemus, kui sa ei saa meelitatakse
klõpsates link, mis on toores JavaScript surutud ta
kui selle väärtus, atribuut,
saate muuhulgas varastada kellegi küpsised
sest seal on vara nimetatakse dokumendi dot cookie
JavaScript, mis võimaldab teil haarata kasutaja istuntoevästeen
ja kui te mäletate, mida seansiärandamise rünnak,
pikk lugu lühike, see on üks viis tegelikult tricking keegi
teatama, et virtuaalne käsi tempel ja siis võttes
üle oma Facebook konto või mõnda muud tüüpi konto.
Olgu, see on pikavõitu,
aga see on lihtsalt kasutades toores html kood.
See on ekvivalentne helistaja kaja
või printida tõhusalt ja me põhiliselt sisestamist
mis dünaamiliselt.
Nii et mida rohkem on endiselt siin?
Noh, lubage mul minna Version Three siin
ja me näeme, mõnevõrra erinev -
täpselt sama fail paigutus kuid teade
et seekord me ei kavatse üldistada päis ja jalus
mallid, mis siis ma mõtlen, et?
Mis on üks asi, mis on erinev siin?
Mis on muutunud pärast viimane versioon?
Peen, kuid see on vaieldamatult lihtsalt parem puhastaja disain.
Jah?
[Off Mic Comment]
Jah, seal on ainult üks standard muuda funktsiooni;
Ma ei erijuhtum muuta Päis või muuta jalus
mõlemad, kui sa tagasikutsumise abilised dot php,
me oleme päris palju identne välja arvatud nende nimed
ja malle need lisada.
Miks mitte lihtsalt parameterize muuda funktsiooni
ja võtta üks argument, mis on malli nime,
ja teine ​​vabatahtlik argument mis on põhiväärtus paarid
mis sa tahad pistik sisse
Nii et kui ma nüüd vaatama abilised dot php teade
et ma oleks vähe Kasvataja nüüd.
Ma tegelikult kontrollimine ei fail on olemas ja kui on, siis lase käia
ja nõuavad seda; igaks juhuks kasutaja kogemata tüüpi
mõnel võlts malli nime ei taha visata viga
programmi, et saaksime minimaalselt teha neile selle
teenet.
Olgu, aga me saame võtta seda sammu edasi?
Selles versioonis siin märkate järgmist.
Olen just kirjutasid ls, ja mida kohe hüppab
välja on mõnevõrra erinev.
Nii et seal on kahe kataloogiga, õige,
ja nii on see nüüd samm mida oleks tulevikus rohkem
sobiv raamistik.
See on selline lohakas minust viskamine kõik
minu sisu sees avalikult kättesaadav kataloog
mis sõna otseses mõttes nimetatakse avalik.
Ja kuigi kahjuks palju raamistike
vanemad eriti, ja isegi mõned web postitusi,
Dream Host nende seas jõud sa paned kõik failid
aastal ekvivalent avalik kataloog isegi
Kui teie failid võivad hõlmavad andmebaasi paroolid
ja kasutajanimed või muid identifitseerimiseks,
see ei ole üldse hea disain.
Palju parem on panna ainult
avalikus kataloog mis absoluutselt ei
et kasutaja, ja kõik muu
et sa ka nagu abilised dot php,
ei ole põhjust, et see peaks olema web kättesaadavad
brauseri URL.
See võib olla täiesti kahjutu Kui kasutaja soovib olla
kes paari, kuid see on lihtsalt põhimõte see,
ja jumal hoidku ta tegelikult teeb on kasutaja nimi või parool;
sa ei taha kasutaja kogemata
või tahtlikult on pääse ta.
Nii et me ei ole päris at täiuslik lähenemine siin
aga märkame järgmised nüüd.
Indeksi dot php, märkate, et Ma olen ikka vajavad abilisi,
aga ma teen seda nii et ma olen omamoodi korraldamine kogu
failid, mis lisatakse
arvesse alamkataloogi konventsionaalselt hõlmab
ja siis ma kutsun muuda jaoks Päis ja jalus, kui varem.
Nii et ainus asi, Ma olen teinud on omamoodi
on ümber minu kataloogid olevat veidi anal
umbes faili struktuuri.
Aga kui me nüüd minema see viies näiteks
teate siin, et nüüd on trio kaustade
ja see on natuke eksitav hetkel
sest lihtsuse huvides klassi
Ma olen lihtsalt visata kõik
arvesse John Harvardi Avalik Directory lihtsalt
nii et me saame liikuda selle kaudu brauser, kuid teate -
ignoreeri seda osa hetkeks,
Asjaolu, et ma olen seal.
Pange tähele, et mul on kolm alamkataloogid: avalik,
malle ja sisaldab.
Idee on selles, et sisse õigesti konfigureeritud veebiserver I
oleks öelda Apache, et see kodulehel on üldsusele kättesaadav
failid siin ja mitte kusagil mujal.
Mis siis faili sa arvad Ma lähen kiigata
avaliku kui writing Kas?
Mis vähemalt üks fail see on ilmselt seal?
[Off Mic Comment]
Okei index dot php, ja mis fail ei ole ilmselt
seal hulgas?
Nagu abilised dot php, header dot php, jalus dot php;
kõik fragmendid kõik funktsioonid
mis ei ole tegelikult vaja olema avalikult kättesaadav,
see peab olema kasutatav poolt failid
mis on üldsusele kättesaadavad, kuid nad ise
ükski kasutaja vaja näha või quire URL abilised dot php.
Pange tähele, et selle asemel, kui ma minema
arvesse ka seal abilised dot php,
ja kui ma minema malle
seal jalus ja header dot php.
Ausalt, ma oleks võinud neid samas kataloogis,
kuid ma üritan olla isegi rohkem anal umbes hoida faile
mis on justkui staatiline malle erinev
funktsionaalse failid nagu abilised dot php,
ja ma lihtsalt järgida mõningaid üsna levinud konventsioonid
helistades kataloogid hõlmab ja malle.
Nii et ainus asi, mis muutunud, siis on jälle teele.
Kui me siin märgata et ma nüüd lihtsalt
määrata ka selle kataloogi,
dot dot kaldkriipsuga sisaldab abilised dot php,
või ma saan olla veidi rohkem õige ja tegelikult midagi
nagu see, php ja palju
Keelte on neid sümboleid
mis esindavad praeguse faili kataloogi
nii rõhutavad alakriips dir rõhutada alakriips esindab
olenemata kataloog on seda faili
ja nii kui sa lihtsalt concatenate dot operaator, et
et võiks saavutada sama tulemuse,
ja kipub olema veidi rohkem jõuline, sest saad
olukordi, mille suhteline directories just rääkisime dot
või dot dot saab tegelikult jõuad vales kohas,
nii see kipub olema veidi tugevam.
Olgu, mida kuigi jääb?
Mida sa veel ei meeldi see?
Mida saaks parandada ja sa kommenteeris seda varem ma arvan
et seal on veel mõned küsimused?
[Off Mic Comment]
Õigus, kindlasti ei ole meil hakake nagu sites
mis näeb välja selline, eks?
See ei tundu kõik, et palju parem,
seal on ikka kuuled kleebi.
Mul on ikka veel nõuavad line ülaosas.
Mul on veel muuta header muuta jalus.
Seal on palju dubleerimist.
Jah?
[Off Mic Comment]
Jah, täpselt, nii et me oleme võtnud sammuks omamoodi jagamine
up "c" alates "v", nii MVC on Model View Controller;
kontroller on omamoodi aju taotluse.
Mudel kipub olema andmete või mõned ühised funktsioonid,
ja vaade kipub olema esteetika, malli,
nii oleme võtnud samm eraldades "c" alates "v"
sest meil on nüüd vähemalt on Selle malli kataloog,
kuid isegi seal me põhiliselt on üks kontroller faili kohta.
See ei tundu nagu seal palju loogikat siin toimub,
kuid indeks dot php on tõhusalt kontroller.
Kui külastate URL ja lõpeb index dot php,
kõik loogikat rakendab, et leht on õigus
indeksi dot php, ja Sama loengute dot php.
Sama nädala null dot php.
Nii et me oleme omamoodi stronę meie loogika kogu koht,
ja tundub, nagu see ei kavatse
mõõtkavas väga hästi, kui me pole neli, vaid nelikümmend lehekülge
kui iga lehekülje algab mind kopeerimine vanem versioon
faili ja lihtsalt tutistamine mõned
ning sisu sees on.
Nii et me oleme ainult võtta samm see,
ja üks vahendeid me tutvustada
Kolmapäeval on framer nimega "Laravel"
ja see on väga populaarne php raamistiku
Ülejäänud sisaldavad "Fuelphp."
Seal on vanem nimega "Codeigniter."
Seal on üks nn "Cake".
Seal on üks nn "Symphony".
Ma mõtlen, kui sa Google php raamistike
seal on julmad arvu nagu raamistikud
et inimesed, kes on rakendanud.
Laravel on üks rohkem üles ja soovijad;
see on üks puhasti ones, ja leiad
mis lõppkokkuvõttes aitab säästa üsna natuke
aega, kuigi on natuke õppimiskõver,
kuid et me suuname te üle kolmapäeval.
Pealegi, me tutvustada mida nimetatakse "ORM".
Sellisel juhul me kasutame midagi, mis tuleb
Selle raames nimetatakse Laravel.
Seda nimetatakse "Eloquent" ja see on lihtsalt kiht kood
mis võimaldab teil muuhulgas asju rääkida andmebaase.
Ja ka siin, las ma varastama Näiteks, mis on kas viimastel
või Sarnasusi eest Mõned teist on 50.
Kui sa ei võta 50 ja sa tegid "CS50 Finance"
te võiks meenutada failid sa kirjutad või muutis kohus otsida
niimoodi, et see oli login dot php, ja ajal,
eriti kuna me ei veeta palju aega
PHP põhialuste varakult
see võib ise olla olnud üsna keeruline,
ja nii me tegime, tegelikult proovida lihtsustada disain.
Me ei ole tegelikult eraldi "M" alates "V"-st "C" kõik, et palju
probleemide eest, mis "Seitse CS50 Finance"
aga märkate ühte asja mis peaks loodetavasti alustada
varsti hõõruda sa valesti Muide, on midagi sellist.
Ma mõtlen, et mitte ainult see oli sisse dot php kontroller.
Samuti räägime otse
Lisa andmebaasi konkreetselt kasutades järge, mis ei kavatse
mõõtkavas väga hästi, kui hakkate koos töötada ühe
või kaks või kolm partnerit.
Näiteks, kui üks partnerid vastutavad
luua oma Andmebaasi tabelite ja sealt
koos oma indeksid ja viinud
millised on võti, primaarseid võtmeid, välis-võtmed
ja kõik, mis, otsustades tabeli nimed ja kõik see.
Nüüd sa teisele isikule grupp peab teadma kõik
disaini otsuseid ta või ta on teinud, ja siis nüüd on vaja
kõva kood need otsused oma faili, nii et nüüd ta
või ta on päris palju piiranud
et mitte kunagi enam muuta need tabeli nimed.
Mitte kunagi enam muuta need esitatakse nimed
teatamata teile.
Pealegi, sa ei saa tegelikult lihtsalt tööd samal fail
ilma kokkupõrkamise omavahel kui ta
või ta on pidevalt muutuvas nimed,
ja sul on vana versioone ja nii edasi,
Nii et see on lihtsalt kutsudes palju, palju peavalu.
Pealegi, nagu me tulen vaata enne pikk,
kuigi sa ei pea
teha eriti keerukamaid päringuid siin
kui te alustate võttes mitmekordne tabelid, kaks lauda, ​​kolme, viie
kümme tabelite MySQL või üldiselt Relatsioonandmebaasis
pead liituma need tabelid sageli kui tuttav, ja teil on
ühildamine üks teine,
ja ausalt oma järge päringute hakkama saada enam ja enam,
ja enam ja enam keeruline, ja see lihtsalt hakkab
saada palju lihtsam teha vigu
ja palju raskem asjad on korras.
Ja nii vahendeid, nagu Väljendusrikas ja ORM läheb
aitavad meil kujundada oma andmed ja see ka tegelikult toimub
et genereerida uus kood, mida me vaja alustada päringute andmebaasid
keerukamaid võimalusi.
Nii et kui sul on primaarvõti siin ja Võõrvõti
siin on kõik, mida on vaja teha, on õpetada, et ORM,
Objektiseose kaardistaja, mis see suhe on
ja siis nuputada, mida päringut täita teile.
Ja ainult harvadel juhtudel vajate
tingimata kirjutada järge kood ise.
Kui sa tõesti tahad häälestada midagi,
kuid enamasti saate lihtsalt alustada ravivad isikud
Teie andmebaaside tõsi objektide ja mitte need lamedad read
et te kuidagi vaja rekonstrueerida ja de normaliseerimine.