>> [Predvajanje glasbe]
>> DAVID J. Malan: Dobro.
To je CS50.
To je začetek osmih tedna.
In se morda spomniš, da smo končali Nazadnje, ko gledamo na novem jeziku
celoti.
Pravzaprav, tistega, ki je dokaj lahek in to ni niti
programski jezik.
To je jezik, markup, ki nam omogoča, dejansko strukturo in spletnih strani.
In če vam kaj drugega v povezavi s this--
ali pa kmalu bo, če bo imate že ne.
Bomo uporabili kaskadno Style Sheets ali CSS, ki
je druga vrsta jeziku z lastnostmi in vrednotami
da se dogaja, da nam naredi stvari všeč spremenite barvo
in spremenite položaj in te vrste poteg.
Ampak danes in naprej, začnemo osredotočiti na močnejših jezikov
Dejanski programskih jezikov, kot so PHP.
>> Torej je PHP bila približno za nekaj časa.
In kot boste videli, da je bil namenjen predvsem
zgodaj za dejanski uporabo v razvoj spletnih
in dejansko ustvarjajo spletne strani.
Torej, kaj vrste lastnosti pa jezik
potrebujejo, da bi splet Strani dinamično z njim?
>> Z drugimi besedami, če želite ustvariti vsebina dynamically-- kot je Facebook
Newsfeed, ki se stalno spreminjajo, ali hitra sporočila, ki pop up od časa
da time-- všeč, kar je Ključni del funkcionalnosti
morate v programskem jeziku da bi vam pustil dinamično
natisniti nove informacije na zaslonu?
>> ŠTUDENT: Code.
DAVID J. Malan: Code.
OK.
Poskrbeli bomo, da.
Malo bolj natančno.
Mislim, lahko naredimo to s C, odkrito povedano.
Bilo bi bolečine v vratu.
Ampak-- je to obveza?
>> ŠTUDENT: Ja.
Spremenljivke, morda?
DAVID J. Malan: spremenljivke.
OK, seveda.
Spremenljivke nam lahko zagotovo pomagal.
In še nekaj, enostavnejši.
Ga zelo prvič smo uporabili v Program prvega dne
ko smo dejansko rekel "zdravo svet".
>> ŠTUDENT: Print.
>> DAVID J. Malan: Print, kajne?
Print ali printf v svet C. Torej vsem tem času,
smo imeli na našem odstranjevanje language-- C,
v particular-- in celo Scratch za to zadevo, ki
lahko ustvarjajo nize besedila.
>> No, če je HTML, kot smo videli prejšnji teden, je Samo cel kup nizov besedila
čeprav z odprtim oklepajem in zaprta nosilci in nekakšna rima
in razlog za to, no potem smo lahko res
začnete ustvarjati spletne strani bodisi ročno, da jih vnesete v gedit
ali v Microsoft Wordu, za to matter-- moramo samo urejevalnik besedil.
>> Ali bi lahko napisali kodo, na svoj komentar
prej, da bi nas pustil dinamično ustvari HTML,
in to je tisto, kar bomo začeti početje z PHP
in na koncu še z jezik imenuje JavaScript,
se uporablja en jezik za ustvarjanje drugega.
In res, to je tisto, kar Facebook in veliko, veliko drugih spletnih strani
storiti, da bi dejansko dinamično prikaz novih informacij za vas.
>> Torej začnimo z this-- a Grobni videti črto, vendar
To je pravzaprav zelo močan.
Doslej smo bili z uporabo C, kar je zbrati jezik.
In samo na hitro recap-- zbrati jezik ima kakšno lastnost?
Seveda morate zbrati je, ampak kaj to pomeni?
Ja?
>> ŠTUDENT: To mora biti sestavljeni v strojno kodo.
>> DAVID J. Malan: OK.
Zato je treba sestaviti v strojno kodo.
Torej si vzemite izvorno kodo, ki je neke vrste angleščina-like.
Pretvorite da nekaj nižji ravni,
ki se v končni fazi imenujemo Objekt code-- 0 in 1 je.
In to je tisti 0 in 1, ki je CPU, kot tistih, ki jih Intel,
dejansko razumeli.
>> Zdaj, PHP in Python in Ruby in JavaScript in šopki drugo
jeziki niso pripravljeni jeziki, ampak razlaga jezikov
kar pomeni, da jih je samo tip in potem jih ne spremeni v 0 in 1 je.
Si namesto le zagotoviti nato kot prispevek k programu nekoga drugega,
imenovani tolmač.
In da je oseba, ki je Program je zasnovan
razumeti, kaj vse in vsak simbol v Python ali PHP
ali Ruby ali poljubno število drugi jeziki pomeni.
>> In tako je vse, kar potrebujemo, je kaj takega.
Torej v bistvu, bom pojdi na napravi
tukaj, samo v nobeno stara okna, in smo
dogaja, da gredo naprej in odprt datoteka z imenom, pravijo, zdravo.
Sedaj že prej, morda sem se rešil to celo s pripono,
ampak bom naredil kaj še enostavnejše tukaj.
Jaz bom šel naprej in začeti ta datoteka s tem Grobni sintakso.
Torej "uporabnik, bin, env, za okolje, php. "
>> To je le ena vrstica kode, ki je bo povedal svoj operacijski sistem,
poišči v lokalnem okolje, karkoli že to je,
kjerkoli PHP is-- na interpreter-- in iti naprej in uporabiti ta tolmača
razlagati naslednjo kodo.
Zdaj, to je vrsta grda lastnost PHP.
Toda v tem jeziku, kateremkoli Čas, da napišete PHP kodo,
morate imeti enega od teh grdo PHP oznake razmejuje začetek
vašega code-- <? php.
>> Vendar pod tod lahko jaz zdaj nekaj storiti preprosta, kot printf zdravo vejico
svet poševnica nazaj n close quote, close oklepaj.
In potem samo za dober ukrep, jaz grem
da gredo naprej in blizu moj php tag tukaj
da bo vse izgleda lepo lepo natisnjena.
>> In takoj, ko sem kliknite Shrani, gedit je dejansko dovolj pameten
pogled na to zelo prvi vrstici in zavedaš, oh, pišete PHP kodo.
Naj mi skladenjsko highlight je z barvami
tukaj, tako da stoji ven malo več.
Ampak zdaj bom šel do mojega terminala okno.
Bom povečavo.
>> Ta program je bil imenovan "zdravo" tako bom naredil dot poševnica zdravo,
vendar pa je zavrnil dovoljenje.
In bash.
Dejansko smo slišali, da stvar nekaj tednov ago
v okviru Shellshock, eden od teh hroščev.
>> Vendar dovoljenje zanikal smo videli prej, morda v drugačnem kontekstu.
Ali kdo spomni, kako če odpravite nekaj
kadar je dovoljenje zavrnjeno, kot je ta?
Kaj je ukaz, vsaj?
>> ŠTUDENT: Chmod.
DAVID J. Malan: Ja, chmod, za spremembo načina datoteke.
In boste dobili vse bolj uporabljajo za naslednji teden s poznejšo problem
nastavljen.
Ampak za zdaj, jaz grem, da spremenite način ni mogoče brati,
ampak prav vsakomur executeability privilegiji, zmožnost
zagnati to datoteko.
In bom za dodelitev da datoteko zdravo.
>> Če bom sedaj naredil dot poševnica vpišite zdravo, vas glej, v resnici, moj program, zdravo svet.
In kaj je naredil korak I jasno preskočite skupaj?
Sestavljanje.
Tako da sem tekel ta program preprosto.
>> In se izkaže, da lahko to storite s Veliko sintakse spominja na C.
Dovolite mi, da gre v današnjem kodo, ki sem jo dal v mojo vhost imenik
Tukaj, na realnih razlogov bomo vrnili.
In jaz bom šel v, recimo, pogoji 1.
>> In boste videli tukaj, prvi in Najpomembnejše je, da cel kup pripomb.
Toda to je dejansko ponovno oblikovanje v PHP
programa smo v tednu en imenovane pogoji 1.c
kadar je namen v doba tega programa
je očitno, da zahteva navodilo za celo število
nato pa naredite nekaj puhasto Analiza na njej, pri čemer
praviš, če je pozitiven ali negativna ali enaka nič.
In sem to prineslo samo gor, ker, razen morda eno malo podrobnosti,
to je mogoče ločevati tako daleč od C.
>> Kaj je ena značilnost tukaj, da morda skoči ven
na vas kot malo drugačna?
Mogoče dve stvari.
Ja?
>> ŠTUDENT: Dollar znamenje n?
>> DAVID J. Malan: Ja.
Torej dolar znak n je prisotna.
Dolar in znaki, kot so bomo videli, se bodo
da se določi na začetku katere koli spremenljivke v PHP.
To je tako dobro in bad-- dobro v da je nekako jasno, kaj je
spremenljivka, slab s tem, da je še ena stvar, da tip.
In tu je še ena stvar, ki jo imajo, ne povsem
videli, vsaj s tem zapisom. ja?
>> ŠTUDENT: readline.
>> DAVID J. Malan: readline.
Readline nismo videli, sama po sebi C, čeprav obstaja nekaj
podobno, vendar smo se uporablja getstring, in to je nasprotna.
Torej, če sem šel v to imenik, ki se zgodi, da bo,
kot bom razložil, v nekaj v moji vhost Imenik in moj vir imenik,
in sem šel naprej in to dot poševnica conditions-- whoops-- dot slash
pogoji 1, boste videli, še enkrat, Enako issue-- permission denied.
>> Zato mi dovolite, povečate in narediti chmod plus x o pogojih, dot pogoji poševnicama.
Rad bi celo, prosim, 50.
In lahko bi to igral Igra ves dan.
To se dogaja, da se obnašajo natanko kot je to storila v enem tednu.
>> OK, tako da ni vse tako različna, razen Ne samo, da je rahlo malo sintakse,
ampak na vrhu, sem spet imel to vrstico, ki
Dovolili so mi, da ustvarite nekaj, Izgleda program C imenovano zdravo,
imenovane pogoji 1.
Ampak to ni 0 in tisti, Jaz sem neposredno izvajajo.
To je namesto teče ta tolmač, čigar ime
zgodi, da bo enak jezik.
Program se imenuje PHP, in moja koda pod črto je eden dejansko prenašajo vanj.
>> Mi lahko naredimo še en dokaj preprost Primer spominja na nekaj,
smo naredili tedni.
Tudi to je vrsta samovoljno kos kode
ki očitno ne kaj, ko je pobegnil?
Kaj se to dogaja za tiskanje, predvidoma?
>> Torej, najprej na liniji 16, to je reči x je sedaj 2, verjetno.
% D je enak kot $ i za printf.
Torej potem je cubing, dot, dot, dot, v skladu 17.
In potem v vrstico 18 se prikaže poklicati funkcijo kubikov.
In kje je Cubed opredeljen?
>> No, izgleda, da v vrstici 25, tako da ni vse tako različna.
Imam zgoraj nekaj pripomb je, vendar za večino del,
to je precej enostavno Prenos ali pretvorbe
iz programa C na PHP različico.
Vendar pa so zdaj nekaj razlike, da bi bilo mogoče skočiti ven.
Kaj je drugače o tem, kako bi napisati to isti program v C?
>> ŠTUDENT: [neslišno].
>> DAVID J. Malan: Obstaja no prototip up top.
Torej PHP-- in odkrito, Veliko sodobnih languages--
so veliko pametnejši in bolj koristno kot C prevajalnika, da vas
lahko dajo funkcijo tukaj, lahko postavite funkcijo tukaj,
in tolmač se dogaja da vam naredi uslugo branja
celoten spis, preden se odloči, da nekatere funkcije ne obstaja.
Tako lepo leti izboljšave kasneje.
Vendar pa je tudi nekaj ostali drugačni ali odsoten tukaj.
Ja?
>> ŠTUDENT: [neslišno].
DAVID J. Malan: Mi ne bi bilo treba razglasi vrste spremenljivk,
tako da bomo videli kmalu, da obstajajo različne vrste v PHP,
vendar vam ni treba, da jih določite, ki je tudi tako dobro in slabo.
In tu je še ena stvar, ki manjka.
>> ŠTUDENT: Tukaj ni knjižnice.
>> DAVID J. Malan: Ni knjižnic.
OK, tako da je lepo.
Smo dobili veliko več iz škatle.
Tako da je v resnici veliko več Stvari, kot sem mislil, je bilo drugače.
Kako približno poteka v hrbtu?
Kaj je to?
Piše še enkrat?
>> ŠTUDENT: Pointer.
>> DAVID J. Malan: Ni kazalci.
OK, vsaj v tem primeru ni.
To je pošteno.
Torej ne obstajajo kazalci v PHP dejansko na splošno.
Obstaja nekaj, kar se imenuje reference, vendar ne bomo porabili preveč časa tam.
In kaj še?
>> ŠTUDENT: Main.
DAVID J. Malan: Main.
Torej, to je Biggie Sem mislil.
Opazili ni glavna vstopna točka.
Vi preprosto začnite pisati kodo.
In to je dejansko bo ugodno
ko smo prehod trenutek, da dejansko uporabo
ki temelji na spletu, ta isti jezik programiranje, za katerega smo
Ne želim, da imajo samo eno vstopno točko.
Mi bi želeli, da imajo kup URL-ji, kup različnih datotek
vse ob vhodu v uporabniškem in proizvaja izpise.
>> Ampak tukaj je zelo odigral Primer, ki sem obljubil zadnjič,
namreč v tej mapi tukaj, pravopisne napake.
Tako da v tem datotečnem Speller, ki smo jo ne boste porabili preveč časa, da je
bistvu porting-- P-O-R-T. To je samo beseda, ker če, ​​recimo,
pretvorite iz enega jezika v drugo ročno običajno.
>> To je kanali PC različica Speller od PSET 5.
In jaz sem v bistvu poskušal pretvarjati je po vrsticah tesno, kot sem lahko.
Torej, če vam je všeč takšne stvari, je v resnici vredno na neki točki
jih vleče tako do strani, ki jih strani in videli, kaj je enaka
in kaj je drugače.
Ampak oni so precej darn podobno.
Če se spomnite, kaj Speller celo izgledala,
čeprav nisi morali spremeniti to datoteko,
to je precej podobno strukturno s samo nekaj
sprememb tu in tam.
>> Torej, to je samo reči, da je precej enostavna za pretvorbo Speller
iz C v PHP.
Toda v slovarju, tam je nekaj še bolj prepričljiv.
Dovolite mi, da gredo naprej in ustvariti moje dictionary.php datoteke.
Tako nekoliko drugačen v tem, imenovali jo bomo .php namesto .c.
Ker je to PHP file, I do-- nekoliko annoyingly-- imajo
zagnati datoteko z php tag všeč.
In bom, da gredo naprej in opredeliti nekaj funkcij.
Funkcija imenovano prijava, ki je dogaja, da v besedi kot prej.
Vendar ta argument je dogaja, da imajo dolar
podpisati, ker smo spet z uporabo PHP.
Še ena funkcija od dictionary.c bila obremenitev
in to je v imenu slovarju, tako da bom dobil to funkcijo pripravljena iti.
>> Še eden v dictionary.c bilo kaj?
Velikost je ena najlepših tiste, na Vsaj če si ohranil neko spremenljivko okoli.
tako velikost je le, da se vrnete spremenljivko.
In potem je bila praznenja.
>> Tako je bilo v teh štirih Funkcije problem nastaviti 5
ki jo je potrebno izvesti z nekatere strukture ali strukture podatkov.
Torej, sem obljubil, da se v PHP, lahko razglasi
razpršene tabele, na primer, vse bolj enostavno, da.
V bistvu, če hočem razpršene tabele, Jaz sem samo šel tako
in tam je moj hash tabele.
In to je opomba, odigral, da smo končali na zadnjem času.
In veš kaj, če sem hotel spremenljivka za velikost, no,
ta pa še ni vse ki se razlikuje od C,
ampak bom, da gredo naprej in narediti.
In opazili nobenega podatkovnega tipa.
In bom šel nazaj kasneje in dejansko dodali nekaj komentarjev tukaj.
Kaj pa obremenitev?
>> Če je znak za dolar slovar je ime moje datoteke
in sem pravzaprav želite naložiti besed v tej tabeli zdaj,
Jaz lahko dejansko narediti nekaj dokaj preprost.
One-- in to je minorly annoying-- v PHP,
morate navesti v notranjosti funkcije, če vas
želijo dostop do nekaterih svetovno spremenljivka, ki je definirana zunaj.
>> Ampak to ni posebej zanimivo zdaj.
Kaj je bolj zanimivo je to za vsakega konstrukt, ki sem jih omenil zadnjič.
In se izkaže, da ima PHP funkcijo imenuje datoteka, katere namen v življenju
je, da odprete in preberete v v vseh njegovih vrstic v matriki
in jih vrniti k.
>> Ki je rekel, da sem lahko naredil slovar tako da je zdaj dejansko ko kličem datoteka
To se dogaja, da me vrniti niz besed iz spisa.
To pa še ni vse, da je dobro.
Še vedno se dogaja, da se črta besed, nekaj linearnega.
Vendar sem lahko šel naprej in ponoviti nad vsakim od teh besed z uporabo
da skladnja smo videli kratko zadnjič.
In boste videli več v prihajajoči PSET.
>> Ampak zdaj imam zanko ponavljanjem za vsako besedo v slovarju.
In na vsaki ponovitvi, se spomni, da sem kliče trenutno besedo "beseda."
In vse to bo trajalo do dal besedo v slovar, je
bo beseda guess "true".
To je moj vložek funkcijo.
To je moj tovor funkcija za moj slovar.
Zdaj je malo goljufija, ker veš kaj, tam je pravzaprav
poševnica nazaj n je ob koncu besed da bi moral verjetno znebili,
vendar to ni problem, ker je PHP Funkcija se imenuje chop, ki dobesedno
kotleta off en znak na samem koncu.
Torej ni problem tam.
Šli smo naprej in dejansko skrajša, da samo to.
In zdaj bom moral verjetno spremljate velikosti, tako Dovolite vsaj storiti this--
velikost ++.
To lahko storim kot prej.
In potem je to, da bo verjetno dela čisto v redu, tako da se vrnemo true.
Končano.
PSET 5.
>> [Smeh]
>> DAVID J. Malan: OK.
Bomo še enkrat, da z naslednjo PSET, preveč.
Torej, kaj pa velikost?
No, upajmo, da je to eden o kot bi pričakovali zadnji čas,
čeprav moram storiti ta neumna globalna stvar.
To je samo artefakt od Zasnova jeziku je.
>> Vendar pregled je malo bolj zanimivo.
Torej, če sem opravil v dolar najprej se prijavite besedo, I
želijo imeti dostop do da je globalna spremenljivka tabela.
In zdaj, če želim preverite, če beseda obstaja,
Jaz lahko samo rečem, če je res, da naslednja je določen v tabeli,
potem pa pojdi naprej in vračanje true; drugega, vrne false.
Končano.
Druga polovica PSET 5.
>> Vse je v redu, tako da še enkrat, jaz sem rezanje nekaj kotičkov.
V pravičnosti, da bi moral verjetno preživijo nekaj sekund
o tem izvajanju.
In jaz verjetno ne bi zasmehovali vse ur daš na PSET toliko.
Torej strtolower je funkcija.
Nekaj ​​podobnega eksistencialistka v C, vsaj za znake,
ampak PHP je dobil celotno verzijo niza.
>> To se dogaja na silo vse v male črke, kar nekateri od vas
bi lahko storili kaj kanoniziran si se uvrstite v slovarju.
In zdaj lahko to storite v C, preveč.
To nima nič opraviti s PHP.
>> Ampak kadarkoli imate Boolean pogoj,
kot nekaj, kar na spletu 10 tam, ki je le
gre za oceno, da res ali false, in vaš če še jasno
se vrača true ali false, sem lahko samo res, da to bolj seksi
in samo narediti nekaj takega.
Tako da je moj nadzorne funkcije.
Desno, če Boolean vrne true ali false,
kaj je to pravkar vrnil takoj.
>> In tu je še nekaj drugih poteg Jaz bi lahko tu in tam.
Load-- praznenja, mimogrede, je to storjeno.
Nič ni naredil.
Ker vsi pomnilnika v PHP in mnogi drugi jeziki
dejansko upravlja za vas.
Torej, medtem ko je v C, kot da ste boleče naučili,
karkoli funkcije malloc ali calloc ali realloc, se moraš sprostiti.
Karkoli fopen, moraš fclose, tako da so sredstva končno osvobojena
in orodja, kot Valgrind ne opazili in se ne pritožujejo,
kar je dobra stvar za vožnjo na njih.
>> Ampak zagotovo pa mora neka ulov, kajne?
Sicer pa smo nekako izgubljen cel kup tednov.
Tako da je vsaka vrsta razlogov Zato smo nekako izkoristiti to pot,
vendar je kompromis.
Dobro, to je bila tematska.
>> Torej, kaj bi lahko trade-off Tukaj se gibljejo od C do PHP?
Počutim se kot vsi zmagali doslej razen malo grdote tu ali tam.
Ja.
Kaj je to?
>> ŠTUDENT: [neslišno] spomin.
DAVID J. Malan: Speed.
OK.
No, je bila moja hitrost zelo hitro.
Kajne?
Ampak hitrost izvedbe programa?
OK, tako da je poštena točka.
>> Tako da bi se to zgodilo, jaz vnaprej cued up tako moje poskusiti rešitev, en
Imel sem na veliko tablo je raztopina-poskus temelji,
in moram, da v tem imeniku tukaj.
Tako da sem v tem trenutku, lahko grem naprej in teči to na Svetega pisma kralja Jakoba,
pritisnemo Enter.
In to je, upajmo, pravilna izvedba na koncu,
mi daje čas skupaj od 0,38 sekunde za ki
eden nekoliko arbitrarna primer.
>> In če sem sedaj šel v to druga sponka okno
tukaj, kjer sem prvič odprl gedit, naj grem v današnjem code-- ki, še enkrat,
je v tem imeniku in here-- Naj gredo naprej in zagon Speller.
Torej, da bo jasno, to je PHP različico.
Jaz sem samo kaže zgornji tem tukaj.
>> Torej, če naredim Speller za tilde CS50 PSET 5 besedila, King James, vnesite.
To je še vedno hitrejši od pisanja je v C, vendar skupni čas
je obvestilo, 0,93, medtem ko je moj Izvedba temelji-C je 0,38.
Torej, to je nepomembno razliko.
>> In to je samo na eni datoteki.
Če ste bili, da zaženete dva programi v primerjavi z veliko tablo
in imajo cel kup vhodov testirali, bi to zagotovo sešteti.
In če bomo imeli še večje podatkovne nize, Tudi to bi seštejejo vse več.
Torej, ja, pri čemer je nekaj cena hitrosti je res tako.
Kaj še?
Ja?
>> ŠTUDENT: Znesek uporabo RAM.
>> DAVID J. Malan: Znesek uporabo RAM.
Tako da nisem dal eno sekundo mislil, ko je pisal to PHP
Različica, koliko spomin sem uporabo.
Jaz sem popolnoma odložitvijo da PHP sama in kdor je napisal ta program.
In da bi bilo v redu, ampak če sem dejansko res
mar stisnete toliko uspešnosti iz mojega programa ali iz moje spletne strani
ali iz kakršnegakoli orodja Jaz sem gradnjo, morda
PHP, res, ni pravi jezik.
>> In v resnici, da je zato, za instance, veliko web servers--
dejanski programi, ki služijo up spletno content--
niso napisane v PHP ali v Python ali Ruby.
Zapisani so, tako kot boste zdaj storili z PSEt 6,
v C, tako da lahko stisnete vsak bit uspešnosti iz nje
in res uresničujejo Nadzor fine-grain nad tem, kar je
dogaja pod hood in ne vzemite
za samoumevno nekaj višje podatkovna struktura ravni.
>> Razmislite, po vsem, kdor v PHP izvaja
da pojem hash table-- je dejansko več
pravilno imenovano asociativno array-- on ali ona ne sanja, kakšne
vhodov boste lahko dajanje v strukturi?
Torej očitno ni, kajne?
To je generično orodje v pripomočkih, ki je
pod pogojem, da se vsakogar, ki želi da ga uporabljate, in tako gotovo, da
ni mogoče optimizirati končno točno tisto, kar želite narediti.
>> Torej trade-offs-- čas razvoja morda razlikujejo, zmogljivost se lahko razlikuje,
kompleksnost ali pomnilnika se lahko razlikujejo.
In kaj boste našli bolj je, da obstaja
bo različna orodja za trgovino.
In v resnici za super večino končni projekti ljudi v tem razredu,
verjeli ali ne, C ne bo za pravilen jezik za uporabo.
>> In v resnici, eden izmed takeaways na koncu za vsak razred, kot je ta
je, da se misliš, dobro, kaj morate snemite
police, če želite rešiti nekaj težav.
In res, bomo prečkali ta most Še bolj kot gledamo na več jezikov
celo dlje danes.
>> Tako da je prehod zdaj morda bolj poznajo ozadje
za uporabo jezika, kot so PHP.
To je nekoliko običajno uporabljajo pri ukazni vrstici, pisanja scenarijev
kot sem storil, vendar je veliko, veliko bolj pogosti.
In je namenjeno za uporabo pri oblika datoteke, ki se običajno konča
v .php-- ampak to je ne prerequisite--
da sami ustvarjajo spletne vsebine.
>> Zato naj gredo naprej in odprla nekaj Primeri I pripravimo vnaprej.
In to so dejansko nekako res zgodbe, da ena od prvih stvari
Sem kdaj sam naredil po končanem CS50 in morda, mislim,
CS51 leti je moj cimra sva pomoč
teči novinec Notranji športni program, ki je v času,
je novinec registracije za različne šport z izpolnitvijo kos papirja,
kot je bil imenovan, hoja čez dvorišče do Wigglesworth,
in ga spustite v nekaterih Padec Proctor vrata.
In potem bi on ali ona iti skozi jih nato dejansko pišite ročno
da smo registrirani za nekaj športa.
>> Torej je jasno, priložnost za izboljšave.
Te dni, lahko vklopite samo Google Forms, ampak nazaj v dan,
smo imeli, da bi dejansko dosegli ta for-- ni bila niti tako dolgo ago-- doseže
za programiranje jezik, ki ni bil PHP.
Takrat je bilo nekaj, kar se imenuje Perl,
ki je šel iz Vogue leta.
Ampak ideja je ista.
>> In jaz sem v bistvu sedel, da bi poskušali za port gre Perl različice PHP,
vendar v celoti odpoved, ni dal koli mislil, da estetiko samo še.
Tako da tukaj je spletna stran.
To je datoteka.
Če povečam, njeno navidezno imenovano froshim0.php
samo zato, ker je to naša prva Primer v tej seriji.
In opazili, da je tisto, kar se zdi biti zelo grd HTML oblika,
ampak oblika je zanimiva saj omogoča
me zagotoviti uporabnik vložek v brskalniku.
>> Sedaj zadnji čas, ko smo imeli tako obliko, da koga smo submit našo parameter poizvedbe,
Čakalna vrsta parameter, kot je bil imenovan?
Torej na Google, kajne?
Smo popolnoma punted na ideji počne ničesar s tem vhodu.
>> Toda danes smo začeli proizvajati izhod.
In vedenje, da bom videti tu najprej je precej nepomembno.
David, bom preverite off spol tukaj, pravijo Matthews tukaj.
Ne bom kapetan.
Bom kliknite register.
In opazil, da ima URL spremeniti, da se registrirajo, 0.php,
in potem je to grdo besedilo tukaj.
Sem dal nobene misli, da oblikovanje tega.
>> Zanimivo pa je, da so trije Vrednosti so bile očitno sprejet.
To je PHP vrsta enakovredna printf--
bomo videli, kaj se je v resnici imenuje v bit-- ki preprosto natisne
kaj ste opravili vanjo.
Torej to pomeni, da ta obrazec imelo vsaj tri področja, ki mu,
in boste videli me jih vnesete.
Ena je moje ime, ena pa je bila spola, eden je bil samski.
In tokrat kapetan niti se pošlje server, ker ga nisem preveriti.
>> To torej pomeni očitno, ko predloži stvari na spletu,
Ne samo, da URL včasih change-- včasih pa ne.
V resnici ime datoteke spremenil, ampak kaj je odsoten od naslova
da sva videli zadnjič z Googlom.
Ja?
>> ŠTUDENT: Ne poizvedba
>> DAVID J. Malan: Ni poizvedba.
Ni nekaj, kar vprašaj.
Ni vprašanje, oznaka q enaka mačke, kot smo to storili zadnjič.
In tam je gotovo ni Ime vprašaj enaka
David ali domu enaka Matthews, tako da če je to vse se dogaja?
>> No, naj gredo nazaj v gedit tukaj in odprli prvo od teh datotek
v mojem vhost, lokalni gostitelj, javno Imenik sem in šel v froshim0.
Tako se izkaže, da je skoraj Vse te strani je samo HTML.
In to morda ne poznate, vendar pa bo kmalu bolj z PSET 6
in PSET 7 in 8 PSET.
Toda to je samo stran HTML.
>> In zanimive stvari Zdi se, da tukaj.
Form tag katere delovanje atribut ima vrednost registra 0.
Zato, ko oddam to, da gre v tej datoteki.
Ampak metoda je drugačna today-- mesto.
Tako se izkaže, da je vsaj dve metodi na spletu, ki se uporabljajo
Za pošiljanje podatkov od brskalnika do strežnika.
Dobite ga postavlja v URL.
Post pravi drugje.
Kdaj in zakaj boste morda dejansko želijo spletno stran
uporabiti delovno mesto, potem namesto o dobijo, samo intuitivno?
Katero koli spletno stran.
Kakšne vrste podatkov je treba za mišjo dlako s sklepanjem via pošti v nasprotju
da bi dobili, če smo videli dve razlike?
ŠTUDENT: [neslišno] pritrdite.
DAVID J. Malan: Če želite nekaj, kar bi bilo varno.
Tako lahko vnesete geslo na spletni strani, s kreditno kartico
na spletni strani bi vrsta teh optimalna
če brskalnik dal, da vrednost znotraj URL.
Zakaj?
Vidiš to, kar ne Zdi se, da tako velik posel,
vendar so možnosti, ki jih precej pogosto hodi proč od računalnika ali uporabe računalnika
laboratoriji, in tako je nekdo drugega ali celo sostanovalec
lahko enostavno hoditi gor in glej da zasebne informacije.
Ko pošljete e-pošto prek spleta, boste verjetno
Ne želim, da so podatki konec v URL-ju, kot tudi.
In tako obstaja poljubno število razlogov zakaj bi radi, da ga tukaj.
In photos-- prav, ne morem še precej predstavljate, kako bi si vzeti grafiko,
kot JPEG, in ga dal v URL.
Lahko bi to naredil.
Tam je načinov, ki ga kodira, vendar je samo ni enostavno, kot da.
>> Torej registrirati 0 je pravzaprav Zelo underwhelming.
Vse piše dobesedno to.
To natisne znotraj nekaterih HTML oznake naslednje.
Imam PHP tag tukaj ugnezdeni znotraj vnaprej tag.
"Pre" pomeni le pre-oblikovano besedilo, mono razporejene, kot pisalni stroj.
>> Printr je print rekurzivna funkcija.
In potem je to zanimiva stvar tukaj.
In se bomo vrnili k temu zato, ker je druge,
ampak znak za dolar podčrtaj objava zdi
spremenljivka v PHP, v katerem vse pošljete od brskalnika do strežnika
gets shranjeni za vas.
In bomo videli, kako priti na da informacije, preden dolgo.
>> Najprej pa pojdimo nazaj nekoliko drugačen primer.
Gredo v register-- ali namesto, froshims1.php,
ki izgleda nekoliko drugače.
Vzel sem malo bolj prizadevanje z oblikovanjem,
čeprav je še vedno precej grdo.
Ampak bom, da gredo naprej in tip v "David" zdaj.
Male.
Preverili bomo "kapetan" tokrat.
Bomo naredili Matthews.
In register.
>> In ta čas je pravi, hm, ni res.
Vse je v redu, kaj je registrirati 1?
Naj grem v odprt register 1 in-- hm.
Vse je v redu, tako da je to Zanimivo, in to
je odskočna deska zdaj proti več zanimivih programov.
>> Opazili vrhu ima ta datoteka PHP tag, kot tudi nekaj pripomb.
In to so, za zdaj, moteča tako da je le znebiti teh pripomb
tako kot oni v C. In Trdim s tem kos kode s komentarjem
da je ta koda potrjevanje predložitev.
>> No, izkaže se, da spremenljivke, kot je znak za dolar
podčrtaj objavo so imenovani super globals.
Oni so kot ti posebne globalne spremenljivke
da so le omni-trenutno na voljo v vašem programu.
In jih lahko uporabite kvadratni nosilec zapisa indeks v njih ne bi uporabljali številke
kot 0, 1, 2, 3, vendar dejanska besede.
>> Torej si lahko zamislite znak za dolar podčrtaj delovno mesto kot nekakšen hash tabele
da bi lahko mimo ključ v, a lookup beseda vmes oglatih oklepajev,
in to se dogaja, da vam nazaj vrednost, ki jo je uporabnik dejansko opravljena.
PHP ima funkcijo imenovana prazna, da le
pravi, da ali ne, to spremenljivka je prazna ali ne.
Imamo te dvojne palice, kar pomeni samo, ali, kot v C.
>> Torej v bistvu, ta linija 4 je le rekel, če uporabnik ni dal ime
ali ni dala spol ali ni dajejo domu, iti naprej in ga preusmeriti
ali ji po tej liniji tukaj.
Torej, to je malo nejasen, ampak to samo pomeni, dobesedno
iti nazaj na to mesto, zato punts uporabnika
nazaj tja, kjer je on ali ona prihaja.
Ampak to je malo Neelegantan s tem, da sem težko je kodiran.
>> Kaj pa, če je to pogoj, če ne ocenjuje, da res?
Kaj pa, če uporabnik ni mi njegov ali njeno ime in domu in spol?
Da če pogoj ni gre za oceno, da res,
tako da ne hit izstopa v skladu 7.
Torej, kaj se zgodi?
In to je tisto, kar je Zanimivo PHP.
>> Lahko padec v in iz načinu PHP, tako rekoč.
Če želite del kode za izvedbo, lahko odprete in zaprete PHP tag
in dal kodo tam, kot sem tukaj naredil.
Takoj, ko boste zaprli PHP tag, strežnik
je le, da bo izpljuni karkoli si dal tam.
In res je bil ta del Prvoten PHP,
Za boljše slabše, je bilo to mešanje kode in markup
jezik.
In bomo videli, da je to zelo hitro, je naloga v nered.
In tako bomo storili bolje kot to na koncu, ampak samo
Opazili enostavnost, s katero sem jaz dejansko sposoben izvršiti neko logiko.
>> Ampak še vedno malce underwhelming.
Odprimo up različico dva Frosh UI, ki
očitno meni, da register2.php.
Tako da je ta datoteka se dejansko dogaja videti skoraj enaki.
Jaz bom šel na Frosh UI 2.
Toda v Frosh UI 2, Poglejmo, kaj se zgodi.
>> David, kliknite na gumb, kot je to se imenuje; Matthews, no kapitan.
Registrirati.
Prijavljeni ste.
Ni res.
Oh, počakajte, smo pravkar storil ta primer, ni mi?
Vse je v redu, stati ob strani.
Bomo narediti tri.
Jasno je nekaj, kar je približno da se zgodi z Gmailom.
Bomo dobili tam.
>> Torej Frosh UI 3 izgleda takole.
Nič drugače.
Ampak, ko sem naredil David, moški, Matthews, in register, ta tretja in zadnja različica
terjatve, preprosto vam, so registrirani v resnici.
To je nekako nepomembno.
Vendar trdim, s tem Tretja in zadnja različica
Zdaj sem poustvarili točno tisto, my cimra in sem zgradil za Frosh UI
Program pred leti.
In to je bil preprost.
Ni bilo baze podatkov, no Excel.
Toda še bolj pomembno, ni bilo več papirja
ker, kaj smo naredili s tem programom je bil dejansko email Proctor, ki
je bil prej prejemali te stvari z obrazci.
>> In očitno to smo programirani tak način, da ko nekdo registrira,
Račun emails John Harvard proctor-- ali sam v tem primeru,
John Harvard-- z naslednjim text-- "Ta oseba samo registrirani."
Ime je David, kapetan je prazno; spol, moški; in domu, Matthews.
>> Torej, kaj se je zgodilo tam?
No, spis zadevnega tukaj očitno register3.php.
In če odprem to, boste videli, tako moč kode, kot je ta
in tudi, odkrito povedano, negotovost sistema, kot so e-pošte.
Pravkar sem dejansko delal, da je John Harvard takole.
>> Imam odprto php oznako up top, ki Samo pravi, tukaj prihaja nekaj PHP kodo.
Tukaj, se izkaže, da so knjižnice v PHP.
Ki ste jo pravkar ne potrebujejo vključuje datoteke glav toliko.
Dobiš več z pomivalno korito, tako rekoč.
>> Vendar tokrat v vrstici 4, jaz želijo specialne knjižnice, imenovane
PHP mailer, kar je nekaj, kar vas lahko namestite brezplačno v mnogih sistemih.
Tukaj sem potrjevanje predložitev samo
s preverjanjem pa si dal me ime, spol in domu.
In če je tako, pojdi naprej in sprožajo mailer.
>> Lahko pomislite na to kot vrstica kode, ki so pravkar dodelila.
To je, kot funkcije malloc, vendar to je malo bolj seksi
s tem, da si omenil, ne samo funkcije malloc in nekaj generično številko.
Pravite, dajte mi eno od teh, daj mi novo eno od teh.
>> In če ste programirani Java ali C ++ ali drugih jezikov,
Morda ste to videli.
Ampak kratko to, če poznajo, ta linija
postavlja v dollar sign pošti gradbena struct imenuje
Objekt, ki je vgrajen v email funkcionalnost.
In v resnici, obvestila in podobno sintakso.
>> To ni kazalec, po sebi.
PHP pravkar uporablja enako sintakso.
Ta linija je rekel uporabe SMTP-- Simple Mail Transfer
Protokol, ki je le Protokol za pošiljanje pošte.
To je z navedbo uporabe SMTP server Harvard, ki
nekje tukaj na kampusu.
>> To je rekel, kaj TCP port število govoriti,
in sem mislil, da so jih googling ali s prošnjo za pomoč uporabnikom.
In potem, ker Harvard uporablja nekatere varnostni sistem na poštnem server--
vsaj za šifriranje promet med vami in njim,
čeprav lahko vsakdo pošlje it-- Grem, da vklopite protokola TLS
za vodenje to varno.
>> Ampak, to je, če se stvari dobili malo strašljivo.
Jaz lahko samo arbitrarno pravijo, da sem jharvard,
in sem lahko samo arbitrarno sam email tukaj.
In potem sem lahko določite predmet s to linijo tukaj.
>> In to samo izgleda grdo, ampak to je samo kup Zveza.
Izkazalo se je, PHP ima super koristno simbol, kot nekatere jezike, operator pika,
ki samo dobesedno use Niz po vrvi po vrvi,
in ne boste imeli, da funkcije malloc ali sliki iz celotne dolžina niza.
Samo ti to naredil.
In res, ker sem concatenating V vseh teh stvari, s temi pikami,
zato sem email poslano videti, kot je to storila.
>> In potem končno tu, sem pošiljanje e-pošte.
Torej, če je ta napačna, Jaz sem samo, da bom umrla,
ki je funkcija, ki samo natisne na zaslonu nekaj sporočil o napaki.
Vendar pa je, v resnici, kliče funkcijo za pošiljanje.
V nasprotnem primeru, če je vse to ne uspe, me preusmerja sem nazaj.
>> In zakaj vidim, da Res sem registriran?
No, to se je zgodilo tukaj.
Zato sem to odprlo za Nekaj ​​razlogov.
>> Ena, to je točno, kako, če si zgraditi nekatere spletne strani za končni projekt
ali v realnem svetu, to je kako poslati e-poštne opomnike
za vaše stranke ali vaše naročnike.
To je, kako boste poslali geslo opomnike.
To je, kako boste poslali ljudem sporočil da imajo novega Facebook
Sporočilo teku ali nekaj takega.
>> Ampak govori tudi Dejstvo, da lahko ta
so bili zelo dobro od Davin ali kdorkoli drug.
In sem rekel, ta vrsta z nasmehom, ker sem
povsem prepričani, kaj se dogaja s več vaših glavah na tej točki.
Toda to je eden od tistih, naredite I rečem, ne kot jaz stvarmi,
ker je nepomembno oblikovati e-pošto, kot je ta.
Ampak kot ste lahko opazili ali brali v Crimson,
v zadnjem času pa je tudi precej nepomembno za ljudi
izslediti nazaj do neke izvora.
In me vprašati nekaj časa, morda na CS50 kosilo, kako sem prvič
dobil zelo natančno seznanjeni skoraj do ed krovu več let
nazaj, ko sem odkril kako internet deluje.
Tako v vsakem case-- nekoliko Po ed odbor storil.
>> Torej, v vsakem primeru, je cel kup super globals,
kot oni tu imenuje, od katerih je eden smo saw-- dolar znak podčrtaj post.
Tam je kolega pozval get, ki je, če stvari iz naslova URL
konča dogaja.
In tam je cel kup drugih, too-- seja in strežnik in piškotek.
Vrnili se bomo na Piškotek kdaj drugič,
toda seja je nekako kul ker pravica now-- do now--
vse, kar smo naredili s spletnim brskalnikom nekako brez državljanstva, če se tako izrazim.
Lahko kliknite okoli, dostop datoteke na strežnik, nekaj,
zgodi na zaslonu, vendar potem povezava zapre.
Internet Explorer ali Icon Firefox ustavi predenje
in si oglejte, kaj da spletna stran vsebuje.
>> Torej HTTP brez državljanstva, da enkrat naredi povezavo,
dobi nekaj podatkov, to je to.
Nič več povezave, za razliko od Skype, za razliko od FaceTime, za razliko od Gchat, ki
vzdržuje konstantna Povezava s strežnikom.
Splet je v osnovi prekinjena, čeprav bomo
videli kmalu, kako smo lahko simulirali stvari
kot so Facebook klepet in Gchat, ki ohranjajo illusion--
ali dejansko ne ohranjajo stalna povezava prek
bolj moderno tehnologijo.
>> Ampak, če grem na, recimo, counter.php, to je še en preprost primer,
kot bomo videli, da trenutno misli Obiskal sem ničelno časa stran.
Ampak, če sem preprosto osvežite stran, nekako ve, da sem tukaj.
Če bi še enkrat naložite, jo ve, da sem tukaj.
In spet in spet in spet.
>> Torej je nekaj plus-plussing dogaja, ampak obvestilo
malo stvar vrti kdaj tako Na kratko up vrhu in nato prekine,
tako da to ni všeč, imam konstanten povezava z mojo napravo.
No, če sem šel v counter.php, opazili, kako preprosto je to.
Najprej sem poklical ta posebna Funkcija, ki jo bomo kmalu
začeli jemati za samoumevno imenuje začetek seje.
Začni sejo.
>> In seje odslej je le bo vedro, kot nakupovanje
Voziček, v katerem si lahko vrednosti in nekako zaupam kot programer
da boš tukaj, ko da uporabnik pride back-- sekundo
kasneje, uro kasneje, še leto kasneje, dokler on ali ona ne počisti
njihove piškote, saj bomo na koncu videli.
In zdaj sem samo še če pogoj tukaj.
Torej, če v naslednjem ključu, imenuje števec, ki je v notranjosti
to super global-- to hash tabela, če will-- imenovano sejo,
potem pa pojdi naprej in zgrabi vrednost od session-- think
o tem kot nakupovanje cart-- in ga shranite
v začasno spremenljivko z imenom števec.
>> Drugače, če je bila ta vrednost števca ni določen v tako imenovanem nakupovalni voziček,
Samo inicializacijo 0.
Nazadnje je tu spodaj, pojdi in dal nazaj v nakupovalnih vozičkov ali seje
Vrednost števca 1.
Tako se izkaže, da je to posebna posoda here--
ki, spet, je eden od teh povezan nizi, matrika, ki jih lahko indeks
v besede, namesto numbers-- vztraja tudi, ko uporabnik odide.
Again, bom šel nazaj na stran zdaj.
Minilo je že minuto ali tako.
Vendar pa se spomni, da sem imel tu že 19-krat, preden.
To je moj 20. obisk.
>> In tako, da bo to ključnega pomena za izvajanje katere koli spletne strani, da si zapomni
da ste prijavljeni, da si dal nekaj literal v košarici
za nakup ali da imate nekaj Število sporočil v teku.
Kadarkoli želite zapomni si informacije,
bomo videli, da je PHP, kot je več drugih jezikov,
nam daje to iluzijo stanje čeprav, kot boste videli v PSET 6,
kot delaš zahteve HTTP od odjemalca do strežnika, to je to.
Ko prideš nazaj, da odziv, ni nič več
vrnil iz strežnika, ki ga privzeto.
Ampak bomo videli, kako se dela okoli tega.
>> No, poskusimo očistite to gor malo.
Videli smo nekaj različni primeri tam.
Oh, in kot prahi, za tistih, ki poznajo ali ne poznajo,
Razlog, da Frosh UI primer odšli
od videti res grda dobro slightly--,
še ugly-- rahlo manj grda, čeprav je še vedno grd
je zato, ker če pogledamo v izvorno kodo tukaj,
Izkazalo se je, da imam to na samem vrhu datoteke.
>> Izkazalo se je, da je bootstrap eden od mnogih prosto dostopni knjižnice tam
da ne obstajajo za programske jezike Vedno, ampak CSS ali JavaScript
ali HTML ali poljubno število jezikov.
>> In ti ljudje here-- prvotno prišel ven
od Twitter-- imajo samo cel kup stilov.
To je ogromen datoteka tu, da je nekdo napisal,
ali je nekdo napisal, v času, ki določa, barv in oblikovanje
in malenkosti, tako da sem lahko vrsta sposodim svojo sintakso
in ni treba, da ugotovimo, kako postaviti mojo obliko.
To je tudi minified tako da lahko računalnik
razumem, vendar ne nujno človeško.
Torej, to je samo zato stilizacijo ni spremenila.
>> Ampak kaj je sedaj še boljši v smislu oblikovanja,
ker če bomo ostali dol ta pot predolga,
naša koda se dogaja, da dobili grdo in umazani.
Torej, kaj je osredotočiti na teh primerov tukaj.
Zadnja za danes.
>> Torej, tukaj je super enostavna Različica 1.0 spletne strani CS50 je.
Ima samo povezave predavanja in učni načrt,
in to z uporabo te neurejen seznam tag-- UL oznako, ki smo jo uporabili zadnjič.
In če je v resnici, če bi odpirajo Ogled vira,
boste videli, da je to res, res preprosta HTML.
In v resnici, čeprav ta PHP file pod pokrovom,
je še vedno samo pljuvanje samo HTML za zdaj.
>> Torej, če sem kliknite na predavanja, vidimo to zgodilo.
In če sem kliknite na teden nič, to vidimo.
In če sem kliknite na Sreda, vidimo to.
In to očitno bila PDF prosojnicah od tega dne.
Vse sem naredil, je povezava z sidro tag na ta URL tukaj.
>> Torej, to je samo reči, da je to precej preprosta različica spletne CS50 je.
Poglejmo, kako se to izvaja.
Če grem v imenik mvc0, bomo videli nekaj datotek.
Eden od njih je README, tako da, če Nekatere od teh je prehitro,
lahko samo suniti okrog bolj lagodno kasneje.
In obvestilo Tukaj je index.php datoteko.
Izkazalo se je, da če vi sami, človek,
ne določajo dokončno ime v URL, spletni strežnik ponavadi
sklepa nekaj privzeto ime za vas.
Indeks dot nekaj je splošno privzeta.
>> Torej, to je, zakaj pred nekaj trenutki ko sem obiskal ta URL tukaj
no ime datoteke, ne datoteka razširitev, ni nobeno obdobje v URL.
Samo vedel nekako čudežno iskati index.php.
To je samo konvencija.
Lahko imenujemo ničesar.
>> Torej, če sem zdaj šel v index.php, boste videli
da indeed-- dovolimo, znebiti pripomb
tukaj, ker je res nič zanimivo it--
To je le težko kodirana HTML.
Tako da je v skladu, čeprav z mojega zahtevka
da lahko pomešati HTML in PHP.
Ni dejanska programiranje logiko tukaj.
>> In druge datoteke so precej veliko tako kot nezanimivo.
To je samo hard-kodirane en teden tukaj tednu ena m in teden en w,
v ponedeljek in sredo.
In potem, če sem odprla nič teden opazite, da je skoraj identična.
>> In to je nekako ključni takeaway.
Opazili, kako je to odveč.
Te datoteke komaj spremeniti, vendar sem potegnil enega od teh kopiraj / prilepi delovna mesta
kjer sem eno file-- predvidoma V tednu zero-- kopirali
ko en teden prišel okoli, in tweaked nekaj vrednosti.
Morali bi verjetno lahko kaj več kot to.
>> Torej, pojdimo nazaj do MVC in šel v različici enega.
In opazil, da imam nekaj datotek, ker tisto, kar
je bila skupna za vse datoteke samo Trenutek ago-- če grem nazaj v različici 0,
pojdimo nazaj v indeksu, in samo postulate--
Nekoč sem se znebiti comments-- kaj dela to stran
je verjetno v vsakem od mojih datotek?
Samo klic.
Katere vrstice so podvojene verjetno po vseh teh straneh?
Ja?
>> ŠTUDENT: [neslišno].
>> DAVID J. Malan: 1 do 9.
Ja, absolutno.
1 do 9, razen morda 8 spreminja malo, ker CS50
postane predavanja ali nič teden ali kaj podobnega.
Toda skoraj identična.
Torej, vse to je le nekako kopirali in prilepili.
In tam je par druge linije lahko mislim
za to so verjetno enaki vseh datotek.
>> ŠTUDENT: 12 in 13.
DAVID J. Malan: Ja.
Seveda, 12, 13, in 14 verjetno, samo zato, ker je zanimive stvari
se dogaja na progah 11 in 10, tako da se zdi.
Tako da je pogled na različico 1, ki si prizadeva za izboljšanje na tem.
V različici 1 tega MVC example-- bomo razložiti, kaj MVC sredstva v moment--
če grem v indeksu, je nekako izgleda malo zmedeno zdaj.
To ni tako preprosto, kot prej.
>> Ampak ko začneš preberi skrbno, je
precej preprosta, kaj počne.
Očitno Linija 1 in vrstica 8 se nadomesti
vse stvari, ki ste jo pravkar identified-- čeprav samo za dober ukrep,
Tam sem pustil ULS samo v primeru nekaterih dni niso imeli seznam stvari.
In tako zahtevajo, je nekako kot funt vključujejo C. It kopira in prilepi
vsebina učinkovito tukaj v tej datoteki.
>> Torej, v header.php, saj vas lahko sklepamo iz njegovega imena,
se bo glava strani.
To je nekako osiroteli tukaj.
To je le vrh do njega, vendar ni več vsebina spodaj.
>> In če gledam na nogi medtem, ki je bila druga datoteka mentioned--
ta je še manj zanimiva, ampak spet, to je skupna vsem.
Torej je to nogo.
To je glava.
To je datoteka, ki je spreminjajo, zakaj ne
poskusite dejavnik ven izenačevanje pri teh dveh črt?
>> Vendar pa lahko to čiščenje up malo naprej.
Bom, da gredo naprej in odpirajo različico dve kjer
bomo videli, da obstaja nova datoteka, helpers.php.
Bomo videli, kaj je to v trenutku.
Pojdimo v indeks, kot je vstopna točka kot prej.
>> In zdaj sem opazil, ki zahteva helpers.php, ne glave ali noge.
Vendar je pomočniki vrsta všeč helpers.c in helpers.h od PSET 2
ali PSET 3 dolgo nazaj, ko ste dejansko ni iskati in najti za to PSET,
in ste imeli vse vaše kode za sortiranje in iskanje v ločeni datoteki.
To je tisto, kar se dogaja tukaj.
>> In zdaj vrstica 3 izgleda malo drugačen.
In to je samo ena vrstica.
Da bi to še bolj Jasno, sem lahko samo
ne, da je to slogovno skladen vse ostalo smo naredili.
Ampak to ni res spreminjanje funkcionalnosti.
To je samo ena vrstica prave kode.
>> Očitno je, da je funkcija nekje imenuje postanejo glavo,
in to je, če se stvari dobili precej močna.
Obvestilo, da je notranjost njene oklepajih je tisto, kar drugi kos sintakse?
Verjetno je malo težko reči, vendar Opazili there's-- bom dal nekaj belega
prostor.
Tam je oglati oklepaj.
>> In oglati oklepaj smo videli malo pred v okviru Povezovalne matrike,
ki so, spet, tako kot hash tabel.
In če mislite, da je sedaj na C, Vrstni red argumentov v funkciji
mora biti vedno enaka.
Moraš vedeti, kaj je naročite is-- X, Y, Z ali Z, Y, x--
in jih morate vedno zagotoviti v istem vrstnem redu ali pa jih poiščete
če ste pozabili.
>> Vendar se zdi, da je pameten način prestati poljubno vrednost ključa
parov, pri čemer je naziv ime za argument v tem primeru
in CS50 je njegova vrednost.
In dejstvo, da imam ti oglati oklepaj
tu pomeni, da sem lahko prenese tudi v nekaj
kot teden je 1 ali 0 ali 2 ali 3.
Tako smo parameterizirajo ta funkcija tako
da lahko traja tudi več vhodov, ampak za zdaj je samo ena.
>> Če bi zdaj šel v helpers.php, opazili, kaj počne.
To je malo nove funkcionalnosti,
vendar za zdaj vzemite na veri, da je to
sintakso, s katero ste definiramo funkcijo v PHP.
Dobesedno pravijo funkcijo.
Ne podate vrnitev tip, in da je v skladu
z variabilno Podatek prej kjer ne boste res močno tip.
>> To samo določa da, ki ga privzeto, to
traja asociativni niz kot argument.
In veste kaj?
Če uporabnik ne gredo drug V prevzame privzeto vrednost.
>> To je značilnost, C nima za nas, kar je lepo, ker zdaj
podatkov, tudi če vas Ne dati ničesar,
se bo Niz ampak prazna ena.
In kot praha, ekstrakta Samo naredi nekaj funky
kjer je potrebno vse tipke iz tega asociativno paleto, vse stvari
lahko bi dal v oglatih oklepajih, in ustvarja spremenljivke iz njih
tako da bomo lahko končno imeli dostop z njimi v footet.php in header.php.
To je nekoliko abstrakten, zato naj to opozarjajo.
>> V index.php, opazili, da sem poteka v ključnem vrednosti par naslova
z vrednostjo CS50.
Če bom zdaj poglej helpers.php, Obvestilo, da RenderHeader
izvlečke, da so podatki, ki sem kratki v, in nato zahteva header.php.
Kaj sem naredil, je nekakšen revež je Izvajanje zdaj od naštetega.
>> Če sem odprla header.php, Obvestilo, da sem imel več težko
kodiran besedo CS50 v tej glavi datoteke.
Sem dal to res atrociously poimenovana funkcija, HTML posebnih znakov,
tam.
Ampak obvestilo, kaj sem naredil.
Imam odprto HTML.
Nato sem imel odprto glavo in odprt naslov.
>> In nato znotraj naslov je odprta in Zapri oznake, imam malo PHP kodo.
In to je lepo, vendar sintakse, ki pomeni le odmeva ven.
To dobesedno pomeni this-- odmeva following--
ampak to je bolj seksi pisati.
Odmeva iz naslova ki je bila sprejeta leta.
>> Ampak kaj misliš HTML Poseben znak je vse o,
še posebej, če imate nekateri pred HTML izkušnje?
Katere znake lahko nevaren prehod v na stran
kam ste dinamično generiranje spletna stran s kodo, kot je ta?
Naj grem v to datoteko, različica dva, in videli, če mi ne more voditi tega.
>> Različica dva je to.
In opazili vse je v redu, dobro deluje.
Ampak, da sem šel v index.php in I določeno, da je naslov moje strani
ni CS50.
To je pozoren odprt oklepaj script Zdravo svet, blizu single quote,
blizu oklepaj, podpičje, odprti oklepaj, poševnica script.
>> Scenarij, saj bomo nazadnje videli, je tag
ki jo lahko uporabite za uporabo drugega programski jezik imenovan
JavaScript znotraj spletne strani.
In zdaj opazili logiko tukaj.
Tukaj je ključ imenovan naslov.
Tukaj je, da je noro dolgo vrednosti zdaj.
>> Ampak, če grem na pomočnikov celostransko objavo ali bolje, stran glave,
Kličem te funkcije na ta naslov prvega.
Torej, če sem zdaj osveži stran, sem glej to, kar je videti smešno,
vendar je varno.
Samo videti neumno.
>> Namesto tega pa si zamislimo Imel sem to pozabil.
In zapomni si moje besede, neniceln številka od vas ne bom pozabil, da to storijo
in boste dobili nekaj marljivi študent ali prijatelj prihaja
z vami na sejmu CS50 ali anonimno ponoči drezal okoli na vaši spletni strani
in v bistvu vbrizgavanje kodo nevede, da vas na svojo spletno stran
nekako.
>> Ker če sem preprosto pljunil iz naslova tu in naziv
there-- tudi, če je naslov dobesedno izgleda takole in PHP
kot jezik, ki se lahko pljunil iz drugih jezikov besedila,
To je dobesedno dogaja nadomestiti s to oznako,
Seveda, kaj sem dal na drugem mestu.
>> Torej, če sem zdaj šel tu in osvežite po odvijete tiste varnostne mehanizme,
Zdaj imam zdravo svet tukaj.
Zdaj pa to še ni vse, da je velik od ukvarjajo, vendar bi lahko storili kaj
malo bolj zlonamerna tukaj, kot da je
drugi tags-- kot bomo videli, ko bomo porabili več časa, kot je lokacija JavaScript--
dot href dobi, citiram, konec citata, HTTP business.com, ampak ravno nasprotno od tega
od drugega dneva.
In zdaj lahko sproži spletu stran, da bi dejansko šel takoj
na tej spletni strani tukaj.
>> In dejansko, ne želim celo iti business.com
ker nočem vedeti, kaj to je.
Ampak tudi to bo sprožilo kodo ki se vbrizga v to stran.
Torej to je samo povedati, da čeprav smo uvedbo super zgodaj nekateri
teh bolj kompleksnih struktur, to je vse proti koncu leta pazite,
da je tvoja koda ne izkoriščati.
>> Torej, zdaj tretja različica tukaj.
To je pridobivanje malo Ljubitelj.
Nisem res like-- anal stran od mene
je že malo moti Dejstvo, da sem imel funkcijo imenovano
RenderHeader in RenderFooter da so bili skoraj enaki.
Zato je prišlo do mene, zakaj ne I parameterize te funkcije
v samo enem imenovano render, so ga vzeli drugi argument
kot je ime šablone, končna da render-- bodisi glavo ali nogo?
In potem po izbiri, če želim prenesti na nekaterih ključnih parov vrednosti
kot jaz za naziv za header, ne pa za nogo,
Jaz bi to naredil.
>> In zdaj, če sem šel v helpers.php, to je malo bolj zapletena.
In bom val moje roke na podrobnosti, ampak to je samo ena funkcija.
Torej, to je korak k boljšemu načrtovanju.
>> Bomo lahko to še en korak naprej.
Če grem v mojo četrtino različica tega opazil zdaj
da delam nekaj še nekako skrivnosten.
In vem, da je to Veliko absorbirati naenkrat,
vendar smo le nekako čiščenja stvari.
Zdaj sem dajanje moje pomočnice datoteke v mapo, imenovano
includes-- samo arbitrarno ime, v katerem želim postaviti stvari
da želim include-- in nato Preostanek je to isto.
>> Ampak če pogledam zdaj v gedit, Obvestilo, da sem prišel znebite
od vseh teh drugih datotek in sem jih premikati, na primer, v tukaj.
Nato pa v predlogah, To sem tudi tukaj.
In tako je vse to zdaj proti korak uporabe veliko boljše načrtovanje vzorec.
In smo zelo hitro dogaja, da se odmakne
od PHP privzeto funkcionalnost, ki smo ga začeli tu z,
kjer si pomešati PHP, in vaše HTML, CSS in vaše,
in si ga izpljunite in greste o vaši poti.
To se ne bo zelo vzdrževati.
Tako kot v C, smo začeli uporabljati več datotek in več funkcij
in faktoring stvari s tem.
Bomo naredili isto tukaj.
In v resnici, v peti in končno Različica tukaj, sem še eno stvar.
Lahko uporabite tudi dot dot, ki spet je le starševski imenik.
Biti še več varnosti pri zavesti, ker če gledam na poslušanje
tukaj za peto in končna različica, obvestila da imam en imenik tukaj imenovano
javnosti, nato pa na isti ravni, tako rekoč,
Imam vključuje in predloge in potem, da besedilna datoteka readme.
>> In razlog, da sem strukturiran je všeč this-- in toliko spletu
gostitelji, še posebej tistih 5 $ tisti mesec ali $ 10 mesecev, tisti,
če ste kdaj imeli eden od teh services-- kaj tako mnogi od njih
Oni samo pričakujejo, da boš pustila vse vaših datotek v enem imeniku,
kot smo že z To je zelo prvi primer.
>> Toda takoj, ko začnete graditi več sofisticirane spletne strani, ki samo shranjevanje
Podatki, ki jih skrbi in vas datoteke mar, dejansko organizira stvari
pravilno in z več varnosti zavest v mislih, lahko
začnemo braniti proti vsem prijateljem
da imate bodisi v ali zunaj tega razreda, ki,
takoj, ko ste začeli delati programi sami na spletu,
se bo za začetek obiranja na vas in na njih.
>> In tako bomo pogledali navsezadnje na to zasnovo.
To je samo slika ki prikazuje naslednje.
Bomo dal vse naše programiranje logike v eno ali več datotek,
in bomo šele začetek kliče te krmilnike.
Tam, kjer možgane naše spletne strani, v resnici so.
Potem bomo imajo poglede in stališča
so tako enostavno, kot samo ločeno files-- imenovane predloge, pogosto.
So samo še estetika moji strani,
kaj hočem stran pogledati like-- barve in postavitve
in položaji vseh spremenljivkah.
>> In potem bolj zanimivo da bomo na koncu prišli do
je vzorec, ki se bo samo beseda, slap, na drugih tehnologijah
da uveljavijo slika, kot dejanskih podatkovnih baz,
tako da, če želite za shranjevanje podatkov,
ne boste samo pošljite e-pošto na vaš Proctor ali zase,
ga dejansko shranite v zbirko podatkov uporablja drug jezik, znan kot SQL.
In tako bomo oditi danes tukaj in pick up s tem v sredo
in uvesti nato podatkovnih baz.
>> [Predvajanje glasbe]