[Muzikos grojimo] 

David J. Malan: Gerai. Tai CS50. Tai aštuonių savaitę pradžia. Ir jūs tikriausiai žinote, kad mes nerašomas Paskutinį kartą žiūri į naują kalbą visai. Tiesą sakant, tai, kas yra gana lengvas ir tai nėra net programavimo kalba. Tai žymėjimo kalba, kuri leidžia mums realiai susisteminti ir padaryti tinklalapius. Ir kai jums ką nors kita kartu su this-- ar jums greitai bus, jei Jūs dar neturite. Mes ketiname naudoti Cascading Stilių lentelės arba CSS, kuris yra dar vienas kalbos tipas su savybėmis ir vertybėmis kad ketina darykime Dalykų, pavyzdžiui, pakeisti spalvą ir pakeisti padėtį ir šie tweaks rūšių. Bet šiandien ir pirmyn, mes pradedame sutelkti dėmesį į daugiau galingas kalbomis, Faktiniai programavimo kalbas kaip PHP. 

Taigi PHP gyvuoja jau kurį laiką. Ir kaip pamatysite, kad buvo sukurta pirma anksti kalbėti apie faktinį naudoti interneto svetainių kūrimas ir tikrai kurti tinklalapius. Taigi, kas rūšių savybės daro kalbą reikia norint padaryti žiniatinklį puslapiai dinamiškai su juo? 

Kitaip tariant, jei norite sukurti turinys dynamically-- kaip "Facebook" Newsfeed, kuri nuolat keičiasi, arba tiesioginių pranešimų, kad pop-up laikas nuo į LAIKĄ_ kaip kas raktas gabalas funkcionalumą jums reikia programavimo kalba kad bus jums dinamiškai spausdinti į naują informaciją ekrane? 

STUDENTŲ: Kodas. David J. Malan: Kodas. Gerai. Mes priimsime, kad. Šiek tiek daugiau tikslios. Aš turiu galvoje, mes galime padaryti tai su C, tiesą sakant. Būtų kaklo skausmas. But-- šis įsipareigojimas? 

STUDENTŲ: Taip. Kintamieji, gal? David J. Malan: Kintamieji. Gerai, tikrai. Kintamieji tikrai gali padėti mums iš. Ir net kažkas paprasčiau. Mes ją naudoti pats pirmas programa labai pirmą dieną kai mes iš tikrųjų pasakė: "hello world". 

STUDENTŲ: Spausdinti. 

David J. Malan: Spausdina, tiesa? Spausdinti arba printf į pasaulis C. Taigi, visi šiuo metu, mes jau ne mūsų šalinimo language-- C, į particular-- ir net Momentinė tuo klausimu, kad gali generuoti teksto eilutes. 

Na, jei HTML, kaip matėme praeitą savaitę, yra tiesiog visa krūva teksto eilutes nors ir su atviromis skliausteliuose ir uždarytas gembės ir kai rimas natūra ir viso to slypi, gerai, mes tikrai galėjo pradėti generuoti tinklalapius arba rankiniu budu rasydami juos į gedit arba "Microsoft Word", "už tai matter-- mes tiesiog reikia teksto redaktorių. 

Ar mes galime rašyti kodą, Jūsų pasiūlymas anksčiau, kad leistų mums dinamiškai generuoja HTML, ir tai, ką mes ketiname pradėti daryti su PHP ir galiausiai net su kalba vadinama JavaScript, yra naudoti vieną kalbą generuoti kitą. Ir iš tiesų, tai, ką "Facebook" ir daug, daug kitų svetainių padaryti, kad iš tikrųjų dinamiškai rodyti naują informaciją Jums. 

Taigi pradėkime su this-- A paslaptingas ieško linija, tačiau vienas kad tikrai gana galingas. Iki šiol mes buvome naudojant C, kuri yra sudarytojai kalba. Ir tik greitai recap-- sudarytas kalba yra kas charakteristika? Jūs akivaizdžiai reikia surinkti tai, bet ką tai reiškia? Taip? 

STUDENTŲ: Reikia būti susirinko į mašininį kodą. 

David J. Malan: Gerai. Reikia surinkti į mašininį kodą. Taigi pasiimti kodą, kuris yra tarsi anglų-kaip. Konvertuoti, kad į kažkas žemesnio lygio, kuris galiausiai paragino Objektas code-- 0 "ir 1-aisiais. Ir tai tie 0 "ir 1 s, kad CPU, kaip tie, kurie pagaminti iš "Intel", iš tikrųjų suprasti. 

Dabar, PHP ir Python ir Ruby ir JavaScript ir kekių kita kalbos sudaromi ne kalbos, bet aiškinama kalbas, kuris reiškia, kad jūs tiesiog įrašykite juos ir tada Jūs neturite paversti juos 0 "ir 1-aisiais. Jūs, o ne tiesiog teikti tada kaip įėjimas į kažkieno programos, vadinamas vertėjas. Ir kad asmens Programa buvo sukurta suprasti, ką kiekvienas ir kiekvienas simbolis Python ar PHP arba Ruby ar bet skaičius kitos kalbos reiškia. 

Ir taip visi mes turime yra kažkas panašaus į tai. Taigi iš tikrųjų, aš ruošiuosi pereiti prie prietaiso čia, tiesiog į bet senas langas, ir mes ketina eiti į priekį ir atidaryti failas, vadinamas, sako, labas. Dabar jau aš galėtų išgelbėti tai net ir su plėtiniu, bet aš ruošiuosi daryti kažkas netgi paprastesnis čia. Aš ruošiuosi eiti į priekį ir pradėti Šis failas su šios paslaptingas sintaksė. Taigi "vartotojas, bin, env, už aplinką, php. 

Tai tiesiog viena eilutė kodo tai norėčiau papasakoti savo operacinę sistemą, eiti ieškoti savo vietos aplinka kas tai bebūtų, kur PHP is-- į interpreter-- ir eiti į priekį ir naudoti šį vertėją interpretuoti šį kodą. Dabar, tai yra natūra negraži bruožas PHP. Bet šia kalba, bet laikas rašote PHP kodas, Jums reikia turėti vieną iš šių negraži PHP žymės žyminčių pradžią Jūsų code-- Php. 

Bet toliau čia, aš dabar galiu padaryti kažką gana paprastas, kaip printf labas kablelis pasaulis Backslash n arti citata netoli įterptinys. Ir tada tiesiog geras Priemonė, aš ruošiuosi eiti į priekį ir arti mano php tegus per čia Tam, kad viskas atrodo gražiai gana spausdinti. 

Ir kaip tik aš spustelėkite Įrašyti, gedit yra pakankamai faktiškai protingas ieškoti tuo pat pirmos linijos ir suvokti, oi, rašote PHP kodą. Leiskite man sintaksės išryškinimas ji su spalvų čia taip, kad ji stovi iš šiek tiek daugiau. Bet dabar aš ruošiuosi eiti žemyn mano terminalo lange. Aš priartinti. 

Ši programa buvo pavadinta "labas" todėl aš ruošiuosi padaryti dot pasviru brūkšniu Sveiki, bet Permission denied. Bash. Mes iš tikrųjų išgirdo apie tai dalykas pora savaičių atgal į Shellshock kontekste vienas iš tų klaidų. 

Bet Permission denied matėme anksčiau, gal kitame kontekste. Ar kas nors prisimena, kaip galite nustatyti kažką negavus leidimo yra uždraustas kaip šis? Kas komanda, bent? 

STUDENTŲ: Chmod. David J. Malan: Taip, chmod, keičiant failo režimą. Ir jūs gausite dar naudojamas tai kitą savaitę su paskesniu problemos nustatyti. Bet dabar, aš norėčiau pakeisti režimas negali būti įskaitomi, bet visiems suteikti executeability Privilegijos, gebėjimas paleisti šį failą. Ir aš ruošiuosi priskirti kad į bylą labas. 

Jeigu aš dabar daryti dot pasviru brūkšniu labas įvesti, jus matyti, iš tiesų, mano programa, hello world. Ir kas žingsnis aš aiškiai praleisti visiškai? Surinkimas. Taigi aš tiesiog pritrūko šią programą labai paprasta. 

Ir paaiškėja, jog tai gali padaryti su Sintaksės daug primenantis C. Leiskite man eiti į šiandienos kodu aš įdėti į mano VHOST kataloge čia realių priežasčių mes grįžti. Ir aš ruošiuosi eiti į, tarkim, sąlygos 1. 

Ir jūs pamatysite, čia pirmiausia ir svarbiausia, visa krūva komentarus. Bet iš tikrųjų tai yra naujo kūrimas PHP iš programos, mes padarėme savaitės vienas vadinamas sąlygos 1.c kur į paskirties gyvenimas šią programą matyt paklausti už sveikosios vartotojas ir tada daryti kai purus analizė apie tai, pagal kurią jūs sakote, jei ji teigiama, arba neigiama arba lygi nuliui. Ir aš tai įgyvendinti iki tik todėl, išskyrus galbūt vieną detalę, tai nesiskiria taip toli nuo C 

