>> [Zenelejátszó]
>> DAVID J. MALAN: Rendben.
Ez CS50.
Ez a kezdete hét nyolc.
És lehet felidézni, hogy mi maradt ki utoljára néztem egy új nyelvet
összesen.
Sőt, az egyik, hogy elég könnyű és ez nem is
egy programozási nyelv.
Ez egy leíró nyelv, amely lehetővé teszi számunkra, valójában strukturálják, és weboldalakat.
És ha valami más együtt this--
vagy hamarosan lesz, ha Ön még nem tette meg.
Fogunk használni Cascading Style Sheets, CSS vagy, ami
egy másik típusa a nyelv A tulajdonságok és értékek
hogy fog tegyük dolgok, mint változtatni a színét
és a változás a helyzet és ilyen jellegű csíp.
De ma és tovább, elkezdünk összpontosítani erősebb nyelven,
tényleges programozási nyelvek, mint a PHP.
>> Így PHP már jó ideje.
És látni fogod, hogy célja az volt, elsősorban
korán tényleges használja webfejlesztés
és valóban termelő weboldalakat.
Szóval, milyen funkciók nem egy nyelvet
szüksége van ahhoz, hogy a web oldalak dinamikusan vele?
>> Más szóval, ha azt szeretnénk, hogy létrehoz tartalom dynamically-- mint a Facebook
Hírfolyam, amely folyamatosan változik, vagy azonnali üzeneteket, hogy felbukkan időről
hogy time-- mint mi a kulcsfontosságú darab funkcionalitás
szüksége van egy programozási nyelv amely segítségével dinamikusan
nyomtasson új információkat a képernyőn?
>> STUDENT: kód.
DAVID J. MALAN: Code.
OK.
Elvisszük azt.
Egy kicsit pontosabb.
Úgy értem, amit tehetünk ez C, őszintén szólva.
Lenne a fájdalom a nyak.
De-- az elkötelezettség?
>> Diák: Igen.
Változók, talán?
DAVID J. MALAN: változók.
OK, biztos.
Változók minden bizonnyal segíteni minket.
És még valami egyszerűbb.
Akkor használjuk a legelső program az első napon
amikor valójában azt mondta: "hello world".
>> STUDENT: Print.
>> DAVID J. MALAN: nyomtatás, ugye?
Print vagy a printf világ a C. Szóval ebben az időben,
már volt nálunk rendelkezésére language-- C,
A particular-- és még Scratch, hogy az ügyben, hogy a
generálhat karakterláncok.
>> Nos, ha a HTML, ahogy azt a múlt héten, csak egy csomó karakterláncok
bár nyitott és zárt konzolok konzolok és valamilyen rím
és oka, hogy, nos akkor tudnánk igazán
kezdeni termelő weboldalak sem kézzel beírja őket a gedit
vagy a Microsoft Word, az adott matter-- csak azt kell egy szövegszerkesztővel.
>> Vagy írhatnánk kódot, a javaslat
korábban, ami hadd dinamikusan generálni HTML,
és ez az, amit mi megyünk kezdeni ezzel a PHP
és végül még egy nyelv nevű JavaScript,
az használja a nyelvet, hogy létrehoz egy másik.
És valóban, ez az, amit a Facebook és sok-sok más oldalak
tenni, hogy valóban dinamikusan megjeleníti az új információt.
>> Szóval kezdődik a this-- rejtélyes látszó vonal, hanem egy
ez valóban elég erős.
Eddig mi már a C, amely egy összeállított nyelvet.
És csak egy gyors recap-- összeállított nyelv van, mi jellemző?
Ön nyilván kell fordítani , de mit is jelent ez?
Igen?
>> Diák: Meg kell összeszerelt gépi kódra.
>> DAVID J. MALAN: OK.
Meg kell összeszerelni gépi kódra.
Szóval vegye be a forráskódot, ami egyfajta angol-szerű.
Átalakítani, hogy a valami alacsonyabb szintű,
amely végül az úgynevezett objektum code-- 0 és 1-a.
És ezek a 0 és 1-es azt a CPU, mint azok, amelyek az Intel,
valóban megértsék.
>> Most, a PHP és Python és Ruby és JavaScript és csokor más
nyelveket nem össze nyelv de értelmezett nyelvekhez,
ami azt jelenti, hogy csak írja ki, majd Ön nem kapcsolja őket 0 és 1-es.
Te inkább csak ad majd, mint input valaki más programja,
hívott tolmács.
És, hogy a személy programot úgy tervezték,
hogy megértsük, mi minden minden jel Python vagy PHP
vagy Ruby vagy akárhány Más nyelveken jelent.
>> És minden, amire szükségünk van valami ilyesmi.
Tehát valójában fogok megy át a készülék
itt, csak bármely régi ablak, és vagyunk
menni előre, és nyitott nevű fájlt, mondjuk, helló.
Most korábban, talán mentett ezt még a fájl kiterjesztését,
de fogok csinálni valami még egyszerűbb itt.
Én megyek előre, és indítsa ezt a fájlt ezzel a talányos szintaxis.
Szóval "felhasználó, bin, env, környezetvédelmi, php. "
>> Ez egyszerűen egy sor kód, ami Elmondod az operációs rendszer,
keressük meg a helyi környezet bármi is legyen az,
bárhol PHP ez-- a interpreter-- és megy előre, és használja azt tolmács
értelmezni az alábbi kódot.
Nos, ez a fajta egy csúnya tulajdonsága PHP.
De ezen a nyelven, bármely idő írsz PHP kódot,
meg kell, hogy egy ilyen csúnya PHP címkék határoló elejére
a code-- <? php.
>> De itt lent, én most tenni valamit nagyon egyszerű, mint a printf helló vessző
világ backslash n bezár idézet, közeli zárójel.
És akkor csak a jó intézkedés, megyek
hogy menjen előre, és szoros a php tag itt
úgy néz ki, hogy minden szépen szép nyomtatott.
>> És amint én kattintson a Mentés gombra, gedit valójában elég okos
hogy nézd meg, hogy már az első sorban, és észre, ó, te írsz PHP kódot.
Hadd szintaxis kiemelés azt a színek
itt úgy, hogy áll egy kicsit többet.
De most megyek le a terminál ablak.
Majd nagyítás.
>> Ezt a programot az úgynevezett "hello", így fogok tenni pont perjel hello,
de engedély megtagadva.
És bash.
Igazából hallottam, hogy a dolog, amit egy pár héttel ezelőtt
keretében Shellshock, azok a bogarak.
>> De Engedély megtagadva láttunk előtt, talán más összefüggésben.
Tudja valaki felidézni, hogy lehet, hogy valami fix
ahol engedély megtagadva, mint ez?
Mi az a parancs, legalább?
>> STUDENT: Chmod.
DAVID J. MALAN: Igen, chmod, A váltással egy fájlt.
És kapsz annál is inkább használt ez a következő héten a következő probléma
beállítva.
De most, én meg fog változni A mód, hogy nem olvasható,
de hogy mindenki végrehajthatóságát kiváltságokat, a képesség
futtatni ezt a fájlt.
És fogok rendelni hogy a fájl helló.
>> Ha én most nem pont perjel helló be, akkor látni, sőt, én a program, hello world.
És milyen lépéseket tettem világosan Átugrani összesen?
Fordítása.
Szóval csak futott a program egészen egyszerűen.
>> És kiderül, meg tudod csinálni a sok szintaxis emlékeztető C.
Hadd menjen a mai kódot, amelyet tettem az én vhost könyvtárba
itt, az igazi okok mi jön vissza.
És fogok menni, mondjuk feltételek 1.
>> És látni fogod itt, az első és Mindenekelőtt egy csomó hozzászólás.
De ez valójában újbóli létrehozása PHP
program tettük hét az egyik az úgynevezett feltételek 1.c
ahol a célra életében ez a program
látszólag kérni a felhasználó egy egész szám
és majd némi bolyhos elemzés rajta, ahol
azt mondod, ha ez pozitív, vagy negatív vagy nulla.
És, hogy ezt csak azért, mert fel, kivéve talán egy kis részlet,
ez megkülönböztethetetlen eddig a C.
>> Mi az az egy jellegzetes hogy itt talán kiugrik
rád, mint egy kicsit más?
Talán két dolgot.
Igen?
>> Diák: dollár jel n?
>> DAVID J. MALAN: Igen.
Így dollár jel n jelen van.
És a dollár jeleket, mint látni fogjuk, mennek
hogy egy fix elejére minden változót a PHP.
Ez mind jó és bad-- jó hogy ez a fajta nyilvánvaló, mi a
a változó, rossz, hogy ez az még egy dolog, hogy írja.
És van egy másik dolog, amit még nem egészen
látott, legalábbis ez a helyesírás. igen?
>> STUDENT: Readline.
>> DAVID J. MALAN: Readline.
Readline nem láttunk, önmagában, a C, még akkor is létezik valami
Hasonló, de már használt getstring, és ez a párja.
Szóval, ha megyek ebbe könyvtár, amely történetesen,
ahogy leírom egy kicsit az én vhost könyvtár és a forrás A könyvtár,
és megyek előre, és nem pont perjel conditions-- whoops-- pont perjel
feltételek 1., majd meglátod, újra, ugyanaz issue-- engedély megtagadva.
>> Hadd nagyítás, és nem chmod a plusz x feltételeiről, pont perjel feltételek.
Szeretnék egy egész, kérem, 50.
És mi volna játszani ezt a játék egész nap.
Meg fog viselkedni pontosan mint ahogy az első héten.
>> OK, így nem minden más, kivéve Nem csak, hogy enyhe kis szintaxis,
de a tetején, megint volt ez a vonal, amely
engedélyezve, hogy hozzon létre valamit, ami úgy néz ki, mint egy C program neve hello,
nevezett feltételek 1.
De ez nem 0-és is Én végrehajtó közvetlenül.
Ez helyette futtatása tolmács, akinek a neve
történetesen azonos a nyelvet.
A program neve a PHP, és a kód vonal alatt az egyik, hogy telt bele.
>> Tehetünk még egy meglehetősen egyszerű Például emlékeztető valami
mi hete.
Ismét, ez egy fajta tetszőleges kódrészletet
hogy látszólag nem mit, ha elindul?
Mi ez a nyomdába, feltehetően?
>> Így kezdetben on line 16, ez akartam mondani x ma 2, valószínűleg.
% D ugyanaz, mint $ i A printf.
Tehát akkor ez kocka, pont, pont, pont, a 17. sorban.
Aztán sorban jelenik meg 18 hívni egy függvény Cubed.
És hol van Cubed meghatározása?
>> Nos, úgy néz ki, mint a sorban a 25, így ez még nem minden, hogy a különböző.
Van néhány megjegyzést a fenti , de a legtöbb esetben,
ez egy meglehetősen egyszerű számhordozás vagy átalakítás
A C programot a PHP verzió.
De ma már egy pár különbségek talán kellene ugrani.
Mi mást is különbözik, hogyan Lehet írni ugyanezt a programot a C?
>> Diák: [hallható].
>> DAVID J. MALAN: Van nem prototípus up tetején.
Így PHP-- és őszintén szólva, a Sok modern languages--
sokkal okosabbak, és több hasznos mint a C fordító, hogy
lehet, hogy a funkció itt, Ön nem tud egy függvény idelent
és a tolmács megy ugye az olvasás mellett
az egész fájlt, mielőtt úgy dönt, hogy néhány funkció nem létezik.
Szóval szép javulás évvel később.
De van még valami, más eltérő vagy hiányzik itt.
Igen?
>> Diák: [hallható].
DAVID J. MALAN: Nem kell állapítsa meg, hogy milyen típusú változók,
így majd meglátjuk, hogy nemsokára Különböző típusú PHP
de nem kell adnod, ami szintén jó és rossz.
És van még egy dolog hiányzik.
>> Diák: Nincs könyvtárak.
>> David J. MALAN: Nincs könyvtárak.
OK, ez szép.
Mi sokkal többet ki a dobozból.
Tehát valójában sokkal több dolgok, mint gondoltam volt más.
Mit szólnál módon vissza?
Mi ez?
Mondja még egyszer?
>> STUDENT: Pointer.
>> DAVID J. MALAN: No mutatók.
OK, legalábbis ebben a példában, nem.
Ez igazságos.
Tehát nem mutatók PHP valójában általában.
Vannak úgynevezett referenciák, de nem fogunk túl sok időt töltenek ott.
És mi még?
>> STUDENT: Main.
DAVID J. MALAN: Main.
Szóval ez volt a nagy ügy Arra gondoltam.
Figyeld meg, hogy nincs fő belépési pont.
Egyszerűen írjuk be a kódot.
És ez tulajdonképpen lesz előnyös
amikor átmenet egy pillanatra, hogy valóban használ
ez ugyanazon a nyelven web-alapú programozás, amelyhez
Nem akarom, hogy csak egyetlen belépési pont.
Lehet, szeretnénk, hogy egy csomó URL-ek, egy csomó különböző fájlok
minden vevő a felhasználói és végterméket állít elő.
>> De itt van a nagyon szomorú Például, hogy megígértem utoljára,
vagyis ebben a mappában itt, helyesírási hibák.
Tehát ebben a fájlban helyesírás, amit Nem túl sok időt töltenek a van
lényegében egy porting--, P-O-R-T-vel. Ez csak az adott szó, ha, mondjuk,
átalakítani egy nyelvet a másik kézzel általában.
>> Ez a portolása PC változata helyesírás származó PSET 5.
És lényegében megpróbálta átalakítani azt soronként minél jobban tudok.
Tehát, ha úgy tetszik ez a fajta dolog, valójában ér egy bizonyos ponton
húzza mindkettőt fel egymás oldalsó és látta, hogy mi ugyanaz
és mi más.
De ők átkozottul hasonlóak.
Ha emlékszel, mi helyesírás még nézett ki, mint,
még akkor is ha nem meg kell változtatni ezt a fájlt,
ez elég hasonló szerkezetileg csak egy pár
A változtatások itt-ott.
>> Tehát ez csak azt jelenti, hogy ez elég egyszerű átalakítani helyesírás
C-ről a PHP.
De a szótárban, ott van valami még vonzóbb.
Hadd menjek előre, és hozzon létre saját dictionary.php fájlt.
Így kissé különbözik, hogy fogjuk nevezni .php helyett .c.
Mivel ez egy PHP fájl, I do-- kissé annoyingly-- van
kezdeni a fájlt a php tag, mint ezt.
És én megyek előre és határozza meg a néhány funkciót.
Nevezett funkció ellenőrzés, amely fog tartani egy szót, mint korábban.
De ez az érvelés megy, hogy a dollár
aláírni, mert mi, megint, a PHP.
Egy másik funkció dictionary.c volt terhelés
és ez volt a neve a szótár, úgyhogy kap, hogy a funkció kész.
>> Egy másik a dictionary.c volt mi?
Mérete volt az egyik legszebb is, a legalábbis ha tartani néhány változó körül.
így méret csak vissza kell térnie a változó.
És ott volt kirak.
>> Így volt ez a négy funkciók probléma készlet 5
hogy a megvalósításához szükséges Néhány adat szerkezet vagy szerkezetek.
Szóval megígérte, hogy PHP, kijelenthetjük
egy hash tábla, például, minden könnyebben.
Sőt, ha én szeretnék egy hash tábla, Én csak megyek, mint hogy
és ott van az én hash tábla.
És ez a hang, szomorú, hogy mi maradt ki az elmúlt időben.
És tudod mit, ha akartam a változó méretű, jól,
ez még nem minden hogy eltér a C,
de én megyek előre, és csinálni.
És észre nincs adat típusát.
És én megyek vissza később, és valóban hozzá néhány megjegyzést itt.
De mi a teher?
>> Ha a dollár jel szótár a neve a fájl
és én tényleg szeretnék betölteni szavakat a táblázat most,
Én valójában nem valami meglehetősen egyszerű.
One-- és ez minorly annoying-- PHP
meg kell határozni belül egy függvény, ha
szeretnénk elérni egyes globális változó, ami kívül definiált.
>> De ez nem különösebben érdekes most.
Mi ennél is érdekesebb, ez az egyes konstrukció, amit a fent utoljára.
És kiderül, hogy a PHP rendelkezik egy olyan funkcióval nevű fájlt, amelynek célja az életben
hogy nyissa meg a fájlt, és olvasni annak minden sort egy tömbbe
és adja vissza őket.
>> Ami azt tudom csinálni szótár így hogy most már ténylegesen, amikor hívom fájl
ez lesz, hogy kézzel vissza tömb szavak a fájlból.
Ez nem annyira jó.
Ez még mindig lesz egy vonal A szavak, valami lineáris.
De lehet menni előre, és navigálhat mint minden ilyen szavak használata
hogy szintaxis láttuk röviden utoljára.
És látni fogod, hogy több a közelgő PSET.
>> De most van egy hurok iterációjával az egyes szó a szótárban.
És minden iterációban felidézni vagyok amelyben az aktuális szót "szót."
És ez fog vinni hogy egy szót a szótár
lesz szó találgatás "igazi".
Ez az én insert funkció.
Ez az én terhelés funkció az én szótár.
Most egy kicsit cheat, mert tudod, mi van valójában
fordított perjel n a végén a szavak hogy talán érdemes megszabadulni,
de ez nem probléma, mert a PHP a nevezett funkció chop ami szó
karaj le egy karakter a legvégén.
Tehát nem probléma.
Mentünk előre, és valóban rövidített, hogy csak ezt.
És most talán érdemes nyomon követni méret, úgyhogy legalább do this--
méret ++.
Én meg tudom csinálni, mint korábban.
És akkor ez valószínűleg fog pont jó, azért, hogy a vissza igaz.
Kész.
PSET 5.
>> [Nevetés]
>> DAVID J. MALAN: OK.
Fogjuk csinálni újra a következő PSET is.
Szóval mi a méret?
Nos, ez remélhetőleg hamarosan ahogy az elvárható utoljára,
bár meg kell csinálni ez a hülye globális dolog.
Ez csak egy tárgy a a nyelv design.
>> De nézd meg egy kicsit érdekes.
Tehát, ha én átadott dollár jelentkezzen szó, először
szeretné, hogy hozzáférjenek a hogy globális változót táblázat.
És most, ha azt akarom, hogy ellenőrizheti, hogy egy szó van,
Tudom csak mondani, ha igaz az, hogy a következő van beállítva a táblázatban,
akkor megy előre és vissza true; más, return false.
Kész.
A másik fele PSET 5.
>> Rendben, így megint én vagyok vágás néhány sarkok.
A tisztesség, talán érdemes eltölteni néhány másodperc
ezen a végrehajtás.
És talán nem kell gúnyolni a órát teszel a PSET annyira.
Tehát strtolower egy függvény.
Valami hasonló egzisztencialista C-ben, legalábbis a karakterek,
de a PHP van egy egész sor verzió.
>> Ez lesz az erő minden kisbetűs, amit néhányan közületek
tette volna, hogy milyen canonicalize te üzembe a szótárban.
És most akkor ezt a C is.
Ennek semmi köze a PHP.
>> De minden alkalommal, amikor van Logikai állapot,
mint valami on-line 10 van, amely csak
fogja értékelni, a valós vagy hamis, és az, ha más jól
visszatér igaz vagy hamis, tudtam egyszerűen valóban ez szexisebb
és csak nem valami ilyesmi.
Szóval, hogy van az én ellenőrzés funkció.
Jobb, ha a logikai vissza igaz vagy hamis,
nézzük csak vissza azonnal.
>> És van néhány más trükk Tudtam, hogy itt-ott.
Load-- kirak, mellesleg, ez kész.
Semmi köze van.
Mivel az összes memória PHP és sok más nyelven
valójában kezeli az Ön számára.
Így mivel a C, mint amit tanult fájdalmasan,
bármit malloc vagy calloc vagy realloc, akkor szabad magát.
Bármi, amit fopen, meg kell fclose, ily módon a forrásokat végül felszabadult
és eszközök, mint a Valgrind nem észre, és nem panaszkodnak,
ami egy jó dolog fut rajtuk.
>> De biztosan, ott kell néhány fogás, ugye?
Ellenkező esetben, a fajta hiábavaló egy csomó hét.
Szóval van-e több okból Ezért egyfajta ezt röppálya,
de van egy trade-off.
Igaz, ez volt a tematikus.
>> Tehát mi talán a trade-off itt mozgó, C-ről a PHP?
Olyan, mint minden győzelem eddig nem egy kis csúnyaság itt vagy ott.
Igen.
Mi ez?
>> Diák: [hallható] memóriát.
DAVID J. MALAN: Speed.
OK.
Nos, az a sebesség volt elég gyors.
Jobb?
De gyorsaság a program?
OK, így ez egy korrekt pontot.
>> Annak érdekében, hogy meg fog történni, azt előre cued fel mind a két próbálkozás megoldás, az egyik
Volt a táblán egy try-alapú megoldás,
és én, hogy ebben a könyvtárban van.
Szóval egy pillanat, tudok menni előre, és futtatásához a King James Biblia,
Enter használatával.
És ez remélhetőleg helyes végrehajtás a végén,
ad nekem időt, összesen 0,38 másodperc, hogy a
egy kissé önkényes példa.
>> És ha most megy ebbe második terminál ablak
itt, ahol először kinyitotta gedit, legyen menjek a mai code-- amely ismét
van ebben a könyvtárban here-- és hadd menjen előre, és fuss helyesírás.
Szóval, csak hogy tisztázzuk, ez a PHP verzió.
Én csak mutatja a tetején van.
>> Tehát, ha én a helyesírás tilde CS50 PSET 5 szövegek, King James, írja.
Ez még mindig gyorsabb, mint írás el a C, de a teljes idő
az, közlemény, 0,93, míg a C-alapú végrehajtás 0,38.
Szóval ez egy nem triviális különbség.
>> És ez csak egy fájlt.
Ha úgy döntesz, hogy fut a két programok, szemben a nagy tábla
és van egy csomó bemenet tesztelt, ez biztosan összeadódnak.
És ha lenne még nagyobb adathalmazok, ez is, akkor add fel az összes még.
Szóval igen, fizet néhány ár A sebesség valóban ez a helyzet.
Mi más?
Igen?
>> Diák: összege RAM használat.
>> DAVID J. MALAN: összege RAM használat.
Szóval nem ad egy második gondoltam, amikor írom ezt a PHP
változat, hogy mennyire memória voltam használ.
Én teljesen elhalasztását, hogy a PHP magát, és aki azt írta, hogy a program.
És hogy lehet rendben van, de ha én tényleg nagyon
törődik szorította annyi teljesítmény az én program vagy az én website
vagy ki bármilyen eszköz Építek, talán
PHP, sőt, nem a megfelelő nyelvet.
>> És valójában, ezért, az Például, sok webes servers--
a tényleges programok szolgálják fel web content--
nem PHP-ben íródott vagy Python vagy Ruby.
Vannak írva, mint akkor most csinálni Pset 6,
C így nyomja minden kis teljesítmény belőle
és tényleg gyakorolja finomszemcsés felett mi
alatt folyik a motorháztető, és nem csak úgy, hogy
természetesnek néhány magasabb szintű adatok szerkezetét.
>> Fontolja meg, miután az összes, aki PHP végrehajtott
hogy fogalma a hash table-- valójában inkább
megfelelően nevezik asszociatív array-- nem ő van valami ötlete, hogy milyen
A bemenetek akkor lesz üzembe helyezése a szerkezet?
Tehát nyilvánvalóan nem, ugye?
Ez egy általános eszköz Az eszköztár, ami
feltéve, hogy bárki, aki szeretne használni, és így biztosan
nem lehet optimalizálni végül pontosan mit szeretne csinálni.
>> Így a kereskedelem-fejlesztési időt talán offs-- különböznek, teljesítmény eltérhetnek,
összetettsége vagy memóriahasználat eltérő lehet.
És mit talál egyre inkább az, hogy van
különbözni fog eszközök a kereskedelem.
És valóban egy szuper többsége emberek utolsó projekteket ebben az osztályban,
akár hiszed, akár nem, a C nem megy hogy a megfelelő nyelvet használja.
>> És valójában, az egyik az elvitelre Végső soron minden osztály, mint ez
az, hogy neked gondolkodás, nos, mit húzza le
a polcon, ha azt szeretné, megoldani néhány problémát.
És valóban, akkor át a hídon még inkább nézzük több nyelven
még túl ma.
>> Szóval átmenet most talán egy ismerős kontextusban
az egy nyelv, mint a PHP.
Ez némileg közös használatra A parancssorba írt szkriptek
mint én, de sokkal, sokkal gyakoribb.
És úgy tervezték, hogy kell használni fájlok formájában, amely rendszerint
A .php-- de ez nem prerequisite--
hogy maguk létre webes tartalmat.
>> Szóval hadd menjen előre, és nyissa meg a néhány példák készítettem előre.
És ezek valójában egyfajta valódi történet, hogy az egyik első dolog,
Amit valaha is tettem magamnak befejezése után CS50 és talán, azt hiszem,
CS51 évvel ezelőtt az én szobatársam és én segítettek
futtatni a gólya intramuralis sport program, amely abban az időben,
még újonc, regisztráció különböző sport kitöltésével egy darab papírt,
ahogy nevezték, séta át az udvaron, hogy Wigglesworth,
és vidd módszerrel bizonyos Proctor ajtaja csepp.
És akkor ő megy át őket, és aztán valóban írjon nekünk kézzel
hogy regisztráltak sportolni.
>> Olyan tisztán, lehetőséget javítására.
Ezek a napok, akkor is kiderül, hogy csak Google Forms, de vissza a nap,
kellett érinteni for-- ezt nem volt még, hogy a hosszú ago-- elérni
a programozási nyelv, amit nem a PHP.
Abban az időben, ez volt úgynevezett Perl,
amely már kiment a divatból ettől.
De az ötlet ugyanaz.
>> És lényegében leültem, hogy megpróbálja a kikötőbe megy Perl verziók PHP,
de teljes nyilatkozat, nem ad gondoltam, hogy az esztétika csak még.
Tehát itt van egy weboldal.
Ez a fájl.
Ha nagyítás, a látszólag úgynevezett froshim0.php
csak azért, mert ez az első Például ebben a sorozatban.
És észre, hogy van, amit úgy tűnik, hogy egy nagyon csúnya HTML űrlap,
de az űrlap érdekes mert lehetővé teszi
nekem, hogy felhasználói a böngészőben.
>> Most, amikor utoljára volt a formában, Kinek mi benyújtja a lekérdezési paraméter,
a sor paramétert nevezték?
Szóval a Google, ugye?
Teljesen punted az elképzelést, csinál semmit azzal bemenet.
>> De ma, kezdjük nyomtat.
És a viselkedés fogok látni Itt kezdetben elég triviális.
David, megnézem ki a nemek Itt mondjuk Matthews itt.
Nem leszek kapitány.
Megyek kattintson Register.
És észre, hogy az URL-cím változott regisztrálni, 0.php,
és akkor ott van ez a csúnya szöveget.
Nem adtam gondoltam, hogy formázását e.
>> De mi az érdekes, hogy a három értékeket látszólag telt el.
Ez a PHP fajta egyenértékű printf--
majd meglátjuk, mi ez tényleg hívják Egy bit-- hogy csak kinyomtatja
amit át bele.
Tehát ez azt sugallja, hogy ez a forma volt legalább három területen rá,
és láttál írja őket.
Az egyik volt a neve, egy pedig nem, egy volt kollégium.
És kapitány sem kap küldött a szerver, mert nem ellenőrizte azt.
>> Tehát ez azt látszólag, ha be dolgokat az interneten,
akkor nemcsak az URL néha change-- néha nem.
Tény, hogy a fájl neve megváltozott, de mi hiányzik a URL
hogy nem látni utoljára a Google.
Igen?
>> Diák: Nem query string
>> DAVID J. MALAN: Nincs query string.
Nincs kérdőjel valami.
Nincs kérdőjel q egyenlő macska, ahogy a múltkor.
És biztosan nem kérdőjel neve megegyezik
David vagy kollégiumi egyenlő Matthews, igen, hol az, hogy minden megy?
>> Nos, hadd menjek vissza a gedit itt és nyissa fel az első ilyen fájlok
én vhost, helyi gazda, az állami könyvtár itt és bemegy froshim0.
Így kiderül, hogy szinte minden oldal csak HTML.
És ez lehet ismeretlen az Ön számára, de hamarosan lesz olyan a PSET 6
és PSET a 7. és a 8. PSET.
De ez csak egy HTML oldalt.
>> És érdekes dolgokat úgy tűnik, hogy itt van.
A form tag, akinek action attribútum értéke 0 regiszter.
Ezért, amikor benyújtani ez, ez megy, hogy a fájl.
De a módszer különböző today-- post.
Így kiderül, ott van legalább két módszer az interneten használt
hogy adjon tájékoztatást tól böngésző szerverre.
Get mondja az URL.
Hozzászólás mondja másutt.
És mikor és miért lehet, hogy te valóban szeretne egy weboldal
használni, akkor helyette hozzászólás Az kap, csak ösztönösen?
Bármely weboldal.
Milyen adatokat kell átadni csak a következtetés most postán szemben
kap, ha láttuk a két különbség?
Diák: [hallható] biztonságos.
DAVID J. MALAN: Ha azt szeretné, valami, hogy biztonságos legyen.
Szóval lehet, írja be a jelszót egy weboldal, a hitelkártya
egy weboldal lenne fajta ilyen szuboptimális
ha a böngésző tesz, hogy a értékét belsejében az URL.
Miért?
Látod azt, ami nem Úgy tűnik, hogy egy ilyen nagy dolog,
de esély akkor elég gyakran séta távol a számítógép vagy a számítógép használat
laborok, és így valaki más, vagy akár a szobatárs
könnyen járni, és látni hogy személyes adatokat.
Ha küld egy e-mailt az interneten keresztül, akkor valószínűleg
Nem akarom, hogy az adatok befejezés fel az URL-ben is.
És így van tetszőleges számú oka Ezért érdemes tedd ide.
És photos-- jobb, én még csak nem is egészen elképzelni, hogyan venne egy grafikus,
mint a JPEG, és tedd be egy URL-t.
Meg tudja csinálni.
Van módja kódoló, de ez csak nem egyszerű így.
>> Jelentkezzen még 0 valójában nagyon underwhelming.
Minden szó szerint azt mondja, ez az.
Ez kiírja belsejében néhány HTML címkék a következőket.
Van egy PHP címke itt beágyazva a pre tag.
"Pre" csak azt jelenti, előre formázott szöveget, mono elhelyezkedő, mint egy írógép.
>> Printr a nyomtatási rekurzív függvény.
És akkor itt van ez a Érdekes dolog itt.
És vissza fog jönni erre mert ott mások,
de dollár jel aláhúzás utáni tűnik
a változót a PHP, ahol bármit elküldte a böngésző szerver
lesz tárolva az Ön számára.
És majd meglátjuk, hogyan lehet eljutni hogy az információ hamarosan.
>> De először menjünk vissza Egy kissé eltérő példa.
Megy register-- vagy inkább, froshims1.php,
amely úgy néz ki, egy kicsit más.
Vettem egy kicsit erőfeszítés formázás,
annak ellenére, hogy még mindig elég ronda.
De én megyek előre és írja be a "David" most.
Férfi.
Majd jelölje ki a "kapitány", ebben az időben.
Megteszünk Matthews.
És regisztrálja.
>> És ezúttal azt mondja, hm, nem igazán.
Rendben, mi a regisztrációhoz 1?
Hadd menjek nyitott nyilvántartásba 1 és-- hm.
Rendben, ez érdekes, és ez a
egy lépcsőfok most felé több érdekes program.
>> Figyeljük meg a tetején ez a fájl a PHP tag, valamint néhány megjegyzést.
És ezek, mert most, a figyelemelterelés úgyhogy csak megszabadulni ezeket az észrevételeket
mint ők a C és azt állítom, ezzel kódrészletet egy megjegyzést
hogy ez a kód érvényesítése benyújtására.
>> Nos, kiderült, hogy változók, mint a dollár jel
aláhúzás poszton az úgynevezett super globals.
Olyanok, mint ezek speciális globális változók
hogy csak omni-jelenleg elérhető a programon belül.
És akkor a szögletes zárójel jelölés az index beléjük nem számokkal
mint 0, 1, 2, 3, de a tényleges szavak.
>> Szóval lehet gondolni dollár jel aláhúzás posztot egyfajta hash tábla
hogy akkor adja át a kulcsot, a keresési szó-a szögletes zárójelek között,
és ez megy, hogy vissza a értéket, amit a felhasználó valójában biztosított.
PHP függvény hívott, hogy csak üres
azt mondja, igen, vagy nem, ez változó üres-e vagy sem.
Van a kettős bárok, ami csak azt jelenti, vagy, mint C.
>> Tehát valójában ez a 4. sorban csak mondván, ha a felhasználó nem ad nevet
vagy nem ad a nemi vagy nem hogy a kollégiumi, megy előre, és átirányítja őt
vagy őt át ezen a vonalon van.
Szóval ez egy kicsit rejtélyes, de ez csak azt jelenti, szó szerint
vissza erre a helyre, így a felhasználó Punts
vissza oda, ő jött.
De ez egy kicsit nem elegáns az, hogy én kemény kódolt azt.
>> De mi van, ha ez a feltétel, ha kiértékelése nem igaz?
Mi van, ha a felhasználó nem ad nekem a a nevét és a kollégiumi és a nemek?
Hogy ha a feltétel nem fogja értékelni a valódi,
így nem sújtotta a kijárat 7. sorban.
És mi történik?
És ez az, ami érdekes PHP.
>> Akkor essen ki és PHP mód, hogy úgy mondjam.
Ha azt szeretnénk, néhány kód futtatása, tudod megnyitni és bezárni a PHP tag
és tedd kód ott, mint én tettem itt.
Amint bezárja A PHP tag, a szerver
csak fog kiköp bármit teszel oda.
És valóban, ez része volt az eredeti design PHP,
A jobb rosszabb volt, ez keveredése és jelölő kód
nyelv.
És látni fogjuk, hogy ez nagyon gyorsan hárul a rendetlenség.
És mi a jobb annál ez végül, de csak
észre a könnyedség, amellyel én valóban végre tudják hajtani némi logika.
>> De még mindig egy kicsit underwhelming.
Nyissuk fel verzió Két Frosh PM, amely
látszólag úgy érvel, hogy register2.php.
Tehát ez a fájl valóban megy hogy majdnem ugyanúgy néznek ki.
Fogok menni Frosh PM 2.
De Frosh PM 2 lássuk, mi történik.
>> David, kattintson a rádió gombra, a hívják; Matthews, nem kapitány.
Regisztráció.
Ön regisztrált.
Nem igazán.
Ó, várj, csak nem hogy például, nem igaz?
Rendben, állni.
Majd ezt a három.
Egyértelmű valami szól történni a Gmail.
Majd oda.
>> Így Frosh PM 3 úgy néz ki, mint ez.
Nincs más.
De amikor én David, férfi, Matthews, és nyilvántartásba, ez a harmadik és egyben utolsó változat
követelések, egészen egyszerűen, akkor bejegyzett igazán.
Ez a fajta lényegtelen.
De azt állítják, hogy ennek harmadik és egyben utolsó változat
Én most újra pontosan mi a szobatársam és én építettem a Frosh PM
programot évvel ezelőtt.
És ez volt egyszerű.
Nem volt az adatbázis, nincs Excel táblázatkezelő.
De ami még fontosabb, nem volt több papír
mert mit tettünk ezzel a programmal az volt, hogy tulajdonképpen e-mailben a Proctor, aki
korábban részesülő ezek a dolgok formanyomtatványokon keresztül.
>> És úgy tűnik, mi már ezt programozva oly módon, hogy ha valaki regisztrál,
John Harvard számlájára e-maileket a proctor-- vagy maga ebben az esetben,
John Harvard-- a következő text-- "Ez a személy csak regisztrált."
Név Dávid, kapitány üres; nem, a férfi; és a kollégiumi, Matthews.
>> Szóval, mi történt ott?
Nos, a kérdéses fájlt ide látszólag register3.php.
És ha kinyitom ezt, látni fogod mind a hatalom kód, mint ez
és, őszintén szólva, a bizonytalanság A rendszer, mint az e-mail.
Én csak úgy tett, mintha ténylegesen John Harvard lesz a következő módon.
>> Én a nyílt php címke felfelé top, amely csak azt mondja, itt van pár PHP kódot.
Itt lent, kiderül, ott vannak könyvtárak PHP.
Csak nem kell header fájlokat tartalmaz, mint sok.
Kapsz még a konyhai mosogató, hogy úgy mondjam.
>> De ezúttal a 4. sorban, én szeretnénk, hogy a különleges nevű könyvtárat
PHP Mailer, ami az, amit telepíthető ingyen számos rendszer.
Itt lent vagyok érvényesítése benyújtására csak
ellenőrzésével azonban a felhasználó ad nekem egy nevet, a nem, és a kollégiumi.
És ha igen, megy előre, és példányosítunk a levelező.
>> Azt hiszem ez olyan kódsort, hogy csak oszt.
Olyan ez, mint a malloc, de ez egy kicsit szexisebb
a hogy mondod nem csak malloc és néhány általános szám.
Azt mondod, hogy nekem egy ilyen, adj egy új egy ilyen.
>> És ha már programozva Java vagy C ++ vagy más nyelven,
lehet, hogy láttam ezt.
De a rövid is, ha ismeretlen, ezt a sort
megvilágításba helyezi dollár jel mail különleges struct nevű
Egy tárgy, amely beépített e-mail funkciókat.
És valóban, észre és hasonló szintaxis.
>> Ez nem egy mutatót, per se.
PHP csak ugyanazt a szintaxist.
Ez a sor azt mondja használat SMTP-- Simple Mail Transfer
Jegyzőkönyv, ami csak a használt protokoll levelet küldeni.
Ez meghatározza használat Harvard SMTP szerver, ami
valahol itt az egyetemen.
>> Ez azt mondja, amit a TCP port szám beszélni,
és én csak gondoltam, hogy ki googling vagy érdeklődjön a help desk.
Aztán mivel Harvard használ néhány a rendszer biztonságát a levél server--
legalább titkosítani forgalom közted és azt,
annak ellenére, hogy bárki küldhet a it-- Megyek be a TLS protokoll
azért, hogy a biztonságos.
>> De ez az, ahol a dolgok egy kicsit ijesztő.
Tudok csak önkényesen azt mondják, hogy én vagyok jharvard,
és én is csak önkényesen e-mail magam itt.
És akkor én is meg egy témát ebben a sorban van.
>> És ez csak úgy néz ki, csúnya, de csak egy csomó láncolata.
Kiderült, hogy a PHP egy szuper hasznos szimbólum, mint néhány nyelv, a pont operátor,
amely a szó szoros értelmében csak összefűzi húr után húr húr után,
és akkor nem kell malloc vagy ábra ki a teljes hossza a húr.
Csak csináld.
És valóban, mert én összefűzése az összes ezeket a dolgokat ezekkel a pontokkal,
ezért az e-mail I küldött nézett ki, mint annak idején.
>> És akkor végül itt, küldök mailt.
Szóval, ha ez hamis, Én csak meg fog halni,
ami egy olyan funkció, hogy csak nyomtat A képernyő néhány hibaüzenet.
De ez, sőt, amelyben a küldési funkció.
Egyébként, ha az összes ez nem sikerül, ez irányítja vissza ide.
>> És miért látom, hogy Vagyok regisztrált tényleg?
Nos, ez történt itt.
Szóval, hogy ezt fel egy pár oka.
>> Az egyik, ez pontosan hogyan, ha építeni Néhány weboldal a végleges projekt
vagy a valós világban, ez hogyan küld emlékeztető e-mailt
az ügyfelek vagy az előfizetők.
Így küld jelszó emlékeztetőt.
Így küld üzenetet az emberek hogy van egy új Facebook
üzenet függőben lévő, vagy valami ilyesmi.
>> De azt is beszél, hogy az a tény, hogy ez lehetett
már nagyon jól Davin vagy bárki más.
És azt mondom, ez a fajta mosolyogva, mert én vagyok
egészen biztos benne, mi megy keresztül több elmétek ezen a ponton.
De ez egy ilyen csinálni, mint én azt mondják, nem én fajta dolog,
mert triviális kovácsolni e-maileket, mint ez.
De lehet, hogy látott vagy olvasd el a Crimson,
A késő ez is elég triviális az emberek
nyomon követni őket vissza néhány eredetű.
És kérjen nekem egy kis időt, talán A CS50 ebéd, hogyan először
megismerkedtem nagyon szorosan szinte a ed fórumon sok éve
ezelőtt, amikor felfedezték hogy az internet működött.
Tehát bármilyen case-- kissé után az ed fórumon tette.
>> Így minden esetben, van egy csomó szuper globals,
is, mert itt nevezik, amelyek közül az egyik mi saw-- dollár jel aláhúzás post.
Van egy párja nevű kap, ott, ahol a cucc egy URL
végül megy.
És van egy csomó más, too-- ülés és a szerver és a cookie-t.
Majd gyere vissza a cookie máskor,
de ülés elég jó mert jobb now-- ig now--
mindent, amit tettél egy webböngésző egyfajta hontalan, hogy úgy mondjam.
Én kattintson körül, hozzáférés fájlokat a szerver, valami
történik a képernyőn, de akkor a kapcsolat bezáródik.
Az Internet Explorer, vagy a Firefox ikon nem forog
és csak mi hogy a web oldalon található.
>> Tehát HTTP hontalan abban amint azt teszi a kapcsolatot,
kap néhány adat, ennyi.
Nincs több kapcsolat, ellentétben a Skype, ellentétben FaceTime, ellentétben GChat, amely
tart fenn állandó kapcsolatot a szerverrel.
A web alapvetően le, bár mi
hogy nemsokára mennyire tudjuk szimulálni a dolgokat
mint a Facebook chat és a GChat, amely fenntartja a illusion--
vagy ténylegesen fenntartani állandó kapcsolat használata
még a modern technológia.
>> De ha elmegyek, mondjuk, counter.php, Ez egy egyszerű példa,
amint látni fogjuk, hogy jelenleg úgy gondolja, Meglátogattam a hely nulla idő.
De ha csak az oldal újratöltődik, valahogy tudja, hogy volt itt.
Ha reload újra, tudja, hogy volt itt.
És újra és újra és újra és újra.
>> Szóval van valami plusz plussing folyik, hanem közlemény
A kis dolog forog valaha oly röviden felfelé, majd a felső bontja,
tehát nem olyan, mint van egy állandó kapcsolat a készülék.
Nos, ha én megyek be counter.php, észre, milyen egyszerű ez.
Először hívják ezt a különleges funkció, amit hamarosan
elkezdi biztosra nevezett ülés kezdete.
Indítsa el a munkamenet.
>> És egy ülés ezentúl csak lesz egy vödör, mint a bevásárlás
kocsi, ahol nem tud értékeket és egyfajta bizalom, mint a programozó
hogy ők lesznek itt, amikor a felhasználó jön back-- a második
később, egy óra múlva, még egy évvel később, ameddig ő nem világos
a cookie-kat, mivel mi végül látni.
És most én csak azt egy, ha a feltétel itt.
Tehát, ha a következő kulcsfontosságú, nevű számláló, van meg benne
ennek a szuper global-- ezt hash tábla, ha will-- hívott ülés,
akkor megy előre, és megragad a értéket az session-- think
Az ezt a bevásárlás cart-- és tárolja
egy ideiglenes változó nevű számláló.
>> Ellenkező esetben, ha ez az érték a számláló nincs beállítva az úgynevezett shopping cart,
csak inicializálás 0.
Végül ide, menj és tedd vissza a bevásárlókocsit vagy az ülés
a számláló értéke 1.
Így kiderül, hogy ez a speciális konténer here--
amely, ismét, az egyik ilyen kapcsolódó tömbök, egy tömböt, hogy tudod index
a szavak helyett numbers-- ellenére is fennáll a felhasználó megy el.
Ismét megyek vissza az oldalt.
Ez egy perc múlva.
De emlékszik, hogy én már volt itt 19-szer előtt.
Ez az én 20. látogatást.
>> És ez lesz a kulcs végrehajtása minden olyan webhelyet, amely emlékszik
hogy te vagy bejelentkezve, hogy tegye valami szó a kosárban
vásárolni, vagy, hogy van néhány üzenetek száma folyamatban.
Bármikor szeretne emlékszem információ,
látni fogjuk, hogy a PHP-t, mint a több más nyelven,
nyújt számunkra ez az illúzió az állami még akkor is, mint látni fogod a PSET a 6.,
mint te HTTP kérések az ügyfél és a szerver, ez az.
Ha kap vissza, hogy válasz, nincs semmi több
jön vissza a szerver alapértelmezés szerint.
De majd meglátjuk, hogy megkerüli ezt.
>> Nos, próbáljuk meg tiszta ez egy kicsit.
Láttuk néhány más példák is.
Ja, és mint egy félre, mert akik ismerik vagy ismeretlen,
az oka, hogy a Frosh PM példa ment
Az esztétikai igazán csúnya slightly-- is,
még ugly-- enyhén kevésbé csúnya bár még mindig csúnya
azért van, mert ha megnézzük A forráskód itt,
kiderül, hogy én ezt legtetején a fájl.
>> Kiderült, hogy a bootstrap egy a sok szabadon elérhető könyvtárak odakinn
hogy léteznek nem programozási nyelvek mindig, de a CSS vagy JavaScript
vagy HTML vagy akárhány nyelven.
>> És ezek az emberek here-- eredetileg jött ki
A Twitter-- csak azt egy csomó stílus.
Ez egy hatalmas fájlt hogy itt valaki írta,
vagy valaki azt írta, hogy idővel meghatározza színek és formázása
és miegymás, így én is fajta kölcsön a szintaxis
és nem kell kitalálni, hogyan helyezkedjenek el az űrlapot.
Ez is minified annak érdekében, hogy a számítógép
értem, de nem szükségszerűen egy ember.
Szóval, miért a stilizáció ott megváltozott.
>> De nézzük most, hogy jobban a tervezés,
mert ha maradunk le ez az út túl hosszú,
a kód fog kap rendetlen és Messier.
Szóval összpontosítani ezeket a példákat itt.
Az utolsó ma.
>> Tehát itt van egy szuper egyszerű 1.0-s verzióját CS50 honlapján.
Csak linkeket is előadások és tanmenet,
és ez a, hogy a rendezetlen lista tag-- az UL tag, amit utoljára használt.
És ha sőt, ha nyit Oldal forrásának megtekintése,
fogod látni, hogy ez nagyon, nagyon egyszerű HTML.
És valójában, annak ellenére, hogy ez a PHP fájlok a motorháztető alatt,
ez még mindig csak a köpködés ki csak HTML most.
>> Tehát, ha rákattintok Előadások, látjuk ezt történik.
És ha rákattintok a héten nulla, látjuk ezt.
És ha rákattintok Szerda, látjuk ezt.
És ez nyilvánvalóan az volt a PDF A diák aznap.
Minden tettem a kapcsolat egy horgony tag erre az URL itt.
>> Tehát ez csak azt mondani, ez egy nagyon egyszerű változata CS50 honlapján.
Lássuk, hogyan is hajtják végre.
Ha bemegy a könyvtárba mvc0, fogunk látni néhány kép.
Az egyik egy README, így ha néhány ilyen túl gyors,
ha csak piszkálni körül kényelmesebb később.
És közlemény itt egy index.php fájlt.
Kiderült, hogy ha te magad, az ember,
nem adja meg a végleges nevét a URL, web szerver általában
következtetésre jut néhány alapértelmezett név az Ön számára.
Az index pont valami általában az alapértelmezett.
>> Szóval ezért egy perce amikor meglátogattam ezt az URL itt,
nincs fájl nevét, a fájl nem hosszabbítás, nincs idő az URL.
Csak tudta valahogy varázslatosan keresni index.php.
Ez csak egy ilyen egyezmény.
Nevezhetnénk semmit.
>> Tehát, ha most bemegy index.php, látni fogod
hogy indeed-- nézzük megszabadulni a hozzászólások
itt, mert ott tényleg semmi érdekes it--
ez csak a kemény kódolt HTML.
Szóval ez konzisztens, bár az én követelés
hogy akkor szétzúz HTML és PHP.
Nincs tényleges programozási logika itt.
>> És a többi fájl elég sok ugyanolyan érdektelen.
Ez csak kódolva egy hét itt az első héten és a hét egy m w,
A hétfő és szerda.
És aztán, ha én nyit hét nulla, észre, hogy szinte azonos.
>> És ez a fajta kulcs elvihető.
Figyeljük meg, hogy mennyire felesleges ez.
Ezek a fájlok alig változik, és mégis én húzta az egyik ilyen copy / paste feladatok
ahol vettem egy file-- feltehetően A hét zero-- másoltad
amikor egy hét körül jött, és csípett néhány értéket.
Meg kéne tudni hogy jobban, mint ezt.
>> Szóval menjünk vissza az MVC és bemegy egy verzió.
És észre Van egy néhány kép, mert amit
gyakori volt az összes ezeket a fájlokat csak egy pillanat ago-- ha megyek vissza 0-s verzió,
menjünk vissza a mutató, és csak postulate--
ha már megszabadulni a comments-- mely része az oldal
feltehetőleg minden egy fájlt?
Csak hívja ki.
Mely vonalak ismétlődnek Valószínűleg az összes ezeket az oldalakat?
Igen?
>> Diák: [hallható].
>> DAVID J. MALAN: 1-től 9.
Igen, teljesen.
1-től 9, kivéve talán 8 változik egy kicsit, mert CS50
válik előadások vagy hét nulla vagy valami.
De szinte azonos.
Szóval ez az egész csak fajta a vágólapra másolni.
És van egy pár más vonalakon tudok képzelni
Az, hogy a valószínűleg azonos át az összes fájlt.
>> Diák: 12. és 13..
DAVID J. MALAN: Igen.
Biztos, 12., 13., 14. és valószínűleg, csak azért, mert érdekes dolgokat
történik vonalakon 11 és a 10., tehát úgy tűnik.
Tehát nézzük meg 1-es verzióját, amely igyekszik javítani ezen.
Az 1-es verzió E MVC example-- fogunk elmagyarázni, hogy mit MVC úton a moment--
ha bemegyek index, ez a fajta úgy néz ki, egy kicsit zavaros most.
Ez nem olyan egyszerű, mint korábban.
>> De ha egyszer elkezd olvasd el figyelmesen, ez
elég egyértelmű, mit csinál.
Úgy látszik, az 1. vonalra és 8. sor váltotta
az összes cuccot csak identified-- bár csak a jó intézkedés,
Otthagytam a ULS ott csak abban az esetben bizonyos nap nem volt egy listát a dolgokat.
És így szükségessé olyan, mint font többek között a C. példányban és paszták
A tartalom hatékonyan Itt ebbe a fájlba.
>> Így header.php, ahogy Lehet következtetni a neve,
lesz az az oldal fejlécében.
Ez a fajta árva itt.
Ez csak a felső, de nincs még tartalomról.
>> És ha megnézi footer közben, amely a másik fájlban mentioned--
ez még kevésbé érdekes, de a lényeg, hogy a közös, hogy mindent.
Szóval ez a lábléc.
Ez a fejléc.
Ez a fájl, ami változik, így miért ne
próbáld ki, hogy figyelembe az egységesítés A következő két sort ide?
>> De ez lehet tiszta egy kicsit tovább.
Én megyek előre, és nyit két változat, ahol
látni fogjuk, hogy van egy új fájlt, helpers.php.
Meglátjuk, hogy mi van abban a pillanatban.
Menjünk index, mint a belépési pont, mint korábban.
>> És most én észre igénylő helpers.php, nem fejléc vagy a lábléc.
De segítők olyan, mint helpers.c és helpers.h származó PSET 2
vagy PSET 3 régen, amikor valóban nem megkeressem e PSET,
és ha kellett az összes kód válogatás és keres egy külön fájlban.
Ez az, mi folyik itt.
>> És most úgy néz ki, 3 sor egy kicsit más.
És ez csak egy sort.
Ahhoz, hogy ez még inkább tiszta, tudtam csak
nem, hogy ez stilárisan egységes minden mást csináltunk.
De ez nem igazán változik a funkcionalitás.
Ez csak egy sor igazi kódot.
>> Úgy tűnik, van egy függvény valahol úgynevezett render fejléc,
és ez az, ahol a dolgok kap elég erős.
Figyeljük meg, hogy a belső zárójelek amit más darab szintaxis?
Ez talán egy kicsit nehéz megmondani, de észre there's-- Teszek néhány fehér
hely.
Van szögletes zárójelbe.
>> És szögletes zárójelek láttunk egy kicsit ezelőtt keretében asszociatív tömbök,
amelyek ismét, mint hash táblák.
És, ha úgy gondolja, hogy most a C, a sorrendben érvek egy függvény
meg mindig ugyanaz.
Meg kell emlékezni, amit a rendelni ez-- x, y, z vagy z, y, X-
és van, hogy mindig az őket ugyanabban a sorrendben, vagy nézd őket
Ha elfelejtette.
>> De ez úgy tűnik, hogy egy ügyes módja elhaladó tetszőleges kulcs értéke
párok amelynek címe a neve Az érv ebben az esetben
és CS50 az értékét.
És az a tény, hogy én ezeket szögletes zárójelek
itt azt jelenti, hogy én is is át valami
mint egy hét értéke 1 vagy 0 vagy 2 vagy 3.
Így már paraméterezhető ez a funkció oly módon,
hogy az megtehesse a többszörös bemenet, de most már csak az egyetlen.
>> Ha most bemegy helpers.php, észre, mit csinál.
Ez egy kicsit Az új funkciók,
de most csak úgy A hit, hogy ez
a szintaxis, amellyel határozza meg a függvény a PHP.
Azt mondják, a szó szoros értelmében a funkciót.
Nem adja meg a visszatérés típusú, és ez konzisztens
a változó korábban már részletesen ahol nem igazán erősen írja.
>> Ez csak meghatározza meg, hogy alapértelmezés szerint ez
vesz egy asszociatív tömb érvként.
És tudod mit?
Ha a felhasználó nem adja át egy az, feltételezik az alapértelmezett érték.
>> Ez egy olyan funkció, hogy a C nem számunkra, ami szép és jó, mert most
adatokat, akkor is, ha nem adnak meg semmit,
lesz egy tömbben, de egy üres.
És mint félre, kivonat csak nem valami funky
ahol azon az összes funkció ebből asszociatív tömb, az összes dolog,
akkor szögletes zárójelbe tettük, és megteremti változó ki őket
hogy mi lehet végül férhetnek nekik footet.php és header.php.
Ez egy kicsit elvont, úgyhogy hadd mutassak ezt ki.
>> Az index.php, észre, hogy én vagyok halad egy kulcs-érték párt cím
amelynek értéke CS50.
Ha most nézd helpers.php, észre, hogy RenderHeader
a kitermelése, hogy az adatok, hogy én vagyok halad be, majd szükség header.php.
Mit tettem egyfajta szegény ember végrehajtása jelenleg az alábbiak.
>> Ha én nyit header.php, észre, hogy én már nem nehéz
kódolt szó CS50 ebben header fájlban.
Tettem ezt kétségkívül atrociously nevű függvény, HTML speciális karakterek,
ott.
De figyeld meg, mit tettem.
Megvan nyitva HTML.
Aztán nyílt fej és nyitott címet.
>> És akkor belül a cím nyitott és szoros címkék, van egy kis PHP kód.
És ez a szép, de a szintaxis, ami csak azt jelenti, echo ki.
Ez szó szerint azt jelenti this-- echo following--
de ez szexisebb írni.
Echo ki a címet hogy a már átadott.
>> De mit gondol HTML speciális karakter van szó,
különösen akkor, ha néhány korábbi HTML tapasztalata?
Mi karakterek is veszélyes átadni egy oldalra
hová dinamikusan generál A weboldal kódú, mint ez?
Hadd menjen a fájlt, változat két, és nézd meg, nem tudom ezt indukálja.
>> Verzió két ez.
És észre mindent rendben van, jól működik.
De tegyük fel megyek bele index.php és Én meg, hogy a cím az oldalam
nem CS50.
Ez nyílt konzol script éber hello, világ, közel egy idézet,
szoros zárójel, pontosvessző, nyitott zárójel, perjel script.
>> Script, mivel mi végül látni, a címke
amelyek segítségével használni a másik programozási nyelv úgynevezett
JavaScript belsejében egy weboldal.
És most észre a logika itt.
Itt van egy kulcs nevű címet.
Itt van ez az őrült hosszú érték most.
>> De ha elmegyek a segítők lap- vagy inkább, a fedőlap,
Hívom ezt a funkciót az, hogy a cím az első.
Tehát, ha most újra az oldalt, én látja ezt, ami úgy néz ki, nevetséges,
de ez biztos.
Csak úgy néz ki hülye.
>> De tegyük fel, ahelyett, Elfelejtettem ezt.
És jelölje meg a szavaimat, egy nem nulla szám Az akkor felejtsd el, hogy ezt
és kapsz néhány szorgalmas diák vagy barát jön
neked a CS50 vásár vagy névtelenül éjjel dugta körül a honlapon
és lényegében az injekciós kód tudtán kívül van a webhelyen
valahogy.
>> Mert ha én csak köpni ki címet itt és címe
there-- jól, ha a cím szó szerint úgy néz ki, mint ez, és a PHP
mint a nyelv, amely köpni ki más nyelveken szöveg,
ez szó szerint megy cserélni ezt címke,
persze, amit tettem máshol.
>> Tehát, ha most megy itt reload után visszavonják azokat a biztonsági mechanizmusokat,
most már helló világ itt.
Most, hogy már nem olyan nagy a foglalkozik, de lehet tenni valamit
egy kicsit rosszindulatú itt, mint ott
egyéb tags-- mint látni fogjuk, ha költünk több időt JavaScript-- hasonló helyen
dot href kap, idézet, idézet vége, HTTP business.com, de az ellenkezőjét, hogy
a minap.
És most lehet indukálni a web oldal, hogy ténylegesen megy azonnal
az ezen a weboldalon itt.
>> És valóban, nem akarom még menni business.com
mert nem akarom tudni, hogy mi az.
De ez is indít kód befecskendezését ezen az oldalon.
Tehát ez csak azt jelenti, hogy annak ellenére, mi bevezetése szuper korán bizonyos
Ezeknek a bonyolultabb szerkezetekhez, ez mind egy cél felé annak biztosítása,
hogy a kód nem használható ki.
>> Tehát most egy harmadik verziót itt.
Ez kezd egy kicsit cifrább.
Én nem igazán like-- Az anális oldalam
már-már kissé bosszús a tény, hogy én a nevezett funkció
RenderHeader és RenderFooter amely szinte azonos volt.
Így jutott eszembe, hogy miért nem Én paraméterezni ezeket a funkciókat
a csak egy úgynevezett render, már azt, hogy egy másik érv
mint a sablon nevét, a végső hogy render-- akár fejléc és lábléc?
És akkor adott esetben, ha azt akarom, át bizonyos kulcs érték párok
mint én a címet a header de nem a lábléc,
Tudtam csinálni.
>> És most, ha bemegyek helpers.php, ez egy kicsit bonyolultabb.
És én hullám kezem a részletek, de ez csak egy funkció.
Szóval ez egy lépés a jobb design.
>> Mi ezt egy lépéssel tovább.
Ha bemegy a negyedik változata ez, észre most
hogy csinálok valamit még több fajta rejtélyes.
És tudom, hogy ez a tétel felvenni egyszerre,
de mi csak kedves tisztítási dolgokat.
Most leteszem a segítők fájlt egy mappába nevű
includes-- csak egy önkényes nevét, ahol szeretnék, hogy a cucc
hogy szeretnék foglalják magukba, majd a többi ezt ugyanaz.
>> De ha nézek most gedit, észre, hogy kaptam megszabadulni
Az összes többi ilyen fájlokat, és én már át őket, például, a itt.
És akkor a sablonok, Én ezt is itt.
És ez az egész most felé egy lépést Az egy sokkal jobb tervezési minta.
És mi nagyon gyorsan fog elmozdulni
PHP alapértelmezett funkcionalitás, amely kezdtünk itt,
ahol csak szétzúz PHP, és a HTML és a CSS,
és csak köpje ki és megy a az utat.
Ez nem lesz nagyon karbantartható.
Csakúgy, mint a C, elkezdtük használni több fájlt, és több funkciót
és faktoring dolgok, hogy ki.
Majd ugyanezt itt.
És valójában, az ötödik és egyben utolsó verzió itt, én egy másik dolog.
Akár azt is használja dot dot, amely, megint, csak a szülő könyvtár.
Ahhoz, hogy még nagyobb biztonságot tudatos, mert ha megnézem a hallgató
itt az ötödik és egyben utolsó változat, értesítés hogy én egy könyvtárban van az úgynevezett
nyilvános, majd a ugyanazon a szinten, hogy úgy mondjam,
Van magában és sablonok majd, hogy a szöveges fájl readme.
>> És az ok, amit felépített érzés this-- és így sok web
házigazdák, különösen 5 $ hónap is, vagy $ 10 hónapos is,
Ha valaha is volt egy ilyen services--, amit oly sokan közülük nem
ők csak várják, hogy minden lerakó a fájlokat egy könyvtárba,
mint mi már az ez már az első példa.
>> De amint elkezd épület több kifinomult webhelyeket, csak tárolja
adatok törődsz és fájlok érdekel, valójában a dolgok szervezése
helyesen és nagyobb biztonságot tudat szem előtt tartva lehet
kezdjük, hogy megvédje ellen a barátok
hogy akkor sem vagy kívül ebbe az osztályba, aki
amint elkezd gyártás programok magad az interneten,
fognak kezdeni szedés rád és rájuk.
>> És így azt fogjuk megnézni végül is ez a kialakítás.
Ez csak egy kép hogy ábrázolja a következőket.
Megyünk, hogy minden a mi programozási logika egy vagy több fájlt,
és megyünk csak elkezd hívja azokat vezérlők.
Ez az, ahol az agy a Honlapunkon valójában.
Aztán megyünk kilátás, és nézetek
olyan egyszerű, mint csak külön files-- úgynevezett sablonok, gyakran.
Ők csak a esztétika oldalam,
mit akarok az oldalt nézni like-- a színek és az elrendezés
és az álláspontok az összes változó.
>> És akkor még érdekesebb hogy mi lesz végül eljut
az a modell, ami lesz, csak A szó, amit pofon más technológiák
hogy mi hozza a kép, mint a tényleges adatbázisok,
úgy, hogy ha akar segítségével menti az adatokat,
nem csak küldj egy e-mailt a Proctor vagy magadnak,
valóban tárolja egy adatbázisban egy másik nyelv úgynevezett SQL.
És mi hagyjuk itt ma és vedd fel ezt a szerdán
és vezessen adatbázisok majd.
>> [Zenelejátszó]