>> [Muusika mängimine]
>> DAVID J. Humala: Hea küll.
See on CS50.
See on algusest nädalal kaheksa.
Ja te võib-olla mäletate, et jätsime maha viimane aeg vaadata uue keele
kokku.
Tegelikult on üks, mis on üsna kerge ja see ei ole isegi
programmeerimiskeelt.
See on märgistuskeel, mis laseb meil tegelikult struktureerida ja teha veebilehti.
Ja kui sa midagi muud koos see--
või sa varsti, kui te pole veel.
Me ei kavatse kasutada Cascading Style Sheets või CSS, mis
on teist tüüpi keelt mille omadusi ja väärtusi
et läheb tehkem Asjad muuta värvi
ja asendit muuta ja selliseid lisasid.
Aga täna ja edasi, hakkame keskenduda võimsam keeles
tegelik programmeerimiskeeli nagu PHP.
>> Nii et PHP on olnud juba mõnda aega.
Ja nagu näete, see kavandati peamiselt
varakult tegeliku kasutada veebi arengut
ja tegelikult teeniva veebilehti.
Mis liiki funktsioone ei keel
vaja selleks, et muuta veebi lehti dünaamiliselt on?
>> Teisisõnu, kui soovite, et luua sisu dynamically-- nagu Facebook
Uudistevoog, mis on pidevalt muutuv, või kiirsõnumeid et pop-up aeg
et AEG_ nagu milline on tähtsaim osa funktsionaalsusest
vajate programmeerimiskeelt mis oleks teile dünaamiliselt
prindi uut teavet ekraanil?
>> Õpilane: Code.
DAVID J. Humala: Code.
OK.
Võtame seda.
Veidi täpsem.
Ma mõtlen, et me võiksime teha seda C, ausalt.
Oleks valu kaela.
Aga-- see kohustus?
>> Õpilane: Jah.
Muutujad, äkki?
DAVID J. Humala: muutujad.
OK, muidugi.
Muutujad võivad kindlasti aitab meid välja.
Ja isegi midagi lihtsamat.
Me kasutasime seda juba esimesest programm juba esimesel päeval
kui me tegelikult ütles "hello world".
>> Õpilane: Print.
>> DAVID J. Humala: Print, eks?
Trüki või printf sisse maailma C. Nii et kõik see aeg,
oleme olnud meie kõrvaldamise language-- C
aastal particular-- ja isegi Scratch, et asi, mis
võib tekitada tekstijadasid.
>> Noh, kui HTML, nagu me nägime eelmisel nädalal, on lihtsalt terve hunnik tekstijadasid
ehkki avatud sulgudes ja suletud sulgudes ja mingi riim
ja põhjus selle taga, ka siis võiksime tõesti
alustada teeniva veebilehti kas käsitsi kirjutades neid läbi gedit
või Microsoft Wordi, sest see matter-- me lihtsalt vaja tekstiredaktor.
>> Või võiksime kirjutada koodi, Sinu soovitus
varem, et oleks meile dünaamiliselt HTML,
ja see, mida me ei kavatse algust teha PHP
ja lõpuks isegi keeles nimetatakse JavaScript,
on ühes keeles, et tekitada teise.
Ja tõepoolest, see on see, mida Facebook ja paljud, paljud teised saidid
teha, et tegelikult dünaamiliselt näidata teile uut infot.
>> Nii et olgem algab see-- segasena otsin rida, vaid üks
see on tegelikult päris võimas.
Siiani oleme kasutanud C, mis on koostatud keeles.
Ja just kiire recap-- koostatud keel on see, mis iseloomulik?
Sa ilmselt vaja koostada ta, kuid mida see tähendab?
Jah?
>> Õpilane: See peab olema koondatud masina koodi.
>> DAVID J. Humala: OK.
See peab olema paigaldatud masinkoodiks.
Nii et te võtate oma lähtekoodi, mis on omamoodi inglise moodi.
Sa teisendada, et midagi madalamat,
mis lõppkokkuvõttes nimetatakse objekti code-- 0-ja 1-d.
Ja see on nende 0-ja 1-d, et CPU, nagu need, mida Intel,
tegelikult mõista.
>> Nüüd, PHP ja Python ja Ruby ja JavaScript ja kobarad muu
keeltes ei koguta keelt, kuid on tõlgendanud keeles
mis tähendab, et sa lihtsalt kirjutada neid ja siis sa ei muuta need 0-ja 1-d.
Sa mitte ainult anda siis, kui sisend kellegi programmi
nimetatakse tõlk.
Ja selle isiku Programm on kavandatud
mõista, mida iga ja Iga sümbol Python või PHP
või Ruby või mitmeid teistes keeltes tähendab.
>> Ja nii kõik, mida me vajame, on midagi sellist.
Nii et tegelikult ma lähen minna üle seadmetele
siin, just ühessegi vana akna ja me oleme
läheb minna ja avatud faili nimega, ütleme, tere.
Nüüd varem, ma oleks säästnud seda isegi juhul, kui faililaiend,
aga ma lähen tegema midagi veelgi lihtsam siin.
Ma lähen edasi minna ja alustada see fail on segasena süntaks.
Nii et "kasutaja, bin, env, keskkonna, php. "
>> See on lihtsalt üks rida koodi, mis on ütle oma operatsioonisüsteemi,
minna leida oma kohaliku keskkond iganes see on,
kus PHP on-- interpreter-- ja minna ja kasutada seda tõlk
tõlgendada järgmine kood.
Nüüd on see omamoodi kole omadus PHP.
Aga selles keeles, mis tahes kord, kui kirjutada PHP koodi
sa pead olema üks nendest inetu PHP silte piiritlemise alguses
Teie code-- <? php.
>> Aga allpool siin, ma ei saa nüüd midagi üsna lihtne, nagu printf hello komaga
maailma längkriipsu n lähedal quote lähedal sulgudes.
Ja siis lihtsalt hea meede, ma lähen
minna ja lähedal minu php tag siia
nii, et kõik välja kenasti päris trükitud.
>> Ja kui ma vajutan Salvesta gedit on tegelikult piisavalt tark
vaadata, et väga esimest rida ja mõistma, oh, sa oled kirjalikult PHP koodi.
Lubage mul süntaksi esiletõstu seda värvi
siin nii, et see tähistab läbi veidi rohkem.
Aga nüüd ma lähen alla minu terminalis.
Ma suumida.
>> See programm oli "tere" nii et ma lähen tegema dot kaldkriipsuga hello,
aga luba keelduda.
Ja bash.
Me tegelikult kuulnud, et asi paar nädalat tagasi
kontekstis Shellshock, üks neist vead.
>> Aga keelati oleme näinud enne, ehk erinevas kontekstis.
Kas keegi meelde tuletada, kuidas võite määrata midagi
kui luba ei anta nagu see on?
Mis on käsk, vähemalt?
>> Õpilane: Chmod.
DAVID J. Humala: Jah, chmod, muutmise režiimis faili.
Ja sa saad seda enam kasutada Käesoleva järgmisel nädalal hilisema probleemi
määratud.
Aga nüüd ma lähen muuta režiim ei tohi olla loetav,
aga anda igaühele executeability privileegid, võime
käivitada seda faili.
Ja ma lähen anda et faili tere.
>> Kui ma nüüd tegema dot kaldkriipsuga tere siseneda, siis Vaata, tegelikult mu programm, hello world.
Ja milline samm tegin ma selgelt jäta üldse?
Koostamine.
Nii et ma lihtsalt jooksin selle programmi lihtsalt.
>> Ja selgub, saate seda teha koos palju süntaks meenutab C.
Lubage mul minna tänase koodi mida ma panna minu vhost kataloog
siin, sest tegelikud põhjused me tuleme tagasi.
Ja ma lähen minema, oletame, tingimused 1.
>> Ja näete, siin esimene ja eelkõige on terve hulk kommentaare.
Aga see on tegelikult uuesti luua PHP
programmi tegime nädal üks nn tingimused 1.c
kui selleks elu on see programm
on ilmselt küsida kasutaja täisarv
ja seejärel teha mõned kohev analüüsi selle kohta, mille
te ütlete, kas see on positiivne või negatiivne või võrdne nulliga.
Ja ma toon selle üles ainult sellepärast, ehk välja arvatud üks väike detail,
see on eristamatu nii kaugel C.
>> Mis on üks omadus siin, et äkki hüppab
sind nagu veidi teistsugune?
Võib-olla kaks asja.
Jah?
>> Õpilane: Dollar märk n?
>> DAVID J. Humala: Jah.
Nii et dollari märk n on kohal.
Ja dollari märgid, nagu me näeme, ei kavatse
olema fix algusesse mis tahes muutuja PHP.
See on nii hea ja bad-- hea et see on omamoodi selge, mis on
muutuja, halb, et see on veel üks asi, mida kirjutad.
Ja seal on üks teine asi, mida me ei ole päris
näinud, vähemalt selle õigekirja. yeah?
>> Õpilane: Dialoog, Readline.
>> DAVID J. Humala: Dialoog, Readline.
Readline me ei näe iseenesest sisse C, kuigi on olemas midagi
sarnased, kuid me oleme kasutatakse getString, ja see on tema vaste.
Nii et kui ma lähen sinna kataloog, mis juhtub olema,
kui ma seletan natuke minu vhost Kataloog ja mu allikas kataloog,
ja ma minna ja teha dot kaldkriips conditions-- whoops-- dot kaldkriips
tingimused 1, näete jälle Samal issue-- loata keelatud.
>> Nii et lubage mul suumida ja teha chmod pluss x tingimustel, dot kaldkriipsuga tingimustes.
Sooviksin täisarv, siis 50.
Ja me võiks mängida seda mäng kogu päeva pikkune.
See saab käituda täpselt nagu ta tegi nädalas ühe.
>> OK, siis ei erine, välja arvatud mitte ainult, et väike natuke süntaks,
aga tipus, ma jälle oli see rida, mis
võimaldas mul luua midagi, mis näeb välja nagu C programmi nimega hello,
kutsunud tingimused 1.
Aga see ei ole 0 tema ja need, Ma täidesaatva otse.
See on selle asemel töötab see tõlk, kelle nimi
juhtub olema identne keeles.
Programm on kutsutud PHP, ja minu kood allpool joont üks on läinud seda.
>> Me saame seda teha veel üsna lihtne Näiteks meenutab midagi
tegime nädalat tagasi.
Jällegi, see on omamoodi suvalise tüki koodi
et ilmselt ei mis siis, kui sa jooksed ta?
Mis see trükkimineku, arvatavasti?
>> Nii et esialgu on line 16, see on ütlen x on nüüd 2, ilmselt.
% D on samad $ i printf.
Nõnda siis on cubing, dot, dot, dot, vastavalt 17.
Ja siis ühel joonel 18 ilmub helistada funktsioon Cubed.
Ja kus on Cubed määratleda?
>> Noh, tundub, vastavalt 25, nii et see pole veel kõik, mis erinevad.
Mul on mõned kommentaarid eespool , kuid enamasti,
see on üsna lihtne teisaldamise või ümberehitamiseks
alates C programmi PHP versioon.
Aga nüüd on paar erinevusi, et äkki peaks välja hüppama.
Mida muud on erinev, kuidas te võiksid kirjutada selle sama programmi C?
>> Õpilane: [kuuldamatu].
>> DAVID J. Humala: Ei ei prototüüp kuni top.
Nii PHP-- ja ausalt öeldes, Palju kaasaegseid languages--
on palju targemaks ja rohkem abivalmis kui C koostajad, et sa
panna funktsioon siin, võite panna funktsioon siin,
ja tõlk läheb teha teile kasuks lugemine
kogu faili enne kui ta otsustab et mõni funktsioon ei ole olemas.
Nii kena paranemist aastat hiljem.
Aga seal on ka midagi muidu erinev või puudub siin.
Jah?
>> Õpilane: [kuuldamatu].
DAVID J. Humala: Me ei pea tunnistada tüüpi muutujad,
nii et me näeme peagi, et on olemas eri liiki PHP,
aga sa ei pea nende määramist, mis samuti on nii häid kui halbu.
Ja seal on üks asi puudu.
>> Õpilane: Ei ole raamatukogudes.
>> DAVID J. Humala: Ei ole raamatukogudes.
OK, nii et see on kena.
Me saame palju rohkem karbist.
Nii et seal on tegelikult palju rohkem asju, kui ma arvasin olid erinevad.
Kuidas, kuidas tagasi saada?
Mis see on?
Ütle seda veelkord?
>> Õpilane: Pointer.
>> DAVID J. Humala: No suunanäitajaks.
OK, vähemalt selles näites, ei.
See on õiglane.
Nii et ei ole viiteid PHP tegelikult üldiselt.
On midagi, mida nimetatakse viited kuid me ei veedavad liiga palju aega seal.
Ja mis veel?
>> Õpilane: Main.
DAVID J. Humala: Main.
Minu jaoks oli see pisiasi Ma mõtlesin.
Pange tähele, seal ei ole peamine koht.
Sa lihtsalt hakake kirjutama koodi.
Ja see on tegelikult saab olema kasulik
kui me üleminek hetkeks tegelikult kasutades
sama keele veebipõhine programmeerimine, mis meil
ei taha olla vaid üks sisenemispunkti.
Me tahta on hunnik URL hunnik erinevaid faile
kõik võtmine kasutaja sisend ja toodangut.
>> Aga siin on väga ehmatavam Näiteks, et ma lubasin eelmine kord,
nimelt selles kaustas siin, õigekirjavead.
Nii et see fail speller, mida me ei kuluta liiga palju aega, on
sisuliselt porting-- P-O-R-T. See on lihtsalt sõna antud, kui, ütleme,
teil teisendada ühest keelest teise käsitsi tavaliselt.
>> See on teisaldamise PC versioon speller alates pset 5.
Ja ma põhiliselt püüdnud teisendada see rida-realt nii palju kui suudan.
Nii et kui teile meeldib selline asi, see tegelikult on väärt mingil hetkel
tõmmates neid mõlemaid üles külg pool ja nähes, mida on sama
ja mis on teistest erinev.
Aga nad on üsna darn sarnased.
Kui te mäletate, milline speller isegi tundus,
isegi kui te ei peame muutma seda faili
see on päris sarnased struktuurilt vaid paari
muutuste siin ja seal.
>> Nii et see on ainult öelda, et see on päris lihtne teisendada speller
C PHP.
Aga sõnastik, seal midagi veelgi selgem.
Lubage mul minna ja luua minu dictionary.php faili.
Nii et veidi teistsugune, kuna me nimetame seda .php asemel .c.
Sest see on PHP fail, ma do-- veidi annoyingly-- on
alustada faili php tag niimoodi.
Ja ma lähen edasi minna ja määratleda mõned funktsioonid.
Funktsioon nimega vaadata, mis on kavatseme ühesõnaga nagu enne.
Kuid see argument on läheb on dollari
kirjutada, sest me jällegi kasutades PHP.
Teine funktsioon dictionary.c oli koormus
ja ta võttis nime sõnastikku nii et ma saan selle funktsiooni valmis minema.
>> Veel üks dictionary.c oli mis?
Suurus oli üks nicest ones kell Vähemalt siis, kui te hoida teatud muutuja ümber.
nii suuruse lihtsalt on tagasi muutuv.
Ja siis oli maha laadida.
>> Nii oli neid neli funktsioonid probleem seatud 5
et teil on vaja rakendada koos mõned andmed konstruktsioon või konstruktsioonid.
Ma lubasin, et PHP, saame kuulutada
hash tabelit, näiteks kõik see kergemini.
Tegelikult, kui ma tahan, hash tabelis Ma lihtsalt lähen niimoodi
ja seal on minu hash tabelis.
Ja see on märkus, ehmatavam, et jätsime maha viimane kord.
Ja tead mis, kui ma tahtsin Muutuva suuruse, noh,
see pole veel kõik erine C,
aga ma lähen edasi minna ja seda teha.
Ja teate andmed ei ole tüüp.
Ja ma lähen hiljem tagasi ja tegelikult lisada mõned kommentaarid siin.
Aga koormus?
>> Kui dollari märk sõnastik on nimi minu faili
ja ma tegelikult tahan last sõnad selles tabelis nüüd,
Ma ei saa tegelikult teha midagi üsna lihtne.
One-- ja see on minorly annoying-- PHP,
siis pead määrama sees funktsiooni, kui teil
soovite juurdepääsu teatud globaalse muutuja, mis on määratletud väljaspool.
>> Aga see pole eriti huvitav kohe.
Veelgi enam huvitav on see iga ehitada mainisin viimast korda.
Ja selgub, et PHP on funktsioon nimega faili, mille eesmärk elus
on avada fail ja lugeda kõik selle ridade massiivi
ja anda need tagasi.
>> Kumb on öelda, mida ma teha saan sõnastikku et nüüd tõhusalt, kui ma kutsun faili
see saab anda mulle tagasi massiiv sõnadest failist.
See pole veel kõik, mis hea.
See on ikka veel joont sõnade midagi lineaarne.
Aga ma ei saa minna ja kinnitada, üle iga sõna, kasutades
et süntaks nägime korraks viimast korda.
Ja te näete seda rohkem tulemas pset.
>> Aga nüüd on mul loop iterating üle iga sõna sõnastikus.
Ja iga iteratsiooni, mäletate ma olen helistades praegune sõna "sõna".
Ja kõik see aega võtab, et pane sõna sõnastikku on
saab olema sõna vist "õige".
See on minu sisestada funktsiooni.
See on minu koormus funktsioon minu sõnastikku.
Nüüd on natuke petta, sest sa tead, mida, seal on tegelikult
längkriipsu n aasta lõpus sõnad et ma peaks ilmselt vabaneda,
aga see pole probleem, sest PHP on funktsioon nimega karbonaad, mis sõna otseses mõttes
karbonaadi välja üks märk päris lõpus.
Seega pole probleemi.
Me oleme läinud edasi ja tegelikult lühendada, et just see.
Ja nüüd ma peaks ilmselt jälgida suurus, nii et olgem vähemalt teha see--
suurus ++.
Mida ma teha saan, et kui varem.
Ja siis see on ilmselt läheb töötab just fine, et on tagasi tõsi.
Valmis.
Pset 5.
>> [NAER]
>> DAVID J. Humala: OK.
Me teeme seda uuesti järgmise pset ka.
Nii kuidas suurus?
Noh, see üks loodetavasti on umbes kui te ootaks viimast korda,
kuigi ma pean tegema see loll ülemaailmne asi.
See on lihtsalt artefakt alates Keele disain.
>> Aga kontroll on veidi põnevamaks.
Nii et kui ma möödunud aastal dollari kirjutama sõna, ma esimest korda
tahad olla juurdepääs et globaalse muutuja tabel.
Ja nüüd kui ma tahan vaadata, kas sõna on olemas,
Ma võin lihtsalt öelda, kas see on tõsi, et järgmine on määratud tabelis,
siis minna ja tagastamine tõsi; muud, tagastab false.
Valmis.
Teine pool pset 5.
>> Olgu, nii et jälle, ma olen lõigates mõned nurgad.
In õigluse, ma peaks ilmselt veeta paar sekundit veel
selle rakendamist.
Ja ma ilmselt ei tohiks pilgata kõik tunni paned pset nii palju.
Nii strtolower on funktsioon.
Midagi sarnast eksistentsialistliku C, vähemalt tähtedega
aga PHP on terve string versioon.
>> See läheb sundida kõik väiketähtedeks, mis mõned teist
oleks võinud teha õgvenda mida sa olid panna oma sõnastikku.
Ja nüüd saab seda teha C ka.
See on midagi pistmist PHP.
>> Kuid iga kord, kui on Loogiline seisukorras,
nagu midagi real 10 olemas, mis on ainult
läheb hinnata tõeseks või vale, ja teie kui muidu selgelt
on tagasi õige või vale, suutsin lihtsalt tõesti teha seda seksikam
ja lihtsalt teha midagi sellist.
Nii et seal on minu kontrolli funktsioon.
Parem, kui Boolean tagastab tõene või väär,
olgem lihtsalt tagasi seda kohe.
>> Ja seal on mõned muud tweaks Ma võiksin teha siin ja seal.
Load-- unload, muide, et on tehtud.
Pole midagi teha seal.
Kuna kõik mälu PHP ja paljudes teistes keeltes
juhitakse tegelikult teile.
Nii arvestades C, sest olete õppinud valulikult,
midagi malloc või calloc või RealLOC, pead sa vaba ise.
Kõike, mida fopen, pead kirjutamisel, nii et ressursid on lõpuks vabanenud
ja vahendeid, nagu Valgrind ei märgata ja ei saa kurta,
mis on hea sõita nendega.
>> Aga kindlasti ei tohi mõned saagi, eks?
Vastasel juhul me sellist raiskamist terve hunnik nädalat.
Nii et seal on kõik mitmel põhjusel miks me omamoodi seda trajektoori,
kuid on kompromiss.
Õigus, see on olnud temaatilised.
>> Mis võiks kompromiss siin liigub, C PHP?
Tundub nagu kõik võita seni arvatud natuke inetu siin või seal.
Jah.
Mis see on?
>> Õpilane: [kuuldamatu] mälu.
DAVID J. Humala: Speed.
OK.
Noh, minu kiirus oli päris kiire.
Õigus?
Kuid kiirus programmi täitmiseks?
OK, nii et see on õiglane punkt.
>> Nii et kui see juhtub, ma ette cued üles nii minu proovida lahendus, üks
Mul oli suurel pardal oli proovida põhinev lahendus,
ja mul on, et selle kataloogi siin.
Nii et ma ühel hetkel, ma ei saa minna ja käivitada seda King James Bible,
Enterin.
Ja see on loodetavasti õige rakendamise lõpus,
annab mulle aega kokku 0,38 sekundit, mis
üks mõnevõrra meelevaldne näide.
>> Ja kui ma nüüd minema selle teise terminali aknas
siin, kus ma esimest korda avatud gedit, las mul läheb tänane code-- mis jällegi
on selle kataloogi siin-- ja lubage mul minna ja joosta speller.
Nii lihtsalt peab olema selge, see on PHP versiooni.
Ma lihtsalt näitab peale selle siin.
>> Nii et kui ma teen speller on tilde CS50 Pset 5 tekstide King James, siseneda.
See on ikka kiirem kui kirjalikult see C, kuid kogu aeg
on teade, 0,93, samas minu C-põhine rakendamine oli 0,38.
Nii et see on mitte-triviaalne erinevus.
>> Ja see on ainult üks fail.
Kui sa olid kulgema kaks programmid võrreldes suur pardal
ja on terve hunnik sisendeid testitud, see oleks kindlasti tõusta.
Ja kui meil oli isegi suurem andmekogumid ka see oleks küündivad enam.
Nii et jah, makstes mingi hind kiirus on tõepoolest nii.
Mida veel?
Jah?
>> Õpilane: summa RAM kasutamine.
>> DAVID J. Humala: summa RAM kasutamine.
Nii et ma ei anna ühe sekundi arvasin kirjutamisel see PHP
versiooni, kui palju mälu olin kasutades.
Ma täiesti edasi lükata, et PHP ise ja kes kirjutas, et programmi.
Ja mis võiks olla OK, aga kui ma tegelikult tõesti
hoolivad pigistada nii palju tulemuslikkuse mu programmi või mu kodulehel
või välja iganes tööriist Ma hoone, võibolla
PHP, tõepoolest, ei ole õige keel.
>> Ja tegelikult, see on põhjus, miks Näiteks paljud web servers--
tegelik programmid teenida kuni web content--
ei ole kirjutatud PHP või Python või Ruby.
Need on kirjutatud, nagu saate nüüd teha pset 6
C nii, et saate pigistada iga natuke jõudlust lahti
ja tõesti teostada peeneteralise üle, mis on
läheb all kapuuts ja mitte lihtsalt võtta see
enesestmõistetavaks mõned suuremad tasandi andmete struktuuri.
>> Mõtle ju Kes PHP ellu
et mõiste hash table-- see on tegelikult rohkem
korralikult nimega assotsiatiivne array-- kas ta on aimu, millist
sisendite te ei kavatse olla laskmine struktuur?
Nii et ilmselt ei ole, eks?
See on üldine näitaja on arenduskeskkond, mis on
tingimusel, et igaüks, kes tahab seda kasutada, ja seda kindlasti see
ei saa optimeeritud lõppkokkuvõttes just seda, mida sa tahad teha.
>> Nii kaubandusega offs-- arengu ajal võiks erinevad, jõudlus võib erineda,
keerukus või mälukasutust erineda.
Ja mis siis leiad üha enam on see, et seal on
saab olema erinev vahendid kaubandust.
Ja tegelikult jaoks super enamus inimeste lõplik projekte selles klassis,
uskuge või mitte, C ei kavatse olema õiges keeles kasutada.
>> Ja tõepoolest, üks takeaways lõpuks iga klassi niimoodi
on sulle mõelda, noh, mida peaksite peatähelepanu
riiulil, kui soovite lahendada mõned probleemid.
Ja tõepoolest, me ületada selle silla isegi rohkem kui me vaatame rohkem keeli
isegi üle täna.
>> Nii et olgem üleminek nüüd võib-olla rohkem kursis kontekstis
kasutamise nagu PHP.
See on mõnevõrra levinud kasutada, käsurealt kirjalikult skripte
nagu mina tegin, aga see on palju, palju rohkem levinud.
Ja kavatseti kasutada faili kujul, mis tavaliselt lõpeb
aastal .php-- kuid see on ei prerequisite--
et ise luua veebi sisu.
>> Nii et lubage mul minna ja avada mõne näited I ette valmistada.
Ja need on tegelikult omamoodi tõsi jutte, et üks esimesi asju,
Ma kunagi tegin mina pärast lõpetamist CS50 ja võib-olla, ma arvan,
CS51 aastat tagasi on minu toakaaslane ja ma aitasid
joosta uustulnuk firmasisese spordiprogramm, mis ajal,
oli uustulnuk registreerimise erinevat sport, täites paberile,
nagu seda kutsuti, jalutamine üle õue Wigglesworth,
ja kukutades ta mõnes Proctor uks tilk.
Ja siis ta läheks läbi neid ja siis tegelikult saatke meile käsitsi
et meil on registreeritud mõne spordiala.
>> Nii selgelt, võimaluse arenguruumi.
Nendel päevadel, siis võiks pöörduda ainult Google Forms, kuid juba järgmisel päeval,
pidime tegelikult jõuda for-- see ei olnud isegi nii kaua ago-- jõuda
jaoks programmeerimine keel, mis ei olnud PHP.
Tol ajal oli see midagi, mida nimetatakse Perl,
mis on läinud moes alates.
Aga idee on sama.
>> Ja ma põhiliselt istusid proovida sadamasse läheb Perl versioonid PHP,
kuid täielikult loobumist, ei anna ei mõelnud esteetika veel.
Nii et siin on veebilehele.
See on fail.
Kui ma suumida, tema ilmselt nimetatakse froshim0.php
lihtsalt sellepärast, et see on meie esimene Näiteks selles seerias.
Ja teate, mis see on, mida tundub olema väga inetu HTML kujul
kuid vorm on huvitav sest see võimaldab
mulle anda kasutaja sisend brauseris.
>> Nüüd viimane kord, kui meil oli vorm, mis Kellega me esitada meie päringuparameeter,
järjekorda parameeter nagu seda kutsuti?
Nii et Google, eks?
Me oleme täiesti punted ideel mittemidagitegemise et sisend.
>> Aga täna alustame toodangut.
Ja käitumist ma näha siin esialgu on üsna triviaalne.
David, ma vaatan maha sugu siin öelda Matthews siin.
Ma ei taha olla kapten.
Ma lähen klõpsake Registreeru.
Ja teate, et URL on muutunud registreerida-0.php,
ja siis on see kole tekst siin.
Andsin ei mõelnud vormistuse see.
>> Aga mis on huvitav, on see, et kolm väärtused olid ilmselt sooritanud.
See on PHP omamoodi samaväärne printf--
eks näis, mida see tegelikult nimetatakse aastal bit-- et lihtsalt trükib välja
mida läks see.
Nii et see näitab, et sellisel kujul oli vähemalt kolm väljad see,
ja nägid mind ka need.
Üks oli minu nimi, üks oli sugu, üks oli ühiselamu.
Ja kapten isegi ei saanud saadeti server, sest ma ei kontrolli seda.
>> Nii et see tähendab ilmselt, kui saadate asju veebis
mitte ainult ei URL mõnikord change-- mõnikord see ei ole.
Tegelikult faili nime muuta, aga mis puudub URL
et me ei vaata viimast korda koos Google.
Jah?
>> Õpilane: No päringustringiga
>> DAVID J. Humala: Ei ole stringi.
Ei ole mingit küsimärki midagi.
Ei ole mingit küsimärki q võrdub kassid, kui eelmisel korral.
Ja seal on kindlasti mitte küsimärk nimi võrdub
David või ühiselamus võrdub Matthews seda siis, kui on, et kõik läheb?
>> Noh, lubage mul minna tagasi gedit siin ja avada esimest neist faile
minu vhost, kohalik host, avaliku Kataloog siin ja minema froshim0.
Nii selgub, et peaaegu kõik see lehekülg on lihtsalt HTML.
Ja see võib olla harjumatu teile, kuid varsti enam, et pset 6
ja pset 7 ja pset 8.
Kuid see on alles HTML leht.
>> Ja huvitav värk Tundub, et siin.
Vormi tag mille tegevus atribuut väärtus on registrisse 0.
Sellepärast, kui ma esitada Selleks läheb see, et faili.
Aga meetod on erinev today-- post.
Nii selgub seal vähemalt kaks meetodit veebis kasutada
et saata teavet alates brauseri server.
Saa asetab selle URL.
Post paneb see ka mujal.
Ja millal ja miks võiks sa tegelikult tahavad veebilehel
kasutada postitus siis selle asemel, kohta saada, just intuitiivselt?
Iga veebileht.
Milliseid andmeid tuleks edastada ainult järeldamise nüüd posti teel erinevalt
saada, kui oleme näinud Kahe erinevused?
Õpilane: [kuuldamatu] turvaline.
DAVID J. Humala: Kui soovite midagi peab olema tagatud.
Nii võite tippida parooli arvesse veebilehel, krediitkaardi
arvesse veebilehel oleks millist neist suboptimaalsest
kui brauser panna, et hinna sees URL.
Miks?
Sa näed seda, mis ei ole Tundub, et nii suur asi,
kuid koefitsiendid on teil üsna sageli kõndida arvutist eemal või kasutada arvuti
laborid, ja nii keegi teine ​​või isegi toakaaslane
võivad kergesti liikuda üles ja vaata et isiklikku teavet.
Kui saadate e-posti veebi kaudu, siis ilmselt
ei taha, et andmed lõpp üles URL samuti.
Ja nii seal on kõik mitmel põhjusel miks me võiksite panna siia.
Ja photos-- õige, ma ei saa isegi üsna kujutan ette, kuidas sa võtaks graafika,
nagu JPEG, ja pane see URL.
Sa võid seda teha.
On viise, mis kodeerib seda, kuid see on lihtsalt ei ole lihtne niimoodi.
>> Nii et registreerige end 0 on tegelikult väga underwhelming.
Kõik see räägib sõna otseses mõttes on see.
See prindib sees mõned HTML sildid järgmine.
Mul PHP tag siin pesitses sees pre tag.
"Enne" tähendab lihtsalt vormindatud teksti, mono reavahega, nagu kirjutusmasinal.
>> Printr on print rekursiivne funktsioon.
Ja siis on see Huvitav asi siin.
Ja me tuleme tagasi selle sest seal on teised,
kuid dollari märk alakriips post näib olevat
muutuja PHP, kus midagi saadate brauseri server
saab ladustada teile.
Ja me näeme, kuidas on see teave enne pikk.
>> Aga kõigepealt, lähme tagasi veidi teistsugune näide.
Läinud register-- või Pigem froshims1.php,
mis näeb välja veidi erinev.
Võtsin natuke rohkem pingutusi vormingu,
kuigi see on ikka päris kole.
Aga ma lähen edasi minna ja kirjuta "David" nüüd.
Mees.
Me vaadata "kapten" seekord.
Me teeme Matthews.
Ja registreerida.
>> Ja seekord ta ütleb, hm, tegelikult mitte.
Olgu, siis millised on registreerige 1?
Lubage mul minna avatud register 1 and-- hm.
Olgu, nii et see on Huvitav, ja see
on hüppelauaks nüüd poole rohkem huvitavaid programme.
>> Märka peal see fail PHP tag samuti mõned kommentaarid.
Ja need, nüüd, tähelepanu kõrvale nii et vaatame lihtsalt lahti saada neid märkusi
nagu nad on C. Ja Väidan Selle patakas kood kommentaar
et see kood on valideerimiseks esitamise.
>> Noh, selgub, et muutujaid nagu dollari märk
rõhutavad post on nimetatakse super globals.
Nad on nagu need eriline globaalsed muutujad
mis on just isotroopne praegu kättesaadavaks oma programmi.
Ja saate nurksulg märke et indeks neid ei kasuta numbrid
nagu 0, 1, 2, 3, kuid tegelikud sõnad.
>> Nii et sa ei mõtle dollari märk rõhutavad postituse omamoodi hash tabelit
et sa võiksid läbida võti, otsing sõna-nurksulgudes,
ja see läheb teile tagasi Väärtus, mille kasutaja tegelikult osutatakse.
PHP on funktsioon nimetatakse tühi, et lihtsalt
ütleb jah või ei, see muutuja on tühi või mitte.
Meil on neid topelt baarid, mis tähendab lihtsalt, või, nagu C.
>> Nii et tegelikult on see rida 4 on lihtsalt öeldes, kui kasutaja ei andnud nimi
või ei anna sugu või ei anda ühiselamus, edasi minna ja suunata teda
või tema kaudu seda joont siin.
Nii et see on veidi segasena, aga see lihtsalt tähendab sõna-sõnalt
minge tagasi selle asukoha, nii et see punts kasutaja
tagasi sinna, kus ta tuli.
Aga see on natuke maitsetu et ma kõva kodeeritud see.
>> Aga mis siis, kui see, kui tingimus ei hinnata, on tõsi?
Mis siis, kui kasutaja ei anna mulle oma oma nime ja ühiselamus ja sugu?
See, kui tingimus ei ole läheb hinnata, tõsi,
nii et ma ei tabanud väljumise vastavalt 7.
Mis siis juhtub?
Ja see on see, mis huvitav PHP.
>> Te saate tilk ja sealt PHP režiim, nii rääkida.
Kui sa tahad koodi käivitada, saate avada ja sulgeda PHP tag
ja pane kood seal, nagu ma olen teinud siin.
Niipea, kui sulgete PHP tag, server
lihtsalt läheb sülitama mida iganes sa panna sinna.
Ja tõepoolest, see oli osa algne kujundus PHP,
parem halb, oli see segunemisega kood ja juurdehindlus
keeles.
Ja me näeme, et see on väga kiiresti devolves segadus.
Ja nii me teeme parem kui Selle lõpuks, vaid lihtsalt
teate, millise kergusega ma olen tegelikult võimelised täitma teatud loogika.
>> Aga ikkagi natuke underwhelming.
Olgem avada versioon kaks Frosh IEd, mis
ilmselt esitab register2.php.
Nii et see fail on tegelikult läheb vaatama peaaegu sama.
Ma lähen minema Frosh raudteeinfrastruktuuri-2.
Aga Frosh IEd 2 Vaatame, mis juhtub.
>> David, klõpsake raadionuppu, kui seda nimetatakse; Matthews, ei ole kapten.
Registreeru.
Teie olete registreeritud.
Tegelikult mitte.
Oh oota, me lihtsalt ei et näiteks ei ole me?
Olgu, seista.
Me teeme kolm.
Ilmselgelt midagi on umbes juhtuda Gmail.
Me saame seal.
>> Nii Frosh IEd 3 näeb välja selline.
Ei erine.
Aga kui ma David, mees, Matthews ja Registreerimiseks see kolmas ja viimane versioon
väited, lihtsalt sa registreeritakse tõesti.
See on omamoodi ebaoluline.
Aga ma väita seda Kolmas ja viimane versioon
Olen nüüd taasloodi täpselt, mida mu toakaaslane ja ma ehitatud Frosh IEd
Programmi aastat tagasi.
Ja see oli lihtne.
Puudus andmebaasi ei Exceli tabelit.
Kuid mis veel tähtsam, ei olnud enam paber
sest see, mida me tegime selle programmiga oli tegelikult saatke Proctor, kes
sai varem need asjad kaudu vorme.
>> Ja ilmselt oleme programmeeritud seda nii et kui keegi registreerib,
John Harvard kontole kirju proctor-- või ise sel juhul
John Harvard-- järgmise text-- "See inimene lihtsalt registreeritud."
Nimi on David, kapten on tühi; sugu mees; ja ühiselamus, Matthews.
>> Mis seal juhtus?
Noh, faili alla siit ilmselt register3.php.
Ja kui ma avan selle, näete nii võimu kood niimoodi
ja ka ausalt öeldes ebakindlust süsteemi nagu email.
Olen just tõhusalt teeskles olla John Harvard järgmisel viisil.
>> Mul on avatud php tag kuni top, mis lihtsalt ütleb siin on mõned PHP koodi.
Alla siia, muutub seal on raamatukogude PHP.
Sa lihtsalt ei pea hulka header failid nii palju.
Sa saad rohkem köögivalamu, nii rääkida.
>> Aga seekord 4. reas, mina tahan erilist raamatukogu kutsus
PHP kohal, mis on midagi, mida saab installida tasuta paljudes süsteemides.
Siin ma kinnitamise esitamist ainult
kontrollides ei kasutajale anda minu nimi, sugu ja Dorm.
Ja kui on, siis laske käia ja algväärtustan saatja.
>> Sa ei mõtle seda kui rida koodi, mis lihtsalt jaotab.
See on nagu malloc, kuid see on natuke seksikam
aastal, et räägitakse mitte ainult malloc ja mõned üldised number.
Sa ütled mulle üks neist, anna mulle uus üks neist.
>> Ja kui olete programmeeritud Java või C ++ või teistes keeltes,
Te olete näinud seda.
Aga puudu see, kui harjumatu, see rida
lastavate dollari märk mail eriline struct nimetatakse
objekt, mis on sisseehitatud Kirjuta funktsionaalsust.
Ja tegelikult, teate jms süntaks.
>> See ei ole pointer, per se.
PHP lihtsalt kasutab sama süntaksit.
See rida ütleb kasutamine SMTP-- Simple Mail Transfer
Protokolli, mis on vaid protokoll, mida kasutatakse saata.
See on täpsustades kasutamine Harvardi SMTP server, mida
on kusagil siin ülikoolilinnak.
>> See ütleb, mida TCP port number rääkida,
ja ma arvasin, et läbi googling või paludes abi ootab.
Ja siis kuna Harvard kasutab mõningaid süsteemi turvalisuse mail server--
vähemalt krüptida liiklus ja sinu vahel see,
kuigi igaüks võib saata kuni it-- Ma lähen sisse lülitada TLS protokolli
hoida seda turvaliselt.
>> Aga see on koht, kus asjad natuke hirmutav.
Ma ei saa lihtsalt suvaliselt öelda, et olen jharvard,
ja ma ei saa lihtsalt suvaliselt kirjuta ennast siin.
Ja siis ma saan täpsustada objekti seda joont siin.
>> Ja see lihtsalt tundub kole, aga see on lihtsalt kamp ahel.
Selgub, PHP on super kasulik sümbol, nagu mõnes keeles, dot operaator,
mis lihtsalt sõna otseses mõttes konkateneerib string pärast string pärast string,
ja sa ei pea malloc või joonis välja kogu stringi pikkusena.
Sa lihtsalt teha.
Ja tõepoolest, sest ma concatenating kõik need asjad koos nende punktidega,
Sellepärast email I saatis tundus nagu ta seda tegi.
>> Ja siis lõpuks siin, saadan postiga.
Nii et kui see on vale, Ma lihtsalt suren,
mis on funktsioon, mis lihtsalt pildid ekraanil mõned veateate.
Aga see on tegelikult helistades Kirjuta funktsioon.
Vastasel juhul, kui kõik see ei õnnestu, suunab see mind siia tagasi.
>> Ja miks ma näen, et Ma registreeritud tõesti?
Noh, see juhtus siin.
Nii et ma toon selle üles paar põhjust.
>> Üks on see, kuidas täpselt, kui te ehitada mõned kodulehel lõplik projekt
või reaalses maailmas, see on kuidas sa saata e-posti meeldetuletusi
oma klientide või oma tellijatele.
See, kuidas sa saadad parooli meeldetuletus.
See, kuidas sa saadad inimesed sõnumeid et neil on uus Facebook
sõnum pooleli või midagi sellist.
>> Aga see ka räägib Asjaolu, et see võiks
on olnud väga hästi Davin või keegi teine.
Ja ma ütlen seda liiki naeratus, sest ma olen
päris kindel, mis toimub läbi mitu oma mõtetes sel hetkel.
Aga see on üks neid teha, kui ma sõnade, mitte minu tegude liiki asju,
sest see on triviaalne rajada kirju niimoodi.
Aga kui olete näinud või lugeda Crimson,
Hilise see on ka päris triviaalne inimestele
jälitada teatud päritolu.
Ja küsi mõnda aega, võib-olla kell CS50 lunch, kuidas ma esimest korda
tutvunud väga lähedalt peaaegu ed pardal aastaid
tagasi, kui ma avastasin kuidas internet toimib.
Seega igal case-- veidi pärast ed juhatus tegi.
>> Seega igal juhul on terve hunnik super globals,
nagu nad siin kutsutakse, millest üks me saw-- dollari märk alakriips post.
Seal on vastukaaluks nn get, mis on koht, kus asju URL
jõuab läheb.
Ja seal on terve hulk teisi, too-- istungil ja server ja küpsist.
Me tuleme tagasi cookie mõnel muul ajal
kuid istung on selline lahe sest õige now-- kuni now--
kõik, mida me oleme teinud koos veebibrauser on omamoodi kodakondsuseta, nii rääkida.
Ma ei klõpsa ümber, juurdepääs faile serveris, midagi
juhtub ekraanil, kuid siis ühendus sulgub.
Internet Explorer või Firefox ikoon peatub ketramine
ja sa lihtsalt näha, mida et veebileht sisaldab.
>> Nii HTTP on kodakondsuseta, et kui ta teeb seoses
saab mõned andmed, see on kõik.
Enam ei ole ühendus, erinevalt Skype, Erinevalt FaceTime erinevalt Gchati, mis
hoiab konstantset ühendus serveriga.
Veebis on põhimõtteliselt lahti, kuigi me
vaata enne pikka kuidas saame matkimine
nagu Facebook chat ja Gchati, pidavate illusion--
või tõesti säilitada pidev ühendus, mis kasutab
rohkem kaasaegset tehnoloogiat.
>> Aga kui ma lähen, ütleme, counter.php, see on veel üks lihtne näide,
kui me näeme, et praegu mõtleb Käisin kohapeal null korda.
Aga kui ma lihtsalt laadige leht uuesti, see kuidagi teab olin siin enne.
Kui ma uuesti jälle, teab, et ma olin siin enne.
Ja uuesti ja uuesti ja uuesti ja uuesti.
>> Nii et seal on mõned pluss-plussing toimub, kuid teade
väike asi keerleb kunagi nii lühiajaliselt kuni top ja siis katkestab,
nii see ei ole nagu mul on pidev Seoses minu aparaat.
Noh, kui ma minema counter.php, teate, kui lihtne see on.
Ma esimest korda helistada see eriline funktsioon, mis me varsti
alustavad iseenesestmõistetavaks kutsunud istungi algust.
Alusta istungil.
>> Ja istungil nüüdsest on lihtsalt saab olema ämber, nagu kaubanduskeskused
CART, kus saab panna väärtused ja sellist usaldada programmeerijana
et nad ei kavatse olla siin, kui et kasutaja on back-- teine
hiljem, tund aega hiljem, isegi aasta hiljem nii kaua, kui ta ei ole selge,
nende küpsiste kui me lõpuks näha.
Ja nüüd ma lihtsalt pean kui tingimus siin.
Nii et kui järgmine võti, nimetatakse counter, on seatud sees
Selle super global-- see hash tabel, kui te will-- kutsutud istungil
siis edasi minna ja haarata väärtus session-- mõelda
Selle ostupaigana cart-- ja hoidke seda
ajutisel muutuja nimega counter.
>> Vastasel juhul, kui selle väärtus counter oli ei seatud nn ostukorv,
lihtsalt initsialiseerida see 0.
Lõpuks siin, mine ja pane tagasi arvesse ostukärud või istungile
loenduri väärtus 1.
Nii selgub, et see erikonteinerile siin--
mis on jällegi üks neist on seotud massiivid, massiiv, et saate indeks
sõnadesse asemel numbers-- ei kao ka pärast kasutaja läheb ära.
Jällegi, ma lähen tagasi lehele.
See oli minut või nii.
Aga see mäletab, et ma olen siin olnud 19 korda enne.
See on minu 20. külastada.
>> Ja nii see läheb võti rakendades mis tahes veebisaidile, mis mäletab
et sa oled sisse loginud, et paned midagi sõnasõnaline oma ostukorvi
osta või et teil on sõnumite arvu pooleli.
Anytime soovite mäletan saamiseks
näeme, et PHP, nagu mitmeid teisi keeli,
annab meile illusioon riik kuigi, nagu te näete, on pset 6
kui sa üritad HTTP päringuid alates kliendi server, see on kõik.
Kui sa saad tagasi, et vastus, seal on midagi enamat
tulevad tagasi server vaikimisi.
Aga me näeme, kuidas töö ümber, et.
>> Noh nüüd, proovime puhastage see üles natuke.
Me oleme näinud vähe erinevaid näiteid seal.
Oh, ja kui panna, et Neile, kes teavad või võõras,
põhjusel, et Frosh IEd Näiteks läks
otsin tõesti inetu slightly-- hästi,
veel ugly-- veidi vähem kole küll endiselt kole
on, sest kui me vaatame lähtekoodi siin
tuleb välja, et mul on see ülaservas faili.
>> Selgub, et alglaadimise on üks paljudest vabalt saadaval raamatukogudes seal
et on olemas mitte programmeerimiskeele alati, kuid CSS või JavaScript
või HTML või mitmeid keeli.
>> Ja need inimesed siin-- algselt tuli välja
kohta Twitter-- lihtsalt terve hulk stiile.
See on tohutu faili siin, et keegi kirjutas,
või kellegi kirjutas aja jooksul, et määrab värvi ja vormingu
ja tühi-tähi, nii et ma ei saa liiki laenu oma süntaks
ja ei pea mõtlema, kuidas näha välja mu vorm.
See on ka minified nii et arvuti saab
seda mõista, kuid mitte tingimata inimene.
Nii et see on just see, miks stiliseerimine on muutunud.
>> Kuid olgem nüüd paremini teha poolest disaini,
sest kui me jääme maha see tee liiga pikk,
meie koodi läheb saada räpane ja segasem.
Nii et olgem keskenduda neid näiteid siin.
Viimane täna.
>> Nii et siin on super lihtne versioon 1.0 CS50 veebisaidil.
See on vaid lingid loengute ja õppekava,
ja see on, kasutades mis järjestamata loend tag-- UL silt, et me kasutasime viimast korda.
Ja kui tegelikult, kui ma avada View Page Source,
näete, et see on tõesti, tõesti lihtne HTML.
Ja tõepoolest, kuigi see on PHP fail all kapuuts,
see on ikka lihtsalt sülitada ainult HTML nüüd.
>> Nii et kui ma vajutan Loengud, me näeme seda juhtuda.
Ja kui ma vajutan nädal null, me näeme seda.
Ja kui ma vajutan Kolmapäev, me näeme seda.
Ja see ilmselt oli PDF slaidide sellest päevast.
Kõik, mida ma olen teinud, on seos ankrusildi selle URL siia.
>> Nii et see on ainult öelda, et see on päris lihtne versioon CS50 veebisaidil.
Vaatame, kuidas see ellu viia.
Kui ma minema mvc0 kataloogi me näeme mõned failid.
Üks on README, nii et kui Osa sellest on liiga kiire,
võid lihtsalt tuhnima rahulikumas hiljem.
Ja teate, siin on index.php failiga.
Selgub, et kui sa ise, inimese,
ei määra lõplikku nime URL veebiserver tavaliselt
järeldab mõned vaikenimetus teile.
Indeks dot midagi Üldiselt on vaikimisi.
>> Nii et miks hetk tagasi kui käisin selle URL siin
Võimalik et faili nime ei faili laiendamine, ei ole perioodi URL.
See lihtsalt teadsin, kuidagi võluväel otsima index.php.
See on lihtsalt konventsioon.
Võiks nimetada midagi.
>> Nii et kui ma nüüd minema index.php, näete
et indeed-- olgem vabaneda kommentaare
siin, sest seal on tõesti midagi huvitav it--
see on lihtsalt kõva kodeeritud HTML.
Nii et järjepidev, aga minu väide
et võite segada HTML ja PHP.
Ei ole mingit tegelikku programmeerimise loogika siin.
>> Ja ülejäänud failid on päris palju lihtsalt ebahuvitav.
See on lihtsalt kodeeritud nädal üks siin nädal üks m ja nädalas üks w,
esmaspäeval ja kolmapäeval.
Ja siis, kui ma avada nädal null, teate see on peaaegu identsed.
>> Ja see on omamoodi võti Buffee.
Pange tähele, kuidas üleliigne see on.
Neid faile vaevalt muuta, ja veel ma tõmbas üks neist copy / paste töökohti
kus võtsin ühe file-- arvatavasti nädalal zero-- kopeerinud
kui nädal üks tuli ümber, ja väänatud mõned väärtused.
Me peaksime tõenäoliselt võimalik teha paremini kui see.
>> Nii et lähme tagasi üles MVC ja mine versiooni üks.
Ja teate, et mul on mõned failid, sest mida
oli tavaline, et kõik need failid lihtsalt Praegu ago-- kui ma lähen tagasi versioon 0,
lähme tagasi indeksi ja lihtsalt postulate--
kui ma vabaneda comments-- milline osa see leht
on arvatavasti iga üks minu faile?
Lihtsalt kutsume seda välja.
Millised liinid on dubleeritud arvatavasti üle kõik need lehed?
Jah?
>> Õpilane: [kuuldamatu].
>> DAVID J. Humala: 1 kuni 9.
Jah, absoluutselt.
1 kuni 9, välja arvatud ehk 8 muudab natuke sest CS50
saab loenguid või nädal null või midagi.
Kuid peaaegu identsed.
Nii et kõik see värk on lihtsalt liiki kopeerida ja kleepida.
Ja seal on paar Teistel liinidel ma ei mõtle
kohta, mis on ilmselt identne üle kõik failid.
>> Õpilane: 12 ja 13.
DAVID J. Humala: Jah.
Muidugi, 12, 13 ja 14 ilmselt, lihtsalt sellepärast, et huvitav värk
toimub liinidel 11 ja 10, nii tundub.
Nii et vaatame, versioon 1, mis püüab parandada seda.
Versioonis 1 nimetatud MVC example-- jagame selgitada, mida MVC vahenditega moment--
kui ma minema indeks, seda liiki tundub veidi segane praegu.
See ei ole päris nii lihtne kui varem.
>> Aga kui hakkate lugege seda tähelepanelikult, see on
üsna otsekohene, mida ta teeb.
Ilmselt liinile 1 ja rida 8 asendanud
kõik asju sa lihtsalt identified-- kuigi lihtsalt hea meede,
Jätsin ULS seal igaks juhuks mõned päeva jooksul ei ole nimekiri asjadest.
Ja seda nõuavad on selline nagu nael lisada C. koopiad ja pastad
sisu efektiivselt siin sellesse faili.
>> Nii header.php, kui võiks järeldada tema nimi,
läheb päises lehel.
See on omamoodi orvuks siin.
See on ainult ülevalt, vaid enam ei ole mingit sisu allpool.
>> Ja kui ma vaatan jalus vahepeal mis oli muu faili mentioned--
see on isegi vähem huvitav, kuid jällegi, see on tavaline, et kõike.
Nii et see on jalus.
See on päises.
See on fail, mis on muutes, nii et miks mitte
proovige faktori välja ühitatud Nende kaks rida siin?
>> Kuid me ei puhasta seda kuni veidi kaugemale.
Ma lähen edasi minna ja avada versioon kaks, kus
me näeme, et seal on uus fail, helpers.php.
Eks me näe, mis see on praegu.
Lähme indeks, kuna sisenemispunkti nagu enne.
>> Ja nüüd teate ma nõudes helpers.php, ei või jaluse.
Aga abilised on selline nagu helpers.c ja helpers.h alates pset 2
või pset 3 ammu, kui sa tegelikult ei otsi ja leia selle pset,
ja siis tuli kõik oma kood sorteerimine ja otsides eraldi failis.
See, mis siin toimub.
>> Ja nüüd joon 3 tundub veidi erinev.
Ja see on vaid üks rida.
Et muuta see veelgi selge, ma võiks lihtsalt
ei see on stiililiselt kooskõlas kõik muu oleme teinud.
Aga see ei ole tegelikult muutes funktsionaalsust.
See on lihtsalt üks rida tõeline koodi.
>> Ilmselt seal on funktsioon kuskil nimetatakse muuda päis,
ja see on koht, kus asjad saada päris võimas.
Pange tähele, et sees tema sulgudes on see, mida teised tükk süntaks?
See on ilmselt natuke raske öelda, kuid teate there's-- Ma panen mõned valge
ruum.
Seal on nurksulgudes.
>> Ja nurksulgudes nägime natuke tagasi kontekstis assotsiatiivne massiivid
mis on jällegi, nagu räsitabeli.
Ja kui te nüüd arvate, et C, järjekord failina funktsiooni
peab alati olema sama.
Te peate meeles pidama, mida tellida on-- x, y, z või z, y, x-ist
ja sa pead alati andma neile samas järjekorras või vaadata neid
kui olete unustanud.
>> Aga see tundub olevat nutikas viis läbimise suvaline põhiväärtus
paari, mille pealkiri on nimi argumendile, antud juhul
ja CS50 on oma väärtus.
Ja asjaolu, et mul on need nurksulud
siin tähendab, et suutsin Samuti liigu midagi
nagu nädalas on 1 või 0, 2 või 3.
Nii et me oleme parameetritega Selle funktsiooni sellisel viisil
et see võib võtta mitu sisendit, kuid nüüd on see lihtsalt üks.
>> Kui ma nüüd minema helpers.php, teate, mida ta teeb.
See on natuke Uute funktsioonide,
aga praegu lihtsalt võtta usu, et see on
süntaks, kellega määratleda funktsiooni PHP.
Sa sõna otseses mõttes öelda funktsiooni.
Sa ei täpsustata tagasi kirjuta, ja see on kooskõlas
koos muutuva eelnevalt detailselt kui sa tõesti ei tugevalt kirjutad.
>> See lihtsalt täpsustab et vaikimisi see
võtab assotsiatiivne massiivi argumendina.
Ja tead mis?
Kui kasutaja ei liigu üks aastal, eeldame vaikimisi väärtus.
>> See on omadus, et C ei ole meile, mis on kena, sest nüüd
andmed, isegi kui ei anna see midagi,
läheb massiivi vaid tühja.
Ja kui kõrvale, ekstrakt lihtsalt teeb midagi funky
kus ta võtab kõik võtmed sellest assotsiatiivne massiiv, kõik asjad
sa võiksid panna nurksulgudesse ja loob muutujad läbi neist
nii et saame lõpuks on juurdepääs neile footet.php ja header.php.
See on pisut abstraktne, seega lubage mul rõhutada seda.
>> In index.php, teate, et ma olen möödaminnes põhiväärtus paari pealkiri
mille väärtus on CS50.
Kui ma nüüd vaadata helpers.php, märgata, et RenderHeader
on kaevandavate et andmed, mida ma möödaminnes aastal, ja siis nõuavad header.php.
Mida ma olen teinud, on omamoodi vaese mehe rakendamise nüüd on järgmine.
>> Kui ma avada header.php, teate, et ma olen enam raske
kodeeritud sõna CS50 selles päisefailist.
Ma panin selle küll atrociously nimega funktsiooni, HTML eriline tähemärki,
sinna.
Aga teate, mis ma olen teinud.
Mul on avatud HTML.
Siis on avatud pea ja avatud pealkiri.
>> Ja siis seestpoolt pealkiri avatud ja lähedal sildid, mul on natuke PHP koodi.
Ja see on tore, kuid süntaks, mis tähendab lihtsalt kaja välja.
Ta sõna otseses mõttes tähendab see-- Kaja following--
kuid see on seksikam kirjutada.
Echo välja pealkiri mis on olnud möödunud aastal.
>> Aga mis sa arvad HTML erilist char on kõike,
eriti kui teil on mõned enne HTML kogemus?
Mis tegelased võiksid olla ohtlik läbida lehele
kuhu dünaamiliselt tekitama veebilehe koodi nagu see on?
Lubage mul minna seda faili versioon kaks, ja vaata, kui ma ei saa esile kutsuda seda.
>> Version kaks on see.
Ja teate kõik on hea, toimib hästi.
Aga arvan, et ma minema index.php ja Ma täpsustada, et pealkiri minu leheküljel
ei CS50.
See on avatud sulg script alert hello world lähedal ülakoma,
Lõpusulg, semikoolon, avatud klambri kaldkriipsuga skripti.
>> Script, kui jagame lõpuks näha, on tag
et saate kasutada teise programmeerimiskeelt nimega
JavaScript sees veebilehele.
Ja nüüd teate loogika siin.
Siin on võti nimega pealkiri.
Siin on see hull pikk väärtus praegu.
>> Aga kui ma lähen abilised lehel- või pigem päises lehel
Ma kutsun seda funktsiooni selle pealkirja esimene.
Nii et kui ma nüüd uuesti see leht, ma näha seda, mis tundub naeruväärne,
kuid see on ohutu.
See lihtsalt tundub rumal.
>> Aga oletame asemel Olin unustanud selle.
Ja Mark mu sõnu, nullist erinev number sa ei unusta seda teha
ja saad mõned töökas õpilane või sõber tulemas
Teile CS50 õiglane või anonüümselt öösel poking ümber oma veebilehel
ja põhiliselt süstivate koodi unbeknownst sa saidile
kuidagi.
>> Sest kui ma lihtsalt sülitada välja pealkiri siin ja pealkiri
there-- hästi, kui pealkiri sõna-sõnalt näeb välja selline ja PHP
keele, mis võib sülitada välja teistes keeltes teksti,
see on sõna otseses mõttes läheb asendada see silt,
muidugi, mida panin mujal.
>> Nii et kui ma nüüd minema siit ja uuesti pärast tühistades need ohutusmehhanismidest,
nüüd on mul hello world siin.
Nüüd, pole kõik nii suur tegelema, aga sa võiksid teha midagi
veidi pahatahtlik siin, nagu seal
muu tags-- nagu me näeme, kui me kulutame rohkem aega JavaScript-- nagu asukoht
dot href saab, tsiteerida, lõppeb, HTTP business.com, kuid vastupidine
alates teisel päeval.
Ja nüüd saab indutseerida web leht tegelikult minna kohe
Selle veebilehe siin.
>> Ja tegelikult, ma ei taha isegi minna business.com
sest ma ei taha teada, mis see on.
Aga ka see käivitab koodi süstida sellel lehel.
Nii et see on ainult öelda, et kuigi me kasutusele super varakult mõned
Nende keerukamate struktuuride, see on kõik poole lõpuks hoolitsedes
et kood ei ole kasutatavad.
>> Nüüd kolmas versioon siit.
Läheb veidi Kasvataja.
Ma ei ole tõesti like-- anal pool mind
imestasin veidi pahane Asjaolu, et mul oli funktsioon nimega
RenderHeader ja RenderFooter mis olid peaaegu identsed.
Nii et see tekkis mulle, miks ei Ma parameterize neid funktsioone
arvesse vaid üks nn muuda, on see võtta teine ​​argument
nagu nimi malli lõpliku et render-- kas päis või jalus?
Ja siis soovi, kui ma tahan läbida mõned põhiväärtus paari
nagu mina tiitli eest header kuid mitte jalus,
Ma võiksin seda teha.
>> Ja nii nüüd kui ma minema helpers.php, see natuke keerulisemaks.
Ja ma laine mu käed üksikasju, kuid see on vaid üks funktsioon.
Nii et see samm parema disainiga.
>> Me ei saa võtta see üks samm edasi.
Kui ma minema minu neljas versioon sellest, märkate nüüd
et ma teen midagi veelgi liiki segasena.
Ja ma tean, et see on palju neelavad korraga
aga me lihtsalt selline puhastamise asju.
Nüüd ma panen minu kaastöölisi faili kausta nimega
includes-- lihtsalt suvaline nimi, kus ma tahan panna asjad
et ma tahan include-- ja seejärel ülejäänud seda sama.
>> Aga kui ma vaatan nüüd gedit, teate, et ma olen saanud lahti
kõigi nende teiste faile ja ma olen liikus neid näiteks võtta siin.
Ja siis malle, Mul on see siin.
Ja nii see kõik on nüüd poole samm kasutada palju parem disain muster.
Ja me oleme väga kiiresti läheb minema
PHP vaikimisi funktsionaalsust, mis alustasime siin,
kus sa lihtsalt segada PHP, ja HTML ja CSS,
ja sa lihtsalt sülitada ja sa minna oma teed.
Ta ei kavatse olla väga hooldatav.
Just nagu C, alustasime Mitme faili ja mitmeid funktsioone
ja faktooring asju, mis välja.
Me teeme sama siin.
Ja tõepoolest, in viies ja viimane versioon siit, ma tegin üks teine ​​asi.
Võite isegi dot dot, mis jälle on lihtsalt ülemkataloogi.
Et olla veelgi turvateadlikus, sest kui ma vaatan kuulamine
siin viies ja viimane versioon, teade et mul on üks kataloog siin kutsus
avaliku ja seejärel samal tasemel, kui nii võib öelda,
Mul on ja mallid ja siis see tekstifaili readme.
>> Ja põhjus, miks ma olen struktureeritud see meeldib see-- ja nii palju web
võõrustajad, eriti need 5 $ kuu ones või $ 10 kuu ones,
kui olete kunagi olnud üks nendest services-- mida nii paljud neist
on nad lihtsalt ootavad teid pane kõiki Teie failid ühte kataloogi
nagu me tegime juba koos see kõige esimene näide.
>> Aga niipea, kui hakkate hoone rohkem keerukamaid saite, mis lihtsalt salvestada
andmed hoolid ja failid hoolivad, tegelikult korraldamine asjad
õigesti ja rohkem turvalisust teadvuse meeles saab
hakkame kaitsma vastu kõik sõbrad
et sul on kas või väljaspool seda klassi, kes
niipea kui hakata programme ise veebis
lähed alustada korjamine teid ja neid.
>> Ja nii me vaatame lõpuks on see disain.
See on lihtsalt pilt mis kujutab järgmine.
Me läheme panna kõik meie programmeerimise loogikat ühe või enam faili,
ja me läheme lihtsalt alustada kutsudes neid kontrollereid.
See, kui ajud Meie veebilehed tegelikult on.
Siis me ei kavatse on vaated ja seisukohad
on sama lihtne kui lihtsalt eraldi files-- kutsus malle, tihti.
Nad lihtsalt on esteetika minu leheküljel
mida ma tahan lehekülje otsima like-- värvid ja paigutus
ja seisukohtade kõik muutujad.
>> Ja siis veel huvitav et me lõpuks saada
on mudel, mis saab olema lihtsalt sõna me laksu muude tehnoloogiate
et meil tuua pilt, nagu tegelik andmebaasid
nii et kui sa tahad info salvestamiseks,
sa ei saa lihtsalt saata e-posti Teie Proctor või ise,
sa tegelikult seda säilitada andmebaasis kasutades teises keeles tuntud kui SQL.
Ja nii me jätan täna siin ja korja see kolmapäeval
ja tutvustada andmebaaside siis.
>> [Muusika mängimine]