Kas vienas požymis čia gal šokinėja ne jums kaip šiek tiek kitoks? Gal du dalykai. Taip? 

STUDENTŲ: doleris ženklas n? 

David J. Malan: Taip. Taigi doleris ženklas n yra. Ir Dolerio ženklai, kaip matysime, vyksta būti nustatyti į pradžią bet PHP kintamąjį. Tai gera ir bad-- geras kad ji tarsi akivaizdus kas kintamasis, blogai, kad tai Dar vienas dalykas, kurį reikia įvesti. Ir ten vienas kitas dalykas, mes turime ne visai matyti, bent jau šio rašybos. Yeah? 

STUDENTŲ: readline. 

David J. Malan: readline. Readline nematėme, per se C, nors egzistuoja kažkas panašus, tačiau mes naudojamas getstring, ir tai yra jo atitikmuo. Taigi, jei aš einu į šią katalogas, kuriame būna, kad, kaip aš paaiškinti tam mano VHOST bit katalogas ir mano šaltinis katalogas, ir aš eiti į priekį ir daryti dot įstrižas brūkšnys conditions-- whoops-- dot velniop sąlygos 1, pamatysite, vėlgi, pats issue-- Permission denied. 

Taigi leiskite man padidinti ir padaryti chmod pliuso x sąlygomis, DOT slash sąlygomis. Norėčiau sveikasis, prašome 50. Ir mes galime žaisti šį žaidimas visą dieną. Jis ketina elgtis tiksliai kaip tai padarė per savaitę vieną. 

Gerai, kad ne visi, kad, išskyrus atvejus, ne tik, kad šiek tiek tiek sintaksės, bet viršuje, aš vėl turėjo šią liniją, kuri leido man sukurti kažką, atrodo C programa, vadinama Sveiki, vadinami sąlygos 1. Bet tai ne 0 "ir tie, Aš vykdant tiesiogiai. Jis vietoj veikia tai interpretatorius, kurio vardas atsitinka būti identiška kalba. Programa vadinama PHP, ir mano kodas Toliau eilutėje vienas yra perduodama į jį. 

Mes galime padaryti dar gana paprasta pavyzdys, primenantis kažką mes padarėme savaites. Vėlgi, tai yra rūšiuoti savavališkas riekė kodą kad, matyt, daro ką paleidus ji? Kas tai vyksta spausdinti, matyt? 

Taigi iš pradžių eilutėje 16, tai sakys X dabar 2, tikriausiai. % D yra tas pats kaip už $ i printf. Taigi jis cubing, taškas, dot, dot, atsižvelgiant 17. Ir tada linija 18 pasirodo skambinti funkcija kubeliais. Ir kur yra Kuba apibrėžta? 

Na, atrodo, atitinka 25, kad dar ne viskas, kad skiriasi. Aš turiu keletą pastabų aukščiau ji, bet didžiąja dalimi, tai gana paprasta angų arba konversija iš C programą su PHP versija. Bet dabar yra apie pora skirtumai, kad gal reikėtų iššokti. Ką dar skiriasi apie tai, kaip gali rašyti tą patį programą C? 

STUDENTŲ: [nesigirdi]. 

David J. Malan: Yra ne prototipas iki aukščiausio. Taigi PHP-- ir atvirai, Daug šiuolaikinių languages-- Yra daug protingesni ir labiau naudinga nei C kompiliatorių, nes jums galite įdėti funkciją čia, galite įdėti funkciją žemyn čia, ir vertėjas vyksta padaryti jums skaitymo palankumą Visa byla prieš priimant sprendimą funkcija, kad kai kurie neegzistuoja. So nice patobulinimai metų. Bet yra taip pat kažkas kitas kitoks ar visai čia. Taip? 

STUDENTŲ: [nesigirdi]. David J. Malan: Mes neturime deklaruoti kintamuosius tipus, taip mes pamatysime netrukus, kad yra įvairių tipų PHP, bet jums nereikia nurodyti jų, kuris taip pat yra ir geras ir blogas. Ir ten vienas kitas dalykas, trūksta. 

STUDENTŲ: Nėra jokių bibliotekos. 

David J. Malan: Nėra bibliotekos. Gerai, kad yra malonu. Mes gauname daug daugiau iš dėžutės. Taigi ten tikrai daug daugiau dalykų, nei aš maniau buvo skirtingi. Kaip apie būdu nugaros? Kas tai? Pasakykite tai dar kartą? 

STUDENTŲ: pointer. 

David J. Malan: Nėra rodykles. Gerai, bent jau šiame pavyzdyje, ne. Štai tikroji. Taigi trūksta patarimų PHP iš tiesų apskritai. Yra kažkas vadinamas nuorodos, bet mes ne per daug laiko praleidžia ten. Ir kas dar? 

STUDENTŲ: Pagrindinis. David J. Malan: Pagrindinis. Taigi tai buvo rimto Aš galvojau. Pranešimas nėra pagrindinis prieigos taškas. Jūs galite tiesiog pradėti rašyti savo kodą. Ir tai yra iš tikrųjų bus naudinga kai mes pereiti Bodrumas, kad iš tikrųjų, naudojant tai pati kalba už Web-based programavimas, kuriam mes nenoriu turėti tik vieną įvažiavimo. Mes norime turėti krūva URL, įvairių failų krūva išnaudodama į vartotojo įvestį ir gamina išvestį. 

Bet čia yra labai lyderis pavyzdys, kad aš pažadėjau paskutinį kartą, būtent šiame aplanke čia rašybos klaidų. Taigi, remiantis šiuo failo Speller, kurią mes nebus per daug laiko praleidžia ant, yra iš esmės porting-- P-O-R-T. Tai tiesiog žodis duotas kai, tarkim, konvertuoti iš vienos kalbos į kitą rankiniu paprastai. 

Tai kompiuterio perkėlimui versija Speller iš PSET 5. Ir aš iš esmės bandė konvertuoti tai eilutė po eilutės, kaip glaudžiai, kaip aš galiu. Taigi, jei jums patinka tokie dalykai, ji iš tikrųjų yra verta tam tikru momentu traukiant juos abu iki pusės šoninis ir pamatysite, kas pats ir kas skiriasi. Bet jie gana adyti panašus. Jei žinote, ką Speller net atrodė, net jei nebuvo keisti šį failą, tai gana panašus struktūriškai vos pora pokyčių čia ir ten. 

Taigi tai yra tik pasakyti, kad tai gana paprasta konvertuoti Speller iš C į PHP. Bet žodyną, yra kažkas, labiau įtikinantis. Leiskite man eiti į priekį ir kurti mano dictionary.php failas. Taigi šiek tiek kitokia, nes mes jį vadiname .php vietoj .c. Kadangi tai yra PHP failas, aš do-- truputį annoyingly-- turi pradėti failą su php tegus panašaus. Ir aš ruošiuosi eiti į priekį ir apibrėžti keletą funkcijų. Funkcija vadinama patikrinimas, kuris yra ketina imtis žodyje, kaip anksčiau. Tačiau šis argumentas s teks doleris pasirašyti, nes mes vėl naudojant PHP. Kitą funkcija dictionary.c buvo apkrova ir jis paėmė į žodyno vardu, todėl aš gausiu šią funkciją pasiruošę eiti. 

Dar vienas iš dictionary.c buvo ką? Dydis buvo vienas iš gražiausių tie, bent jau jei jūs nuolat šiek kintamasis aplink. taip dydis tiesiog turi grįžti kintamąjį. Ir tada ten buvo iškrauti. 

Taigi ten buvo šių keturių funkcijos problemą nustatyti 5 kad jums reikia įgyvendinti su kai duomenų struktūra ar struktūros. Taigi, aš pažadėjo, kad PHP, mes galime paskelbti maišos lentelė, pavyzdžiui, visi, kad lengviau. Iš tiesų, jei aš noriu maišos lentelę, Aš tik ketina eiti, kaip kad ir ten mano maišos lentelė. Ir tai pastaba, lyderis, kad mes palikome ne dėl paskutinio. Ir žinote ką, jei aš norėjau už dydį kintamasis, gerai, tai vienas dar ne viskas kad skiriasi nuo C bet aš ruošiuosi eiti į priekį ir daryti. Ir pastebėsite, nėra duomenų tipą. Ir aš eisiu atgal vėliau ir iš tikrųjų pridėti keletą pastabų. Bet ką apie krovinį? 

