>> [Musika sa pag-play]
>> David J. MALAN: Lahat ng karapatan.
Ito ay CS50.
Ito ang simula ng linggo walong.
At maaari mong isipin na iniwanan namin off huling oras ng pagtingin sa isang bagong wika
nang sama-sama.
Sa katunayan, isang bagay na medyo magaan ang timbang at hindi ito kahit na
isang programming language.
Ito ay isang markup language na nagbibigay-daan sa amin talagang buuin at gumawa ng mga web page.
At kapag nag-ibang bagay kasabay ng this--
o sa lalong madaling panahon mo, kung hindi mo pa nagagawa.
Kami ay pagpunta sa gamitin Cascading Estilo Sheet, o CSS, na
ay isa pang uri ng wika sa mga katangian at mga halaga
na pupuntahan ipaalam sa amin gawin mga bagay na gusto palitan ang kulay
at baguhin ang posisyon at ang mga uri ng mga pag-aayos.
Ngunit ngayon at pasulong, simulan namin upang tumuon sa mas malakas na wika,
aktwal na mga wika programming tulad ng PHP.
>> Kaya PHP ay naging sa paligid para sa ilang oras.
At tulad ng makikita mo, ito Idinisenyo pangunahing
nang maaga para sa mga aktwal gamitin sa web development
at aktwal na pagbuo ng mga web page.
Kaya kung ano ang mga uri ng tampok ang isang wika
kailangan upang gawin ang web mga pahina ng mga dynamic na may ito?
>> Sa ibang salita, kung nais mo upang makabuo ng nilalaman dynamically-- tulad ng Facebook ni
Newsfeed, kung aling mga pagbabago patuloy na, o mga instant message na pop up mula sa oras
sa time-- tulad ng kung ano ang pangunahing piraso ng pag-andar
kailangan mo sa isang programming language na ipaalam sa iyo pabagu-bagong
mag-print ng bagong impormasyon sa screen?
>> MAG-AARAL: Code.
David J. MALAN: Code.
OK.
Isasaalang-alang namin iyon.
Mas tumpak na ang isang maliit na.
Ibig kong sabihin, maaari naming gawin ito kasama C, lantaran.
Ito ay isang sakit sa ulo.
But-- ay ang pangako?
>> MAG-AARAL: Oo.
Variable, marahil?
David J. MALAN: Variable.
OK, sigurado.
Variable na maaari tiyak na makakatulong sa amin out.
At kahit na isang bagay na mas simple.
Unang ginagamit namin ito sa programa ng unang araw
kapag aktwal na namin sinabi "hello mundo."
>> MAG-AARAL: Print.
>> David J. MALAN: I-print, i-right?
I-print, o printf sa mundo ng C. Kaya lahat ng oras na ito,
nagkaroon kami sa aming pagtatapon ng language-- C,
sa particular-- at kahit na Sa simula para sa na bagay na
Maaari makabuo ng mga string ng teksto.
>> Well, kung HTML, tulad ng nakita natin noong nakaraang linggo, ay lamang ng buong bungkos ng mga string ng teksto
kahit na may bukas na bracket at sarado bracket at ilang mga uri ng tula
at kadahilanan sa likod nito, kung sa gayon maaari naming talaga
simulan ang pagbuo ng mga web page alinman sa nang manu-mano sa pamamagitan ng pag-type ang mga ito sa gedit
o sa Microsoft Word, para na matter-- kailangan lang namin ng text editor.
>> O maaari naming magsulat ng code, sa iyong mungkahi
mas maaga, na ipaalam sa amin dynamic na bumuo ng HTML,
at iyon ang kami ay pagpunta upang simulan ang paggawa na may PHP
at sa huli kahit na may wika na tinatawag na JavaScript,
ay gumamit ng isang wika upang bumuo ng isa pa.
At sa katunayan, ito ay kung ano ang Facebook at marami, maraming iba pang mga site
gawin upang aktwal na dynamic na ipakita ang bagong impormasyon sa iyo.
>> Kaya sa magsimula sa this-- ng ipaalam misteryosong naghahanap ng linya, ngunit isa
na talagang kaakit-akit na makapangyarihan.
Kaya ngayon, na namin ang paggamit ng C, kung saan ay isang pinagsama-sama wika.
At lamang ng isang mabilis na recap-- isang pinagsama-sama wika ay kung ano ang katangian?
Malinaw na kailangan upang makatipon ito, ngunit kung ano ang ibig sabihin na?
Oo?
>> MAG-AARAL: Kailangan itong maging binuo sa machine code.
>> David J. MALAN: OK.
Kailangan itong tipunin sa machine code.
Kaya kumuha mo ang iyong source code, kung saan ay isang uri ng Ingles-tulad ng.
-Convert ka na sa isang bagay na mas mababa sa antas ng,
na kung saan ay tinatawag na sa huli bagay na code-- 0 at 1.
At ito ay mga 0 at 1 na isang CPU, tulad ng mga ginawa ng Intel,
talagang nauunawaan.
>> Ngayon, PHP at Python at Ruby at JavaScript at bunches ng iba pang mga
wika ay hindi pinagsama-sama wika ngunit bigyang-kahulugan wika,
na nangangahulugan lamang nagta-type ka sa kanila at pagkatapos ay hindi mo i-ang mga ito sa 0 at 1.
Sa halip kang magbigay lamang pagkatapos ay bilang -input programa ng ibang tao sa,
na tinatawag ng interpreter.
At na tao programa ay dinisenyo
upang maunawaan kung ano ang bawat isa at bawat simbolo sa Python o PHP
o Ruby o anumang bilang ng mga Nangangahulugan iba pang mga wika.
>> At sa gayon ang lahat ng kailangan namin ay isang bagay na katulad nito.
Kaya sa katunayan, pupunta ako sa pumunta sa ibabaw ng mga appliance
dito, lamang sa anumang lumang window, at nagpapaumanhin kami
pagpunta sa sige at bukas isang file na tinatawag, sabihin nating, kumusta.
Ngayon dati, maaaring na-save na ako ito kahit na may extension ng file,
ngunit ako pagpunta sa gawin isang bagay na mas simple dito.
Pupunta ako sa sige at simulan ang file na ito gamit ang misteryosong syntax.
Kaya "user, bin, env, para sa kapaligiran, php. "
>> Ito ay simpleng isang linya ng code na pagpunta sa sabihin sa aking mga operating system,
pumunta makita sa iyong lokal na kapaligiran kahit anong iyon ay,
kung saan man is-- PHP ang interpreter-- at sige at gamitin ang interpreter na
upang bigyang-kahulugan ang sumusunod na code.
Ngayon, ito ay uri ng isang mainit ang ulo tampok ng PHP.
Ngunit sa wikang ito, ang anumang mga oras sumulat ka ng code na PHP,
kailangan mong magkaroon ng isa sa mga pangit Mga tag PHP demarcating simula
ng iyong code-- <? php.
>> Ngunit sa ibaba dito, maaari ko na ngayong gawin ang isang bagay medyo simple, tulad ng printf kumusta kuwit
mundo backslash n malapit quote, isara panaklong.
At pagkatapos ay para lamang sa mga mabuting Ang panukala, pupuntahan ko
upang sige at malapit aking php tag sa ibabaw dito
upang ang hitsura lahat mabuti medyo naka-print na.
>> At sa lalong madaling i-click ang I-save ang ko, gedit ay ang tunay na smart sapat
tumingin sa mga na napaka-unang linya at Napag-alaman, oh, sumusulat ka ng code na PHP.
Hayaan akong syntax highlight ito sa mga kulay
dito nang sa gayon ay nakatayo ito out ng kaunti pa.
Ngunit ngayon ako pagpunta sa pumunta pababa sa aking terminal na window.
Magtatagal ako mag-zoom in.
>> Ang programang ito ay tinawag na "hello," kaya ako pagpunta sa gawin tuldok slash kumusta,
ngunit hindi pinahintulutan.
At malakas na palo.
Talaga namin narinig ng na bagay ng ilang mga linggo na nakalipas
sa konteksto ng Shellshock, isa sa mga bug.
>> Ngunit hindi pinahintulutan nasaksihan namin bago, marahil sa ibang konteksto.
Sinuman isipin ang kung paano maaari mong ayusin ang isang bagay
kung saan ang pahintulot ay tinanggihan tulad nito?
Ano ang utos, ng hindi bababa?
>> MAG-AARAL: Chmod.
David J. MALAN: Oo, chmod, para sa pagbabago ng mode ng isang file.
At makakakuha ka ng lahat ng higit na ginagamit upang ito sa susunod na linggo sa isang kasunod na problema
-set.
Ngunit sa ngayon, Pupunta ako upang baguhin ang mode na hindi upang mabasa,
ngunit upang mabigyan ang lahat executeability pribilehiyo, ang kakayahang
upang patakbuhin ang file na ito.
At ako pagpunta sa italaga na sa file kumusta.
>> Kung ngayon gagawin ko tuldok slash kumusta magpasok, mo makita, sa katunayan, ang aking mga programa, kumusta mundo.
At kung ano ang hakbang na ginawa ko malinaw laktawan nang sama-sama?
Kino-compile.
Kaya lang tumakbo ako sa programang ito medyo simple.
>> At ito ay lumiliko out maaari mong gawin ito gamit ang Marami nakapagpapaalaala ng C. ng syntax
Hayaan akong pumunta sa code ngayon, na kung saan ko bang ilagay sa aking direktoryo vhost
dito, para sa tunay na mga dahilan kami ay bumalik sa.
At ako pagpunta sa pumunta sa, sabihin nating, mga kondisyon 1.
>> At makikita mo dito, una at nangunguna sa lahat, ang maramihang mga komento.
Ngunit ito ay talagang isang muling paglikha sa PHP
ng isang programa ginawa namin sa linggo isa na tinatawag na mga kondisyon 1.c
kung saan ang mga layunin sa buhay ng programang ito
ay tila upang hilingin ang user para sa isang integer
at pagkatapos ay gawin ang ilang mga malambot pag-aaral sa kung saan ito
sabihin sa iyo kung ito ay positibo o negatibong o katumbas ng zero.
At dalhin ko ito up lamang dahil, maliban sa siguro isang maliit na detalye,
ito ay hindi mapagkilala ang pagkakaiba sa ngayon mula sa C.
>> Ano ang isang katangian dito na siguro jumps out
sa iyo bilang isang maliit na naiiba?
Siguro ang dalawang bagay.
Oo?
>> MAG-AARAL: sign n Dollar?
>> David J. MALAN: Oo.
Kaya dollar sign n ay naroroon.
At mga palatandaan ng dolyar, bilang ipapakita namin makita, ay pumunta sa
upang maging isang remedyo sa simula ng anumang variable sa PHP.
Ito ay parehong mabuti at bad-- magandang sa na ito'y isang uri ng halata kung ano ang
isang variable, masamang sa na ito isa pang bagay na mag-type.
At mayroong isang iba pang bagay na mayroon kaming hindi pa
nakita, ng hindi bababa sa pamamagitan ng ito sa spelling. oo?
>> MAG-AARAL: Readline.
>> David J. MALAN: Readline.
Readline hindi namin nakita, per se, sa C, kahit na may umiiral ng isang bagay
pareho, ngunit gagamitin namin ang getstring, at ito ay kamukhang-mukha nito.
Kaya kung pumunta ako sa ito direktoryo, na kung saan ang mangyayari sa maging,
bilang Ipapaliwanag ko kung sa ilang sandali sa aking vhost direktoryo at sa aking pinagmulan Isang direktoryo,
at pumunta ako magpatuloy at gawin tuldok slash conditions-- whoops-- tuldok slash
kondisyon 1, makikita mo, muli, ang parehong issue-- pahintulot tinanggihan.
>> Kaya hayaan mo akong mag-zoom in at gawin chmod ng plus x sa mga kondisyon, mga kondisyon na tuldok slash.
Gusto ko ng isang integer, mangyaring, 50.
At maaari naming i-play ito lahat ng araw mahaba ang laro.
Ito ay pagpunta sa kumilos nang eksakto tulad ng ginawa nito sa linggo isa.
>> OK kaya hindi lahat na naiiba, maliban hindi lamang na bahagyang bit ng syntax,
ngunit sa tuktok, muli ako Nagkaroon linyang ito na
pinapayagan sa akin upang lumikha ng isang bagay na mukhang isang programa na tinatawag na C halo,
na tinatawag na mga kundisyon 1.
Pero hindi 0 mga at Direktang ako e-execute.
Sa halip ito ay tumatakbo na ito interpreter ang pangalan
ang mangyayari sa maging kapareho ng wika.
Ang programa ay tinatawag na PHP, at ang aking code sa ibaba linya isa ay pumasa sa mga ito.
>> Maaari naming gawin ang isa pang medyo simple Halimbawa nakapagpapaalaala ng isang bagay
ginawa namin linggo ang nakalipas.
Muli, ito ay isang uri ng arbitrary na tipak ng code
na tila ang kung ano kapag tumakbo mo ito?
Ano ang ito pagpunta sa i-print, siguro?
>> Kaya simula sa 16 linya, ito ay pagpunta sa sabihin x na ngayon ang 2, malamang.
% D ay kapareho ng $ i para sa printf.
Kaya pagkatapos ito cubing, tuldok, tuldok, tuldok, sa 17 na linya.
At pagkatapos ay line 18 nakita tumawag sa isang function na nakakubo.
At kung saan tinukoy ay nakakubo?
>> Well, mukhang sa 25 linya, nang sa gayon ay hindi lahat na naiiba.
Nakakuha ako ng ilang mga komento sa itaas ito, ngunit para sa pinaka-bahagi,
ito ay isang medyo simple pag-port o conversion
mula sa C programa sa bersyon ng PHP.
Ngunit may mga ngayon ng ilang pagkakaiba na siguro ay dapat tumalon out.
Ano pa ang ibang tungkol sa kung paano mo Maaaring isulat ang parehong programa sa C?
>> MAG-AARAL: [hindi marinig].
>> David J. MALAN: Mayroong walang prototype up tuktok.
Kaya PHP-- at lantaran, isang maraming modernong languages--
Maraming mas matalino at mas kapaki-pakinabang sa C compiler sa na
Maaaring ilagay ang pag-andar dito, maaari kang maglagay ng isang function down na dito,
at ang interpreter ay pagpunta gawin mo ang pabor ng pagbabasa
ang buong file bago ito ay nagpasiya na ang ilang mga function na ay hindi umiiral.
Kaya maganda pagpapabuti taon sa ibang pagkakataon.
Ngunit mayroon ding isang bagay iba ibang o wala dito.
Oo?
>> MAG-AARAL: [hindi marinig].
David J. MALAN: Hindi namin kailangang Ipinahahayag ng mga uri ng variable,
kaya gagamitin namin makita bago mahaba na mayroong iba't ibang mga uri sa PHP,
ngunit hindi mo na kailangan upang tukuyin ang mga ito, na rin ay parehong mabuti at masama.
At mayroong isa pang nawawalang bagay.
>> MAG-AARAL: Walang mga aklatan.
>> David J. MALAN: Walang mga aklatan.
OK, kaya na mabait.
Kumuha kami ng maraming higit pa mula sa kahon.
Kaya talagang ng maraming higit pa bagay kaysa sa naisip ko ay naiiba.
Paano tungkol sa paraan sa likod?
Ano iyon?
Sabihin ito sa sandaling higit pa?
>> MAG-AARAL: pointer.
>> David J. MALAN: Walang mga payo.
OK, hindi bababa sa halimbawang ito, hindi.
Iyon ang patas.
Kaya may mga hindi na pointer sa PHP aktwal na sa pangkalahatan.
May isang bagay na tinatawag na mga sanggunian, ngunit hindi namin gastusin ng masyadong maraming oras doon.
At ano pa?
>> MAG-AARAL: Main.
David J. MALAN: Main.
Kaya ito ay ang malaking problema Ako ay nag-iisip ng.
Pansinin walang pangunahing entry point.
Simulan mo lamang ang pagsusulat ng iyong code.
At ito ay ang tunay magiging kapaki-pakinabang
kapag lumipat kami sa ilang sandali lamang sa aktwal na paggamit
ang parehong wika para sa web-based programming, na kung saan namin
ayaw na magkaroon ng entry point lang.
Maaaring gusto naming magkaroon ng isang bungkos ng URL, isang bungkos ng iba't ibang mga file
lahat ng pagkuha sa input ng user at gumagawa ng output.
>> Ngunit dito ay ang napaka-disheartening Halimbawa na ipinangako ko noong huli,
lalo sa folder na ito dito, mga maling spelling.
Kaya sa ang file na ito speller, na namin Hindi gastusin ng masyadong maraming panahon sa, mayroong
mahalagang isang porting-- P-O-R-T. Ito ay lamang ang salitang ibinigay kapag, halimbawa,
-convert mo mula sa isang wika sa isa pang manu-manong karaniwang.
>> Ito ay isang pag-port ng PC bersyon ng speller mula PSET 5.
At tunay ko sinubukang i-convert ito linya sa pamamagitan ng linya nang mas malapit hangga't maaari ko.
Kaya kung nais mo ang ganitong uri ng bagay, ito talaga ay nagkakahalaga ng sa isang punto
kumukuha ng mga ito sa parehong up bahagi ng gilid at makita kung ano ang parehong
at kung ano ang kakaiba.
Ngunit ang mga ito ay medyo nagsulsi katulad.
Kung maalala mo kung ano ang speller kahit na mukhang,
kahit na hindi mo ginawa Mayroon upang baguhin ang file na ito,
ito ay medyo katulad structurally na may ilang lamang
ng mga pagbabago dito at doon.
>> Kaya ito ay lamang upang sabihin na ito ay medyo prangka i-convert ang speller
mula sa C upang PHP.
Ngunit sa diksyunaryo, mayroong isang bagay kahit na mas nakakahimok.
Hayaan akong magpatuloy at lumikha ang aking sariling dictionary.php file.
Kaya bahagyang naiiba sa na Makikita kami tatawag ito .php sa halip na .c.
Dahil ito ay isang file na PHP, ako do-- bahagyang annoyingly-- mayroon
upang simulan ang file gamit isang php tag tulad na.
At ako pagpunta sa sige at tukuyin ang ilang mga pag-andar.
Ang function na tinatawag na tseke, na kung saan ay pagpunta sa tumagal ng sa isang salita tulad ng dati.
Ngunit argument na ito pagpunta sa magkaroon ng isang dolyar
-sign dahil kami ay, muli, gamit ang PHP.
Ang isa pang pag-andar mula sa dictionary.c ay-load
at ito kinuha sa pangalan ng isang diksyunaryo, kaya magagawa ko na ang pag-andar nang humayo.
>> Ang isa pang isa sa dictionary.c ay kung ano?
Sukat noon ay isa sa mga nicest mga bago, sa hindi bababa sa kung iningatan ang ilang mga variable sa paligid.
kaya laki lamang ay may upang bumalik sa isang variable.
At pagkatapos ay nagkaroon tanggalin sa pagkakalagay.
>> Kaya mayroong mga apat na function sa problema set 5
na iyong kailangan upang ipatupad sa ang ilang mga istraktura ng data o istruktura.
Kaya ko ipinangako na sa PHP, maaari naming ipinahahayag
isang hash talahanayan, halimbawa, lahat na mas madali.
Sa katunayan, kung gusto ko ng hash table, Lamang ako ng pagpunta sa pumunta tulad na
at mayroong aking hash talahanayan.
At iyon ang tala, disheartening, na huminto kami sa huling pagkakataon.
At alam mo kung ano, kung nais ko isang variable para sa laki, na rin,
ang isang ito ay hindi lahat na iba mula sa C,
ngunit Pupunta ako sa magpatuloy at gawin iyon.
At mapansin ang walang uri ng data.
At Kukunin ko bumalik sa ibang pagkakataon at aktwal na magdagdag ng ilang mga komento dito.
Ngunit kung ano ang tungkol sa pag-load?
>> Kung diksyunaryo dollar sign ay ang pangalan ng aking mga file
at aktwal ko nais na i-load mga salita sa talahanayan na ito ngayon,
Maaari ko talagang gawin medyo simple ng isang bagay.
One-- at ito ay minorly annoying-- sa PHP,
kailangan mong tukuyin ang loob ng isang function kung
Nais na i-access ang ilang mga global variable na tinukoy sa labas.
>> Ngunit hindi iyon lalo na kagiliw-giliw na ngayon.
Ano ang mas kawili-wiling ay na ito para sa bawat magtayo na nabanggit ko huling beses.
At ito ay lumiliko out na may isang function na PHP na tinatawag na file na layunin sa buhay
ay upang buksan ang isang file at basahin sa ang lahat ng mga linya nito sa isang array
at ipasa ang mga ito pabalik sa.
>> Alin ang sasabihin ang maaari kong gawin diksyunaryo kaya na ngayon mabisa kapag tumawag ako ng file,
ito ay pagpunta sa ipasa ako pabalik isang hanay ng mga salita mula sa mga file.
Hindi lahat ng magandang iyon.
Nangyayari ito pa rin upang maging isang linya ng mga salita, isang bagay na sa guhit.
Ngunit maaari kong magpatuloy at umulit sa ibabaw ng bawat isa sa mga salitang ito gamit ang
na syntax ng nakita natin sa madaling sabi huling beses.
At makikita mo ito nang higit pa sa paparating na PSET.
>> Ngunit ngayon mayroon akong isang loop iterating sa ibabaw ng bawat salita sa diksyunaryo.
At sa bawat pag-ulit, isipin ang ako pagtawag sa kasalukuyang salitang "salita."
At lahat ng ito ay pagpunta sa gawin upang maglagay ng salita sa diksyunaryo ay
magiging salita hula "totoo."
Iyon ang aking insert function.
Iyon ang aking pag-andar ng pag-load para sa aking diksiyunaryo.
Ngayon ito ay isang bit ng isang impostor dahil, alam mo kung ano, may aktwal
backslash n ni sa dulo ng mga salita na dapat marahil ko mapupuksa ang,
ngunit hindi iyon problema dahil PHP ay isang function na tinatawag na tumaga na literal
chops-off sa isang character sa dulo.
Kaya walang problema doon.
Nawala namin magpatuloy at aktwal pinaikling na lang ito.
At ngayon marahil ko dapat subaybayan ng laki, kaya sabihin ng hindi bababa sa gawin this--
laki ++.
Ang maaari kong gawin na tulad ng dati.
At pagkatapos na ito ay marahil pagpunta sa gagana lamang fine, kaya na nagbabalik ng tunay.
Tapos na.
PSET 5.
>> [Tawa]
>> David J. MALAN: OK.
Kami ay pagpunta sa gawin muli na sa mga susunod na PSET, masyadong.
Kaya kung ano ang tungkol sa laki?
Well, ang isang ito sana ay tungkol sa bilang iyong inaasahan huling oras,
bagaman kailangan kong gawin ito ugok pandaigdigang bagay.
Ito ay lamang ng isang artepakto mula sa disenyo ng wika.
>> Ngunit tseke ay isang maliit na mas kawili-wiling.
Kaya kung ang pumasa ko sa dolyar -sign salita, ang aking unang
nais magkaroon ng access sa variable talahanayan na global.
At ngayon kapag gusto kong suriin kung ang isang salita ay doon,
Maaari ko lamang sabihin kung ito ay tunay na ang sumusunod ay nakatakda sa talahanayan,
pagkatapos ay magpatuloy at return true; tao, return false.
Tapos na.
Ang iba pang kalahati ng PSET 5.
>> Ang lahat ng mga karapatan, sa gayon muli, ako pag-cut ng ilang mga sulok.
Sa pagkamakatarungan, dapat ko marahil gumastos ng ilang higit pang mga segundo
sa pagpapatupad na ito.
At hindi ko marahil ay dapat aasarin lahat ng mga oras na inilagay mo sa PSET kaya magkano.
Kaya strtolower ay isang function.
Isang bagay na katulad existentialist sa C, hindi bababa sa para sa mga character,
pero nakakuha PHP ng isang buong string na bersyon.
>> Iyon ang nangyayari upang pilitin ang lahat sa lowercase, na ang ilan sa iyo
maaaring nagawa sa canonicalize kung ano ikaw ay paglagay sa iyong diksyunaryo.
At ngayon maaari mong gawin ito sa C, masyadong.
Ito ay may kinalaman sa PHP.
>> Ngunit anumang oras mayroon kang isang Boolean kondisyon,
tulad ng isang bagay sa linya 10 doon, na lamang
pagpunta upang suriin sa true o false, at ang iyong mga tao kung malinaw
ay bumabalik na tama o mali, maaari ko lamang talagang gawin ito sexier
at gawin lamang ng isang bagay na katulad nito.
Kaya na mayroong aking function na tseke.
I-right, kung ang Boolean Ibinabalik ng isang true o false ng,
hayaan bumalik lang natin ito kaagad.
>> At mayroong ilang iba pang mga pag-aayos Maaari kong gawin dito at doon.
Load-- mag-ibis maglapag, sa pamamagitan ng mga paraan, na tapos na.
Walang kinalaman doon.
Dahil ang lahat ng memory sa PHP at marami pang ibang mga wika
ay talagang pinamamahalaang para sa iyo.
Kaya samantalang sa C, bilang ang iyong natutunan painfully,
anumang bagay na malloc o calloc o realloc, mayroon kang upang magbakante ng iyong sarili.
Kahit ano fopen mo, kailangan mong fclose, upang ang mga mapagkukunan sa huli napalaya
at mga tool tulad ng Valgrind hindi mapansin at huwag magreklamo,
kung saan ay isang magandang bagay upang tumakbo sa mga ito.
>> Ngunit tiyak, mayroong dapat ilang catch, tama?
Kung hindi man, uri ng namin nasayang ang maramihang mga linggo.
Kaya mayroong anumang bilang ng mga kadahilanan bakit namin uri ng tumagal ito tilapon,
ngunit mayroong isang kalakalan-off.
I-right, ito ay base sa paksa.
>> Kaya kung ano ang maaari isang kalakalan-off dito sa paglipat, mula sa C upang PHP?
Pakiramdam ng tulad ng lahat ng mananalo sa ngayon bukod sa ng kaunting pagkapangit dito o doon.
Oo.
Ano iyon?
>> MAG-AARAL: [hindi marinig] memory.
David J. MALAN: Bilis.
OK.
Well, ang aking bilis ay medyo mabilis.
Mag-right?
Ngunit bilis ng pagpapatupad ng programa?
OK, kaya na ang isang patas na punto.
>> Kaya tulad ng ito nangyari, ako nang maaga cued up parehong aking try solusyon, ang isang
Nagkaroon na ako sa malaking board ay isang solusyon try-based,
at mayroon ko na sa direktoryong ito dito.
Kaya ako sa ilang sandali, ang maaari kong magpatuloy at patakbuhin ito sa King James Bibliya,
ng pagpindot sa Enter.
At ito ay sana ay tama pagpapatupad sa dulo,
ay nagbibigay sa akin oras sa kabuuang ng 0.38 segundo para sa
isa medyo arbitrary na halimbawa.
>> At kung pumunta ako ngayon sa na ito pangalawang terminal na window
dito kung saan unang ko binuksan gedit, sabihin sa akin pumunta sa code-- ngayon kung saan, muli,
ay nasa direktoryong ito here-- at ipaalam sa akin sige at patakbuhin ang speller.
Kaya maging malinaw lamang, ito ay ang bersyon ng PHP.
Ako na nagpapakita lamang sa tuktok ng ito dito.
>> Kaya kung gagawin ko speller ng tilda CS50 PSET 5 mga teksto, King James, ipasok.
Ito ay mas mabilis pa rin kaysa sa pagsusulat ito sa C, ngunit ang kabuuang oras
ay, paunawa, 0.93, samantalang ang aking Pagpapatupad batay sa C ay 0.38.
Kaya ito ay isang non-walang halaga pagkakaiba.
>> At ito ay isa lamang sa isang file.
Kung kayo ay upang patakbuhin ang dalawang mga programa kumpara sa malaking board
at magkaroon ng buong bungkos ng input subok, ito ay tiyak na magdagdag ng hanggang.
At kung nagkaroon kami kahit mas malaking hanay ng data, ito, masyadong, ay magdagdag ng hanggang ang lahat ng higit pa.
Kaya oo, pagbabayad ng ilang mga presyo ng bilis nga ang kaso.
Ano pa?
Oo?
>> MAG-AARAL: Halaga ng paggamit RAM.
>> David J. MALAN: Halaga ng paggamit RAM.
Kaya ako ay hindi magbibigay sa isang segundo naisip kapag sumusulat ito PHP
bersyon bilang sa kung magkano memory ako ay ginagamit.
Ganap na ako deferring na sa PHP ang sarili nito at kung sinuman ang nagsulat programang iyon.
At na maaaring OK, ngunit kung ko talagang talaga
nagmamalasakit sa lamira ng maraming pagganap ang aking programa o sa labas ng aking website
o sa labas ng anumang tool Ako sa pagbuo, siguro
PHP, sa katunayan, ay hindi ang tamang wika.
>> At sa katunayan, iyon ay kung bakit, para sa Halimbawa, maraming mga web servers--
ang aktwal na mga programa na maghatid ng hanggang web content--
ay hindi nakasulat sa PHP o sa Python o Ruby.
Ang mga ito ay nakasulat, tulad ng makikita mo na ngayon ang gagawin sa PSEt 6,
sa C upang maaari mong kurutin bawat bit ng pagganap out ng ito
at talagang mag-ehersisyo fine-butil na kontrol sa kung ano ang
nangyayari sa ilalim ng hood at hindi tumagal lang ito
para mabigyan ng ilang mga mas mataas na istraktura ng data na antas.
>> Isaalang-alang, pagkatapos ang lahat, kahit sino sa PHP ipinatupad
na kuru-kuro ng isang hash table-- ito ay talagang higit pa
maayos na tinatawag na nag-uugnay array-- ginagawa niya o may siya anumang ideya sa kung anong uri
ng input mo ay magiging paglalagay sa kaayusan?
Kaya malinaw naman hindi, tama?
Ito ay isang pangkaraniwang tool sa toolkit na
ibinigay sa sinuman na nagnanais gamitin ito, at kaya tiyak ito
Hindi maaaring i-optimize sa huli para sa kung ano mismo ang gusto mong gawin.
>> Kaya kalakalan-offs-- oras pag-unlad maaari -iba, ay maaaring maiba pagganap,
pagiging kumplikado o paggamit ng memory ay maaaring maiba.
At kaya kung ano ang makikita mo lalong ay mayroong
pagpunta sa iba mga tool para sa kalakalan.
At sa katunayan para sa isang super karamihan ng huling mga proyekto ng mga tao sa klase na ito,
Naniniwala ito o hindi, C ay hindi papunta sa maging ang mga tamang wika upang gamitin.
>> At sa katunayan, ang isa sa mga takeaways sa huli para sa anumang klase tulad nito
ay upang makakuha ng mong maisip, na rin, ano ang dapat hilahin off mo ang
shelf kung kailan mo nais upang malutas ang ilang mga problema.
At sa katunayan, makikita namin i-cross ang bridge higit pang bilang tinitingnan namin ang higit pang mga wika
kahit na lampas sa ngayon.
>> Kaya ang paglipat ipaalam sa ngayon upang marahil ng isang mas pamilyar na konteksto
para sa paggamit ng wika tulad ng PHP.
Ito ay medyo karaniwang upang gamitin sa sa command line, pagsusulat ng script
tulad ng ginawa ko, ngunit magkano, magkano ang mas karaniwang.
At ito ay inilaan upang gamitin sa sa anyo ng mga file na karaniwang magtapos
sa .php-- ngunit na hindi isang prerequisite--
na kanilang sarili bumuo ng mga web content.
>> Kaya ipaalam sa akin sige at buksan ang ilang mga mga halimbawa ko ihanda nang maaga.
At ito ay aktwal na uri ng tunay mga kuwento sa na ang isa sa mga unang bagay
Kailanman ginawa ko sa aking sarili pagkatapos Tinatapos CS50 at siguro, sa palagay ko,
CS51 taon na ang nakaraan ay aking kasama sa kuwarto at ako ay pagtulong sa
upang patakbuhin ang presman nasa loob ng lunsod programa sa sports, kung saan, sa panahon,
ay presman pagrehistro para sa iba't ibang sports sa pamamagitan ng pagpuno ng isang piraso ng papel,
dahil ito ay tinawag, naglalakad sa kabuuan ng bakuran sa Wigglesworth,
at pag-drop ito sa ilang pinto drop Proctor ni.
At pagkatapos siya ay pupunta sa pamamagitan ng ang mga ito at pagkatapos ay talagang sa amin nang manu-mano-email
tayo ay nakarehistro para sa ilang mga isport.
>> Kaya malinaw, ng pagkakataon para sa pagpapabuti.
Mga araw na ito, maaari mong i upang lamang Google Forms, ngunit pabalik sa araw,
namin ay may upang aktwal na maabot for-- ito Hindi kahit na mahaba ago-- maabot
para sa isang programming wika na hindi PHP.
Sa oras, ito ay isang bagay na tinatawag Perl,
kung saan ay naging out sa kalakaran dahil.
Ngunit ang ideya ay pareho.
>> At tunay kong umupo pababa upang subukan upang pupunta port bersyon Perl sa PHP,
ngunit sa buong disclaimer, ay hindi magbibigay sa anumang naisip na ang Estetika pa lamang.
Kaya dito ay isang web page.
Ito ay isang file.
Kung mag-zoom in ako, tila nito tinatawag na froshim0.php
dahil lang sa ito ang aming unang Halimbawa sa seryeng ito.
At mapansin na ito ay kung ano ang lumilitaw upang maging isang napaka-pangit na form ng HTML,
ngunit isang form ay kawili-wiling dahil pinapayagan nito
sa akin upang magbigay ng input ng user sa browser.
>> Ngayon huling beses kapag nagkaroon kami ng form na ito, upang kanino ka nagsumite namin ang aming mga parameter ng query,
ang parameter na bilang ito ay tinatawag na pila?
Kaya sa Google, tama?
Lubos naming punted sa ideya ng paggawa ng anumang bagay na may input na iyon.
>> Ngunit ngayon, sisimulan namin ang paggawa output.
At ang pag-uugali Pupunta ako upang makita ang dito sa simula ay medyo hindi mahalaga.
David, magpapadala ako suriin off kasarian dito, sabihin Matthews dito.
Hindi ko ay kapitan.
Pupunta ako sa i-click ang Magrehistro.
At mapansin na ang URL ay Binago upang magparehistro-0.php,
at pagkatapos ay mayroong ito pangit teksto dito.
Nagbigay ako ng walang pag-iisip na ang pag-format ng mga ito.
>> Ngunit kung ano ang kawili-wiling ay na tatlong mga halaga ay tila na ipinasa sa.
Ito ay isang uri ng PHP ni katumbas ng printf--
ipapakita namin makita kung ano talaga ang tawag dito sa isang bit-- na lamang ng mga Kopya out
kung ano ang pumasa sa mga ito.
Kaya ito ay nagmumungkahi na ang paraan na Nagkaroon ng hindi bababa sa tatlong mga patlang na ito,
at nakita mo sa akin type ang mga ito sa.
Ang isa ay ang aking pangalan, isa ay kasarian, isa ay dormitoryo.
At kapitan ay hindi kahit maipadadala sa ang server dahil hindi ako nag suriin ito.
>> Kaya ito ay upang sabihin sa malas, kapag isinumite mo ang mga bagay sa web,
hindi lamang ang URL kung minsan change-- minsan ito ay hindi.
Sa katunayan, binago ang pangalan ng file, ngunit kung ano ay absent mula sa URL
na ginawa namin makita ang huling beses sa Google.
Oo?
>> MAG-AARAL: Walang string ng query
>> David J. MALAN: Walang query string.
Walang tandang pananong ng isang bagay.
Walang tandang pananong q ay katumbas ng pusa, tulad ng ginawa namin huling beses.
At mayroong tiyak na walang Pangalan ng tandang pananong ay katumbas ng
David o katumbas ng dorm Matthews, kaya kung saan ang lahat ng pagpunta ay?
>> Well, hayaan mo akong bumalik sa gedit dito at buksan ang unang ng mga file
sa aking vhost, lokal na host, pampublikong direktoryo dito at pumunta sa froshim0.
Kaya ito ay lumiliko out na halos lahat ng mga pahinang ito lamang ang HTML.
At ito ay maaaring maging pamilyar sa iyo, ngunit ito sa lalong madaling panahon ay magiging mas kaya may PSET 6
at PSET 7 at 8 PSET.
Ngunit ito lamang ang isang pahina ng HTML.
>> At ang mga kagiliw-giliw na mga bagay-bagay Mukhang sa paglipas dito.
Ang form na tag kung saan ang aksyon na katangian May halaga ng rehistro 0.
Iyon ang dahilan kung bakit kapag isinumite ko ito, ito ang papunta sa file na iyon.
Ngunit pamamaraan ay naiiba post today--.
Kaya ito ay lumiliko out doon ay hindi bababa sa dalawang mga pamamaraan sa web ginagamit
upang magpadala ng impormasyon mula sa browser sa server.
Gamitin naglalagay ito sa URL.
Mag-post ng naglalagay ito sa ibang lugar.
At kung kailan at kung bakit maaari kang talagang gusto ang isang website
gamitin ang post pagkatapos ay sa halip ng makuha, intuitively lamang?
Ang anumang website.
Anong uri ng data ay dapat na maipasa lamang sa pamamagitan ng hinuha na ngayon sa pamamagitan ng post bilang kabaligtaran
upang makakuha ng, kung nasaksihan namin ang dalawang mga pagkakaiba?
MAG-AARAL: [hindi marinig] secure.
David J. MALAN: Kung gusto mong isang bagay na maging ligtas.
Kaya maaaring nagta-type ka ng isang password sa isang website, ang isang credit card
sa isang website gagawin uri ng mga suboptimal
kung ilalagay ang mga browser na halaga sa loob ng URL.
Bakit?
Ang makikita mo ito, na hindi mukhang tulad ng isang malaking deal,
ngunit logro ikaw ay medyo madalas maglakad layo mula sa iyong computer o paggamit ng computer
labs, at sa gayon ang isang tao tao o kahit na isang kasama sa kuwarto
ay madaling lakarin up at tingnan na pribadong impormasyon.
Kapag nagpadala ka ng isang email sa pamamagitan ng web, malamang na
ayaw na nagtatapos data na hanggang sa URL pati na rin.
At kaya mayroong anumang bilang ng mga kadahilanan kung bakit maaari naming nais na ilagay ito dito.
At photos-- karapatan, hindi ko kahit na medyo isipin kung paano mo kumuha ng graphic,
tulad ng isang JPEG, at ilagay ito sa isang URL.
Maaari mong gawin ito.
May mga paraan ng encoding ito, ngunit lamang hindi tuwiran tulad na.
>> Kaya magrehistro 0 ay talagang napaka-underwhelming.
Ang lahat ng mga sinasabi nito ay literal na ito.
Ito Pini-print out sa loob ng ilang HTML tag ang mga sumusunod.
Nakakuha ako ng isang tag PHP dito nested sa loob ng isang paunang tag.
"Pre" ay nangangahulugan lamang pre-formatted na teksto, mono-espasyo, tulad ng isang makinilya.
>> Printr ay isang recursive function na pag-print.
At pagkatapos ay may ito kagiliw-giliw na bagay dito.
At kami ay bumalik sa ito dahil mayroong iba pa,
ngunit dollar sign underscore post ay lilitaw upang maging
isang variable sa PHP kung saan anumang bagay magpadala sa iyo mula sa browser sa server
ay makakakuha ng naka-imbak para sa iyo.
At kami makita kung paano makakuha ng sa na impormasyon bago ang haba.
>> Ngunit una, sabihin bumalik sa isang bahagyang naiiba halimbawa.
Pupunta sa register-- o sa halip, froshims1.php,
na kamukha ng kaunti naiiba.
Kinuha ko ang kaunti pa pagsusumikap sa pag-format,
kahit na ito ay pa rin medyo mainit ang ulo.
Ngunit ako pagpunta sa sige at i-type sa "David" ngayon.
Lalake.
Susubukan naming suriin ang "kapitan" oras na ito.
Gagawin namin ang Matthews.
At magparehistro.
>> At ngayon sinasabi nito, Hm, hindi talaga.
Ang lahat ng mga karapatan, kaya kung ano magrehistro 1?
Hayaan akong pumunta sa open rehistro 1 and-- Hm.
Ang lahat ng mga karapatan, kaya ito ay kawili-wili, at ito
ay isang stepping bato ngayon patungo sa mas kawili-wiling programa.
>> Pansinin ang tuktok ng file na ito ay may Tag PHP pati na rin ang ilang mga komento.
At ang mga ito ay, sa ngayon, isang kaguluhan ng isip kaya ni lamang makakuha ng pawalan ng mga komento ipaalam
tulad lamang ang mga ito sa C. At inaangkin ko ang sa tipak ng code sa isang komento
na ang code na ito ay pagpapatunay sa mga pagsusumite.
>> Well, ito ay lumiliko out na variable tulad ng dollar sign
guhitan sa ilalim ng post ay tinatawag na sobrang globals.
Ang mga ito ay tulad ng mga ito espesyal na mga pangkalahatang variable
na lamang ang Omni-mayamaya magagamit sa loob ng iyong programa.
At maaari mong gamitin ang square bracket pagtatanda i-index sa hindi ang mga ito gamit ang mga numero
tulad ng 0, 1, 2, 3, ngunit mga aktwal na mga salita.
>> Kaya maaari mong isipin ang dollar sign magbigay-diin post bilang uri ng isang hash talahanayan
na maaari kang pumasa sa isang susi sa, ng lookup salita in-sa pagitan ng mga square bracket,
at ito ay pagpunta upang bigyan ka pabalik sa halaga na aktwal na ibinigay ng user.
May isang function na PHP tinatawag na walang laman na lang
sabi oo o hindi, ito variable ay walang laman o hindi.
Mayroon kaming mga double bar, na nangangahulugan lamang o, tulad ng sa C.
>> Kaya sa epekto, ang linya 4 lamang sinasabi kung ang gumagamit ay hindi magbigay ng pangalan
o hindi magbigay ng kasarian o ang hindi bigyan ng dorm, sige at mag-redirect sa kanya
o kanya sa pamamagitan ng linyang ito dito.
Kaya ito ay isang maliit na misteryosong, ngunit ito lamang ay nangangahulugan na literal
bumalik sa lokasyong ito, kaya punts ng user
bumalik sa kung saan man siya nanggaling.
Ngunit ito ay isang maliit na hindi makisig sa mahirap na ako naka-code na ito.
>> Ngunit paano kung ito kung kundisyon Hindi suriin sa true?
Paano kung ang user ay nagbibigay sa akin kanyang o ang kanyang pangalan at dorm at kasarian?
Na kung kondisyon ay hindi pagpunta upang suriin sa true,
kaya hindi ko pindutin ang lumabas sa linya 7.
Kaya kung ano ang mangyayari?
At ito ay kung ano ang kawili-wiling tungkol sa PHP.
>> Maaari mong i-drop in at out ng mode na PHP, kaya upang makipag-usap.
Kung gusto mong ang ilang mga code upang maisagawa, maaari mong buksan at isara ang isang tag na PHP
at ilagay ang code doon tulad ng iyong ginawa ko dito.
Sa sandaling isara mo ang tag na PHP, ang server
ay lamang ng pagpunta sa sabihin ang lahat anumang inilagay mo doon.
At sa katunayan, ito ay bahagi ng ang orihinal na disenyo ng PHP,
para sa mas mahusay para sa mas masahol pa, ay ito commingling ng code at markup
wika.
At kami makita na ito napaka mabilis devolves sa gulo.
At kaya kami na mas mahusay kaysa sa ito huli, ngunit lamang
mapansin ang kadalian na kung saan ako talaga magawang isagawa ang ilang logic.
>> Ngunit pa rin ng isang bit underwhelming.
Hinahayaan buksan up ng bersyon dalawa sa Frosh IMS, na
sa malas na isinusumite sa register2.php.
Kaya ang file na ito ay aktwal na pagpunta upang tingnan ang parehong halos.
Pupunta ako upang pumunta sa Frosh IMS 2.
Ngunit sa Frosh IMS 2, tingnan natin kung ano ang mangyayari.
>> David, i-click ang radio button, tulad ng ang tawag dito; Matthews, walang kapitan.
Magparehistro.
Ikaw ay naka-rehistro.
Hindi talaga.
Oh maghintay, ginawa namin lamang Halimbawa iyon, ang hindi namin?
Ang lahat ng mga karapatan, tumayo sa pamamagitan ng.
Gagawin namin ang tatlo.
Malinaw na ang isang bagay ay tungkol sa mangyari sa Gmail.
Magpapadala kami makarating doon.
>> Kaya Frosh IMS 3 mukhang ganito.
Walang mga naiiba.
Ngunit kapag gagawin ko David, lalaki, Matthews, at magparehistro, ito ikatlong at huling bersyon
claim, medyo simple, mo ay nakarehistro talaga.
Iyon ang uri ng espirituwal.
Ngunit inaangkin ko ang may ito ikatlong at pinal na bersyon
Ngayon ko pa recreated nang eksakto kung ano ang aking kasama sa kuwarto at binuo ko para sa Frosh IMS
taon ang nakalipas programa.
At ito ay simpleng.
Walang database, walang Excel spreadsheet.
Ngunit higit sa lahat, nagkaroon ng hindi hihigit papel
dahil kung ano ang ginawa namin sa programang ito ay talagang i-email ang Proctor, na
ay nakaraang pagtanggap mga bagay na ito sa pamamagitan ng mga form.
>> At tila-program namin ito sa tulad ng isang paraan na kapag may isang taong nagrerehistro,
Mga email John Harvard ng account ang proctor-- o ang kanyang sarili sa kasong ito,
John Harvard-- may mga sumusunod na text-- "Ang taong ito lamang nakarehistro."
Ang pangalan ay David, kapitan ay blangko; kasarian, lalaki; at dorm, Matthews.
>> Kaya kung ano ang nangyari doon?
Well, ang file na pinag-uusapan dito ay tila register3.php.
At kung buksan ko ito, makikita mo ang pareho ang lakas ng code tulad nito
at din, lantaran, ang kawalan ng kapanatagan ng isang sistema tulad ng email.
Mabisa lang ako nagkunwari sa maging John Harvard sa sumusunod na paraan.
>> Mayroon akong open php tag up tuktok, na Sinasabi lamang dito ay ang ilang mga code na PHP.
Down dito, lumiliko out doon mga aklatan sa PHP.
Ikaw lamang ay hindi na kailangang Kasama sa header na file ng maraming.
Makakakuha ka ng higit pa sa panlipunan, kaya na magsalita.
>> Ngunit oras na ito sa loob ng 4 na linya, gagawin ko gustong espesyal na library na tinatawag na
PHP mailer, na kung saan ay isang bagay sa iyo maaaring i-install nang libre sa maraming mga system.
Down dito ako pagpapatunay ang pagsusumite lamang
sa pamamagitan ng pagsuri ay gumagamit ng bigyan sa akin ng pangalan, ng kasarian, at dorm.
At kung gayon, sige at magbigay ng halimbawa ng mailer.
>> Maaari mong isipin na ito bilang isang linya ng code na lang naglalaan.
Ito ay tulad ng malloc, ngunit ito ay isang maliit na sexier
sa na banggitin hindi lamang malloc at ilang mga generic na numero.
Sabihin ba ninyo akong bigyan ng isa sa mga ito, bigyan mo ako ng bagong isa sa mga ito.
>> At kung nag-program sa Java o C ++ o iba pang mga wika,
Maaaring nakita mo na ito.
Ngunit ang maikling ng ito, kung hindi pamilyar na, ang linyang ito
Inilalagay sa dollar sign mail isang espesyal na struct na tinatawag na
isang bagay na iyon ay built-in -andar ng email.
At sa katunayan, mapapansin at katulad na syntax.
>> Ito ay hindi isang pointer, per se.
Ginagamit lang PHP ang parehong syntax.
Ang linyang ito ay sinasabi ng paggamit SMTP-- Simple Mail Transfer
Protocol, na lamang ang protocol na ginagamit upang magpadala ng mail.
Ito ay tumutukoy ng paggamit SMTP server Harvard, na
ay isang lugar dito sa campus.
>> Ito ay nagsasabi kung ano ang TCP port number upang makipag-usap sa,
at lamang naisip ko na sa pamamagitan ng Pag-Google o sa pamamagitan ng pagtatanong sa tulong desk.
At pagkatapos ay dahil sa Harvard ay gumagamit ng ilang mga seguridad ng system sa mail server--
hindi bababa sa upang i-encrypt trapiko sa pagitan mo at ito,
kahit na maaaring magpadala sa sinuman na it-- Pupunta ako sa i-on ang TLS protocol
para sa pagpapanatiling secure na ito.
>> Ngunit ito ay kung saan bagay makakuha ng isang maliit na nakakatakot.
Maaari ko nagkataon lang sabihin na ako jharvard,
at maaari ko nagkataon lang -email ang aking sarili dito.
At pagkatapos ay ang maaari kong tukuyin ang isang napapailalim sa line dito.
>> At ito ay mukhang lamang pangit, ngunit ito ay lamang ng grupo ng pagdudugtong.
Ino-out ay may sobrang kapaki-pakinabang na simbolo PHP, tulad ng ilang mga wika, ang tuldok operator,
Literal na lang concatenates string pagkatapos ng string pagkatapos ng string,
at hindi mo na kailangang mag-malloc o figure ang kabuuang haba ng string.
Magagawa mo lang ito.
At sa katunayan, dahil ako concatenating sa lahat ng mga bagay na ito gamit ang mga tuldok,
na ang dahilan kung bakit ang email ko Ipinadala ang tumingin tulad ng ginawa ito.
>> At pagkatapos ay sa wakas dito, ako sa pagpapadala sa ako ng mail.
Kaya kung ito ay hindi totoo, Lamang ako ng pagpunta sa mamatay,
kung saan ay isang function na lamang ng mga kopya sa screen ng ilang mga mensahe ng error.
Ngunit ito ay, sa katunayan, ng pagtawag sa function na ipadala.
Sa kabilang banda, kung ang lahat ng ito nabigo, nagre-redirect ito sa akin pabalik dito.
>> At bakit nakita ko na Ako nakarehistro talaga?
Well, ito ay nangyari dito mismo.
Kaya ko ilabas ito para sa isang pares ng mga dahilan.
>> Ang isa, ito ay eksakto kung paano kung bumuo ka ng ang ilang mga website para sa isang pangwakas na proyekto
o para sa tunay na mundo, ito ay kung paano mo magpadala ng mga paalala ng email
sa iyong mga customer o ang iyong mga subscriber.
Ito ay kung paano mo magpadala ng mga paalala ng password.
Ito ay kung paano mo magpadala ng mga tao mensahe na mayroon sila ng isang bagong Facebook
mensahe nakabinbing o isang bagay tulad na.
>> Ngunit ito rin ay nagsasalita sa ang katotohanan na dati ito
lubos na mabuti mula sa Davin o sinumang iba pa.
At sinasabi ko sa ganitong uri ng may isang ngiti dahil ako
medyo sigurado kung ano ang nangyayari sa pamamagitan ng ang ilan sa iyong mga isip sa puntong ito.
Ngunit ito ay isa sa mga gawin bilang ako sabihin, hindi bilang ko uri ng mga bagay,
dahil ito ay walang halaga sa pekein ng mga email na katulad nito.
Ngunit bilang maaaring nakakita o basahin sa Crimson,
ng late na ito Kahanga-ring walang halaga para sa mga taong
sa trace ang mga ito pabalik sa ilang mga pinagmulan.
At hilingin sa akin ang ilang oras, marahil sa CS50 tanghalian, paano ko unang
Kaka-kilala napaka-malapit Halos sa ed board maraming taon
nakalipas kapag natuklasan ko kung paano nagtrabaho sa internet.
Kaya sa anumang case-- bahagyang pagkatapos ginawa ng ed board.
>> Kaya sa anumang kaso, mayroong isang buong bungkos ng sobrang globals,
habang ang mga ito ay tinatawag na dito, isa sa mga ito ay saw-- namin sa pag-sign underscore dolyar post.
Mayroong isang kamukhang-mukha na tinatawag na kumuha, na kung saan bagay-bagay mula sa isang URL
nagtatapos up ng pagpunta.
At mayroong isang buong bungkos ng iba, too-- session at server at cookie.
Darating kami pabalik sa Cookie ilang iba pang mga oras,
ngunit session ay uri ng mga cool na dahil karapatan now-- hanggang now--
lahat ng bagay na iyong ginawa namin sa isang web browser ay isang uri ng stateless, kaya upang makipag-usap.
Ang maaari kong i-click sa paligid, pag-access mga file sa server, isang bagay
ang mangyayari sa screen, ngunit pagkatapos ay isinara ang koneksyon.
Ang Internet Explorer o ang Humihinto umiikot na icon sa Firefox
at tingnan mo kung ano ang na web page ay naglalaman.
>> Kaya HTTP ay stateless sa na sa sandaling ito ay gumagawa ng isang koneksyon,
ay makakakuha ng ilang data, na ito.
Wala nang koneksyon, hindi tulad ng Skype, hindi tulad ng Facetime, hindi tulad GChat, na
Pinapanatili ng isang pare-pareho koneksyon sa server.
Ang web ay sa panimula pagkakakonekta, kahit kami ay
makita bago mahaba kung paano maaari naming gayahin bagay
tulad ng Facebook chat at GChat, na mapanatili ang illusion--
o talagang gawin mapanatili ang isang pare-pareho na koneksyon gamit ang
higit pa modernong teknolohiya.
>> Ngunit kung pumunta ako sa, sabihin nating, counter.php, ito ay isa pang simpleng halimbawa,
bilang namin makita, na kasalukuyang palagay ni Binisita ko ang site zero oras.
Ngunit kung i-reload ko lang ang pahina, ito kahit papaano alam ko dito dati.
Kung i-reload ko muli, ito Alam ko dito dati.
At muli at muli at muli at muli.
>> Kaya mayroong ilang mga plus-plussing pagpunta sa, ngunit paunawa
ang maliit na bagay spins napaka Panandalian up itaas at pagkatapos ay i-disconnects,
kaya hindi ito bang mayroon akong isang pare-pareho koneksyon sa aking appliance.
Well, kung pumunta ako sa counter.php, pansinin kung paano simple ito ay.
Aking unang tawagan ang espesyal na function na kami ay sa lalong madaling panahon
simulan ang paglalaan para sa ipinagkaloob tinatawag na pagsisimula session.
Magsimula ng session.
>> At isang session simula ngayon lamang pagpunta sa maging isang bucket, tulad ng isang shopping
cart kung saan maaari kang maglagay ng mga halaga at uri ng pinagkakatiwalaan bilang isang programmer
na sila ay magiging dito kapag gumagamit na iyon ay back-- isang segundo
sa ibang pagkakataon, isang oras sa paglaon, kahit sa isang taon mamaya, kaya hangga't siya ay hindi malinaw
ang kanilang mga cookies, pati na makikita sa huli naming makita.
At ngayon Mayroon akong lamang isang kung kundisyon dito.
Kaya kung ang mga sumusunod na key, na tinatawag na counter, naka-set sa loob
ng sobrang global-- ito hash talahanayan, kung will-- iyo na tinatawag na session,
pagkatapos ay sige at grab ang halaga mula sa session-- tingin
ng ito bilang isang shopping cart-- at iimbak ito
sa isang pansamantalang variable na tinatawag na counter.
>> Sa kabilang banda, kung na halaga sagot ay hindi nakatakda sa tinatawag na shopping cart,
initialize lang ito sa 0.
Panghuli, pababa dito, pumunta at ibalik sa mga shopping cart o sa session
ang halaga ng counter +1.
Kaya ito ay lumiliko out na ito espesyal na lalagyan here--
na kung saan, muli, ay isa sa mga nauugnay na array, isang array na maaari mong index
sa mga salita sa halip na numbers-- patuloy kahit na matapos ang gumagamit mawawala.
Muli, magpapadala ako bumalik sa pahina ngayon.
Naging isang minuto o kaya.
Pero Naaalala na na hindi ko na naging dito 19 beses bago.
Ito ang aking ika-20 pagbisita.
>> At kaya ito ay magiging susi sa magpatupad ng anumang mga website na Naaalala
na naka-log in, na inilagay mo isang bagay na literal sa iyong shopping cart
upang bumili o na ikaw ay may ilang mga bilang ng mga mensahe nakabinbin.
Sa anumang oras na nais mong tandaan na impormasyon,
ipapakita namin makita na PHP, tulad ng maraming iba pang mga wika,
Nagbibigay kami ng ang ilusyon ng estado kahit na, pati na iyong makikita sa PSET 6,
bilang nagsasagawa ka ng mga kahilingan ng HTTP mula sa client sa server, na ito.
Sa sandaling makabalik ka na na tugon, walang higit pa kung
bumabalik mula sa server sa pamamagitan ng default.
Ngunit makikita namin kung paano gumana sa paligid na iyon.
>> Subukan na rin ngayon, sabihin linisin ito up ng kaunti.
Nasaksihan namin ang ilang mga iba't-ibang mga halimbawa doon.
Oh, at bilang isang-tabi, para mga pamilyar na pamilyar o,
ang dahilan na ang Frosh IMS halimbawa nagpunta
mula naghahanap talaga pangit sa slightly-- na rin,
ugly-- pa rin sa bahagyang mas mainit ang ulo bagaman pa rin mainit ang ulo
ay dahil sa kung tinitingnan namin sa dito ang source code,
ito ay lumiliko out na mayroon akong ito sa pinakatuktok ng file.
>> Ino-out na Bootstrap ay isa sa maraming mga malayang magagamit library doon
na umiiral ang hindi para sa programming wika laging, ngunit para sa CSS o para sa JavaScript
o HTML o anumang bilang ng mga wika.
>> At ang mga tao here-- Orihinal na dumating out
ng Twitter-- mayroon lamang isang buong bungkos ng mga estilo.
Ito ay isang napakalaking file dito na ang isang tao ay sumulat,
o ng isang tao ay sumulat, sa paglipas ng panahon na Tinutukoy ng kulay at pag-format
at watnat sa gayon ay maaari ko uri ng humiram ng kanilang mga syntax
at hindi na kailangang malaman kung paano mag-ipon ang aking form.
Ito ay minified din upang ang isang computer maaari
maunawaan ito ngunit hindi nangangahulugang isang tao.
Kaya na ang dahilan kung bakit lamang ang estilisasyon may nagbago.
>> Ngunit sabihin ngayon mas mahusay na gawin sa mga tuntunin ng disenyo,
dahil kung manatili namin down na Masyadong mahaba ang kalsadang ito,
ang aming code pupuntahan makakuha ng maraming kalat at Messier.
Kaya sabihin tumuon sa mga halimbawa dito.
Ang huling para sa araw na ito.
>> Kaya dito ay isang napakabilis simple bersyon 1.0 website CS50 ni ng.
Ito lamang ay may mga link sa mga aralin at syllabus,
at gumagamit ito na unordered listahan tag-- ang ul tag na ginamit namin huling oras.
At kung sa katunayan, kung ako buksan ang Tingnan ang Pinagmulan ng Pahina,
makikita mo na ito ay talaga ito, talagang simple HTML.
At sa katunayan, kahit na ito ay isang file ng PHP sa ilalim ng hood,
ito pa rin lang pagsigam ang HTML lamang sa ngayon.
>> Kaya kung nag-click ako sa Lecture, nakikita namin mangyari ito.
At kung nag-click ako sa linggo zero, tingnan namin ito.
At kung nag-click ako sa Miyerkules, nakita namin na ito.
At ito ay tila ang PDF ng mga slide mula sa araw na iyon.
Ang lahat ng mga nagawa ko ay ang link gamit ang isang anchor tag sa URL na ito dito.
>> Kaya ito ay lamang upang sabihin na ito ay isang magandang simpleng bersyon website CS50 ni ng.
Tingnan natin kung paano ito ipinatupad Hayaan.
Kung pumunta ako sa direktoryo mvc0, Makikita natin ang ilang mga file.
Ang isa ay isang Readme, kaya kung ilan sa mga ito ay masyadong mabilis,
Maaari mo lamang sundutin sa paligid higit pang nakakalibang na sa ibang pagkakataon.
At notice in dito ay isang index.php file.
Ito ay lumiliko out na kung mo ang iyong sarili, ang mga tao,
huwag tukuyin ang isang huling pangalan sa isang URL, ang web server ay karaniwang
infers ilang mga default na pangalan para sa iyo.
Ang isang index na tuldok ng isang bagay ay pangkalahatan ang default.
>> Kaya na ang dahilan kung bakit ilang sandali ang nakalipas kapag binisita ko ang URL na ito dito,
Walang pangalan ang file, walang file extension, walang panahon sa URL.
Lang alam ito sa paanuman magically upang maghanap ng mga index.php.
Ito ay isang convention lamang.
Ma-tinatawag na kahit ano.
>> Kaya kung pumunta ako ngayon sa index.php, makikita mo ang
iyon, indeed-- sabihin mapupuksa ang mga komento
dito dahil mayroong talaga wala na interesante sa mga it--
ito ay lamang hard code ng HTML.
Kaya na pare-pareho, bagaman, sa aking claim
na maaari mong maghalo HTML at PHP.
Walang aktwal na mga programa ng logic sa dito.
>> At ang iba pang mga file ay medyo magkano lamang bilang hindi kawili-wili.
Ito ay lamang hard-code na linggo isa dito sa linggo isa m at linggo isa w,
para sa Lunes at Miyerkules.
At pagkatapos ay kung buksan ko up linggo zero, mapansin ito ay halos magkapareho.
>> At iyon ang uri ng isang pangunahing takeaway.
Pansinin kung paano lang kalabisan ito.
Ang mga file na bahagya baguhin, at pa ako nakuha ang isa sa mga kopya / i-paste ang mga trabaho
kung saan kinuha ko ang isa file-- siguro sa linggo zero-- kinopya ito
kapag linggo ang isa ay dumating sa paligid, at tweaked ng ilang mga halaga.
Dapat marahil namin magagawang gawin mas mahusay kaysa sa na ito.
>> Kaya sabihin bumalik hanggang sa mvc at pumunta sa bersyon isa.
At mapansin Nakakuha ako ng isang ilang mga file, dahil kung ano ang
ay pangkaraniwan sa lahat ng mga file na iyon lamang ago-- sandali kung pumunta ako pabalik sa bersyon 0,
ay bumalik sa index ipaalam, at postulate-- lamang
isang beses ko mapupuksa ang mga comments-- kung anong bahagi ng pahinang ito
ay siguro sa bawat isa sa aking mga file?
Tumawag lamang ito.
Aling mga linya ay nadoble Marahil sa lahat ng mga pahinang ito?
Oo?
>> MAG-AARAL: [hindi marinig].
>> David J. MALAN: 1 hanggang 9.
Oo, walang pasubali.
1 hanggang 9, maliban siguro 8 nagbabago nang kaunti dahil CS50
nagiging aralin o linggo sa zero o isang bagay.
Pero halos magkapareho.
Kaya ang lahat ng mga bagay-bagay na ito ay lamang uri ng kopyahin at ilagay.
At mayroong ilang iba pang mga linya ang maaari kong isipin
ng na malamang na magkatulad sa lahat ng mga file.
>> MAG-AARAL: 12 at 13.
David J. MALAN: Oo.
Oo naman, 12, 13, at 14 ay marahil, dahil lang sa ang mga kawili-wiling mga bagay-bagay
ang nangyayari sa linya 11 at 10, kaya ito ay tila.
Kaya tingnan natin ang bersyon 1 ipaalam, na sinusubukan upang mapabuti sa ito.
Sa bersyon 1 ng mvc example-- kami ay ipaliwanag kung ano mvc paraan sa isang moment--
kung pumunta ako sa index, uri ito ng ang hitsura ng isang maliit na nakakalito ngayon.
Ito ay hindi masyadong kasing simple ng dati.
>> Ngunit sa sandaling sinimulan mo upang basahin ito nang mabuti, ito ay
medyo prangka kung ano ang ginagawa nito.
Sa malas line 1 at 8 linya na pinalitan
lahat ng mga bagay-bagay identified-- mo lamang kahit na para lamang sa mabuting panukala,
Iniwan ko ang ULs doon sa kasong ilan lang araw ay hindi magkaroon ng isang listahan ng mga bagay.
At kaya't nangangailangan ang uri ng tulad ng pound Kasama sa C. Ito mga kopya at pastes
ang mga nilalaman epektibong dito sa file na ito.
>> Kaya sa header.php, tulad ng sa iyo maaaring magpakilala mula sa pangalan nito,
ay magiging ang header ng pahina.
Uri ng Ito ay naulila dito.
Ito lamang ay may tuktok na ito, ngunit walang higit pang nilalaman sa ibaba.
>> At kung tumingin ako sa footer samantala, na kung saan ay ang iba pang mga file mentioned--
ang isang ito ay mas mababa kawili-wili, ngunit muli, ito ay karaniwan sa lahat ng bagay.
Kaya ito ay ang footer.
Ito ang header.
Ito ang file na nagbabago, sa gayon bakit hindi
subukan upang magfa-factor ang commonality gamit ang dalawang mga linya dito?
>> Ngunit maaari naming linisin ito up ng kaunti pa.
Pupunta ako sa magpatuloy at buksan ang bersyon ng dalawang kung saan
ipapakita namin makita na mayroong isang bagong file, helpers.php.
Susubukan naming makita kung ano ang na sa ilang sandali.
Sabihin pumunta sa index, tulad ng entry point tulad ng dati.
>> At mapansin ngayon ako na nangangailangan ng helpers.php, hindi header o footer.
Ngunit helpers ay uri ng bang helpers.c at helpers.h mula PSET 2
o PSET 3 matagal na ang nakalipas kapag aktwal ang hinanap at hanapin para sa PSET,
at nagkaroon ka ng lahat ng iyong code para sa pag-uuri at naghahanap sa isang hiwalay na file.
Iyon ay kung ano ang nangyayari sa dito.
>> At ngayon ang hitsura ng isang maliit na iba't ibang 3 linya.
At ito lamang ay isang linya.
Upang gawin ang kahit na higit pa malinaw, maaari ko lamang
huwag ito upang maging pare-pareho stylistically sa lahat ng iba pa namin tapos na.
Ngunit iyon ay hindi talaga pagbabago ng pag-andar.
Ito ay linya isa lamang sa mga tunay na code.
>> Sa malas, mayroong isang function sa isang lugar na tinatawag na header-render,
at ito ay kung saan bagay makakuha ng mga kaakit-akit na makapangyarihan.
Pansinin na sa loob ng panaklong nito ay kung ano ang iba pang mga piraso ng syntax?
Marahil ito ay isang maliit na mahirap sabihin, ngunit mapansin there's-- makikita ko bang ilagay ang ilang mga puting
espasyo.
May mga square bracket.
>> At square bracket nakita namin ng kaunti ang nakalipas sa konteksto ng nag-uugnay array,
na kung saan ay, muli, tulad ng hash talahanayan.
At kung sa tingin mo na ngayong i C, ang pagkakasunud-sunod ng mga argumento sa isang function
May upang laging maging kapareho.
Mayroon kang matandaan kung ano ang -order is-- x, y, z o z, y, x--
at mayroon kang palaging ibigay ang mga ito sa parehong pagkakasunud-sunod o maghanap ng mga ito
kung nakalimutan.
>> Ngunit ito ay tila na maging isang matalino na paraan ng pagpasa sa isang arbitrary na halaga ng key
pares kung saan ang pamagat ay ang pangalan ng isang argumento sa kasong ito
at CS50 ay ang halaga nito.
At ang katotohanan na mayroon akong mga square bracket
dito ay nangangahulugan na maaari kong ipasa ang ring sa isang bagay
tulad ng isang linggo ay 1 o 0 o 2 o 3.
Kaya nagbigay kami parameterized ang function na ito sa paraang
na maaari itong tumagal ng maramihang mga input, ngunit sa ngayon ito lang ang isa.
>> Kung pumunta ako ngayon sa helpers.php, mapansin kung ano ang ginagawa nito.
Ito ay isang kaunti ng bagong pag-andar,
ngunit sa ngayon tumagal lamang sa loob na ito ay
ang syntax kung saan ka tukuyin ang isang function sa PHP.
Literal mong sabihin ang function.
Hindi mo tukuyin ang isang pagbalik -type, at iyon ang pare-pareho
sa detalye ng variable mas maaga kung saan wala ka talagang masidhi-type.
>> Ito lamang ang tinutukoy na, sa pamamagitan ng default, ito
kumukuha ng isang nag-uugnay array bilang isang argument.
At alam mo kung ano?
Kung ang gumagamit ay hindi pumasa sa isang sa, ipinapalagay ng isang default na halaga.
>> Ito ay isang tampok na C walang ay para sa atin, na maganda, dahil ngayon
data, kahit na huwag bigyan ito ng anumang bagay,
ay magiging isang array ngunit may isang walang laman.
At bilang isang bukod, katas ginagawa lamang ng isang bagay funky
kung saan ito ay tumatagal ng lahat ng mga susi mula sa nag-uugnay array, ang lahat ng mga bagay
maaari mong ilagay sa mga square bracket, at lumilikha ng mga variable sa kanila
sa gayon ay maaari sa huli naming magkaroon ng access sa kanila sa footet.php at header.php.
Iyon ay isang maliit na abstract, kaya hayaan mo akong ituro ito out.
>> Sa index.php, mapansin na ako pagpasa sa isang key halaga pares ng pamagat
may halaga ng CS50.
Kung ngayon tumingin ako sa helpers.php, mapansin na RenderHeader
ay-extract ang data na iyon na ako ang pagpasa in, at pagkatapos ay nangangailangan ng header.php.
Ano gumawa ako ay isang uri ng isang mahinang tao pagpapatupad ngayon ng mga sumusunod.
>> Kung buksan ko up header.php, notice na na hindi ko na hindi na matigas
-code ang salitang CS50 sa header na file.
Naglagay ako ang tinatanggap na atrociously pinangalanang function, HTML mga espesyal na karakter,
doon.
Ngunit mapansin kung ano ang iyong ginawa ko.
Mayroon akong bukas na HTML.
Pagkatapos Mayroon akong bukas na head at bukas na pamagat.
>> At pagkatapos ay sa loob ng bukas at ang pamagat ng malapit na tag, Mayroon akong ng kaunting code na PHP.
At ito ay isang magandang ngunit ng syntax, na nangangahulugan lamang echo out.
Ito Literal na nangangahulugan this-- Echo ang following--
ngunit ito ay sexier na magsulat.
Echo ang pamagat na hindi nakapasa sa.
>> Ngunit ano ang iyong palagay HTML espesyal na pansamantalang trabaho ay tungkol sa,
lalo na kung mayroon kang ang ilang mga naunang karanasan sa HTML?
Anong mga character ay maaaring maging mapanganib upang pumasa sa isang pahina
kung saan pabago-bago ka sa pagbuo ng ang web page na may code na ito?
Hayaan akong pumunta sa file na ito, na bersyon dalawang, at makita kung hindi ako maaaring humimok ito.
>> Bersyon ng dalawang ay na ito.
At mapansin ang lahat ng bagay ay pinong, mahusay na gumagana.
Ngunit ipagpalagay na pumunta ako sa index.php at Tinukoy ko na ang pamagat ng aking pahina
Hindi CS50.
Ito ay bukas bracket script alerto kumusta mundo, isara ang solong quote,
malapit panaklong, semicolon, bukas bracket, slash script.
>> Script, pati na kami ay ay makakita, ay isang tag
na maaari mong gamitin sa paggamit ng isa pang tinatawag na programming language
JavaScript sa loob ng isang web page.
At ngayon mapansin ang logic dito.
Narito ang isang key na tinatawag na pamagat.
Narito ang isa itong nakatutuwang mahaba ang halaga ngayon.
>> Ngunit kung pumunta ako sa mga helpers page- o sa halip, ang pahina ng header,
Ako ng pagtawag sa function na ito sa pamagat na unang.
Kaya kung ngayon i-reload ko ang pahinang ito, ako makita ito, na kamukha katawa-tawa,
ngunit ito ay ligtas.
Mukhang lamang itong ugok.
>> Ngunit ipagpalagay na sa halip Ako ay nakalimutan na ito.
At markahan ang aking mga salita, isang nonzero numero Mailalapat Nakalimutan gawin ito
at makakakuha ka ng ilang mga masipag mag-aaral o kaibigan ay paparating na
sa iyo sa CS50 patas o hindi nagpapakilala sa gabi poking sa paligid sa iyong website
at mahalagang injecting code walang anumang kaalaman sa iyo sa iyong site
kahit papaano.
>> Dahil kung lang dumura ako ang pamagat dito at pamagat
there-- na rin, kung ang pamagat ay literal Mukhang ganito at PHP
bilang isang wika na maaaring dumura ang iba pang mga wika ng teksto,
ito ay literal pagpunta upang palitan ang tag na ito sa,
siyempre, kung ano ang ko bang ilagay sa ibang lugar.
>> Kaya kung pumunta ako ngayon dito at i-reload pagkatapos -undo ang mga mekanismo sa kaligtasan,
ngayon Mayroon akong halo mundo dito.
Ngayon na hindi lahat na malaki ng isang harapin, ngunit maaari mong gawin ang isang bagay
higit pa ng kaunti nakakahamak dito, tulad ng mayroong
iba pang mga tags-- bilang namin makita ang isang beses gastusin namin mas maraming oras sa JavaScript-- tulad ng lokasyon
tuldok href nakakakuha, quote, magpanipi, HTTP business.com, ngunit ang tapat ng na
mula sa iba pang mga araw.
At ngayon maaari kang humimok ng web pahina upang aktwal na pumunta agad
dito sa web page na ito.
>> At talagang, hindi ko nais sa kahit na pumunta sa business.com
dahil hindi ko nais malaman kung ano na.
Ngunit ito, masyadong, magti-trigger ng code na injected sa pahinang ito.
Kaya ito ay lamang upang sabihin na kahit na ipinapakilala namin sobrang maaga sa ilang
sa mga mas kumplikadong kaayusan, lahat ng ito ay patungo sa isang dulo ng pagtiyak
na ang iyong code ay hindi exploitable.
>> Kaya ngayon isang third bersyon dito.
Nakakakuha ito ng isang maliit na may interes.
Ako ang hindi talaga like-- ang anal bahagi ng akin
ay nakakakuha ng kaunti inis sa pamamagitan ng katotohanan na ako ay isang function na tinatawag na
RenderHeader at RenderFooter na ay halos magkapareho.
Kaya naganap ito sa akin, bakit hindi Parameterize ko ang mga pag-andar
sa isa lamang na tinatawag na render, na tumagal ng pangalawang argumento
tulad ng pangalan ng template, ang pangwakas na sa render-- alinman sa header o footer?
At pagkatapos ay opsyonal, kung gusto ko upang pumasa sa ilang mga pangunahing mga pares ng halaga
tulad ng gagawin ko para sa pamagat para sa header ngunit hindi para sa footer,
Maaari kong gawin iyon.
>> At kaya ngayon kung pumunta ako sa helpers.php, ito ay isang maliit na mas kumplikadong.
At makikita ko iwagayway ang aking mga kamay sa mga detalye, ngunit ito ay isa lamang pag-andar.
Kaya iyon ay isang hakbang patungo sa isang mas mahusay na disenyo.
>> Maaari pa namin ito isang hakbang.
Kung pumunta ako sa aking pang-apat bersyon ng ito, mapapansin ngayon
na ako paggawa ng isang bagay higit pang mga uri ng misteryosong.
At alam ko na ito ay isang marami na maunawaan nang sabay-sabay,
ngunit kami uri lamang ng paglilinis ng mga bagay-bagay.
Ngayon ako ng paglalagay aking helpers -file sa isang folder na tinatawag na
includes-- lamang ng isang arbitrary pangalanan kung saan ako nais na ilagay ang mga bagay-bagay
na gusto kong include-- at pagkatapos ay ang natitirang bahagi ng ito ay pareho.
>> Subalit kung titingnan ko ngayon sa gedit, notice na iyong nakuha ko makapagpaalis
ng lahat ng mga iba pang mga file at na hindi ko na Inilipat ang mga ito, halimbawa, sa dito.
At pagkatapos ay sa template, Mayroon akong na ito, dito.
At kaya ito ay ang lahat ngayon papunta sa isang hakbang ng paggamit ng isang mas mas mahusay na pattern disenyo.
At kami ay masyadong mabilis pagpunta sa ilipat ang layo
mula sa default na pag-andar ng PHP, na nagsimula kami dito kasama,
kung saan maghalo mo lamang ang PHP, at iyong HTML, at ang iyong CSS,
at dumura mo lang ito at pumunta ka tungkol sa iyong paraan.
Hindi ito ng pagpunta sa maging napaka-maintainable.
Tulad ng sa C, sinimulan namin ang paggamit ng maraming mga file at maramihang mga pag-andar
at factoring bagay na out.
Gagawin namin ang parehong dito.
At sa katunayan, sa ikalimang at huling bersyon dito, ginawa ko ang isa sa iba pang mga bagay.
Maaari mo ring gamitin ang tuldok na tuldok, na kung saan, muli, ay isa lamang sa magulang na direktoryo.
Upang maging malay-tao kahit na higit pa sa seguridad, dahil kung tumingin ako sa pakikinig
dito para sa ikalimang at huling bersyon, abiso na mayroon akong isang direktoryo na tinatawag dito
publiko, at pagkatapos ay sa parehong antas, kaya upang magsalita,
Mayroon akong may kasamang at mga template at pagkatapos na text file Readme.
>> At ang dahilan na nakaayos ako ito bang this-- at kaya maraming mga web
host, lalo na ang mga $ 5 buwan bago o $ 10 buwan na,
kung sakaling nagkaroon ka ng isa sa mga services-- kung ano ang kaya marami sa kanila gawin
ay inaasahan nila lamang mong i-dump lahat sa iyong mga file sa isang direktoryo,
tulad ng ginawa namin na sa mga ang unang halimbawa.
>> Ngunit sa lalong madaling simulan mo ang pagbuo ng higit pa sopistikadong mga site na nag-iimbak lamang
data na mahalaga sa iyo at mga file na nagmamalasakit sa, aktwal na pag-aayos ng mga bagay
tama at may higit pang seguridad malay sa isip maaari
simulan namin na ipagtanggol laban sa lahat ng mga kaibigan
na mayroon kang alinman sa o sa labas ng klase na ito na,
sa lalong madaling simulan mo ang paggawa ng mga programa sa sarili mo sa web,
pupunta upang simulan ang pagpili sa iyo at sa mga ito.
>> At kaya titingnan namin huli sa disenyong ito.
Ito ay isang larawan lamang na inilalarawan ang mga sumusunod.
Kami ay pagpunta sa ilagay ang lahat ng aming mga mga programa ng logic sa isa o higit pang mga file,
at kami ay pagpunta upang simulan lamang pagtawag sa mga Controllers.
Ito ay kung saan ang talino ng aming mga website na aktwal na ay.
Pagkatapos kami ay pagpunta sa May tanawin at ng mga tanawin
ay kasing simple ng lang hiwalay files-- na tinatawag na template, madalas.
Mayroon lamang nila ang Estetika ng aking pahina,
kung ano ang nais ko ang mga pahina upang hanapin like-- ang mga kulay at ang layout
at ang mga posisyon ng lahat ng mga variable.
>> At pagkatapos ay mas kawili-wiling na makikita sa kalaunan namin upang
ay ang modelo, na kung saan ay magiging lamang ang salitang sampal namin sa iba pang mga teknolohiya
na namin dalhin sa larawan, tulad ng aktwal na mga database,
nang sa gayon kapag gusto mong i-save ang impormasyon,
hindi mo lamang magpadala ng isang email sa iyong Proctor o sa iyong sarili,
aktwal mong iimbak ito sa isang database paggamit ng ibang wika na kilala bilang SQL.
At kaya namin na nakalabas dito ngayon at pick up na may ito sa Miyerkules
at ipakikilala database pagkatapos.
>> [Musika sa pag-play]