>> [Prehrávanie hudby]
>> DAVID J. Malan: Dobre.
To je CS50.
To je začiatok týždňa osem.
A vy si možno spomenú, že sme skončili naposledy pri pohľade na nový jazyk
úplne.
V skutočnosti, jeden to je celkom ľahký a to nie je ani
programovací jazyk.
Je to značkovací jazyk, ktorý nám umožňuje vlastne štruktúra a webových stránok.
A keď sa vám niečo iné v spojení s tohle--
alebo čoskoro bude, ak je ešte nemáte.
Budeme používať kaskádové Štýly, alebo CSS, ktoré
je iný typ jazyka s vlastnosťami a hodnotami
, Čo sa deje, aby nám to veci, ako je zmena farby
a zmeniť pozíciu a tieto druhy vylepšenia.
Ale dnes, a ďalej, začneme zamerať sa na silnejšie jazykov,
skutočné programovacie jazyky ako PHP.
>> Takže PHP už nejakú dobu.
A ako uvidíte, je bol určený predovšetkým
čoskoro na skutočné použitie vo vývoji webových aplikácií
a vlastne generovanie webových stránok.
Čo tak druhy funkcie robí jazyk
je potrebné, aby web stránky dynamicky s tým?
>> Inými slovami, ak chcete vytvoriť Obsah dynamically-- ako Facebook je
Noviniek, ktoré sa neustále mení, alebo rýchle správy, ktoré sa objavujú čas od času
na time-- ako to, čo je kľúčovou súčasťou funkčnosti
budete potrebovať v programovacom jazyku ktoré by vás nechal dynamicky
vytlačiť nové informácie na obrazovke?
>> STUDENT: Code.
DAVID J. Malan: Code.
OK.
Budeme to brať.
Trochu presnejšie.
Myslím, že by sme mohli robiť to s C, úprimne povedané.
Jednalo by sa o bolesť v krku.
Ale- je tento záväzok?
>> STUDENT: Jo.
Premenné, možná?
DAVID J. Malan: premenné.
OK, iste.
Premenné môžu nám určite pomôže von.
A dokonca aj niečo jednoduchšie.
Použili sme ju v prvej Program prvého dňa
keď sme v skutočnosti povedal: "hello world".
>> STUDENT: Print.
>> DAVID J. Malan: Tlač, nie?
Tlač, alebo printf v Svet C. Takže celú tú dobu,
sme mali na našom webe Likvidácia language-- C,
v particular-- a dokonca Scratch keď na to príde, že
môže vytvárať reťazca textu.
>> No, ak je HTML, ako sme videli minulý týždeň, je len celá partia reťazca texte
aj keď s otvorenými zátvorkami a uzavretý držiaky a nejaký rým
a dôvod, prečo za ním, Tak sme mohli naozaj
začať vytvárať webové stránky a to buď ručne zadaním je v gedit
alebo v aplikácii Microsoft Word, pre ktoré matter-- nám stačí textový editor.
>> Alebo by sme mohli písať kód, do svojho návrhu
skôr, že by nás nechal dynamicky generovať HTML,
a to je to, čo budeme začať robiť s PHP
a nakoniec aj pri jazyk volal JavaScript
je použiť jeden jazyk, pre generovanie druhého.
A skutočne, to je to, čo Facebook a mnoho, mnoho ďalších miest
urobiť, aby skutočne dynamicky zobrazí nové informácie k vám.
>> Takže začnime s tohle-- A mystický hľadáte line, ale jeden
to je vlastne celkom silný.
Doteraz sme používali C, ktorý je zostavený jazyk.
A práve rýchle recap-- zostavený jazyk má čo vlastnosť?
Budete zrejme musieť kompilovať to, ale čo to znamená?
Jo?
>> Študent: To musí byť zostavené do strojového kódu.
>> DAVID J. Malan: OK.
Treba zostavený do strojového kódu.
Takže budete mať svoj zdrojový kód, čo je trochu anglicky podobne.
Previesť, že pre niečo nižšiu úroveň,
ktorý sa nakoniec nazýva Objekt code-- 0 a 1 je.
A to tie 0 a 1 je, že CPU, ako tie vyrobené spoločnosťou Intel,
skutočne pochopiť.
>> Teraz, PHP a Python a Ruby a JavaScript a kytice ostatné
jazyky nie sú zostavené jazyky, ale interpretovať jazyky,
čo znamená, že stačí ich zadať a potom nemáte premeniť ich v 0 a 1 je.
Namiesto toho len poskytovať následne ako vstup do programu niekoho iného,
volal tlmočníka.
A táto osoba je Program bol navrhnutý tak,
rozumieť tomu, čo každý a každý symbol v Pythone alebo PHP
alebo Ruby alebo ľubovoľný počet ďalšie jazyky znamená.
>> A tak všetko, čo potrebujete, je niečo také.
Takže v skutočnosti, budem prejsť na spotrebiče
tu, len do niektorého staré okno, a my sme
ísť dopredu a otvorené súbor s názvom, povedzme, ahoj.
Teraz už skôr, mohol som zachránil to dokonca s príponou súboru,
ale budem robiť ešte niečo jednoduchšie tu.
Chystám sa ísť dopredu a začať Tento súbor s touto mystickom syntax.
Tak "user, bin, env, pre životné prostredie, php. "
>> To je proste jeden riadok kódu, ktorý je povie svoj operačný systém,
ísť nájsť vo vašej miestnej prostredie, nech je to čokoľvek,
všade tam, kde PHP je-- na interpreter-- a choďte do toho a používať tento interpret
interpretovať nasledujúci kód.
Teraz, to je druh škaredý rys PHP.
Ale v tomto jazyku, akýkoľvek keď budete písať PHP kód,
musíte mať jeden z týchto škaredé PHP tagy vymedzenie začiatok
vášho code-- <? php.
>> Ale nižšia ako tu, teraz môžem urobiť niečo pomerne jednoduchá, podobne ako printf ahoj čiarka
Svet spätné lomítko n close citácie, v blízkosti zátvorka.
A potom už len pre dobro opatrenia, idem
pokračovať v blízkosti môj php tag sem
tak, že všetko vyzerá pekne pekne vytlačiť.
>> A akonáhle som kliknite na tlačidlo Uložiť, gedit je dosť naozaj šikovný
pozrieť sa na tomto prvom riadku a si uvedomiť, oh, píšete PHP kód.
Dovoľte mi zvýraznenie syntaxe to s farbami
tu, takže to stojí o trochu viac.
Ale teraz idem dole do okna môjho terminálu.
Budem priblížiť.
>> Tento program bol nazvaný "Dobrý deň," takže budem robiť bodka lomka Dobrý deň,
ale popieral povolenie.
A bash.
Vlastne sme počuli, že Pred vec pár týždňami
v súvislosti s Shellshock, jeden z tých chýb.
>> Ale Permission denied sme videli skôr, možno v inom kontexte.
Má niekto pripomenúť, ako môžete opraviť niečo
kde je prístup odmietnutý takto?
Čo je to príkaz, aspoň?
>> STUDENT: Chmod.
DAVID J. Malan: Jo, chmod, pre zmenu režimu súboru.
A budete mať o to viac používa pre Táto ďalší týždeň s následným problémom
nastavenie.
Ale teraz, budem meniť režim nesmie byť čitateľný,
ale dať každému executeability oprávnenia, schopnosť
spustiť tento súbor.
A ja priradiť že do súboru Dobrý deň.
>> Ak teraz mám dot lomka ahoj ENTER, vidieť, v skutočnosti, môj program, hello world.
A čo krok urobil ja jasne vynechať úplne?
Kompilácie.
Tak som bežal tento program jednoducho.
>> A ukázalo sa, môžete to urobiť s veľa syntax pripomínajúce C
Nechaj ma ísť v dnešnej kódu, ktoré som dal do môjho VHOST adresára
tú, skutočných príčin vrátime sa.
A ja idem do, povedzme, podmienky 1.
>> A uvidíte tú, prvý a predovšetkým, celá partia komentárov.
Ale to je v skutočnosti re-vytvorenie v PHP
programu sme v týždni jeden s názvom podmienky 1.c.
kde účel Životnosť tohto programu
je zrejme sa opýtať používateľ na celé číslo
a potom urobiť nejaké nadýchané Analýza na to prostredníctvom ktorej
hovoríte, či je to pozitívne alebo záporný alebo sa rovná nule.
A uvediem to do len preto, s výnimkou snáď jedného malého detailu,
je to na nerozoznanie tak ďaleko od C
>> Čo je tá charakteristika tu to možno vyskočí
na vás, ako trochu inak?
Možno, že dve veci.
Jo?
>> STUDENT: Dollar sign n?
>> DAVID J. Malan: Jo.
Takže znak dolára n je prítomný.
A dolára, as uvidíme, idú
byť oprava na začiatok každej premennej v PHP.
Je to dobré aj bad-- dobré že je to niečo, čo je zrejmé,
premenná, zlý v tom, že je ešte ďalšia vec, písať.
A je tu ešte jedna ďalšia čo máme nie tak celkom
vidieť, aspoň týmto hláskovanie. jo?
>> STUDENT: ReadLine.
>> DAVID J. Malan: ReadLine.
Readline sme nevideli, sama o sebe, v C, aj keď existuje niečo
podobný, ale sme použili getString, a to je jeho náprotivok.
Takže keď idem do toho adresár, ktorý sa stane byť,
ako ja ti to vysvetlím za chvíľu v mojom VHOST adresáre a môj zdroj adresár,
a ja sa do toho pustite a urobiť dot lomka conditions-- whoops-- bodka lomítko
podmienky 1, uvidíte opäť, rovnaký issue-- prístup odmietnutý.
>> Takže mi dovoľte priblížiť a urobiť chmod plus x podmienok, bodka lomítko podmienok.
Rád by som celé číslo, prosím, 50.
A tak by sme mohli hrať to Hra po celý deň.
Bude sa správať presne ako tomu bolo v prvom týždni.
>> OK, takže príliš nelíšia, s výnimkou nielen, že mierne trochu syntaxe,
ale hore, som znova mal tento riadok, ktorý
mi umožnilo vytvoriť niečo, čo vyzerá ako C program s názvom Dobrý deň,
tzv podmienky 1.
Ale to nie je 0 je a tie, Ja vykonávanie priamo.
Je to miesto beží to interpret, ktorého meno
sa stane, že je totožný s jazykom.
Tento program sa nazýva PHP, a môj kód pod hranicou jeden je odovzdaný do neho.
>> Môžeme to urobiť ďalší pomerne jednoduchý Príkladom pripomínajúce niečo
sme pred niekoľkými týždňami.
Znova, toto je druh ľubovoľný kus kódu
to zrejme robí čo keď to beží?
Čo sa to bude tlačiť, pravdepodobne?
>> Takže spočiatku na linke 16, je to chcel povedať, x je teraz 2, pravdepodobne.
% D je rovnaký ako i $ pre printf.
Takže je to cubing, bodka, dot, dot, v súlade 17.
A potom Riadok 18 sa zobrazí volanie funkcie kocky.
A kde je Cubed definovaná?
>> No, vyzerá to, že v rade 25, takže to nie je tak odlišné.
Mám nejaké poznámky vyššie to, ale z väčšej časti,
je to celkom jednoduché portovanie alebo konverzie
z programu C na verziu PHP.
Ale tam sú teraz pár rozdiely, ktoré by možno vyskočiť.
Čo iného sa líšia o tom, ako môže napísať rovnaký program v C?
>> STUDENT: [nepočuteľné].
>> DAVID J. Malan: tu žiadny prototyp up top.
Tak PHP-- a úprimne povedané, Mnoho moderných languages--
sú oveľa múdrejší a ďalšie užitočné ako C prekladača v tom, že vás
môže dať funkciu tu, si môžete dať funkciu tu,
a interpret sa deje k tomu vám láskavosť čítanie
celý súbor, než sa rozhodne, že niektoré funkcie neexistuje.
So Nice vylepšenia rokov neskôr.
Ale je tu aj niečo ešte iný alebo tu chýba.
Jo?
>> STUDENT: [nepočuteľné].
DAVID J. Malan: Nemáme na deklarovať typy premenných,
tak uvidíme onedlho, že existujú rôzne typy v PHP,
ale nemusíte je určiť, čo je tiež dobré aj zlé.
A je tu ešte jedna vec chýba.
>> Študent: Je tu žiadne knižnice.
>> DAVID J. Malan: nie sú k dispozícii žiadne knižnice.
OK, tak to je pekné.
Dostaneme oveľa viac po vybalení z krabice.
Takže je to vlastne oveľa viac veci, ako som si myslel, že sú odlišné.
Ako sa asi tak v chrbte?
Čo je to?
Povedz to ešte raz?
>> STUDENT: Pointer.
>> DAVID J. Malan: Bez ukazovatele.
OK, aspoň v tomto príklade, nie.
To je fér.
Takže tam nie sú odkazy PHP vlastne všeobecne.
Existuje niečo ako referencia, ale nebudeme tráviť príliš veľa času.
A čo ešte?
>> STUDENT: Main.
DAVID J. Malan: Main.
Tak toto bol Biggie Myslel som, že.
Všimnite si, že to nie je hlavný vstupný bod.
Môžete jednoducho začať písať kód.
A to je v skutočnosti Bude výhodné
keď sme prechod okamih skutočne používať
tento rovnaký jazyk pre web-based programovanie, pre ktoré sme
nechcú mať len jeden vstupný bod.
Mohli by sme mať veľa URL, veľa rôznych súborov
všetko brať v vstup užívateľa a zhotovuje výstup.
>> Ale tu je veľmi skľučujúca príklad, ktorý som sľúbil minule,
a to v tejto zložke tu preklepy.
Takže v tomto súbore pravopisu, ktorú sme nebude tráviť príliš veľa času, došlo
v podstate porting-- P-O-R-T. Je to len slovo, vzhľadom k tomu, kedy, povedzme,
prevodu z jedného jazyka na druhý ručne zvyčajne.
>> Jedná sa o portovanie na PC verzia pravopisu z pset 5.
A ja som v podstate sa snažil previesť je riadok po riadku tak presne, ako len môžem.
Takže ak máte radi tento druh veci, v skutočnosti je hodnota v určitom okamihu
ťahom je obaja na strane bočné a vidieť to, čo je rovnaké
a to, čo je.
Ale sú čertovsky podobné.
Ak si pamätáte, čo Speller dokonca vyzeralo,
aj keď nie musieť zmeniť tento súbor,
je to celkom podobné konštrukčne len s pár
zmien sem a tam.
>> Takže je to len povedať, že je to celkom jednoduché previesť pravopisu
z C do PHP.
Ale v slovníku, je tu niečo, čo ešte presvedčivejšie.
Nechaj ma ísť dopredu a vytvoriť moje vlastné dictionary.php súboru.
Takže mierne odlišné v tom, že budeme nazývať .php miesto .c.
Pretože sa jedná o súbor PHP, I do-- mierne annoyingly-- mať
spustite súbor php tag takhle.
A budem pokračovať a definovať niekoľko funkcií.
Funkcia volaná kontrola, ktorá je bude trvať na slová ako predtým.
Ale tento argument je bude mať dolár
podpísať, pretože sme opäť pomocou PHP.
Ďalšie funkcie z dictionary.c bolo zaťaženie
a to sa v mene slovníka, takže budem mať túto funkciu pripravený ísť.
>> Jeden v dictionary.c je to, čo?
Veľkosť bol jeden z najkrajších ty sa na aspoň pokiaľ ste si nechali nejaké premenné okolo.
takže veľkosť jednoducho musí vrátiť premennú.
A potom tu bol vyložiť.
>> Takže tam boli tieto štyri funkcie v probléme nastavenie 5
že ste potrebovali, aby s niektoré štruktúry alebo štruktúry dát.
Tak som sľúbil, že v PHP, môžeme vyhlásiť,
hash tabuľky, napríklad, to všetko ľahšie.
V skutočnosti, ak chcem hash tabuľky, Len som ísť takhle
a tu je moja hash tabuľky.
A to je poznámka, skľučujúca, že sme skončili na poslednom čase.
A viete, čo, keby som chcel premenné pre veľkosť, dobre,
toto nie je všetko ktoré sa líšia od C
ale ja idem ďalej a robiť, že.
A všimnite si žiadny dátový typ.
A ja sa vrátim neskôr, a vlastne sem pridať nejaké pripomienky.
Ale čo zaťaženie?
>> Ak sa znak dolára slovník je názov môjho súboru
a ja som vlastne chcete načítať slová do tejto tabuľky podnikom,
Ja si skutočne robiť niečo celkom jednoduché.
One-- a to je minorly annoying-- v PHP,
musíte zadať v z funkcie, ak vás
chcete prístup k niektorým globálne premenná, ktorá je definovaná mimo.
>> Ale to nie je zvlášť zaujímavé práve teraz.
Čo je ešte zaujímavejšie je to pre každého postaviť, že som sa zmienil minule.
A ukázalo sa, že PHP má funkciu volal súbor, ktorého zmysel života
je súbor otvoriť a čítať všetky svoje linky do poľa
a odovzdať ich späť.
>> Čo znamená, že môžem robiť to slovník že teraz efektívne, keď volám súboru,
to ma vrátiť pole slov zo súboru.
Nie je to tak dobrý.
Je to stále ešte bude linka slov, niečo lineárne.
Ale môžem pokračovať a opakovať nad každým z týchto slov použitia
že syntax sme videli krátko minule.
A uvidíte, že viac v nadchádzajúcej pset.
>> Ale teraz mám slučky iterácie po každé slovo v slovníku.
A v každej iterácii, spomínam, že som volanie aktuálne slovo "slovo".
A všetko to bude trvať, než dať slovo do slovníka je
bude slovo hádať "true".
To je môj vložka funkcie.
To je funkcia load má pre môjho slovníka.
Teraz je to trochu podvod, pretože vieš čo, je to vlastne
spätné lomítko n na konci slov že by som mal asi zbaviť,
ale to nie je problém, pretože PHP má funkcia volaná chop, ktoré doslova
kotlety off jeden znak na samom konci.
Takže tam žiadny problém.
Išli sme ďalej a vlastne skrátil, že sa práve tento.
A teraz som mal asi sledovať veľkosti, tak sa poďme aspoň urobiť tohle--
Veľkosť ++.
Môžem to urobiť ako predtým.
A potom je to pravdepodobne bude fungovať v pohode, takže to vráti hodnotu true.
Hotovo.
Pset 5.
>> [SMIECH]
>> DAVID J. Malan: OK.
Chystáme sa urobiť znovu s ďalším pset, taky.
A čo veľkosť?
No, toto snáď je o ako by ste očakávali minule,
aj keď musím urobiť to hlúpe globálna vec.
Je to len artefakt od Konštrukcia jazyku je.
>> Ale kontrola je trochu zaujímavejšie.
Takže keď som prešiel v dolára Prvý podpísať slovo, ja
Chcete mať prístup ku že globálna premenná stôl.
A teraz, keď chcem skontrolujte, či slovo je tam,
Môžem len povedať, či to je pravda, že vkladá sa nachádza v tabuľke,
potom choďte do toho a návrat pravda; inak, vráti false.
Hotovo.
Druhá polovica pset 5.
>> Dobre, tak ešte raz, ja som rezanie pár rohov.
Úprimne povedané, mal som asi stráviť pár sekúnd
Na tejto implementácie.
A ja som asi nemal zosmiešňovať všetky hodín si dať na pset toľko.
Takže strtolower je funkcia.
Niečo podobné existencialistický v C, aspoň pre znaky,
ale PHP je dostal celú verziu reťazca.
>> To bude nútiť všetko na malé písmená, čo niektorí z vás
mohla urobiť, aby sa to, čo kanonické ste uvedenie do slovníka.
A teraz môžete to urobiť v C tiež.
To nemá nič spoločné s PHP.
>> Ale kedykoľvek budete mať Boolean stav,
ako niečo, čo na linke 10 tam, čo je len
bude hodnotiť na hodnotu true alebo falošný, a vaša ak inde jasne
vracia true alebo false, mohol by som proste naozaj túto sexy
a práve niečo také.
Takže tu je moja kontrola funkcie.
Jasne, ak Boolean vracia hodnotu true alebo false,
povedzme, vráti ho ihneď.
>> A je tu pár ďalších vylepšení Mohol by som sem a tam.
Load-- odľahčenie, mimochodom, že to robí.
Nič, čo by tam robil.
Vzhľadom k tomu, všetky pamäte PHP a mnoho ďalších jazykov
je v skutočnosti riadená pre vás.
A tak vzhľadom k tomu, C, ako je ste sa naučili bolestne,
niečo, čo malloc alebo calloc alebo realloc, musíte oslobodiť sa.
Všetko, čo fopen, musíte fclose, tak, že zdroje sú nakoniec oslobodení
a nástroje, ako Valgrind nie Všimnite si, a nie sa sťažovať,
čo je dobrá vec pre prevádzku na nich.
>> Ale iste, musí tu byť nejaký háčik, že jo?
Inak sme trochu zbytočný celá partia týždňov.
Takže tam je rad dôvodov, Preto sme tak nejako využiť túto trajektóriu,
ale tam je trade-off.
Jasne, to bolo tematické.
>> Takže to, čo by mohlo trade-off tu pohybuje od C do PHP?
Cítim sa, ako všetko vyhrať, ak iný ako trochu škaredosti tu alebo tam.
Jo.
Čo je to?
>> STUDENT: [nepočuteľné] pamäť.
DAVID J. Malan: Speed.
OK.
No, moja rýchlosť bola celkom rýchlo.
Je to tak?
Ale rýchlosť vykonávania programu?
OK, tak to je spravodlivé miesto.
>> Tak to by sa stalo, ja vopred cued up aj moja skúsiť riešenie, jeden
Mal som na veľkej doske bolo riešenie try-based,
a mám to v tomto adresári tu.
Tak som sa vo chvíli, môžem ísť ďalej a beží to na Biblii Kinga Jamesa,
klávesy Enter.
A to je snáď správny realizácia na konci,
mi dáva čas celkom 0,38 sekúnd, ktoré
jeden trochu ľubovoľný príklad.
>> A keď som teraz ísť do toho druhé okno terminálu
tu, kde som prvýkrát otvoril gedit, nech ma ísť do dnešnej code--, ktoré opäť
je v tomto adresári here-- a nechaj ma ísť napred a spustiť pravopisu.
Takže len aby bolo jasno, To je verzia PHP.
Ja som len ukazuje hornú časť tu.
>> Takže ak mám pravopisu z tilda CS50 Pset 5 textov, King James, zadajte.
Je to stále rýchlejšie než písanie je to v C, ale celkový čas
je oznámenie, 0,93, zatiaľ čo my Implementácia C na báze bola 0,38.
Takže je to non-triviálne rozdiel.
>> A to je len na jednom súbore.
Ak by ste mali spustiť dva Programy versus veľké dosky
a má veľa vstupov testované, by určite sčítajú.
A ak by sme mali ešte väčšie dátové súbory, aj to by pridať viac.
Takže áno, platiť nejaké cenu rýchlosti tak skutočne je.
Čo ešte?
Jo?
>> STUDENT: Množstvo pamäte RAM.
>> DAVID J. Malan: Množstvo pamäte RAM.
Tak som sa nedal jedna sekunda myslel pri písaní tohto PHP
verzia o tom, ako moc spomienka, že som pomocou.
Som úplne odkladá, že pre PHP sama o sebe, a ten, kto napísal tento program.
A to by mohlo byť v poriadku, ale keď som v skutočnosti naozaj
starostlivosť o stláčanie toľko výkonu z môjho programu, alebo z mojej webovej stránky
alebo z akéhokoľvek nástroja Staviam, možno
PHP, naozaj, nie je správny jazyk.
>> A v skutočnosti, že je dôvod, prečo, pre Napríklad, veľa web servers--
skutočné programy, ktoré slúžiť až webovú content--
nie sú napísaný v PHP alebo v jazyku Python alebo Ruby.
Sú napísané, ako budete teraz robiť s pset 6,
v C, takže môžete stlačiť každý kúsok výkonu z toho
a skutočne vykonávať ovládanie jemnozrnná nad tým, čo je
deje pod kapucňa a nie len brať
za samozrejmosť, niektoré vyššie Štruktúra dát na úrovni.
>> Zvážte, po tom všetkom, kto v PHP implementovaná
že pojem hash table-- je to vlastne viac
správne nazýva asociatívne array-- robí on alebo ona má nejakú predstavu, aký druh
vstupov sa bude uvedenie do konštrukcie?
Tak samozrejme nie je, že jo?
Je to všeobecný nástroj s motocyklom, ktorý je
za predpokladu, pre každého, kto chce ju používať, a tak isto
nemožno optimalizovať nakoniec presne to, čo chcete robiť.
>> Takže doba vývoja trade-offs-- moc líšia, výkon sa môže líšiť,
zložitosť alebo využitie pamäte sa môže líšiť.
A tak to, čo nájdete stále je, že je tu
bude inak nástroje pre obchod.
A v skutočnosti pre super väčšinu záverečných prác ľudí v tejto triede,
verte tomu alebo nie, C nebude byť správny jazyk používať.
>> A v skutočnosti, jeden z stánok s jedlom nakoniec pre každú triedu, ako je tento
je, aby si myslíš, No, čo by ste mali vytiahnuť
police, keď chcete vyriešiť nejaký problém.
A skutočne, budeme cez tento most ešte, ako sa pozeráme na viac jazykov
aj za dnešok.
>> Takže poďme prechod teraz snáď známejší kontext
pre použitie jazyka, ako je PHP.
Je to trochu bežné použitie v príkazového riadku, písanie skriptov
ako ja, ale je to oveľa, oveľa častejšie.
A bola určená na použitie v forma súborov, ktoré obvykle končia
v .php-- ale to je nie prerequisite--
ktoré samy vytvárať webový obsah.
>> Tak nechaj ma ísť napred a otvoriť niekoľko príklady som si pripravil dopredu.
A to sú vlastne akési pravda príbehy tým, že jedna z prvých vecí
Čo som kedy robil sám po dokončení CS50 a možno, myslím,
CS51 rokmi je môj spolubývajúci a ja sme boli pomáhať
spustiť prváku intramurální športový program, ktorý v tej dobe,
bol v prvom ročníku registrácii pre rôzne športové vyplnením kus papiera,
ako to bolo volané, chôdza cez dvor k Wigglesworth,
a jeho umiestnením v niektorých Pokles dvere Proctorův.
A potom on alebo ona by prejsť je a potom nás vlastne napíšte ručne
ktoré sme zaznamenali nejaký šport.
>> Tak jasne, príležitosť pre zlepšenie.
V týchto dňoch, môžete sa obrátiť na práve Formuláre Google, ale späť v deň,
sme mali skutočne dosiahnuť for-- to nebola ani tak dlho ago-- dosiahnuť
pre programovanie jazyk, ktorý nebol PHP.
V tej dobe, to bolo niečo ako Perl,
ktorý vyšiel z módy, pretože.
Ale princíp je rovnaký.
>> A ja som v podstate sa posadil, aby sa pokúsila k portu ide verzie Perl PHP,
ale v plnom upozornenie, nedal akákoľvek myšlienka estetiky ešte nie.
Takže tu je webová stránka.
Jedná sa o súbor.
Keby som priblížiť, jeho zrejme volal froshim0.php
len preto, že je to naša prvá Príklad v tejto sérii.
A všimnite si, že má niečo, čo vyzerá byť veľmi škaredý HTML formulár,
ale forma je zaujímavá pretože umožňuje
mi poskytnúť vstup užívateľa do prehliadača.
>> Teraz naposledy, keď sme mali formu, aby ktorého sme sa predložiť svoje parameter dotazu,
front parameter ako to bolo volané?
Takže Google, nie?
Sme úplne punted na myšlienke robiť niečo s týmto vstupom.
>> Ale dnes, začneme produkovať výstup.
A správanie budem vidieť tu spočiatku je dosť triviálne.
David, budem vyraďovať pohlavia tu, hovoria Matthewsa tu.
Nebudem sa kapitán.
Idem na tlačidlo Registrovať.
A všimnite si, že URL je zmenil sa zaregistrovať, 0.php,
a potom je tu to škaredé textu tu.
Dal som ani pomyslenie na formátovanie tohto.
>> Ale čo je zaujímavé, že tri hodnoty boli zrejme prešiel v roku.
To je PHP druh ekvivalentná printf--
uvidíme, čo sa to vlastne s názvom v bit-- že práve vytlačí
to, čo ste prešiel do neho.
Takže to naznačuje, že táto forma mal prinajmenšom tri polia na to,
a ty ma videl zadajte ich do.
Jeden z nich bol moje meno, jeden bol pohlavia, jeden bol koľaje.
A kapitán ani dostať zaslané server, pretože som nemal skontrolovať.
>> Takže to znamená, že ako sa zdá, keď zadáte veci na webe,
Nielen, že URL niekedy change-- niekedy nie.
V skutočnosti, názov súboru zmenený, ale to, čo chýba z URL
že sme videli minule s firmou Google.
Jo?
>> STUDENT: Nie query string
>> DAVID J. Malan: Nie je reťazec dotazu.
Nie je otáznik niečo.
Niet pochýb o tom mark q rovná mačky, ako sme to urobili minule.
A nie je to rozhodne nie je Názov otáznik rovná
David alebo koľaji rovná Matthews, Takže tam, kde sa to všetko deje?
>> No, dovoľte mi vrátiť sa do gedit tu a otvoriť prvú z týchto súborov
v mojom VHOST, miestne hostiteľ, verejné adresár tu a ísť do froshim0.
Tak to dopadá, že takmer všetky tejto stránke je len HTML.
A to môže byť neznáme pre vás, ale čoskoro bude viac s pset 6
a pset 7 a pset 8.
Ale to je len HTML stránky.
>> A zaujímavé veci Zdá sa, že tu.
Formulár značka, ktorej činnosť atribút má hodnotu 0 registra.
To je dôvod, prečo, keď som sa predložiť to, že ide do tohto súboru.
Ale metóda je iná today-- príspevok.
Tak to dopadá, že je aspoň dve metódy na webe používajú
odoslať informácie z prehliadača na server.
Get hovorí v URL.
Post hovorí inde.
A kedy a prečo by mohol si skutočne chcú webové stránky
použiť príspevok potom miesto zo si len intuitívne?
Akejkoľvek webovej stránky.
Aké údaje by mali byť tesne dedukcií teraz poštou na rozdiel
dostať, keď sme videli dva rozdiely?
STUDENT: [nepočuteľné] zaistite.
DAVID J. Malan: Ak chcete, niečo, čo sa v bezpečí.
Takže môžete zadať heslo na webové stránky, kreditné karty
na webových stránkach by druh tejto suboptimálne
v prípade, že prehliadač dal, že hodnota v URL.
Prečo?
Vidíte to, čo nie je Zdá sa, že tak veľký problém,
ale šance sú si dosť často chodiť ďaleko od svojho počítača alebo použitia počítača
laboratória, a tak niekto iného, ​​alebo dokonca spolubývajúci
mohol ľahko ísť a vidieť že súkromné ​​informácie.
Keď odošlete e-mail cez internet, budete pravdepodobne
Nechceme, aby údaje, ktoré sa končí v URL tiež.
A tak je tu mnoho dôvodov, Preto by sme mohli chcieť, aby to tu.
A photos-- pravdu, nemôžem ani celkom Predstavte si, ako by sa na grafiku,
ako JPEG, a dať ho do URL.
Dalo by sa to urobiť.
Je tu spôsoby kódovania, ale je to jednoducho nie je jednoduché takto.
>> Zaregistrujte 0 je vlastne veľmi nezaujatý.
Všetko, čo to hovorí, že je to doslova.
Tlačí sa v niektorých HTML tagy nasledujúce.
Mám tag PHP tu vnorená vnútri vopred značky.
"Pre" jednoducho znamená, pre-formátovaný text, mono-rozložený, ako písací stroj.
>> Printr je tlač rekurzívne funkcie.
A potom je tu to Zaujímavá vec tu.
A vrátime sa k tomu pretože tam je iné,
ale znak dolára podčiarkovník Príspevok sa zdá byť
premenné v PHP, v ktorom niečo odoslanie z prehliadača na server
je uložená pre vás.
A uvidíme, ako sa dostať na že informácie onedlho.
>> Ale najprv, vráťme sa k mierne odlišný príklad.
Chystáte sa do register-- alebo skôr froshims1.php,
ktorý vyzerá trochu inak.
Vzal som si trochu viac úsilie s formátovaním,
aj keď je to stále dosť škaredý.
Ale budem pokračovať a zadajte "Davide" teraz.
Male.
Budeme kontrolovať "kapitána" tentoraz.
Urobíme Matthewsa.
A zaregistrujte sa.
>> A tentoraz to hovorí, hm, naozaj nie.
Dobre, takže to, čo je zaregistrovať jeden?
Nechaj ma ísť do otvoreného registra 1 a- hm.
V poriadku, takže to je zaujímavé, a to
je odrazovým mostíkom teraz k ďalšie zaujímavé programy.
>> Všimnite si, v hornej časti tohto súboru má PHP tag rovnako ako niektoré komentáre.
A to sú pre túto chvíľu, rozptýlenie tak nech to jednoducho zbaviť týchto pripomienok
rovnako, ako by to v C. A tvrdím, tento kus kódu s komentármi
že tento kód je overovania podania.
>> No, ukázalo sa, že premenné ako znak dolára
zdôrazniť príspevok je volal flash globals.
Sú ako ty špeciálna globálne premenné
že sú len omni-v súčasnej dobe k dispozícii v rámci programu.
A môžete použiť hranatá zátvorka notáciu index do nich nie je pomocou čísel
ako 0, 1, 2, 3, ale skutočná slová.
>> Takže si môžete myslieť znak dolára zdôrazňujú príspevok ako akési hash tabuľky
že by ste mohli prejsť kľúč do, na vyhľadávanie slovo, v hranatých zátvorkách,
a to bude vám späť hodnota, ktorú používateľ skutočne poskytnutá.
PHP má funkciu nazýva prázdna, že práve
hovorí, že áno, alebo nie, to premenná je prázdna, alebo nie.
Máme tieto dvojité tyče, čo jednoducho znamená, alebo, ako v C.
>> Takže v skutočnosti, táto linka 4 je práve hovorí, v prípade, že používateľ nedal meno
alebo nedal pohlavia alebo nie dať koľaji, choďte do toho a presmerovať ho
alebo ju prostredníctvom tejto linky tu.
Tak toto je trochu tajomný, ale to len znamená doslovne
späť na toto miesto, tak to plavia užívateľa
späť do miesta, kde on alebo ona pochádza.
Ale je to trochu nevkusný v tom, že som tvrdo kódované to.
>> Ale čo keď to, ak podmienka nemožno vyhodnotiť na hodnotu true?
Čo v prípade, že používateľ sa mi dať jeho alebo jej meno a koľaj a pohlavia?
Že ak podmienka nie je bude hodnotiť na hodnotu true,
takže si nemyslím, narazila na výstupe v riadku 7.
Takže čo sa stane?
A to je to, čo je Zaujímavé informácie o PHP.
>> Môžete spadnúť do a von schémy PHP, aby som tak povedal.
Ak chcete nejaký kód spustiť, môžete otvoriť a zatvoriť tag PHP
a dal kódu tam, ako by som tu urobil.
Akonáhle zatvorte tag PHP server
sa práve chystá vypľuť čo ste tam dal.
A skutočne, toto bola časť originálny design PHP,
pre lepšiu horšie, bola táto vzájomným kódu a značenie
jazyk.
A uvidíme, že práve táto rýchlo prejde do neporiadku.
A tak budeme robiť lepšie ako v konečnom dôsledku, ale len
Všimnite si, s akou ľahkosťou Som skutočne schopní vykonať nejakú logiku.
>> Ale ešte trochu nezaujatý.
Poďme otvoriť verziu dva frosh IM, ktoré
zrejme podriaďuje register2.php.
Takže tento súbor to vlastne deje vyzerať takmer rovnaké.
Chystám sa ísť na frosh IM 2.
Ale v frosh IM 2, uvidíme, čo sa stane.
>> David, kliknite na príslušný prepínač, as sa to volá; Matthews, nie kapitán.
Registrovať.
Tie sú registrované.
Nie tak celkom.
Ale počkajte, len sme urobili že príklad, nie my?
Dobre, stand by.
Urobíme na tri.
Je zrejmé, niečo to o sa stane s Gmail.
Dostaneme sa tam.
>> Takže frosh IM 3 vyzerá takto.
Nelíšia.
Ale keď som to Dávid, muž, Matthews, a registrovať, toto tretie a posledná verzia
nároky, proste tí, sú registrované v skutočnosti.
To je trochu nevýznamné.
Ale tvrdím, s tým Tretia a posledná verzia
Teraz som znova presne to, čo my spolubývajúci a ja postavený za frosh IM
Program rokmi.
A to bolo jednoduché.
Nebolo databázy, no Excel.
Ale oveľa dôležitejšie je, nebolo viac papiera
pretože to, čo sme robili s týmto programom bolo v skutočnosti e-mailom Proctor, ktorý
bol predtým príjem tieto veci prostredníctvom formulárov.
>> A zrejme sme naprogramované na túto takým spôsobom, že keď sa niekto registruje,
Účet e-maily John Harvarde proctor-- alebo sa v tomto prípade,
John Harvard-- s nasledujúcimi text-- "Tento človek jednoducho registrovaný."
Volá sa David, kapitán je prázdna; pohlavia, samčie; a koľaji, Matthews.
>> Takže to, čo sa tam stalo?
No, súbor v otázke tu je zrejme register3.php.
A keď som to otvoriť, uvidíte ako moc kódu, ako je tento
a tiež, úprimne povedané, neistota systému, ako je e-mailom.
Práve som skutočne predstieral, že sa John Harvard nasledujúcim spôsobom.
>> Mám php tag otvoriť top, ktorý Len hovorí, že tu je nejaký PHP kód.
Tu dole, ukazuje sa, že sú knižnice v PHP.
Vy jednoducho potrebujete Vrátane hlavičky súbory ako moc.
Získate viac s kuchynský drez, aby som tak povedal.
>> Ale tentoraz v riadku 4, mám Chcete odbornej knižnici s názvom
PHP mailer, čo je niečo, čo vás môžete nainštalovať zadarmo v mnohých systémoch.
Tu dole som potvrdenie podanie len
kontrolou sa používateľ dá mi meno, pohlavie a koľaji.
A ak áno, choďte do toho a inštanciu mailer.
>> Môžete myslieť na to, ako je riadok kódu, ktorý práve prideľuje.
Je to ako malloc, ale je to trochu viac sexi
v tom, že ste spomenul nielen malloc a niektoré generické číslo.
Hovoríte, daj mi jeden z nich, daj mi nový jeden z nich.
>> A ak ste naprogramovaný v Java alebo C ++ a ďalších jazykov,
ste mohli vidieť to.
Ale krátky na to, ak je neznáme, tento riadok
uvádza do dolára mailom špeciálna struct s názvom
objekt, ktorý má vstavaný-in e-mail funkčnosť.
A v skutočnosti, všimnite si, a podobné syntaxe.
>> To nie je ukazovateľ, samo o sebe.
PHP práve používa rovnakú syntax.
Tento riadok vraví použitie SMTP-- Simple Mail Transfer
Protokol, ktorý je práve protokol používaný pre odosielanie pošty.
To je určujúce použitie Harvard je SMTP server, ktorý
je niekde tu na akademickej pôde.
>> To je to, čo hovorí, TCP číslo portu hovoriť,
a ja som zistil, že zo strany googling alebo dotazom na help desk.
A potom, pretože Harvard používa niektoré Bezpečnostný systém na poštovom server--
aspoň na šifrovanie komunikácia medzi vami a ním,
aj keď niekto môže poslať to-- Idem zapnúť protokolu TLS
pre udržanie tohto bezpečia.
>> Ale to je miesto, kde sa veci trochu desivé.
Môžem len svojvoľne povedať, že som jharvard,
a môžem len svojvoľne e-mail, aby som tu.
A potom som si zadať predmet s týmto tu.
>> A to len vyzerá škaredo, ale je to len banda zreťazenie.
Ukázalo sa, že PHP má super užitočný symbol, ako niektoré jazyky, operátor bodka,
ktorá sa práve doslova zřetězuje reťazec za reťazec po reťazci,
a vy nemusíte malloc alebo obrázku z celkovej dĺžky reťazca.
Vy to jednoducho urobiť.
A skutočne, pretože som zreťazenie vo všetkých týchto veciach s týmito bodmi,
To je dôvod, prečo som email poslal pozrel, ako to urobil.
>> A potom konečne tu, som odosielanie e-mailov.
Takže ak je to falošný, Ja len, že umriem,
čo je funkcia, ktorá len tlačí na obrazovke niektoré chybové správy.
Ale to je, v skutočnosti, volanie funkcie odoslanie.
V opačnom prípade, ak je toto všetko zlyhá, je tu presmeruje ma späť.
>> A prečo vidím, že Som registrovaný v skutočnosti?
No, to sa stalo tu.
Tak som sa, aby to sa k z niekoľkých dôvodov.
>> Jeden z nich, je to presne tak, ako, ak budete stavať niektoré webové stránky záverečného projektu
alebo v reálnom svete, to je ako odosielať e-mailové upomienky
pre svojich zákazníkov a vašu odberatelia.
To je, ako sa Poslať heslo upomienky.
To je, ako posielať ľudí správy že majú novú Facebook
Správa čaká, alebo niečo také.
>> Ale tiež hovorí do skutočnosť, že by to mohlo
boli veľmi dobre od Davin alebo niekto iný.
A ja hovorím, tento druh s úsmevom, pretože som
úplne istý, čo sa deje prostredníctvom niekoľko z vašich mysliach v tomto bode.
Ale to je jeden z tých, robiť ako ja hovoria, nie ako ja druh vecí,
pretože je triviálne falšovať e-maily, ako je tento.
Ale ako môžete vidieť alebo čítať v Crimson,
poslednou dobou je to tiež celkom triviálne pre ľudí
ich spätne do istej pôvodu.
A opýtajte sa ma nejaký čas, možno na CS50 obed, ako som sa prvýkrát
mám veľmi úzko oboznámení takmer na ed palube mnoho rokov
dávno, keď som zistil, ako internet funguje.
Takže v každom case-- mierne Po vydaní dosky urobil.
>> Takže v každom prípade, že je celá partia super globals,
ako sa im hovorí tu, z ktorých jedna sme saw-- znak dolára podčiarkovník miesto.
K dispozícii je náprotivok s názvom GET, čo je miesto, kde veci z URL
skončí deje.
A je tu celá banda ďalších, too-- relácie a servera a cookie.
Vrátime sa k cookie niekedy inokedy,
ale relácia je celkom fajn pretože práve now-- až do now--
všetko, čo sme urobili s webovým prehliadačom je trochu bez štátnej príslušnosti, aby som tak povedal.
Aj kliknite okolo, prístup súbory na serveri, niečo
sa deje na obrazovke, ale potom sa spojenie uzavrie.
Internet Explorer alebo Icon Firefox dotočí
a vidíte len to, čo ktoré webová stránka obsahuje.
>> Takže HTTP je bez štátnej príslušnosti v tom, že akonáhle je spojenie,
dostane nejaké dáta, to je všetko.
Žiadne ďalšie spojenie, na rozdiel od Skype, Na rozdiel od FaceTime, na rozdiel od GChat, ktorý
udržiava konštantnú pripojenie k serveru.
Web je v podstate odpojený, keď budeme
vidieť, ako dlho, ako môžeme simulovať veci
ako Facebook chat a GChat, ktoré udržujú illusion--
alebo vlastne robiť udržať konštantné pripojenie pomocou
viac moderné technológie.
>> Ale keď som sa ísť do, povedzme, counter.php, To je ďalší jednoduchý príklad,
ako uvidíme, že v súčasnej dobe si myslia, že Navštívil som stránky nulovú dobu.
Ale keď som jednoducho znova načítať stránku, to nejako vie, že som tu predtým.
Keby som znova načítať, je vie, že som tu predtým.
A znovu a znovu a znovu a znovu.
>> Takže tam je nejaký plus-plussing deje, ale oznámenia
maličkosť točí niekedy tak krátkodobo až hore a potom sa odpojí,
takže to nie je, že by som sa konštantná Pripojenie k môjmu prístroju.
No, keď idem do counter.php, Všimnite si, ako je to jednoduché.
Prvýkrát som volať tento osobitný funkcie, ktoré sme čoskoro
začnete samozrejmosť volal spustenie relácie.
Spustite reláciu.
>> A relácie ďalej len bude vedro, ako nakupovanie
vozík, v ktorom si môžete dať hodnoty a trochu veriť ako programátor
že budeš tu, až sa že užívateľ príde back-- druhý
neskôr, o hodinu neskôr, a to aj o rok neskôr, tak dlho, ako on alebo ona nie je jasné,
ich cookies, ako budeme nakoniec vidieť.
A teraz už len mať ak podmienka tu.
Takže ak v nasledujúcom kľúči, volal počítadlo je nastavené v
v tomto super global-- tento hash stôl, ak will-- názvom relácie,
potom choďte do toho a chytiť hodnota z session-- think
to ako nakupovanie cart-- a uložte ho
v dočasnej premennej nazvanej čítač.
>> V opačnom prípade, ak je to hodnota čítača sa nie je nastavený na tzv nákupného košíka,
len inicializovať na 0.
Konečne, tu dole, ísť a dať späť do nákupných vozíkov alebo zasadania
hodnota počítadla +1.
Tak to dopadá, že táto špeciálny kontajner here--
ktorý, opäť, je jedným z nich spojený polia, polia, ktoré môžete index
do slov miesto numbers-- pretrváva aj potom, čo užívateľ zmizne.
Opäť platí, že pôjdem späť na stránku teraz.
Bolo to minútu alebo tak.
Ale to si pamätá, že som tu bolo 19 krát predtým.
To je môj 20. návšteva.
>> A tak to bude kľúčom k vykonávanie akejkoľvek webovej stránky, ktoré si pamätá
že ste prihlásení, že ste dal niečo doslovný do vášho nákupného košíka
kúpiť, alebo že máte niektoré Počet správ prebieha.
Kedykoľvek budete chcieť zapamätať si informácie,
uvidíme, že PHP, rovnako ako niekoľko iných jazykov,
nám poskytuje ilúziu štátu aj keď, ako uvidíte v pset 6,
ako ste odosielanie HTTP požiadaviek z klienta na server, to je všetko.
Akonáhle sa dostanete späť, že odpoveď, nič viac
vracia zo servera v predvolenom nastavení.
Ale uvidíme, ako obísť to.
>> No tak, poďme sa pokúsiť vyčistiť to sa trochu.
Videli sme niekoľko rôznych príkladoch.
Jo, a ako stranou, pre tých, ktorí poznajú alebo nepoznajú,
z dôvodu, že Frosh IM príklad šiel
z pohľadu naozaj škaredý dobre slightly--,
stále ugly-- mierne menej škaredá aj keď stále škaredá
Je to preto, ak sa pozrieme na zdrojový kód tu
Ukazuje sa, že to mám na samom začiatku súboru.
>> Ukazuje sa, že bootstrap je jedným z mnohých voľne dostupné knižnice vonku
že existujú nie pre programovacie jazyky vždy, ale pre CSS alebo JavaScript
alebo HTML alebo ľubovoľný počet jazykov.
>> A títo ľudia here-- pôvodne vyšiel
z Twitter-- jednoducho celá partia štýlov.
Je to obrovský súbor tu, že niekto písal,
alebo niekto to písal, v priebehu času, že určuje farby a formátovanie
a ktovie čo ešte, takže môžem druh požičať ich syntax
a nebudú sa musieť prísť na to, ako vyložiť svoj formulár.
To je tiež minified tak, že počítač môže
pochopiť to, ale nie nutne človek.
Tak to je práve dôvod, prečo štylizácia tam zmenilo.
>> Ale poďme teraz urobiť lepšie pokiaľ ide o dizajn,
pretože ak zostaneme dole táto cesta príliš dlhá,
náš kód to bude dostať chaotický a Messier.
Tak sa poďme zamerať na tieto príklady tu.
Posledná pre dnešok.
>> Takže tu je super jednoduché verzia 1.0 internetových stránok CS50 je.
Má iba odkazy na prednášky a učebné osnovy,
a to pomocou tohto zoznamu tag-- značku UL, že sme použili naposledy.
A ak je v skutočnosti, keď som otvoriť Zobraziť zdrojový kód stránky,
uvidíte, že to je naozaj, ale naozaj jednoduchý HTML.
A v skutočnosti, aj keď je to súbor PHP pod kapotou,
je to stále len pľuvať vykonávať len HTML pre túto chvíľu.
>> Takže keď som kliknite na prednáškach, vidíme to stalo.
A keď som kliknite na týždeň nula, to vidíme.
A keď som kliknite na Streda, vidíme to.
A to zrejme bol PDF fotografie z onoho dňa.
Všetko, čo som urobil, je spojenie s kotva tag na túto adresu URL tu.
>> Takže je to len povedať, je to celkom jednoduchá verzia stránok CS50 je.
Poďme sa pozrieť, ako to urobiť.
Ak idem do adresára mvc0, uvidíme niekoľko súborov.
Jedným z nich je README, takže ak Čiastočne je to príliš rýchlo,
stačí strčiť okolo pokojnejšie neskôr.
A upozornenia tu je súbor index.php.
Ukazuje sa, že v prípade, Vy sám, človek,
nezadáte konečný názov URL, webový server zvyčajne
vyvodzuje nejaké predvolený názov pre Vás.
Index bodka niečo je všeobecne nastavená ako predvolená.
>> Takže to je dôvod, prečo pred chvíľou keď som navštívil túto adresu URL tu
žiadny súbor, žiadny súbor rozšírenie, žiadne obdobie v URL.
Je to jednoducho vedel, že nejako magicky hľadať index.php.
Je to len konvencie.
By sa dalo nazvať čokoľvek.
>> Takže keď som teraz ísť do index.php, uvidíte
že indeed-- poďme zbaviť komentárov
tu, pretože je to naozaj nič zaujímavého na to--
To je len pevný kódované HTML.
Tak to je v súlade, keď sa mojej žaloby
že môžete miešať HTML a PHP.
Neexistuje žiadny skutočný programovanie logiky tu.
>> A ostatné súbory sú celkom veľa rovnako nezaujímavé.
Je to len pevne týždeň jeden tu týždeň jeden meter a týždeň jeden watt,
na pondelok a v stredu.
A potom keď som otvoriť týždeň nula, Všimnite si, že je to takmer totožné.
>> A to je niečo ako kľúčové stánok s jedlom.
Všimnite si, ako je to nadbytočné.
Tieto súbory ťažko zmeniť, a napriek tomu som vytiahol jednu z týchto copy / paste pracovných miest
kde som vzal jednu file-- pravdepodobne v týždni zero-- skopírovali
keď jeden týždeň obišiel, a vylepšil niekoľko hodnôt.
Mali by sme byť schopní robiť lepšie ako toto.
>> Takže sa vráťme do MVC a ísť do verzie jedna.
A všimnite si mám niekoľko súborov, pretože to, čo
bolo spoločné pre všetky tieto súbory moment ago-- ak sa vrátim k verzii 0,
vráťme sa do indexu, a len postulate--
Raz som sa zbaviť comments-- aká časť tejto stránky
Zrejme je v každom z mojich súborov?
Stačí zavolať na to.
Ktoré riadky sú duplikované pravdepodobne cez všetky tieto stránky?
Jo?
>> STUDENT: [nepočuteľné].
>> DAVID J. Malan: 1 až 9.
Jo, určite.
1 až 9, snáď s výnimkou 8 zmení trochu z nasledujúcich dôvodov CS50
stáva prednášky alebo týždeň nula, alebo tak niečo.
Ale takmer totožné.
Takže toto všetko je len druh skopírovať a vložiť.
A je tu pár iné linky Neviem si
z toho sú pravdepodobne rovnaké vo všetkých súborov.
>> STUDENT: 12 a 13.
DAVID J. Malan: Jo.
Iste, 12, 13, 14 a pravdepodobne len preto, že sa zaujímavé veci
sa deje na tratiach 11 a 10, takže by sa mohlo zdať.
Takže poďme sa pozrieť na verziu 1, ktorý sa snaží zlepšiť to.
Vo verzii 1 tohto MVC example-- stretneme vysvetliť, čo mvc prostriedky v moment--
keď pôjdem do indexu, je to druh teraz vyzerá trochu mätúce.
Nie je to tak jednoduché ako predtým.
>> Ale akonáhle začnete pozorne si ju prečítajte, je to
veľmi jednoduché, čo to robí.
Zrejme riadok 1 a linka 8 boli nahradené
všetky veci, ktoré ste práve identified-- aj keď len na správnu mieru,
Nechal som ULS tam len v prípade, že niektoré dní nemal zoznam vecí.
A to vyžaduje, je niečo ako libry zahrnúť do C. Táto voľba skopíruje a pasty
Obsah účinne tu do tohto súboru.
>> Takže header.php, ako vy možno usúdiť z jeho názvu,
bude záhlaví stránky.
Je to tu trochu kópie.
Má len zhora, ale už nie je obsah nižšie.
>> A ak sa pozriem na pätu medzitým, ktorý bol iný súbor mentioned--
toto je ešte menej zaujímavé, ale zase je to bežné na všetko.
Tak toto je päta.
Toto je hlavičky.
Jedná sa o súbor, ktorý je mení, tak prečo nie
sa snaží vytknúť commonality s týmito dvoma linkami tu?
>> Ale môžeme vyčistiť to sa trochu ďalej.
Chystám sa ísť dopredu a otvoriť verzia dve, kde
uvidíme, že je tu nový súbor, helpers.php.
Uvidíme, čo to je za chvíľu.
Poďme do indexu, ako vstupný bod ako predtým.
>> A teraz si všimnúť som vyžadujúce helpers.php, nie hlavičky alebo päty.
Ale pomocníci je niečo ako helpers.c a helpers.h z pset 2
alebo pset 3 dávno, keď ste vlastne sa hľadať a nájsť pre túto pset,
a vy ste museli všetky svoje kód pre triedenie a vyhľadávanie v samostatnom súbore.
To je to, čo sa tu deje.
>> A teraz riadok 3 vyzerá trochu inak.
A to je len jeden riadok.
Aby to bolo ešte viac jasné, mohol som len
to, že sa tento štylisticky konzistentné so všetkým sme urobili.
Ale v skutočnosti to nie je zmene funkcie.
Je to len jeden riadok skutočného kódu.
>> Zdá sa, že je tu funkcia niekam volal činí záhlavie,
a to je miesto, kde sa veci pekne silný.
Všimnite si, že vo vnútri jeho zátvorkách Je to, čo iný kus syntaxe?
Je to asi trochu ťažké povedať, ale Všimnite si there's-- Dám nejaký biely
priestor.
K dispozícii je hranaté zátvorky.
>> A hranaté zátvorky sme videli pred trochu v súvislosti s asociatívnych polí,
ktoré sú, opäť, rovnako ako stoly mriežky.
A ak si myslíte, že teraz na C, poradie argumentov do funkcie
musí byť vždy rovnaká.
Musíte si uvedomiť, čo sa objednať je-- X, Y, Z alebo Z, Y, x--
a vy budete musieť vždy poskytnúť im v rovnakom poradí, alebo ich vyhľadať
Ak ste zabudli.
>> Ale to sa zdá byť šikovný spôsob, odovzdávanie ľubovoľnú hodnotu kľúča
páry, pričom názov je názov argumentu, v tomto prípade
a CS50 je jeho hodnota.
A skutočnosť, že som Tieto hranaté zátvorky
tu znamená, že som mohol tiež prejsť do niečoho
ako týždeň je 1 alebo 0, alebo 2 alebo 3.
Preto sme parametrizovať Táto funkcia tak, aby
že to môže trvať niekoľko vstupov, ale teraz je to len jeden.
>> Ak by som teraz ísť do helpers.php, Všimnite si, čo to robí.
To je trochu nové funkcie,
ale teraz len sa na viere, že je to
syntax, s ktorou definovať funkciu v PHP.
Doslova hovoria funkcie.
Nezadáte návrat typu, a to v súlade
s premennou detail predtým kde nemáte naozaj silne typu.
>> To len určuje, to, že v predvolenom nastavení táto
vezme asociatívne poľa ako argument.
A viete čo?
V prípade, že používateľ neprejde jeden v predpokladajme, že predvolenú hodnotu.
>> To je funkcia, ktorá C nemá pre nás, čo je príjemné, pretože teraz
údaje, aj keď nedávajú to nič,
bude polia, ale prázdna.
A ako stranou, extrakt len robí niečo funky
kde to má všetky kľúče z toho asociatívne pole, všetky tie veci,
by ste mohli dať v hranatých zátvorkách, a vytvára premenné z nich
takže môžeme mať prístup nakoniec na ne footet.php a header.php.
To je trochu abstraktná, tak mi dovoľte upozorniť na to.
>> V index.php, všimnite si, že som prejde v hodnote páru kľúčov vlastníctva
s hodnotou CS50.
Ak sa teraz pozriete na helpers.php, Všimnite si, že RenderHeader
je extrahovania, že údaje, ktoré som prechádzajúceho , A potom vyžaduje header.php.
To, čo som urobil, je trochu chudobný človek je Vykonávanie teraz z nasledujúcich.
>> Ak otvorím header.php, Všimnite si, že som už ťažko
kódované slovo CS50 v tomto hlavičkovom súbore.
Dal som to síce ukrutne s názvom funkcie, špeciálne znaky HTML,
tam.
Povšimnime si ale, čo som urobil.
Mám otvorený HTML.
Potom mám otvorenú hlavu a otvorené titul.
>> A potom vnútri názvu je otvorený a zavrieť značky, mám trochu PHP kódu.
A to je pekné, ale syntaxe, čo jednoducho znamená, echo von.
To doslova znamená tohle-- echo following--
ale to je zvodnejšie písať.
Echo z titulu ktorá bola odovzdaná v.
>> Ale čo si myslíte, že HTML špeciálna char je o,
najmä ak máte niektoré predchádzajúce HTML skúsenosť?
Aké znaky by mohli byť nebezpečné odovzdať na stránku
kam dynamicky generovať webové stránky s kódom, ako je tento?
Nechaj ma ísť do tohto súboru, verzia dva, a uvidíme, či nemôžem vyvolať to.
>> Verzia dve je to.
A všimnite si všetko je v poriadku, funguje dobre.
Ale predpokladám, že idem do index.php a Aj spresnil, že názov mojej stránky
nie je CS50.
Je otvorená držiak skript upozornenia hello world, blízko jeden citát,
v blízkosti zátvorka, bodkočiarka, otvorený držiak, lomítko skript.
>> Script, ako sme to nakoniec vidieť, je tag
ktoré môžete použiť na použitie iného programovací jazyk nazvaný
JavaScript vnútri webovej stránky.
A teraz si všimnúť tú logiku.
Tu je kľúčovým nazýva titulu.
Tu je, že je to šialené dlhé hodnoty teraz.
>> Ale keď idem do pomocníkov Page- alebo skôr, záhlavie stránky,
Volám túto funkciu na tento titul ako prvý.
Takže keď som teraz túto stránku znova načítať, I vidieť, ktorý vyzerá smiešne,
ale je to bezpečné.
Je to proste vyzerá hlúpo.
>> Predpokladajme však, že namiesto toho, Zabudol som, že to.
A moje slová, nenulové číslo z vás sa zabudnúť, ako to urobiť
a budete mať nejaký pracovitý študent alebo priateľ príde
pre vás na CS50 veľtrhu alebo anonymne v noci šťourat na vašich webových stránkach
a v podstate injekčnej kód unbeknownst vám do vašich stránok
nejako.
>> Pretože keď som jednoducho pľuvať z titulu tu a titul
there-- dobre, ak titul doslovne vyzerá takto a PHP
ako jazyk, ktorý môže pľuvať z iných jazykov textu,
to je doslova deje nahradiť túto značku,
Samozrejme, to, čo som dal inde.
>> Takže keď som teraz ísť sem a znovu po rozopol tie bezpečnostné mechanizmy,
teraz mám ahoj svet tu.
Teraz to nie je všetko tak veľký riešiť, ale môžete urobiť niečo
trochu nebezpečný tu, ako by to
ďalšie tags-- ako uvidíme, až budeme tráviť viac času JavaScript-- ako umiestnenie
dot href dostane, citácie, koniec citátu, HTTP business.com, ale opak toho
z druhého dňa.
A teraz môžete navodiť web strana skutočne ísť okamžite
na tejto webovej stránke tu.
>> A vlastne, ja nechcem dokonca ísť do business.com
pretože nechcem vedieť, čo to je.
Ale aj to, spustí kód byť aplikovaný na tejto stránke.
Takže je to len povedať, že aj keď predstavujeme výborný čoskoro na niektorých
týchto zložitejších štruktúr, to všetko ku koncu roka uistite sa,
že váš kód nie je využiteľný.
>> Takže teraz tretia verzia tu.
Začína to byť trochu obsiahlejší.
Ja som naozaj like-- análny strana o mne
bol už trochu naštvaný Skutočnosť, že som sa funkcia nazýva
RenderHeader a RenderFooter že sú takmer totožné.
Tak ma napadlo, prečo nie Aj parametrizáciu týchto funkcií
na len jeden volal činí, majú trvať aj druhý argument
ako meno šablóny, konečný na render-- buď hlavičky alebo päty?
A potom prípadne, ak chcem odovzdať v niektorých párov kľúčových hodnôt
ako ja o titul pre header ale nie pre pätu,
Nemohol som to urobiť.
>> A tak teraz, keď pôjdem do helpers.php, je to trochu zložitejšie.
A ja budem mávať svoje ruky na detaily, ale je to len jedna funkcia.
Takže je to krok smerom k lepšiemu dizajnu.
>> Môžeme si zobrať ešte o krok ďalej.
Ak idem do svojej štvrtej verzia toho všimnete teraz
že robím niečo ešte trochu tajomný.
A viem, že to je Mnoho absorbovať naraz,
ale my sme tak nejako čistenie veci.
Teraz dávam svojich pomocníkov súbor do zložky s názvom
includes-- len ľubovoľná meno, kde chcem, aby veci
že chcem include-- a potom Zvyšok je rovnaký.
>> Ale keď sa pozriem teraz gedit, Všimnite si, že som sa dostal zbaviť
zo všetkých tých ostatných súborov a som presunula napríklad na tu.
A potom sa v šablónach, Mám to tu taky.
A tak to je všetko teraz k krok použitie oveľa lepší návrhový vzor.
A my sme sa veľmi rýchlo chystá odísť
z východzieho funkcie PHP, ktoré sme tu začali s,
kde stačí miešať PHP, a vaše HTML, CSS a vaše,
a vy jednoducho vypľuť a idete o vašej ceste.
Nie je to bude veľmi udržiavateľný.
Rovnako ako v C, sme začali používať viac súborov a viac funkcií
a factoring veci, že z.
Urobíme tú to isté.
A v skutočnosti, v piatej a poslednej verzia tu, som urobil jednu vec.
Môžete dokonca použiť dot dot, ktorý znova, je len nadradený adresár.
Ak chcete byť ešte väčšiu bezpečnosť pri vedomí, pretože keď sa pozriem na počúvanie
tu piaty a posledná verzia, oznámenia že mám jeden adresár s názvom tu
verejnosť, a potom na rovnakej úrovni, aby som tak povedal,
Mám zahŕňa a šablóny a potom, že textový súbor readme.
>> A dôvod, prečo som sa štruktúrovanou to rád tohle-- a toľko web
hostitelia, najmä tých, ktoré 5dolar mesiac ty alebo tie 10 dolárov mesiac,
ak ste niekedy mal jeden z nich services-- čo tak mnohé z nich
je jednoducho očakávajú, že budete vypísať všetky vaše súbory do jedného adresára,
ako sme to urobili už s Tento prvý príklad.
>> Ale akonáhle začnete stavať viac sofistikované stránky, ktoré práve uložiť
Dáta vám záleží, a súbory, ktoré ste starostlivosť o, vlastne organizovať veci
správne a väčšiu bezpečnosť vedomie v mysli môže
začneme sa brániť proti všetkým priateľom
že máte buď alebo mimo tejto triedy, ktorý,
Akonáhle začnete robiť programy sami na webe,
sa chystáte začať výberom na vás a na nich.
>> A tak sa pozrieme nakoniec sa na tento návrh.
To je len obrázok ktorý znázorňuje nasledujúci.
Chystáme sa dať všetky naše programovanie logiky v jednom alebo viacerých súborov,
a budeme len začať volanie týchto radičov.
To je miesto, kde mozog Naše webové stránky v skutočnosti sú.
Potom ideme do majú výhľad a výhľad
sú tak jednoduché, ako len samostatné files-- tzv šablóny, často.
Oni jednoducho majú estetika mojej stránke,
to, čo chcem stránka vyzerať like-- farby a rozvrhnutie
a pozície všetky premenné.
>> A potom ešte zaujímavejšie že budeme nakoniec dostať
je model, ktorý sa bude len slovo, ktoré udrieť na iných technológiách
že prinášame do obrázok, rovnako ako aktuálne databáz,
takže keď budete chcieť uložiť informácie,
nemusíte len poslať e-mail do svojho prokuristu alebo sami sebe,
skutočne uložiť do databázy použiť iný jazyk, známy ako SQL.
A tak sme si dnes tu nechať a vyzdvihnúť s tým v stredu
a zaviesť databáz potom.
>> [Prehrávanie hudby]