Jei dolerio ženklas žodynas yra mano Bylos pavadinimas ir aš iš tikrųjų norite įkelti žodžius į šią lentelę dabar Aš iš tikrųjų galite tai padaryti kažkas gana paprasta. One-- ir tai minorly annoying-- PHP, turite nurodyti viduje iš funkcijos, jei jums norite prisijungti prie kai pasaulinė kintamasis manimi apibrėžta ribų. 

Bet tai dar ne itin Įdomu dabar. Kas įdomiau yra tai kiekvienam statyti, kad minėjau praeitą kartą. Ir paaiškėja, kad PHP yra funkcija vadinamas failą, kurio gyvenimo tikslas yra atidaryti failą ir skaityti visus savo linijų į masyvą ir perduoti juos atgal į. 

Kuris yra pasakyti, kad aš galiu padaryti žodyną taip kad dabar efektyviai, kai aš skambinti failą, tai vyksta ranka mane atgal Žodžių iš failo masyvo. Tai dar ne viskas, kad geras. Jis vis dar bus linija žodžių, kažkas linijinių. Bet aš galiu eiti į priekį ir pakartoti per kiekvieno iš šių žodžių naudojant kad sintaksė matėme trumpai paskutinį kartą. Ir jūs pamatysite, kad daugiau artėjančius PSET. 

Bet dabar aš turiu ciklo Iteracja per kiekvieno žodžio žodyne. Ir kiekvienos iteracijos, prisiminti Aš paskambinę dabartinį žodį "žodį". Ir visa tai vyksta, atsižvelgiama į įdėti žodį į žodyną, yra bus žodis atspėti "tiesa". Tai mano įterpti funkciją. Tai mano apkrova funkcija mano žodyne. Dabar atėjo iš, nes apgauti tiek, jūs žinote, ką, ten tikrai Backslash n ai ne žodžių pabaigoje kad aš tikriausiai turėtų atsikratyti, bet tai ne problema, nes PHP turi funkcija vadinama pjaustyti kuris pažodžiui nukerta vieną simbolį pačioje pabaigoje. Taigi jokių problemų ten. Mes atvyko į priekį ir tikrai sutrumpintas, kad tiesiog tai. Ir dabar aš tikriausiai turėtų sekti dydžio, todėl galime bent padaryti this-- dydis ++. Galiu padaryti, kad kaip ir anksčiau. Ir tada tai tikriausiai bus dirbti tik gerai, kad galėtų grįžti tiesa. Atlikta. PSET 5. 

[Juokas] 

David J. Malan: Gerai. Mes ketiname daryti, kad vėl su kito PSET, taip pat. Taigi, ką apie dydžio? Na, tai vienas tikiuosi apie kaip galima tikėtis, paskutinį kartą, nors turiu daryti tai kvaila pasaulinis dalykas. Tai tiesiog iš artefaktas kalbos sintaksės konstrukcija. 

Bet patikrinimas tiek įdomesnis. Taigi, jei aš praėjo doleris pasirašyti žodį, aš pirmas norite turėti prieigą prie kad pasaulinį kintamąjį stalo. Ir dabar, jei noriu patikrinti, ar žodis yra ten, Galiu tiesiog pasakyti, jei tai tiesa, kad Toliau nustatyta lentelėje, tada eiti į priekį ir grąžinimas tiesa; kita, return false. Atlikta. Kita pusė PSET 5. 

Gerai, taigi vėl, aš tikiu, pjaudami kelis kampus. Tiesą sakant, aš tikriausiai turėtų praleisti keletą sekundžių šioje įgyvendinimo. Ir aš tikriausiai neturėtų šaipytis visi valandos jūs įtraukėte ant PSET tiek daug. Taigi strtolower yra funkcija. Kažkas panašaus egzistencialistas C, bent jau raidėmis, bet PHP atšoko visa eilutė versiją. 

Kad ketina priversti viską mažosiomis raidėmis, o kai kurie iš jūsų galėjo padaryti, kad būtų canonicalize ką jums buvo išleisti savo žodyną. Ir dabar jūs galite tai padaryti, C, taip pat. Tai neturi nieko bendro su PHP. 

Bet kuriuo metu turite Būlio būklė, kaip kažkas ant linijos 10 ten, kuri yra tik ketina įvertinti true arba klaidinga, ir jūsų, jei dar aiškiai grąžina true arba false, galėjau tiesiog tikrai padaryti šį seksualesnis ir tiesiog padaryti kažką panašaus į tai. Taigi, kad yra čekis funkcija. Teisė, jei Būlio grįžta tiesa ar klaidinga, tegul tiesiog grąžinti ją iš karto. 

Ir ten yra keletas kitų tweaks Galėčiau padaryti čia ir ten. Load-- iškrauti, beje, tai padaryta. Nieko ten. Kadangi visi į atminties PHP ir daugelis kitų kalbų iš tikrųjų pavyko Jums. Taigi kadangi C, kaip jūs sužinojote skausmingai, bet kas, ką malloc arba calloc arba realloc, turite išsivaduoti. Viskas, ką jūs fopen, turite fclose, taip, kad ištekliai būtų galiausiai išlaisvino ir priemones, pavyzdžiui, Valgrind ne pastebėti ir nesiskundžia, kuris yra geras dalykas paleisti ant jų. 

Bet tikrai, tai turi būti šiek tiek laimikis, tiesa? Priešingu atveju, mes tipo švaistomi visa krūva savaites. Todėl ten bet priežasčių, kodėl mes tarsi pasinaudoti šia trajektoriją, tačiau yra prekyba-off. Teisė, tai buvo teminis. 

Taigi, kas gali kompromisą čia juda, iš C PHP? Jaučia visi iki šiol, išskyrus laimėti bjaurumo tiek čia arba ten. Taip. Kas tai? 

STUDENTŲ: [nesigirdi] atmintis. David J. Malan: Greitis. Gerai. Na, mano greitis buvo gana greitai. Teisė? Bet greitis programos vykdymo? Gerai, kad tai teisinga vieta. 

Taip, kad tai įvyks, aš iš anksto cued sudaryti tiek mano pabandyti išspręsti, vienas Turėjau dideliame laive buvo bandymas pagrįstas sprendimas, ir aš turiu, kad į šį katalogą čia. Taigi aš per akimirką, aš galiu eiti į priekį ir naudoti programą Karaliaus Jokūbo Biblijos, pataikyti Enter. Ir tai tikiuosi teisingai įgyvendinimas, galų gale, suteikia man laiko iš viso iš 0,38 sekundes, kad vienas šiek tiek savavališkas pavyzdys. 

O jei aš dabar eiti į šią Antrasis terminalo langą čia, kur aš pirmą kartą pradėjo gedit, leiskite man eiti į šiandienos code-- kuris, vėlgi, yra šiame kataloge here-- ir leiskite eiti į priekį ir paleisti Speller. Taigi tiesiog būti aišku, tai PHP versija. Aš tiesiog rodo jo viršuje čia. 

Taigi, jei aš Speller iš Tilde CS50 PSET 5 tekstai, King James, įveskite. Jis vis dar greičiau nei raštu ji C, tačiau bendras laikas yra pranešimas, 0,93, o mano C-įgyvendinamos remiantis buvo 0,38. Taigi, tai ne trivialus skirtumas. 

Ir tai tik apie vieną failą. Jei buvo paleisti du programos versus didįjį laivą ir turi visa krūva įėjimų išbandyti, tai būtų tikrai didelės. Ir jei mes turėjome net didesnius duomenų rinkinius, tai taip pat būtų pridėti iki visi daugiau. Taip taip, skiriant tam tikrą kainą Greičio yra iš tikrųjų. Ką dar? Taip? 

STUDENTŲ: daug RAM naudojimo. 

David J. Malan: daug RAM naudojimo. Taigi aš ne duoti vieną sekundę ir manė, kai rašau šį PHP versija, kaip daug Atminties buvau naudojant. Aš visiškai atidedantį kad PHP pati ir kas rašė tą programą. Ir kad gali būti gerai, Bet jei aš tikrai tikrai rūpi nuspaudžiant tiek našumą iš mano programos arba iš mano svetainės arba iš bet kokio įrankio Aš statyti, gal PHP iš tiesų nėra teisingas kalba. 

Ir iš tikrųjų, tai yra kodėl, Pavyzdžiui, daugelis interneto servers-- faktinis programos, aptarnauti iki interneto content-- nėra parašyta PHP ar Python ar Ruby. Jie parašyti, kaip jums dabar daryti su PSEt 6, C, kad būtų galima išspausti kiekvienas veiklos tiek iš jo ir tikrai naudojasi smulkiagrūdžio kontroliuoti kas vyksta po gaubtas ir ne tik jį už suteiktas tam tikras didesnis lygio duomenų struktūra. 

Apsvarstykite, juk kas PHP įgyvendinti kad maišos sąvoka table-- tai tikrai daugiau tinkamai vadinamas Association array-- Ar jis ar ji turi kokių nors idėjų, ką natūra Žaliavų jūs ketinate būti pradėti struktūros? Taigi akivaizdu, kad ne, tiesa? Tai bendrinis įrankis į priemonių rinkinį, kad manimi jei visiems, kurie nori jį naudoti, ir taip tikrai jis negali būti optimizuotas galiausiai už ką jūs norite daryti. 

Taigi prekyba offs-- kūrimo laikas galėtų skiriasi, spektaklis gali skirtis, sudėtingumas ar atminties gali skirtis. Ir taip, ką jūs rasite vis yra tai, kad ten yra skirsis įrankiai verslui. Ir iš tiesų už super dauguma Galutiniai žmonių projektai šioje klasėje, tikėti ar ne, C nesiruošia teisė būti kalba naudoti. 

Ir iš tikrųjų, vienas iš takeaways galiausiai bet kaip tai klasei yra gauti jums galvoti apie, gerai, kas turėtų jums nutempti lentyna, kai norite išspręsti kai kurių problemų. Ir iš tiesų, mes kirsti šį tiltą dar kaip mes žiūrime į daugiau kalbų net ir už šiandien. 

Taigi galime pereiti dabar galbūt labiau susipažinę kontekstas už naudojant kaip PHP kalba. Tai šiek tiek įprasta naudoti ne komandinės eilutės, rašyti scenarijus kaip aš, bet tai daug, daug daugiau bendro. Ir ji buvo skirta būti naudojami failų forma, paprastai baigiasi į .php-- bet tai ne prerequisite-- kad patys kurti interneto turinį. 

Taigi leiskite man eiti į priekį ir atidaryti kelias pavyzdžiai aš paruošti iš anksto. Ir tai yra iš tikrųjų tarsi tiesa istorijų, kad viena iš pirmųjų dalykų, Esu padariusi save po apdailos CS50, o gal, manau, Prieš CS51 metų yra mano kambarioku ir aš buvo padėti paleisti pirmakursis Intramural sporto programa, kuri, tuo metu, buvo pirmakursis registruodamiesi įvairių sporto užpildę popierėlį, kaip jis buvo vadinamas, vaikščiojimas visoje į Wigglesworth kieme, ir nuleisti jį į kai Proctor durys lašas. Ir tada jis būtų eiti per juos ir tada iš tikrųjų rašykite rankiniu kad mes buvo užregistruoti tam tikrą sportą. 

Taigi aišku, galimybė tobulinti. Šių dienų, galite kreiptis į ką tik "Google" formos, tačiau atgal per dieną, mes turėjome tikrai pasieks for-- tai net nebuvo, kad ilgai ago-- pasiekti už programavimą kalba, kuri buvo ne PHP. Tuo metu tai buvo kažkas vadinamas Perl, kuri, išėjusi iš "Vogue", nes. Bet idėja yra ta pati. 

Ir aš iš esmės atsisėdo pabandyti uosto eina Perl versijas PHP, bet visiškai Disclaimer, nedavė bet manoma, kad estetikos, tik dar. Taigi čia yra interneto puslapis. Tai failas. Jei aš padidinti, jos, matyt, vadinamas froshim0.php tik todėl, kad pirmasis mūsų pavyzdys šioje serijoje. Ir pastebėsite, kad ji turi tai, kas atrodo būti labai negraži HTML forma, bet forma yra įdomus nes ji leidžia man pateikti naudotojo įvesties į naršyklę. 

Dabar paskutinis kartas, kai mes turėjome formą, kad kam tai mes pateikti mūsų paieškos parametrus, eilė parametrų, nes ji buvo vadinama? Taigi "Google", ar ne? Mes visiškai punted nuo idėjos ką nors su ta įėjimo. 

Tačiau šiandien, mes pradedame gaminti produkcija. Ir aš elgesys ruošiuosi pamatyti Čia iš pradžių yra gana trivialus. David, aš patikrinti ne lytis čia pasakyti Matthews čia. Nebūsiu kapitonu. Aš ruošiuosi spustelėkite Registruoti. Ir pastebėsite, kad URL yra pasikeitė užsiregistruoti-0.php, ir tada ten tai bjaurus tekstas čia. Daviau neišsigąskite tai formatavimas. 

Bet kas yra įdomu, kad trys vertės buvo matyt praėjo. Tai PHP rūšiuoti lygiavertis printf-- matysime, ką ji iš tikrųjų vadinamas į bit-- kad tiesiog spausdina ką jūs patenka į jį. Taigi tai reiškia, kad tos formos turėjo bent tris laukus į jį, ir kad matėte mane įrašykite juos. Vienas iš jų buvo mano vardas, vienas buvo lytį, vienas buvo bendrabutis. Ir kapitonas net išsiųsta į serveris, nes aš ne patikrinti. 

Taigi tai yra pasakyti, matyt, kai jūs pateikiate dalykų internete, Jis ne tik URL kartais change-- kartais ne. Iš tiesų, bylos pavadinimas pakeistas, bet kas yra išvykęs iš URL kad mes matė paskutinį kartą su "Google". Taip? 

STUDENTŲ: Nėra užklausoje 

David J. Malan: Nėra užklausoje. Nėra jokių abejonių, ženklas kažkas. Nėra jokių abejonių, ženklas q lygus kates, kaip mes padarėme paskutinį kartą. Ir ten tikrai ne klaustukas "pavadinimas yra David arba bendrabučio lygus Matthews Taigi, kur yra, kad visi einame? 

Na, leiskite man grįžti į gedit čia ir atverti pirmoji iš tų failų mano VHOST, vietinio kompiuterio, visuomenės katalogas čia ir eiti į froshim0. Taigi paaiškėja, kad beveik visi šiame puslapyje yra tik HTML. Ir tai gali būti susipažinę su jumis, bet ji greitai bus daugiau taip su PSET 6 ir PSET 7 ir PSET 8. Bet tai tik HTML puslapio. 

Ir įdomių dalykų Atrodo, kad čia. Forma tegus kaltas atributas , sudarytų registro 0. Štai kodėl, kai aš pateikti tai, jis eina į tą bylą. Bet metodas skiriasi today-- paštu. Taigi paaiškėja, ten bent Du metodai dėl interneto naudojami siųsti informaciją iš naršyklės į serverį. Gauti įdėkite jį į URL. Pranešimo pradeda ją kitur. Kada ir kodėl gali jus iš tikrųjų norite svetainę o naudoti postą tada iš gauti tik intuityviai? Bet kokios svetainės. Kokie duomenys turi būti perduoti tik iki numanymu dabar per postą, o ne gauti, jei mes matėme du skirtumai? STUDENTŲ: [nesigirdi] pritvirtinkite. David J. Malan: Jei norite kažkas turi būti saugus. Todėl jūs galite įvesti savo slaptažodį į svetainę, kredito kortelės į svetainę būtų natūra iš šių suboptimalūs jei naršyklė įdėti, kad vertė viduje URL. Kodėl? Jūs matote jį, kuris nėra atrodo tokia baisi, bet šansai yra jums gana dažnai vaikščioti toli nuo savo kompiuterio ar naudotis kompiuteriu labs, ir taip kas nors kitas ar net kambarioku galėtų lengvai prieiti ir pažiūrėti kad privati ​​informacija. Kai siunčiate laišką per internetą, jums tikriausiai nenoriu, kad duomenų pabaigą iki į URL, taip pat. Ir taip yra kokių priežasčių, kodėl mes norime įdėti jį čia. Net ir photos-- teisus, aš negaliu visiškai įsivaizduoti, kaip galėtumėte imtis grafiką, kaip JPEG, ir įdėti jį į URL. Tai galite padaryti. Yra būdų, kaip koduoti jį, bet jis tiesiog nėra paprasta, kaip kad. 

Registruokitės jau 0 iš tiesų labai underwhelming. Visa tai sako, pažodžiui tai. Jis spausdina viduje kai HTML žymės taip. Aš turiu PHP tag čia įdėtos viduje anksto žyma. "Pre" tiesiog reiškia iš anksto suformatuotą tekstą, mono intervalu, kaip rašomąja mašinėle. 

Printr yra spausdinimo grįžtamojo funkcija. Ir tada ten tai Įdomu čia. Ir mes grįžti prie šio nes ten kitiems, bet doleris ženklas pabraukimas pašto atrodo PHP kintamasis, kuriame nieko galite atsiųsti iš naršyklės į serverį pasireiškia saugomi jums. Ir mes pamatyti, kaip gauti bent kad prieš ilgas informacija. 

Bet pirmiausia, grįžkime prie Kiek kitokia pavyzdys. Ėjimas į register-- arba o, froshims1.php, kuri atrodo šiek tiek kitoks. Aš paėmė šiek tiek daugiau pastangų su formatavimu, nors jis vis dar gana negraži. Bet aš ruošiuosi eiti į priekį ir tipo "David" dabar. Vyras. Patikrinsime "Kapitonas" šiuo metu. Mes padarysime Matthews. Ir registruoti. 

Ir šį kartą jis sako: hm, tikrai ne. Gerai, tai kas registruotis 1? Leiskite man eiti į atvirą registre 1 and-- hm. Gerai, taigi tai įdomus, ir tai yra žingsnis dabar link daugiau įdomių programų. 

Pranešimas viršų tai failas PHP tegus taip pat kai komentarai. Ir tai, dabar, išsiblaškymas todėl galime tik atsikratyti tų komentarus kaip jie išdėstyti C Ir aš kreipiuosi su šio kodo riekė su komentaru kad šis kodas yra patvirtinti šį teiginį. 

Na, paaiškėja, kad kintamieji, pavyzdžiui, dolerio ženklas pabrėžti postą yra vadinamas super globals. Jie kaip tai specialieji globalių kintamųjų kad yra tik Omni-dabar prieinama per savo programą. Ir jūs galite naudoti kvadratinių laikiklis notacijos indeksuoti į juos ne naudojant skaičius kaip 0, 1, 2, 3, bet faktiniai žodžių. 

Taigi jūs galite galvoti dolerio ženklas pabrėžti postą kaip kokią hash lentelę, kad galėtumėte praeiti į, peržvalgos raktą žodis-laužtiniuose skliaustuose, ir jis ketina duoti jums atgal Vertė, kurią vartotojas iš tikrųjų teikiamos. PHP yra funkcija vadinama tuščia, kad tik sako "taip" arba "ne", tai kintamasis yra tuščias, ar ne. Turime šiuos dvigubus barai, kuris tiesiog reiškia arba, kaip ir C. 

Taigi iš tikrųjų, ši eilutė 4 yra tik sakydamas, jei vartotojas nepateikė vardą arba nedavė lytis ar nebuvo duoti bendrabučio, eiti į priekį ir nukreipti jį arba jai per šią liniją čia. Taigi tai šiek tiek paslaptingas, bet tai tik reiškia, pažodžiui grįžti į šią vietą, todėl Punts vartotojui atgal į ten, kur jis ar ji atėjo iš. Bet tai mažai Niewykwintny tuo, kad aš sunkiai koduojami jį. 

Bet kas, jei tai jei būklė nevertina true? Ką daryti, jei vartotojas nebuvo man jo arba jos vardas ir bendrabučio ir lyčių? Kad jei būklė nėra ketina įvertinti true, kad aš ne hit linija 7 išėjimą. Taigi, kas atsitiks? Ir tai yra tai, kas įdomu PHP. 

Jūs galite palikti į ir iš PHP režimu, taip sakant. Jei norite šiek tiek kodo vykdyti, galite atidaryti ir uždaryti PHP žymės ir įdėti kodą čia kaip aš padariau čia. Kai tik uždarote PHP žymeles, serveris yra tik ketina išspjauti ką įdėti ten. Ir iš tiesų, tai buvo dalis Originalus dizainas PHP, geriau blogiau, buvo tai bendrai naudoti kodą ir žymėjimo kalba. Ir mes matome, kad tai labai greitai pereina į netvarka. Ir taip mes padarysime geriau nei tai galiausiai, bet tik pastebėti, kaip lengvai aš iš tikrųjų gali įvykdyti tam tikrą logiką. 

Bet vis tiek underwhelming. Leiskite atverti versija du Frosh IV, kuris matyt pateikia register2.php. Taigi ši byla tikrai vyksta ieškoti beveik tas pats. Aš ruošiuosi eiti į Frosh IV 2. Bet Frosh IV 2, pažiūrėkime, kas atsitinka. 

David, spustelėkite mygtuką, kaip tai vadinama; Matthews, ne kapitonas. Registruotis. Jūs esate registruotas. Ne visai. Oh wait, mes tiesiog padarė kad pavyzdys, padarė ne taip? Gerai, stovėti. Mes atliksime tris. Aišku kažkas yra apie atsitikti su "Gmail". Mes ten. 

Taigi Frosh augimu 3 atrodo taip. Nesiskiria. Bet kai aš David, male, Matthews, ir registruotis, šį trečiąjį ir galutinį variantą pretenzijos, paprasčiausiai, jums yra registruoti tikrai. Kad tarsi nereikšminga. Bet galiu reikalauti su šiuo Trečioji ir paskutinė versija Aš dabar atkurta ką mano kambarioku ir pastačiau į Frosh IV prieš programos metus. Ir tai buvo paprasta. Nebuvo duomenų bazė, ne "Excel" skaičiuoklę. Bet dar svarbiau, ten buvo ne daugiau popieriaus nes tai, ką mes padarėme su šia programa buvo faktiškai išsiųsti Proctor, kas anksčiau buvo gavusi šie dalykai per formoms. 

Ir, matyt, mes užprogramuoti tai tokiu būdu, kad kai kas nors registruoja, John Harvard sąskaitą laiškus proctor-- arba pats šiuo atveju, John Harvard-- su šia text-- "Šis asmuo tiesiog yra registruojami." Vardas David, kapitonas yra tuščias; lyčių, vyrų; ir bendrabutyje, Matthews. 

Taigi, kas nutiko ten? Na, tas failas čia matyt register3.php. Ir jei aš atidarau tai pamatysite tiek kodo, kaip ši galia ir, tiesą sakant, nesaugumas panašaus paštu sistemą. Aš ką tik efektyviai apsimetė būti John Harvardo formules. 

Turiu atvirai php tegus iki aukščiausio, kuris tiesiog sako čia ateina šiek PHP kodą. Žemyn čia, pasirodo, ten yra bibliotekos PHP. Jūs tiesiog nereikia įtraukti header failus kaip daug. Gauni daugiau virtuvės kriauklė, taip sakant. 

Bet šį kartą 4 eilutėje aš noriu specialiosios bibliotekos vadinamas PHP mailer, kuris yra kažkas jums galite įdiegti nemokamai daugelyje sistemų. Žemyn čia aš įteisinti pateikimas tiesiog tikrinant nebuvo vartotojas parašęs man vardas, lytis, ir bendrabučio. Ir jei taip, eiti į priekį ir instancija mailer. 

Jūs galite galvoti apie tai, kaip yra linija kodą, tiesiog skiriantis. Tai kaip malloc, bet tai šiek tiek seksualiau tuo, kad jūs paminėti ne tik malloc ir kai bendrą numerį. Jūs sakote, duok man vieną iš šių, duok man naują vieną iš šių. 

Ir jei jūs kada užprogramuota Java arba C ++ ar kitos kalbos, Jūs galėjote pastebėti tai. Bet tai trumpas, jei nepažįstamas, tai linija išleidžia į dolerio ženklas paštu ypatingą Struct vadinamas objektas, turi įmontuotą siųsti funkcionalumas. Ir iš tiesų, pastebėti ir panašios sintaksės. 

Tai ne rodyklė, per se. PHP tiesiog naudoja tą pačią sintaksę. Ši eilutė sako naudojimas SMTP-- Simple Mail Transfer Protokole, kuris yra tik protokolas naudojamas siųsti paštu. Tai nurodant naudojimo Harvardo universiteto SMTP serveris, kuris yra kažkur čia kampusie. 

Tai sakydamas, ką TCP prievado numeris kalbėti, ir aš tiesiog suprato, kad atlieka "Google" paiešką, arba, prašant pagalbos tarnybą. Ir tada, nes Harvardo naudoja kai sistemos saugumo ant pašto server-- bent užšifruoti eismo tarp jūsų ir jos, nors kiekvienas gali siųsti į it-- Aš ruošiuosi įjungti TLS protokolas išlaikyti šią saugus. 

Bet tai kur kas gauti šiek tiek baisu. Galiu tiesiog savavališkai pasakyti, kad esu jharvard, ir aš galiu tik savavališkai paštu save čia. Ir tada aš galiu nurodyti, objektas su šia linija čia. 

Ir tai tik atrodo negraži, bet tai tiesiog iš sąryšis krūva. Pasirodo PHP super naudingas simbolį, kaip kai kurių kalbų, dot, operatorius, kuris tiesiog pažodžiui concatenates styginių po eilutę po eilutės, ir jūs neturite malloc ar figūra dėmesį į bendras ilgis eilutę. Jūs tiesiog tai padaryti. Ir iš tiesų, nes aš concatenating į visus šiuos dalykus su šiomis taškeliais, Štai kodėl siųsti man siunčiami atrodė kaip jis tai padarė. 

Ir tada galiausiai čia Siunčiu paštu. Taigi, jei tai yra klaidinga, Aš tik ketina mirti, kuris yra funkcija, kuri vos atspaudai į ekraną kai klaidos pranešimas. Bet tai yra, iš tiesų, paskambinę siuntimo funkcijos. Priešingu atveju, jei visa tai nepadeda, jis nukreipia į mane čia. 

Ir kodėl aš matau, kad Aš registruotas tikrai? Na, tai atsitiko čia. Taigi, aš tai įgyvendinti už pora priežasčių. 

Vienas iš jų, tai yra būtent tai, kaip jei jūs statyti kai už galutinį projekto svetainė arba realiame pasaulyje, tai yra kaip siųsti elektroninius priminimus Jūsų klientams ar savo abonentams. Tai, kaip jūs siųsti slaptažodžio priminimus. Tai, kaip jūs siųsti žmones pranešimus kad jie turi naują "Facebook" žinutė vyksta, ar kažkas panašaus. 

Tačiau ji taip pat kalba Faktas, kad šis galėtų buvo labai gerai nuo Davin ar kas nors kitas. Ir aš tai sakau iš natūra su šypsena, nes aš tikiu, visiškai tikras, kas vyksta per kelių savo protus šiuo metu. Bet tai yra vienas iš tų, kaip padaryti I kalbu ne kaip aš rūšies dalykų, nes tai yra trivialus kalvė laiškus kaip šis. Bet kaip tu gali matyti ar skaitome Crimson, vėlai jis taip pat gana trivialus žmonėms jas atsekti tam kilmę. Ir paklausti mane šiek tiek laiko, galbūt ne CS50 pietų kaip aš pirmą kartą gavo labai gerai susipažinti beveik į ED valdybos daugelį metų prieš kai atradau kaip dirbo interneto. Taigi bet case-- truputį po ED lenta padarė. 

Taigi bet kuriuo atveju, yra visa krūva super globals, , kaip jie čia vadinamas, iš kurių vienas mes saw-- doleris ženklas apatinį postą. Yra kolega pavadino vakaronė, kur yra stuff iš URL baigiasi vyksta. Ir ten visa krūva kitų, too-- sesijos ir serveris ir slapukas. Mes grįžti į Slapukas kitąkart, bet sesija tipo kietas nes teisė now-- iki now-- viskas, ką padarei su žiniatinklio naršykle yra tarsi be pilietybės, taip sakant. Galiu spustelėkite aplink, prieiga failams serveryje, kažkas atsitinka ant ekrano, bet tada ryšys užsidaro. "Internet Explorer" arba Firefox piktograma sustoja suktis ir jūs tiesiog pamatyti, kas kad žiniatinklio puslapyje yra. 

Taigi HTTP be pilietybės, nes kai ji daro ryšį, gauna kai kuriuos duomenis, kad viskas. Ne daugiau jungtis, skirtingai Skype, skirtingai FaceTime, skirtingai Gchat, kuris palaiko pastovią Ryšys su serveriu. Internete yra iš esmės atjungtas, nors mes pamatyti prieš ilgas, kaip mes galime modeliuoti dalykus kaip Facebook chat Gchat, kuris palaiko illusion-- ar iš tikrųjų palaikyti pastovus ryšys, naudojant daugiau šiuolaikinės technologijos. 

Bet jei aš einu į, tarkim, counter.php, tai yra dar vienas paprastas pavyzdys, kaip matysime, kad šiuo metu mano Lankiausi svetainės nulinį laiką. Bet jei aš tiesiog perkraukite puslapį, tai kažkaip žino buvau čia anksčiau. Jei aš perkrauti vėl jį žino buvau čia anksčiau. Ir vėl ir vėl ir vėl ir vėl. 

Taigi yra keletas plius plussing vyksta, tačiau pranešimas mažai ką sukasi vis tiek trumpai iki viršaus ir tada atjungia, todėl nėra kaip aš pastovus ryšį su mano prietaisu. Na, jei aš einu į counter.php, pranešimas, kaip paprasta yra. Aš pirmą kartą tai vadina ypatinga funkcija, kad mes netrukus Pradėjus vartoti kaip savaime vadinamas sesijos pradžia. Pradėti seansą. 

Ir sesijos šiol yra tik bus kibiras, kaip apsipirkti krepšelis, kuriame galite įdėti vertybes ir rūšis pasitikėti programuotoju kad jie bus čia, kai kad vartotojas ateina back-- sekundę vėliau, po valandos dar po metų, kol jis nedingsta slapukus, kaip mes galų gale pamatyti. O dabar aš tiesiog jei būklė čia. Taigi, jei į šiuos pagrindinius, vadinamas skaitiklis nustatomas į vidų Šio super global-- šį maišos stalo, jei will-- vadinamą sesiją, tada eiti į priekį ir patraukti vertė iš session-- galvoti apie tai, kaip apsipirkti cart-- ir laikyti jį laikinoje kintamojo vadinamas skaitiklis. 

Priešingu atveju, jeigu ta vertė skaitiklis buvo nenustatyta vadinamojo krepšelio tiesiog inicijuoti ją 0. Galiausiai žemyn čia, eik ir įdėti atgal į vežimėlį arba sesijos iš prekystalio 1 vertė. Taigi paaiškėja, kad šis speciali talpykla here-- kuris, vėlgi, yra viena iš jų yra susiję matricos, masyvas, kad galite puslapis į žodžius, o ne numbers-- išlieka net po vartotojas nueina. Vėlgi, aš eisiu atgal į puslapį dabar. Tai buvo apie minutę. Bet tai prisimena, kad aš čia buvo 19 kartų anksčiau. Čia yra mano 20. apsilankymas. 

Ir todėl tai bus raktas į įgyvendinant bet kokią svetainę, kad prisimena kad esate prisijungęs, kad jūs įdėti kažkas pažodinis pirkinių krepšelį pirkti ar kad jūs turite kai kurie pranešimų skaičius laukiama. Anytime norite prisiminti informaciją, matysime, kad PHP, kaip keletas kitų kalbų, suteikia mums šią būseną iliuzijos nors, kaip jūs pamatysite PSET 6, kaip jūs darote HTTP užklausas iš kliento į serverį, kad viskas. Kai jūs gaunate atgal, kad atsakas, nėra nieko daugiau grįžta iš serverio automatiškai. Bet mes pamatyti, kaip išspręsti tai. 

Na dabar, pabandykime valyti tai iki šiek tiek. Mes matėme keletą skirtingų pavyzdžių ten. Oi, ir kaip žemę, už tie, kurie žino arba nežino, Todėl, kad Frosh augimu pavyzdys išvyko nuo ieškote tikrai negraži gerai slightly--, dar ugly-- truputį mažiau bjaurus nors dar negraži yra todėl, kad, jei mes žiūrime ne kodo čia Pasirodo, kad turiu tai pačiame viršuje failo. 

Pasirodo, kad "bootstrap" yra vienas iš daugelio laisvai prieinama bibliotekose ten kad egzistuoja ne programavimo kalbų visada, bet CSS arba JavaScript arba HTML ar keliomis kalbomis,. 

Ir šie žmonės here-- kilęs iš iš Twitter-- tiesiog visa krūva stilių. Tai didžiulis failą čia, kad kažkas parašė, ar kažkieno rašė bėgant, kad nurodo spalvas ir formatavimą ir Papuošalą, kad galėčiau rūšies skolintis savo sintaksę ir neturi išsiaiškinti kaip išdėstyti savo formą. Tai taip pat minified taip, kad kompiuteris gali suprasti, bet ne nebūtinai žmogus. Štai kodėl būtent stilizacija ten pasikeitė. 

Bet leiskite dabar padarykime geriau kalbant apie dizainą, nes jei mes likti žemyn šis kelias per ilgas, Mūsų kodas ketina gauti purvinas ir Messier. Taigi galime sutelkti dėmesį į šiuos pavyzdžius čia. Paskutinis šiandienai. 

Taigi čia yra super paprasta iš CS50 tinklalapyje 1,0 versija. Jis turi tik nuorodas į paskaitos ir mokymo programą, ir tai naudoti, kad netvarkingai sąrašą tag-- UL žymeklį mes naudojamas paskutinį kartą. O jei iš tiesų, jei aš atverti Rodyti puslapio šaltinį, pamatysite, kad tai yra tikrai, tikrai paprasta HTML. Ir iš tikrųjų, nors tai PHP failas po gaubtu, jis vis dar tik spjaudytis iš tik HTML dabar. 

Taigi, jei aš spustelėkite paskaitų, mes tai įvyktų. Ir jei aš spustelėkite savaitę nulis, matome tai. Ir jei aš spustelėkite Trečiadienis, matome tai. Ir tai, matyt, buvo PDF iš tos dienos skaidres. Viskas, aš padariau tai ryšys su inkaras tegus į šį URL čia. 

Taigi tai yra tik pasakyti, kad tai gana paprasta versija CS50 tinklalapyje. Pažiūrėkime, kaip tai įgyvendinti. Jei aš einu į mvc0 kataloge matysime kelis failus. Vienas iš jų yra README, todėl jei kai tai per greitai, galite tiesiog baksnoti aplink daugiau neskubantis vėliau. Ir Nuoroda čia yra index.php failas. Pasirodo, kad jei tu, žmogaus, nenurodysite galutinį vardą URL, serveris paprastai daro išvadą, šiek numatytąjį pavadinimą, kuriuo Jums. Rodiklis dot kažkas Paprastai numatytasis. 

Štai kodėl prieš akimirka kai lankiausi šią nuorodą čia ne failo pavadinimas, ne failas pratęsimas, ne URL laikotarpis. Jis tiesiog žinojo, kažkaip stebuklingai ieškoti index.php. Tai tiesiog konvencija. Būtų galima pavadinti nieko. 

Taigi, jei aš dabar eiti į index.php, pamatysite kad indeed-- tegul atsikratyti komentarus čia, nes ten tikrai nieko įdomu it-- tai tiesiog sunku užkoduoti HTML. Štai nuoseklūs, nors, mano reikalavimą kad galite susimaišyti HTML ir PHP. Nėra jokio realaus programavimo logika čia. 

Ir kiti failai yra gana daug kaip neįdomu. Tai tiesiog sunkiai koduojami savaitę vienas Čia savaitę vienas m ir savaitę vieną w, pirmadienis ir trečiadienis. Ir tada, jei aš atverti nulis savaitę pastebėsite, kad tai beveik identiški. 

Ir kad tipo pagrindinis takeaway. Pranešimas tiesiog kaip nereikalingas tai. Šie failai vos pakeisti, ir dar aš ištraukė vieną iš šių kopijuoti / įklijuoti vietų kur aš paėmė vieną file-- matyt į savaitę zero-- kopijuotas kai savaitė nueidavo aplink, ir nežymiai kelis vertybes. Mes tikriausiai turėtų galėti geriau nei tai padaryti. 

Taigi grįžkime iki MVC ir eiti į redakciją vieną. Ir pastebėsite, aš turiu Keletas failų, nes tai, ką buvo įprasta visus tuos failus tiesiog momentas ago-- jei aš einu atgal į versiją 0, grįžkime į indeksą, ir tiesiog postulate-- kai aš atsikratyti comments-- kokia dalis šio puslapio matyt visose mano failus vieną? Tiesiog paskambinkite jį. Kurį linijose būtų dubliuojamas tikriausiai per visus šiuos puslapius? Taip? 

STUDENTŲ: [nesigirdi]. 

David J. Malan: 1 per 9. Taip, absoliučiai. 1 per 9, išskyrus gal 8 keičia šiek tiek, nes CS50 tampa paskaitos ar nulis savaitę ar kažką. Bet beveik identiški. Taigi visa tai stuff yra tik rūšies nukopijuoti. Ir ten pora kitos linijos, aš galiu galvoti to tikriausiai tapatus per visus failus. 

STUDENTŲ: 12 ir 13. David J. Malan: Taip. Žinoma, 12, 13, 14 ir tikriausiai, tik todėl, kad įdomių dalykų kas vyksta 11 linijų ir 10, todėl ji atrodytų. Taigi pažvelkime 1 versija, kuris bando pagerinti tai. Šio MVC example-- 1 versija mes paaiškinti, kas MVC priemonė į moment-- jei aš einu į indeksą, tai kokios dabar atrodo šiek tiek klaidina. Tai ne visai taip paprasta, kaip ir anksčiau. 

Bet kai jūs pradedate skaityti tai atsargiai, tai gana paprasta, kaip ji daro. Matyt 1 linija ir linija 8 pakeitė visi, kas jums tiesiog identified-- nors tik gera priemonė, Palikau KV ten tik tuo atveju, kai kurių dienos neturėjo sąrašą dalykų. Ir tai reikalinga yra lyg svaras įtraukti į C. savo kopijas ir pastos turinys veiksmingai čia į šį failą. 

Taigi header.php, kaip jums gali numanyti iš pavadinimo, bus puslapio antraštėje. Tai tipo našlaičiais čia. Jis turi tik teisę į jį iš viršaus, bet nėra daugiau turinio žemiau. 

Ir jei aš žiūriu poraštės tuo tarpu, kuris buvo kitos bylos mentioned-- tai vienas net mažiau įdomūs, bet vėlgi, tai dažnai į viską. Taigi tai yra futbolas. Tai antraštės. Tai failas yra keičiasi, tai kodėl gi ne pabandykite veiksnys pro bendrumą Šių dviejų linijų čia? 

Tačiau mes galime valyti šią iki šiek tiek toliau. Aš ruošiuosi eiti į priekį ir atverti versiją du kur matysime, kad yra naujas failas, helpers.php. Pamatysime, kas tai yra per akimirką. Vykime į indeksą, kaip įvažiavimo kaip ir anksčiau. 

Ir dabar pastebėsite Aš reikalaujantis helpers.php ne parašą. Bet pagalbininkai yra lyg helpers.c ir helpers.h iš PSET 2 arba PSET 3 seniai, kai jūs iš tikrųjų dar ieškoti ir rasti šiuo PSET, ir jums teko visą savo kodą rūšiavimas ir ieškoti į atskirą failą. Štai kas vyksta čia. 

O dabar 3 eilutė atrodo šiek tiek kitokia. Ir tai tik viena eilutė. Kad tai dar aišku, galėčiau tiesiog do, kad tai bus stilistiškai visa kita mes padarėme. Bet tai tikrai ne Keičiant funkcionalumą. Tai tiesiog viena eilutė Nekilnojamojo kodą. 

Matyt, ten funkcija kažkur vadinama padaryti galva, Ir tai, kai daiktai gauti gana galingas. Pastebėti, kad dalis jo skliausteliuose viduje yra tai, ką kitas gabalas sintaksė? Tai tikriausiai yra šiek tiek sunku pasakyti, bet pastebėti there's-- aš įdėti kai baltas tarpas. Yra Kvadrātiekavas. 

Ir skliaustus matėme tiek prieš į asociacijų masyvų kontekste kurie yra, vėlgi, kaip maišos lenteles. Ir jei jūs manote, dabar į C, Kad argumentų į funkciją turi visada būti ta pati. Jūs turite prisiminti, ką užsakyti is-- x, y, z arba Z, Y, x-- ir jūs turite visada suteikti jiems ta pačia tvarka arba ieškoti juos Jei pamiršote. 

Bet tai atrodo protingas būdas pravažiuojančių savavališkai rakto poros, kuriuo pavadinimas yra pavadinimas, kurio šioje byloje argumento, ir CS50 yra jo vertė. O tai, kad aš turiu šie Kvadrātiekavas čia reiškia, kad galėjau taip pat pereiti į kažką kaip savaitę yra 1 arba 0 arba 2 arba 3. Taigi mes sparametryzowane ši funkcija tokiu būdu kad tai gali užtrukti daug sąnaudų, bet dabar tai tik vienas. 

Jeigu aš dabar eiti į helpers.php, pastebėsite, ką ji daro. Tai yra šiek tiek Naujų funkcijų, bet dabar tiesiog tikėjimu, kad tai yra sintaksė, su kuria jūs apibrėžti PHP funkcijai. Jūs tiesiog pasakyti funkciją. Jūs nenurodysite grąžinimo įrašykite, ir tai atitinka su kintama detalė anksčiau kur jūs tikrai stipriai įrašykite. 

Tai tiesiog nurodo kad, pagal nutylėjimą, tai trunka Association masyvas kaip argumentą. Ir žinote ką? Jei vartotojas neturi praeiti vieną į, tarkime numatytąją reikšmę. 

Tai funkcija, kuri neturi C mums, kuris yra gražus, nes dabar duomenys, net jei jums nesuteikia jam nieko, bus masyvas, bet tuščia vienas. Ir kaip žemę, ekstrakte tiesiog daro kažką funky kur ji sustabdo visus raktus nuo tai masyvą, visų dalykų, galite skliausteliuose, ir sukuria kintamuosius iš jų kad galėtume galiausiai turi prieigą jiems footet.php ir header.php. Štai šiek tiek abstraktus, todėl leiskite man atkreipti this out. 

Be index.php, pastebėsite, kad aš einančios pagrindinis garais vertės pavadinime kurių vertė yra CS50. Jeigu aš dabar pažvelgti helpers.php, pastebėti, kad RenderHeader , perkėlė tuos duomenis, kad aš artimųjų į, o tada reikalauti header.php. Ką aš padariau tai tarsi vargšų įgyvendinimas dabar iš toliau. 

Jei aš atverti header.php, pranešimas, kad aš nebe sunkiai koduojami žodį CS50 šioje antraštės faile. Aš įdėti šią pripažinti atrociously pavadintas funkcija, HTML specialieji simboliai, ten. Bet pastebėsite, ką aš padariau. Turiu atvirai HTML. Tada aš turiu atvirą galvą ir atvirą titulą. 

Ir tada viduje pavadinimas OPEN ir Artimų žodžius, turiu PHP kodo bitų. Ir tai yra gražus, bet sintaksė, kuris tiesiog reiškia echo out. Tai tiesiog reiškia, this-- aidas following-- bet tai seksualesnis rašyti. Echo iš titulą kad buvo priimtas. 

Bet ką jūs manote HTML ypatingą char yra visa informacija apie, ypač jei turite kai prieš HTML patirtis? Ką kurie simboliai gali būti pavojingi važiuoti, į puslapį kur jūs dinamiškai generuoti interneto puslapis su kodu, kaip šis? Leiskite man eiti į šį failą, versija du, ir pamatyti, jei aš negaliu priversti tai. 

Versija du yra tai. Ir pastebėsite, viską gerai, gerai veikia. Bet tarkime, kad aš eiti į index.php ir Aš nurodė, kad mano puslapyje pavadinimas nėra CS50. Ji yra atvira laikiklis scenarijus perspėjimas hello world, netoli kabutes, arti įterptinys kabliataškiu, atviras laikiklis, velniop scenarijus. 

Scenarijaus, kaip mes galiausiai matyti, tai tegus kad galite naudoti naudoti kito programavimo kalba vadinama JavaScript viduje tinklalapį. Ir dabar pastebėsite logika čia. Štai raktas vadinamas pavadinimas. Čia yra tai beprotiškas ilgą vertę dabar. 

Bet jei aš einu į pagalbininkus page- arba, tiksliau, header puslapis, Skambinu šią funkciją tą pavadinimą pirmą. Taigi, jei aš dabar iš naujo įkelkite šį puslapį, aš pamatyti tai, kuri atrodo juokinga, bet tai saugu. Jis tik atrodo kvailas. 

Bet tarkime, užuot Aš pamiršau tai. Ir pažymėti mano žodžius, ir ne visai numeris iš pamiršite tai padaryti ir jūs gausite kai darbštus studentas arba draugas ateina Jums tuo CS50 mugėje arba anonimiškai naktį išnyra aplink savo svetainėje ir iš esmės švirkščiamųjų kodą Jums dar neaišku į savo svetainę kažkaip. 

Nes jei aš tiesiog spjauti iš pavadinimo čia ir pavadinimas there-- gerai, jei pavadinimas pažodžiui atrodo taip ir PHP kaip kalba, kuri gali spjauti iš kitų kalbų tekstą, tai yra tiesiog eiti pakeisti šią žymę su, Žinoma, tai, ką aš įdėti kitur. 

Taigi, jei aš dabar eiti čia ir perkraukite po Naikinant tas apsaugos priemones, dabar turiu labas pasaulį čia. Dabar tai dar ne viskas, kad didelis spręsti, bet jūs galite padaryti kažką šiek tiek daugiau kenksminga Čia, kaip ir ten kitas tags-- kaip matysime, kai mes praleisti daugiau laiko JavaScript-- kaip vietą dot href gauna, citata, citatos, HTTP business.com, bet kad priešais iš kitos dienos. Ir dabar jūs galite sukelti internete puslapis iš tikrųjų eiti iš karto su šiuo tinklalapiu čia. 

Ir iš tikrųjų, aš nenoriu net eiti į business.com nes aš nenoriu žinoti, kas tai yra. Bet tai, per daug, suaktyvins kodą švirkščiamas į šį puslapį. Taigi tai yra tik pasakyti, kad nors mes pristatome itin anksti kai Šių sudėtingesnių struktūrų, visa tai link AN įsitikinkite pabaigoje kad jūsų kodas yra ne naudoti. 

Taigi dabar trečioji versija čia. Jis vis tiek mėgėjas. Aš tikrai ne like-- analinis pusė mane buvo truputį erzinančio Faktas, kad aš funkcija vadinama RenderHeader ir RenderFooter kad buvo beveik identiški. Taigi jis įvyko man, ne, kodėl Aš parameterize šias funkcijas į tik vienas vadinamas tinku kad jis būtų imtis antrą argumentą kaip šabloną vardu, galutinis į render-- arba viršus ir apačia? Ir tada pasirinktinai, jei noriu perduoti kai kuriose pagrindinėse verčių porų kaip aš už paraiškos pavadinime header bet ne į apačią, Galėčiau padaryti. 

Ir todėl dabar, jei aš einu į helpers.php, tai šiek tiek sudėtingesnis. Ir aš mojuoti savo rankas detalės, bet tai tik viena funkcija. Štai link geresnio dizaino žingsnis. 

Mes galime pasinaudoti šia vieną žingsnį toliau. Jei aš einu į mano ketvirtadaliu versija to, dabar pranešimas kad aš darau kažką dar kokios paslaptingas. Ir aš žinau, tai yra daug sugeria iš karto, bet mes tiesiog rūšies valymo dalykų. Dabar aš pradėti mano pagalbininkais failą į aplanką, pavadintą includes-- tiesiog savavališkai pavadinimas, jei aš noriu įdėti stuff kad noriu include-- ir tada tai poilsis yra tas pats. 

Bet jei aš ieškoti dabar gedit, pranešimas, kad aš Dotarłeś atsikratyti iš visų šių kitų failų ir aš perkėlė juos, pavyzdžiui, į šį puslapį. Ir tada šablonus, Turiu tai čia. Ir taip tai dabar viskas link žingsnio naudojant daug geriau dizaino šabloną. Ir mes labai greitai ketina tolti nuo PHP numatytąją funkcionalumą, kurį mes pradėjome čia, kur jūs tiesiog nesumaišyti PHP, ir jūsų HTML ir CSS, ir jūs tiesiog jį išspjaukite ir tu apie savo kelią. Jis nesiruošia būti labai prižiūrimi. Tiesiog kaip ir C, kai pradėjome naudoti kelis failus ir daug funkcijų ir faktoringo dalykų, kad iš. Mes padarysime čia tas pats. Ir iš tikrųjų, penktoji ir paskutinė versija čia, aš dar vieną dalyką. Jūs netgi galite naudoti dot dot, kuris, vėl yra tiesiog laikoma aukštesnė direktorija. Bus dar daugiau saugumo sąmoningas, nes jei žiūriu klausymuisi čia penktoji ir paskutinė versija, įspėjimo kad aš turiu vieną katalogą čia vadinamas visuomenės, tada paties lygio, taip sakant, Aš turiu apima ir šablonų ir tada, kad tekstinis failas readme. 

Aš priežastis jau struktūra jis patinka this-- ir tiek daug internete šeimininkai, ypač 5 $ mėnesį sius ar $ 10 mėn tie, jei jūs kada nors turėjo vienas iš šių services-- ką tiek daug iš jų padaryti yra jie tiesiog tikisi jums iškelties visi failus į vieną katalogą, kaip mes jau padarė su tai pats pirmas pavyzdys. 

Bet kaip tik jums pradėti statyti daugiau Sudėtingesnės svetainių, kad tiesiog laikyti Duomenų jums rūpi ir failus, kuriuos rūpi, iš tiesų organizuoti dalykų teisingai ir su didesniu saugumu sąmonė galvoje gali imame gintis prieš visus draugus kad turite arba arba už šios klasės, kuris, kuo greičiau pradėti uždirbti programos sau internete, ketiname pradėti skinti jums ir ant jų. 

Ir taip mes pažvelgti galiausiai šiuo dizainu. Tai tik vaizdas kad vaizduoja šiuos. Mes ketiname įdėti visus mūsų programavimo logika vienu ar daugiau failų, ir mes ketiname tik prasideda paskambinę tuos valdiklius. Tai Tais atvejais, kai smegenys Mūsų tinklapis tikrai yra. Tada mes einame turėti pažiūras ir nuomonę yra taip paprasta, kaip tiesiog atskiras files-- vadinamus šablonus, dažnai. Jie tiesiog turi estetika mano puslapį, ko aš noriu, kad puslapis atrodo like-- spalvų ir išdėstymo ir pozicijos visų kintamųjų. 

Ir tada įdomiau kad mes galų gale gauti į yra modelis, kuris bus tik Žodis mes slap ant kitos technologijos kad mes suteikiame į vaizdas, kaip faktinių duomenų bazėse, taip, kad kai norite taupyti informaciją, jūs ne tik išsiųsti laišką Jūsų Proctor ar sau jūs iš tikrųjų laikyti ją į duomenų bazę naudodami kitą žinomą kaip SQL kalbą. Ir todėl mes palikti čia šiandien ir pasiimti su šiais trečiadienį ir pristatyti duomenų bazes tada. 

[Muzikos grojimo]