1 00:00:00,000 --> 00:00:03,920 >> [Musika sa pag-play] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> David J. MALAN: Lahat ng karapatan. 4 00:00:13,800 --> 00:00:15,640 Ito ay CS50. 5 00:00:15,640 --> 00:00:17,620 Ito ang simula ng linggo walong. 6 00:00:17,620 --> 00:00:22,440 At maaari mong isipin na iniwanan namin off huling oras ng pagtingin sa isang bagong wika 7 00:00:22,440 --> 00:00:23,240 nang sama-sama. 8 00:00:23,240 --> 00:00:25,905 Sa katunayan, isang bagay na medyo magaan ang timbang at hindi ito kahit na 9 00:00:25,905 --> 00:00:26,940 isang programming language. 10 00:00:26,940 --> 00:00:31,100 Ito ay isang markup language na nagbibigay-daan sa amin talagang buuin at gumawa ng mga web page. 11 00:00:31,100 --> 00:00:33,350 At kapag nag-ibang bagay kasabay ng this-- 12 00:00:33,350 --> 00:00:35,670 o sa lalong madaling panahon mo, kung hindi mo pa nagagawa. 13 00:00:35,670 --> 00:00:38,530 Kami ay pagpunta sa gamitin Cascading Estilo Sheet, o CSS, na 14 00:00:38,530 --> 00:00:40,971 ay isa pang uri ng wika sa mga katangian at mga halaga 15 00:00:40,971 --> 00:00:43,220 na pupuntahan ipaalam sa amin gawin mga bagay na gusto palitan ang kulay 16 00:00:43,220 --> 00:00:46,010 at baguhin ang posisyon at ang mga uri ng mga pag-aayos. 17 00:00:46,010 --> 00:00:49,940 Ngunit ngayon at pasulong, simulan namin upang tumuon sa mas malakas na wika, 18 00:00:49,940 --> 00:00:52,810 aktwal na mga wika programming tulad ng PHP. 19 00:00:52,810 --> 00:00:54,880 >> Kaya PHP ay naging sa paligid para sa ilang oras. 20 00:00:54,880 --> 00:00:56,810 At tulad ng makikita mo, ito Idinisenyo pangunahing 21 00:00:56,810 --> 00:01:00,280 nang maaga para sa mga aktwal gamitin sa web development 22 00:01:00,280 --> 00:01:02,360 at aktwal na pagbuo ng mga web page. 23 00:01:02,360 --> 00:01:04,849 Kaya kung ano ang mga uri ng tampok ang isang wika 24 00:01:04,849 --> 00:01:10,040 kailangan upang gawin ang web mga pahina ng mga dynamic na may ito? 25 00:01:10,040 --> 00:01:14,760 >> Sa ibang salita, kung nais mo upang makabuo ng nilalaman dynamically-- tulad ng Facebook ni 26 00:01:14,760 --> 00:01:19,480 Newsfeed, kung aling mga pagbabago patuloy na, o mga instant message na pop up mula sa oras 27 00:01:19,480 --> 00:01:21,872 sa time-- tulad ng kung ano ang pangunahing piraso ng pag-andar 28 00:01:21,872 --> 00:01:24,580 kailangan mo sa isang programming language na ipaalam sa iyo pabagu-bagong 29 00:01:24,580 --> 00:01:28,070 mag-print ng bagong impormasyon sa screen? 30 00:01:28,070 --> 00:01:28,685 >> MAG-AARAL: Code. 31 00:01:28,685 --> 00:01:29,560 David J. MALAN: Code. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Isasaalang-alang namin iyon. 34 00:01:31,995 --> 00:01:35,310 Mas tumpak na ang isang maliit na. 35 00:01:35,310 --> 00:01:37,639 Ibig kong sabihin, maaari naming gawin ito kasama C, lantaran. 36 00:01:37,639 --> 00:01:38,930 Ito ay isang sakit sa ulo. 37 00:01:38,930 --> 00:01:41,045 But-- ay ang pangako? 38 00:01:41,045 --> 00:01:41,895 >> MAG-AARAL: Oo. 39 00:01:41,895 --> 00:01:42,677 Variable, marahil? 40 00:01:42,677 --> 00:01:43,760 David J. MALAN: Variable. 41 00:01:43,760 --> 00:01:44,160 OK, sigurado. 42 00:01:44,160 --> 00:01:45,740 Variable na maaari tiyak na makakatulong sa amin out. 43 00:01:45,740 --> 00:01:47,020 At kahit na isang bagay na mas simple. 44 00:01:47,020 --> 00:01:50,640 Unang ginagamit namin ito sa programa ng unang araw 45 00:01:50,640 --> 00:01:55,686 kapag aktwal na namin sinabi "hello mundo." 46 00:01:55,686 --> 00:01:56,570 >> MAG-AARAL: Print. 47 00:01:56,570 --> 00:01:57,778 >> David J. MALAN: I-print, i-right? 48 00:01:57,778 --> 00:02:01,050 I-print, o printf sa mundo ng C. Kaya lahat ng oras na ito, 49 00:02:01,050 --> 00:02:03,362 nagkaroon kami sa aming pagtatapon ng language-- C, 50 00:02:03,362 --> 00:02:05,570 sa particular-- at kahit na Sa simula para sa na bagay na 51 00:02:05,570 --> 00:02:07,400 Maaari makabuo ng mga string ng teksto. 52 00:02:07,400 --> 00:02:11,090 >> Well, kung HTML, tulad ng nakita natin noong nakaraang linggo, ay lamang ng buong bungkos ng mga string ng teksto 53 00:02:11,090 --> 00:02:14,692 kahit na may bukas na bracket at sarado bracket at ilang mga uri ng tula 54 00:02:14,692 --> 00:02:16,650 at kadahilanan sa likod nito, kung sa gayon maaari naming talaga 55 00:02:16,650 --> 00:02:20,440 simulan ang pagbuo ng mga web page alinman sa nang manu-mano sa pamamagitan ng pag-type ang mga ito sa gedit 56 00:02:20,440 --> 00:02:23,870 o sa Microsoft Word, para na matter-- kailangan lang namin ng text editor. 57 00:02:23,870 --> 00:02:26,830 >> O maaari naming magsulat ng code, sa iyong mungkahi 58 00:02:26,830 --> 00:02:30,435 mas maaga, na ipaalam sa amin dynamic na bumuo ng HTML, 59 00:02:30,435 --> 00:02:32,560 at iyon ang kami ay pagpunta upang simulan ang paggawa na may PHP 60 00:02:32,560 --> 00:02:34,900 at sa huli kahit na may wika na tinatawag na JavaScript, 61 00:02:34,900 --> 00:02:37,910 ay gumamit ng isang wika upang bumuo ng isa pa. 62 00:02:37,910 --> 00:02:40,720 At sa katunayan, ito ay kung ano ang Facebook at marami, maraming iba pang mga site 63 00:02:40,720 --> 00:02:44,530 gawin upang aktwal na dynamic na ipakita ang bagong impormasyon sa iyo. 64 00:02:44,530 --> 00:02:47,117 >> Kaya sa magsimula sa this-- ng ipaalam misteryosong naghahanap ng linya, ngunit isa 65 00:02:47,117 --> 00:02:48,450 na talagang kaakit-akit na makapangyarihan. 66 00:02:48,450 --> 00:02:51,210 Kaya ngayon, na namin ang paggamit ng C, kung saan ay isang pinagsama-sama wika. 67 00:02:51,210 --> 00:02:55,050 At lamang ng isang mabilis na recap-- isang pinagsama-sama wika ay kung ano ang katangian? 68 00:02:55,050 --> 00:02:59,050 Malinaw na kailangan upang makatipon ito, ngunit kung ano ang ibig sabihin na? 69 00:02:59,050 --> 00:03:00,505 Oo? 70 00:03:00,505 --> 00:03:02,940 >> MAG-AARAL: Kailangan itong maging binuo sa machine code. 71 00:03:02,940 --> 00:03:03,060 >> David J. MALAN: OK. 72 00:03:03,060 --> 00:03:04,530 Kailangan itong tipunin sa machine code. 73 00:03:04,530 --> 00:03:07,340 Kaya kumuha mo ang iyong source code, kung saan ay isang uri ng Ingles-tulad ng. 74 00:03:07,340 --> 00:03:09,270 -Convert ka na sa isang bagay na mas mababa sa antas ng, 75 00:03:09,270 --> 00:03:11,590 na kung saan ay tinatawag na sa huli bagay na code-- 0 at 1. 76 00:03:11,590 --> 00:03:14,830 At ito ay mga 0 at 1 na isang CPU, tulad ng mga ginawa ng Intel, 77 00:03:14,830 --> 00:03:16,110 talagang nauunawaan. 78 00:03:16,110 --> 00:03:19,690 >> Ngayon, PHP at Python at Ruby at JavaScript at bunches ng iba pang mga 79 00:03:19,690 --> 00:03:23,190 wika ay hindi pinagsama-sama wika ngunit bigyang-kahulugan wika, 80 00:03:23,190 --> 00:03:26,630 na nangangahulugan lamang nagta-type ka sa kanila at pagkatapos ay hindi mo i-ang mga ito sa 0 at 1. 81 00:03:26,630 --> 00:03:30,790 Sa halip kang magbigay lamang pagkatapos ay bilang -input programa ng ibang tao sa, 82 00:03:30,790 --> 00:03:32,080 na tinatawag ng interpreter. 83 00:03:32,080 --> 00:03:34,460 At na tao programa ay dinisenyo 84 00:03:34,460 --> 00:03:38,280 upang maunawaan kung ano ang bawat isa at bawat simbolo sa Python o PHP 85 00:03:38,280 --> 00:03:42,650 o Ruby o anumang bilang ng mga Nangangahulugan iba pang mga wika. 86 00:03:42,650 --> 00:03:44,760 >> At sa gayon ang lahat ng kailangan namin ay isang bagay na katulad nito. 87 00:03:44,760 --> 00:03:46,350 Kaya sa katunayan, pupunta ako sa pumunta sa ibabaw ng mga appliance 88 00:03:46,350 --> 00:03:48,100 dito, lamang sa anumang lumang window, at nagpapaumanhin kami 89 00:03:48,100 --> 00:03:52,580 pagpunta sa sige at bukas isang file na tinatawag, sabihin nating, kumusta. 90 00:03:52,580 --> 00:03:55,780 Ngayon dati, maaaring na-save na ako ito kahit na may extension ng file, 91 00:03:55,780 --> 00:03:57,910 ngunit ako pagpunta sa gawin isang bagay na mas simple dito. 92 00:03:57,910 --> 00:04:02,450 Pupunta ako sa sige at simulan ang file na ito gamit ang misteryosong syntax. 93 00:04:02,450 --> 00:04:06,310 Kaya "user, bin, env, para sa kapaligiran, php. " 94 00:04:06,310 --> 00:04:10,670 >> Ito ay simpleng isang linya ng code na pagpunta sa sabihin sa aking mga operating system, 95 00:04:10,670 --> 00:04:13,730 pumunta makita sa iyong lokal na kapaligiran kahit anong iyon ay, 96 00:04:13,730 --> 00:04:18,149 kung saan man is-- PHP ang interpreter-- at sige at gamitin ang interpreter na 97 00:04:18,149 --> 00:04:20,589 upang bigyang-kahulugan ang sumusunod na code. 98 00:04:20,589 --> 00:04:22,760 Ngayon, ito ay uri ng isang mainit ang ulo tampok ng PHP. 99 00:04:22,760 --> 00:04:24,980 Ngunit sa wikang ito, ang anumang mga oras sumulat ka ng code na PHP, 100 00:04:24,980 --> 00:04:29,200 kailangan mong magkaroon ng isa sa mga pangit Mga tag PHP demarcating simula 101 00:04:29,200 --> 00:04:32,220 ng iyong code-- 00:04:37,430 >> Ngunit sa ibaba dito, maaari ko na ngayong gawin ang isang bagay medyo simple, tulad ng printf kumusta kuwit 103 00:04:37,430 --> 00:04:40,922 mundo backslash n malapit quote, isara panaklong. 104 00:04:40,922 --> 00:04:42,630 At pagkatapos ay para lamang sa mga mabuting Ang panukala, pupuntahan ko 105 00:04:42,630 --> 00:04:45,380 upang sige at malapit aking php tag sa ibabaw dito 106 00:04:45,380 --> 00:04:47,390 upang ang hitsura lahat mabuti medyo naka-print na. 107 00:04:47,390 --> 00:04:50,780 >> At sa lalong madaling i-click ang I-save ang ko, gedit ay ang tunay na smart sapat 108 00:04:50,780 --> 00:04:54,620 tumingin sa mga na napaka-unang linya at Napag-alaman, oh, sumusulat ka ng code na PHP. 109 00:04:54,620 --> 00:04:56,710 Hayaan akong syntax highlight ito sa mga kulay 110 00:04:56,710 --> 00:04:58,690 dito nang sa gayon ay nakatayo ito out ng kaunti pa. 111 00:04:58,690 --> 00:05:01,300 Ngunit ngayon ako pagpunta sa pumunta pababa sa aking terminal na window. 112 00:05:01,300 --> 00:05:02,340 Magtatagal ako mag-zoom in. 113 00:05:02,340 --> 00:05:06,860 >> Ang programang ito ay tinawag na "hello," kaya ako pagpunta sa gawin tuldok slash kumusta, 114 00:05:06,860 --> 00:05:07,990 ngunit hindi pinahintulutan. 115 00:05:07,990 --> 00:05:08,490 At malakas na palo. 116 00:05:08,490 --> 00:05:10,610 Talaga namin narinig ng na bagay ng ilang mga linggo na nakalipas 117 00:05:10,610 --> 00:05:13,140 sa konteksto ng Shellshock, isa sa mga bug. 118 00:05:13,140 --> 00:05:16,240 >> Ngunit hindi pinahintulutan nasaksihan namin bago, marahil sa ibang konteksto. 119 00:05:16,240 --> 00:05:19,060 Sinuman isipin ang kung paano maaari mong ayusin ang isang bagay 120 00:05:19,060 --> 00:05:22,100 kung saan ang pahintulot ay tinanggihan tulad nito? 121 00:05:22,100 --> 00:05:23,490 Ano ang utos, ng hindi bababa? 122 00:05:23,490 --> 00:05:24,159 >> MAG-AARAL: Chmod. 123 00:05:24,159 --> 00:05:26,700 David J. MALAN: Oo, chmod, para sa pagbabago ng mode ng isang file. 124 00:05:26,700 --> 00:05:30,171 At makakakuha ka ng lahat ng higit na ginagamit upang ito sa susunod na linggo sa isang kasunod na problema 125 00:05:30,171 --> 00:05:30,670 -set. 126 00:05:30,670 --> 00:05:33,211 Ngunit sa ngayon, Pupunta ako upang baguhin ang mode na hindi upang mabasa, 127 00:05:33,211 --> 00:05:36,650 ngunit upang mabigyan ang lahat executeability pribilehiyo, ang kakayahang 128 00:05:36,650 --> 00:05:37,710 upang patakbuhin ang file na ito. 129 00:05:37,710 --> 00:05:40,360 At ako pagpunta sa italaga na sa file kumusta. 130 00:05:40,360 --> 00:05:45,150 >> Kung ngayon gagawin ko tuldok slash kumusta magpasok, mo makita, sa katunayan, ang aking mga programa, kumusta mundo. 131 00:05:45,150 --> 00:05:48,760 At kung ano ang hakbang na ginawa ko malinaw laktawan nang sama-sama? 132 00:05:48,760 --> 00:05:49,520 Kino-compile. 133 00:05:49,520 --> 00:05:51,680 Kaya lang tumakbo ako sa programang ito medyo simple. 134 00:05:51,680 --> 00:05:55,690 >> At ito ay lumiliko out maaari mong gawin ito gamit ang Marami nakapagpapaalaala ng C. ng syntax 135 00:05:55,690 --> 00:06:03,400 Hayaan akong pumunta sa code ngayon, na kung saan ko bang ilagay sa aking direktoryo vhost 136 00:06:03,400 --> 00:06:05,250 dito, para sa tunay na mga dahilan kami ay bumalik sa. 137 00:06:05,250 --> 00:06:09,350 At ako pagpunta sa pumunta sa, sabihin nating, mga kondisyon 1. 138 00:06:09,350 --> 00:06:12,450 >> At makikita mo dito, una at nangunguna sa lahat, ang maramihang mga komento. 139 00:06:12,450 --> 00:06:15,240 Ngunit ito ay talagang isang muling paglikha sa PHP 140 00:06:15,240 --> 00:06:18,960 ng isang programa ginawa namin sa linggo isa na tinatawag na mga kondisyon 1.c 141 00:06:18,960 --> 00:06:20,690 kung saan ang mga layunin sa buhay ng programang ito 142 00:06:20,690 --> 00:06:22,950 ay tila upang hilingin ang user para sa isang integer 143 00:06:22,950 --> 00:06:25,270 at pagkatapos ay gawin ang ilang mga malambot pag-aaral sa kung saan ito 144 00:06:25,270 --> 00:06:29,510 sabihin sa iyo kung ito ay positibo o negatibong o katumbas ng zero. 145 00:06:29,510 --> 00:06:34,220 At dalhin ko ito up lamang dahil, maliban sa siguro isang maliit na detalye, 146 00:06:34,220 --> 00:06:37,150 ito ay hindi mapagkilala ang pagkakaiba sa ngayon mula sa C. 147 00:06:37,150 --> 00:06:39,930 >> Ano ang isang katangian dito na siguro jumps out 148 00:06:39,930 --> 00:06:41,410 sa iyo bilang isang maliit na naiiba? 149 00:06:41,410 --> 00:06:42,160 Siguro ang dalawang bagay. 150 00:06:42,160 --> 00:06:42,660 Oo? 151 00:06:42,660 --> 00:06:44,070 >> MAG-AARAL: sign n Dollar? 152 00:06:44,070 --> 00:06:44,944 >> David J. MALAN: Oo. 153 00:06:44,944 --> 00:06:46,210 Kaya dollar sign n ay naroroon. 154 00:06:46,210 --> 00:06:48,120 At mga palatandaan ng dolyar, bilang ipapakita namin makita, ay pumunta sa 155 00:06:48,120 --> 00:06:51,460 upang maging isang remedyo sa simula ng anumang variable sa PHP. 156 00:06:51,460 --> 00:06:54,250 Ito ay parehong mabuti at bad-- magandang sa na ito'y isang uri ng halata kung ano ang 157 00:06:54,250 --> 00:06:56,797 isang variable, masamang sa na ito isa pang bagay na mag-type. 158 00:06:56,797 --> 00:06:58,630 At mayroong isang iba pang bagay na mayroon kaming hindi pa 159 00:06:58,630 --> 00:07:00,876 nakita, ng hindi bababa sa pamamagitan ng ito sa spelling. oo? 160 00:07:00,876 --> 00:07:01,630 >> MAG-AARAL: Readline. 161 00:07:01,630 --> 00:07:02,671 >> David J. MALAN: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline hindi namin nakita, per se, sa C, kahit na may umiiral ng isang bagay 163 00:07:06,550 --> 00:07:09,530 pareho, ngunit gagamitin namin ang getstring, at ito ay kamukhang-mukha nito. 164 00:07:09,530 --> 00:07:12,950 Kaya kung pumunta ako sa ito direktoryo, na kung saan ang mangyayari sa maging, 165 00:07:12,950 --> 00:07:18,030 bilang Ipapaliwanag ko kung sa ilang sandali sa aking vhost direktoryo at sa aking pinagmulan Isang direktoryo, 166 00:07:18,030 --> 00:07:22,730 at pumunta ako magpatuloy at gawin tuldok slash conditions-- whoops-- tuldok slash 167 00:07:22,730 --> 00:07:26,710 kondisyon 1, makikita mo, muli, ang parehong issue-- pahintulot tinanggihan. 168 00:07:26,710 --> 00:07:33,610 >> Kaya hayaan mo akong mag-zoom in at gawin chmod ng plus x sa mga kondisyon, mga kondisyon na tuldok slash. 169 00:07:33,610 --> 00:07:35,222 Gusto ko ng isang integer, mangyaring, 50. 170 00:07:35,222 --> 00:07:36,930 At maaari naming i-play ito lahat ng araw mahaba ang laro. 171 00:07:36,930 --> 00:07:39,140 Ito ay pagpunta sa kumilos nang eksakto tulad ng ginawa nito sa linggo isa. 172 00:07:39,140 --> 00:07:42,860 >> OK kaya hindi lahat na naiiba, maliban hindi lamang na bahagyang bit ng syntax, 173 00:07:42,860 --> 00:07:45,490 ngunit sa tuktok, muli ako Nagkaroon linyang ito na 174 00:07:45,490 --> 00:07:49,760 pinapayagan sa akin upang lumikha ng isang bagay na mukhang isang programa na tinatawag na C halo, 175 00:07:49,760 --> 00:07:51,150 na tinatawag na mga kundisyon 1. 176 00:07:51,150 --> 00:07:54,520 Pero hindi 0 mga at Direktang ako e-execute. 177 00:07:54,520 --> 00:07:57,620 Sa halip ito ay tumatakbo na ito interpreter ang pangalan 178 00:07:57,620 --> 00:07:59,440 ang mangyayari sa maging kapareho ng wika. 179 00:07:59,440 --> 00:08:04,970 Ang programa ay tinatawag na PHP, at ang aking code sa ibaba linya isa ay pumasa sa mga ito. 180 00:08:04,970 --> 00:08:07,740 >> Maaari naming gawin ang isa pang medyo simple Halimbawa nakapagpapaalaala ng isang bagay 181 00:08:07,740 --> 00:08:09,240 ginawa namin linggo ang nakalipas. 182 00:08:09,240 --> 00:08:12,020 Muli, ito ay isang uri ng arbitrary na tipak ng code 183 00:08:12,020 --> 00:08:14,000 na tila ang kung ano kapag tumakbo mo ito? 184 00:08:14,000 --> 00:08:15,625 Ano ang ito pagpunta sa i-print, siguro? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Kaya simula sa 16 linya, ito ay pagpunta sa sabihin x na ngayon ang 2, malamang. 187 00:08:28,250 --> 00:08:30,920 % D ay kapareho ng $ i para sa printf. 188 00:08:30,920 --> 00:08:33,460 Kaya pagkatapos ito cubing, tuldok, tuldok, tuldok, sa 17 na linya. 189 00:08:33,460 --> 00:08:36,299 At pagkatapos ay line 18 nakita tumawag sa isang function na nakakubo. 190 00:08:36,299 --> 00:08:37,600 At kung saan tinukoy ay nakakubo? 191 00:08:37,600 --> 00:08:40,319 >> Well, mukhang sa 25 linya, nang sa gayon ay hindi lahat na naiiba. 192 00:08:40,319 --> 00:08:42,610 Nakakuha ako ng ilang mga komento sa itaas ito, ngunit para sa pinaka-bahagi, 193 00:08:42,610 --> 00:08:45,370 ito ay isang medyo simple pag-port o conversion 194 00:08:45,370 --> 00:08:48,470 mula sa C programa sa bersyon ng PHP. 195 00:08:48,470 --> 00:08:52,670 Ngunit may mga ngayon ng ilang pagkakaiba na siguro ay dapat tumalon out. 196 00:08:52,670 --> 00:08:56,100 Ano pa ang ibang tungkol sa kung paano mo Maaaring isulat ang parehong programa sa C? 197 00:08:56,100 --> 00:08:57,900 >> MAG-AARAL: [hindi marinig]. 198 00:08:57,900 --> 00:09:00,070 >> David J. MALAN: Mayroong walang prototype up tuktok. 199 00:09:00,070 --> 00:09:03,210 Kaya PHP-- at lantaran, isang maraming modernong languages-- 200 00:09:03,210 --> 00:09:06,920 Maraming mas matalino at mas kapaki-pakinabang sa C compiler sa na 201 00:09:06,920 --> 00:09:09,740 Maaaring ilagay ang pag-andar dito, maaari kang maglagay ng isang function down na dito, 202 00:09:09,740 --> 00:09:12,740 at ang interpreter ay pagpunta gawin mo ang pabor ng pagbabasa 203 00:09:12,740 --> 00:09:16,010 ang buong file bago ito ay nagpasiya na ang ilang mga function na ay hindi umiiral. 204 00:09:16,010 --> 00:09:17,970 Kaya maganda pagpapabuti taon sa ibang pagkakataon. 205 00:09:17,970 --> 00:09:22,126 Ngunit mayroon ding isang bagay iba ibang o wala dito. 206 00:09:22,126 --> 00:09:22,626 Oo? 207 00:09:22,626 --> 00:09:25,084 >> MAG-AARAL: [hindi marinig]. 208 00:09:25,084 --> 00:09:27,750 David J. MALAN: Hindi namin kailangang Ipinahahayag ng mga uri ng variable, 209 00:09:27,750 --> 00:09:31,780 kaya gagamitin namin makita bago mahaba na mayroong iba't ibang mga uri sa PHP, 210 00:09:31,780 --> 00:09:34,970 ngunit hindi mo na kailangan upang tukuyin ang mga ito, na rin ay parehong mabuti at masama. 211 00:09:34,970 --> 00:09:36,623 At mayroong isa pang nawawalang bagay. 212 00:09:36,623 --> 00:09:37,430 >> MAG-AARAL: Walang mga aklatan. 213 00:09:37,430 --> 00:09:38,630 >> David J. MALAN: Walang mga aklatan. 214 00:09:38,630 --> 00:09:39,350 OK, kaya na mabait. 215 00:09:39,350 --> 00:09:40,540 Kumuha kami ng maraming higit pa mula sa kahon. 216 00:09:40,540 --> 00:09:43,373 Kaya talagang ng maraming higit pa bagay kaysa sa naisip ko ay naiiba. 217 00:09:43,373 --> 00:09:44,350 Paano tungkol sa paraan sa likod? 218 00:09:44,350 --> 00:09:46,032 Ano iyon? 219 00:09:46,032 --> 00:09:46,740 Sabihin ito sa sandaling higit pa? 220 00:09:46,740 --> 00:09:47,960 >> MAG-AARAL: pointer. 221 00:09:47,960 --> 00:09:49,270 >> David J. MALAN: Walang mga payo. 222 00:09:49,270 --> 00:09:51,280 OK, hindi bababa sa halimbawang ito, hindi. 223 00:09:51,280 --> 00:09:52,070 Iyon ang patas. 224 00:09:52,070 --> 00:09:55,090 Kaya may mga hindi na pointer sa PHP aktwal na sa pangkalahatan. 225 00:09:55,090 --> 00:09:58,730 May isang bagay na tinatawag na mga sanggunian, ngunit hindi namin gastusin ng masyadong maraming oras doon. 226 00:09:58,730 --> 00:09:59,520 At ano pa? 227 00:09:59,520 --> 00:10:00,185 >> MAG-AARAL: Main. 228 00:10:00,185 --> 00:10:01,060 David J. MALAN: Main. 229 00:10:01,060 --> 00:10:02,768 Kaya ito ay ang malaking problema Ako ay nag-iisip ng. 230 00:10:02,768 --> 00:10:04,660 Pansinin walang pangunahing entry point. 231 00:10:04,660 --> 00:10:06,525 Simulan mo lamang ang pagsusulat ng iyong code. 232 00:10:06,525 --> 00:10:08,400 At ito ay ang tunay magiging kapaki-pakinabang 233 00:10:08,400 --> 00:10:10,560 kapag lumipat kami sa ilang sandali lamang sa aktwal na paggamit 234 00:10:10,560 --> 00:10:13,980 ang parehong wika para sa web-based programming, na kung saan namin 235 00:10:13,980 --> 00:10:16,580 ayaw na magkaroon ng entry point lang. 236 00:10:16,580 --> 00:10:19,980 Maaaring gusto naming magkaroon ng isang bungkos ng URL, isang bungkos ng iba't ibang mga file 237 00:10:19,980 --> 00:10:22,930 lahat ng pagkuha sa input ng user at gumagawa ng output. 238 00:10:22,930 --> 00:10:27,130 >> Ngunit dito ay ang napaka-disheartening Halimbawa na ipinangako ko noong huli, 239 00:10:27,130 --> 00:10:30,130 lalo sa folder na ito dito, mga maling spelling. 240 00:10:30,130 --> 00:10:33,680 Kaya sa ang file na ito speller, na namin Hindi gastusin ng masyadong maraming panahon sa, mayroong 241 00:10:33,680 --> 00:10:37,870 mahalagang isang porting-- P-O-R-T. Ito ay lamang ang salitang ibinigay kapag, halimbawa, 242 00:10:37,870 --> 00:10:40,800 -convert mo mula sa isang wika sa isa pang manu-manong karaniwang. 243 00:10:40,800 --> 00:10:45,680 >> Ito ay isang pag-port ng PC bersyon ng speller mula PSET 5. 244 00:10:45,680 --> 00:10:48,856 At tunay ko sinubukang i-convert ito linya sa pamamagitan ng linya nang mas malapit hangga't maaari ko. 245 00:10:48,856 --> 00:10:51,730 Kaya kung nais mo ang ganitong uri ng bagay, ito talaga ay nagkakahalaga ng sa isang punto 246 00:10:51,730 --> 00:10:54,229 kumukuha ng mga ito sa parehong up bahagi ng gilid at makita kung ano ang parehong 247 00:10:54,229 --> 00:10:55,230 at kung ano ang kakaiba. 248 00:10:55,230 --> 00:10:57,510 Ngunit ang mga ito ay medyo nagsulsi katulad. 249 00:10:57,510 --> 00:11:00,110 Kung maalala mo kung ano ang speller kahit na mukhang, 250 00:11:00,110 --> 00:11:02,110 kahit na hindi mo ginawa Mayroon upang baguhin ang file na ito, 251 00:11:02,110 --> 00:11:04,860 ito ay medyo katulad structurally na may ilang lamang 252 00:11:04,860 --> 00:11:06,200 ng mga pagbabago dito at doon. 253 00:11:06,200 --> 00:11:10,140 >> Kaya ito ay lamang upang sabihin na ito ay medyo prangka i-convert ang speller 254 00:11:10,140 --> 00:11:12,000 mula sa C upang PHP. 255 00:11:12,000 --> 00:11:15,390 Ngunit sa diksyunaryo, mayroong isang bagay kahit na mas nakakahimok. 256 00:11:15,390 --> 00:11:19,270 Hayaan akong magpatuloy at lumikha ang aking sariling dictionary.php file. 257 00:11:19,270 --> 00:11:24,010 Kaya bahagyang naiiba sa na Makikita kami tatawag ito .php sa halip na .c. 258 00:11:24,010 --> 00:11:26,980 Dahil ito ay isang file na PHP, ako do-- bahagyang annoyingly-- mayroon 259 00:11:26,980 --> 00:11:30,132 upang simulan ang file gamit isang php tag tulad na. 260 00:11:30,132 --> 00:11:32,340 At ako pagpunta sa sige at tukuyin ang ilang mga pag-andar. 261 00:11:32,340 --> 00:11:35,770 Ang function na tinatawag na tseke, na kung saan ay pagpunta sa tumagal ng sa isang salita tulad ng dati. 262 00:11:35,770 --> 00:11:37,520 Ngunit argument na ito pagpunta sa magkaroon ng isang dolyar 263 00:11:37,520 --> 00:11:39,840 -sign dahil kami ay, muli, gamit ang PHP. 264 00:11:39,840 --> 00:11:42,350 Ang isa pang pag-andar mula sa dictionary.c ay-load 265 00:11:42,350 --> 00:11:47,120 at ito kinuha sa pangalan ng isang diksyunaryo, kaya magagawa ko na ang pag-andar nang humayo. 266 00:11:47,120 --> 00:11:50,920 >> Ang isa pang isa sa dictionary.c ay kung ano? 267 00:11:50,920 --> 00:11:54,580 Sukat noon ay isa sa mga nicest mga bago, sa hindi bababa sa kung iningatan ang ilang mga variable sa paligid. 268 00:11:54,580 --> 00:11:57,830 kaya laki lamang ay may upang bumalik sa isang variable. 269 00:11:57,830 --> 00:11:59,090 At pagkatapos ay nagkaroon tanggalin sa pagkakalagay. 270 00:11:59,090 --> 00:12:02,830 >> Kaya mayroong mga apat na function sa problema set 5 271 00:12:02,830 --> 00:12:06,770 na iyong kailangan upang ipatupad sa ang ilang mga istraktura ng data o istruktura. 272 00:12:06,770 --> 00:12:10,170 Kaya ko ipinangako na sa PHP, maaari naming ipinahahayag 273 00:12:10,170 --> 00:12:14,490 isang hash talahanayan, halimbawa, lahat na mas madali. 274 00:12:14,490 --> 00:12:17,377 Sa katunayan, kung gusto ko ng hash table, Lamang ako ng pagpunta sa pumunta tulad na 275 00:12:17,377 --> 00:12:18,460 at mayroong aking hash talahanayan. 276 00:12:18,460 --> 00:12:21,555 At iyon ang tala, disheartening, na huminto kami sa huling pagkakataon. 277 00:12:21,555 --> 00:12:23,930 At alam mo kung ano, kung nais ko isang variable para sa laki, na rin, 278 00:12:23,930 --> 00:12:25,867 ang isang ito ay hindi lahat na iba mula sa C, 279 00:12:25,867 --> 00:12:27,450 ngunit Pupunta ako sa magpatuloy at gawin iyon. 280 00:12:27,450 --> 00:12:28,630 At mapansin ang walang uri ng data. 281 00:12:28,630 --> 00:12:31,180 At Kukunin ko bumalik sa ibang pagkakataon at aktwal na magdagdag ng ilang mga komento dito. 282 00:12:31,180 --> 00:12:32,480 Ngunit kung ano ang tungkol sa pag-load? 283 00:12:32,480 --> 00:12:35,780 >> Kung diksyunaryo dollar sign ay ang pangalan ng aking mga file 284 00:12:35,780 --> 00:12:39,600 at aktwal ko nais na i-load mga salita sa talahanayan na ito ngayon, 285 00:12:39,600 --> 00:12:42,360 Maaari ko talagang gawin medyo simple ng isang bagay. 286 00:12:42,360 --> 00:12:44,880 One-- at ito ay minorly annoying-- sa PHP, 287 00:12:44,880 --> 00:12:47,710 kailangan mong tukuyin ang loob ng isang function kung 288 00:12:47,710 --> 00:12:51,060 Nais na i-access ang ilang mga global variable na tinukoy sa labas. 289 00:12:51,060 --> 00:12:53,530 >> Ngunit hindi iyon lalo na kagiliw-giliw na ngayon. 290 00:12:53,530 --> 00:12:57,920 Ano ang mas kawili-wiling ay na ito para sa bawat magtayo na nabanggit ko huling beses. 291 00:12:57,920 --> 00:13:01,880 At ito ay lumiliko out na may isang function na PHP na tinatawag na file na layunin sa buhay 292 00:13:01,880 --> 00:13:05,550 ay upang buksan ang isang file at basahin sa ang lahat ng mga linya nito sa isang array 293 00:13:05,550 --> 00:13:06,840 at ipasa ang mga ito pabalik sa. 294 00:13:06,840 --> 00:13:12,170 >> Alin ang sasabihin ang maaari kong gawin diksyunaryo kaya na ngayon mabisa kapag tumawag ako ng file, 295 00:13:12,170 --> 00:13:15,472 ito ay pagpunta sa ipasa ako pabalik isang hanay ng mga salita mula sa mga file. 296 00:13:15,472 --> 00:13:16,430 Hindi lahat ng magandang iyon. 297 00:13:16,430 --> 00:13:20,130 Nangyayari ito pa rin upang maging isang linya ng mga salita, isang bagay na sa guhit. 298 00:13:20,130 --> 00:13:23,880 Ngunit maaari kong magpatuloy at umulit sa ibabaw ng bawat isa sa mga salitang ito gamit ang 299 00:13:23,880 --> 00:13:25,710 na syntax ng nakita natin sa madaling sabi huling beses. 300 00:13:25,710 --> 00:13:27,940 At makikita mo ito nang higit pa sa paparating na PSET. 301 00:13:27,940 --> 00:13:32,070 >> Ngunit ngayon mayroon akong isang loop iterating sa ibabaw ng bawat salita sa diksyunaryo. 302 00:13:32,070 --> 00:13:36,100 At sa bawat pag-ulit, isipin ang ako pagtawag sa kasalukuyang salitang "salita." 303 00:13:36,100 --> 00:13:39,790 At lahat ng ito ay pagpunta sa gawin upang maglagay ng salita sa diksyunaryo ay 304 00:13:39,790 --> 00:13:43,530 magiging salita hula "totoo." 305 00:13:43,530 --> 00:13:44,740 Iyon ang aking insert function. 306 00:13:44,740 --> 00:13:46,661 Iyon ang aking pag-andar ng pag-load para sa aking diksiyunaryo. 307 00:13:46,661 --> 00:13:49,410 Ngayon ito ay isang bit ng isang impostor dahil, alam mo kung ano, may aktwal 308 00:13:49,410 --> 00:13:52,920 backslash n ni sa dulo ng mga salita na dapat marahil ko mapupuksa ang, 309 00:13:52,920 --> 00:13:56,380 ngunit hindi iyon problema dahil PHP ay isang function na tinatawag na tumaga na literal 310 00:13:56,380 --> 00:13:58,480 chops-off sa isang character sa dulo. 311 00:13:58,480 --> 00:13:59,400 Kaya walang problema doon. 312 00:13:59,400 --> 00:14:02,199 Nawala namin magpatuloy at aktwal pinaikling na lang ito. 313 00:14:02,199 --> 00:14:05,240 At ngayon marahil ko dapat subaybayan ng laki, kaya sabihin ng hindi bababa sa gawin this-- 314 00:14:05,240 --> 00:14:05,835 laki ++. 315 00:14:05,835 --> 00:14:07,339 Ang maaari kong gawin na tulad ng dati. 316 00:14:07,339 --> 00:14:10,380 At pagkatapos na ito ay marahil pagpunta sa gagana lamang fine, kaya na nagbabalik ng tunay. 317 00:14:10,380 --> 00:14:10,930 Tapos na. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Tawa] 320 00:14:13,545 --> 00:14:14,420 >> David J. MALAN: OK. 321 00:14:14,420 --> 00:14:16,628 Kami ay pagpunta sa gawin muli na sa mga susunod na PSET, masyadong. 322 00:14:16,628 --> 00:14:18,730 Kaya kung ano ang tungkol sa laki? 323 00:14:18,730 --> 00:14:22,080 Well, ang isang ito sana ay tungkol sa bilang iyong inaasahan huling oras, 324 00:14:22,080 --> 00:14:24,460 bagaman kailangan kong gawin ito ugok pandaigdigang bagay. 325 00:14:24,460 --> 00:14:26,610 Ito ay lamang ng isang artepakto mula sa disenyo ng wika. 326 00:14:26,610 --> 00:14:28,450 >> Ngunit tseke ay isang maliit na mas kawili-wiling. 327 00:14:28,450 --> 00:14:31,420 Kaya kung ang pumasa ko sa dolyar -sign salita, ang aking unang 328 00:14:31,420 --> 00:14:34,060 nais magkaroon ng access sa variable talahanayan na global. 329 00:14:34,060 --> 00:14:36,700 At ngayon kapag gusto kong suriin kung ang isang salita ay doon, 330 00:14:36,700 --> 00:14:44,350 Maaari ko lamang sabihin kung ito ay tunay na ang sumusunod ay nakatakda sa talahanayan, 331 00:14:44,350 --> 00:14:49,957 pagkatapos ay magpatuloy at return true; tao, return false. 332 00:14:49,957 --> 00:14:51,180 Tapos na. 333 00:14:51,180 --> 00:14:52,440 Ang iba pang kalahati ng PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Ang lahat ng mga karapatan, sa gayon muli, ako pag-cut ng ilang mga sulok. 335 00:14:54,540 --> 00:14:56,831 Sa pagkamakatarungan, dapat ko marahil gumastos ng ilang higit pang mga segundo 336 00:14:56,831 --> 00:14:58,300 sa pagpapatupad na ito. 337 00:14:58,300 --> 00:15:01,860 At hindi ko marahil ay dapat aasarin lahat ng mga oras na inilagay mo sa PSET kaya magkano. 338 00:15:01,860 --> 00:15:04,045 Kaya strtolower ay isang function. 339 00:15:04,045 --> 00:15:06,670 Isang bagay na katulad existentialist sa C, hindi bababa sa para sa mga character, 340 00:15:06,670 --> 00:15:08,560 pero nakakuha PHP ng isang buong string na bersyon. 341 00:15:08,560 --> 00:15:11,226 >> Iyon ang nangyayari upang pilitin ang lahat sa lowercase, na ang ilan sa iyo 342 00:15:11,226 --> 00:15:14,944 maaaring nagawa sa canonicalize kung ano ikaw ay paglagay sa iyong diksyunaryo. 343 00:15:14,944 --> 00:15:16,360 At ngayon maaari mong gawin ito sa C, masyadong. 344 00:15:16,360 --> 00:15:17,780 Ito ay may kinalaman sa PHP. 345 00:15:17,780 --> 00:15:20,260 >> Ngunit anumang oras mayroon kang isang Boolean kondisyon, 346 00:15:20,260 --> 00:15:22,680 tulad ng isang bagay sa linya 10 doon, na lamang 347 00:15:22,680 --> 00:15:27,145 pagpunta upang suriin sa true o false, at ang iyong mga tao kung malinaw 348 00:15:27,145 --> 00:15:33,620 ay bumabalik na tama o mali, maaari ko lamang talagang gawin ito sexier 349 00:15:33,620 --> 00:15:38,360 at gawin lamang ng isang bagay na katulad nito. 350 00:15:38,360 --> 00:15:40,500 Kaya na mayroong aking function na tseke. 351 00:15:40,500 --> 00:15:42,560 I-right, kung ang Boolean Ibinabalik ng isang true o false ng, 352 00:15:42,560 --> 00:15:44,630 hayaan bumalik lang natin ito kaagad. 353 00:15:44,630 --> 00:15:47,340 >> At mayroong ilang iba pang mga pag-aayos Maaari kong gawin dito at doon. 354 00:15:47,340 --> 00:15:51,380 Load-- mag-ibis maglapag, sa pamamagitan ng mga paraan, na tapos na. 355 00:15:51,380 --> 00:15:52,850 Walang kinalaman doon. 356 00:15:52,850 --> 00:15:55,840 Dahil ang lahat ng memory sa PHP at marami pang ibang mga wika 357 00:15:55,840 --> 00:15:57,570 ay talagang pinamamahalaang para sa iyo. 358 00:15:57,570 --> 00:16:00,330 Kaya samantalang sa C, bilang ang iyong natutunan painfully, 359 00:16:00,330 --> 00:16:04,700 anumang bagay na malloc o calloc o realloc, mayroon kang upang magbakante ng iyong sarili. 360 00:16:04,700 --> 00:16:08,770 Kahit ano fopen mo, kailangan mong fclose, upang ang mga mapagkukunan sa huli napalaya 361 00:16:08,770 --> 00:16:11,690 at mga tool tulad ng Valgrind hindi mapansin at huwag magreklamo, 362 00:16:11,690 --> 00:16:13,570 kung saan ay isang magandang bagay upang tumakbo sa mga ito. 363 00:16:13,570 --> 00:16:16,190 >> Ngunit tiyak, mayroong dapat ilang catch, tama? 364 00:16:16,190 --> 00:16:19,400 Kung hindi man, uri ng namin nasayang ang maramihang mga linggo. 365 00:16:19,400 --> 00:16:23,270 Kaya mayroong anumang bilang ng mga kadahilanan bakit namin uri ng tumagal ito tilapon, 366 00:16:23,270 --> 00:16:24,440 ngunit mayroong isang kalakalan-off. 367 00:16:24,440 --> 00:16:25,820 I-right, ito ay base sa paksa. 368 00:16:25,820 --> 00:16:29,690 >> Kaya kung ano ang maaari isang kalakalan-off dito sa paglipat, mula sa C upang PHP? 369 00:16:29,690 --> 00:16:33,250 Pakiramdam ng tulad ng lahat ng mananalo sa ngayon bukod sa ng kaunting pagkapangit dito o doon. 370 00:16:33,250 --> 00:16:34,040 Oo. 371 00:16:34,040 --> 00:16:34,700 Ano iyon? 372 00:16:34,700 --> 00:16:36,064 >> MAG-AARAL: [hindi marinig] memory. 373 00:16:36,064 --> 00:16:36,980 David J. MALAN: Bilis. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Well, ang aking bilis ay medyo mabilis. 376 00:16:40,720 --> 00:16:42,020 Mag-right? 377 00:16:42,020 --> 00:16:44,320 Ngunit bilis ng pagpapatupad ng programa? 378 00:16:44,320 --> 00:16:45,580 OK, kaya na ang isang patas na punto. 379 00:16:45,580 --> 00:16:50,930 >> Kaya tulad ng ito nangyari, ako nang maaga cued up parehong aking try solusyon, ang isang 380 00:16:50,930 --> 00:16:53,510 Nagkaroon na ako sa malaking board ay isang solusyon try-based, 381 00:16:53,510 --> 00:16:55,510 at mayroon ko na sa direktoryong ito dito. 382 00:16:55,510 --> 00:16:58,510 Kaya ako sa ilang sandali, ang maaari kong magpatuloy at patakbuhin ito sa King James Bibliya, 383 00:16:58,510 --> 00:16:59,657 ng pagpindot sa Enter. 384 00:16:59,657 --> 00:17:01,990 At ito ay sana ay tama pagpapatupad sa dulo, 385 00:17:01,990 --> 00:17:05,109 ay nagbibigay sa akin oras sa kabuuang ng 0.38 segundo para sa 386 00:17:05,109 --> 00:17:07,270 isa medyo arbitrary na halimbawa. 387 00:17:07,270 --> 00:17:09,270 >> At kung pumunta ako ngayon sa na ito pangalawang terminal na window 388 00:17:09,270 --> 00:17:14,569 dito kung saan unang ko binuksan gedit, sabihin sa akin pumunta sa code-- ngayon kung saan, muli, 389 00:17:14,569 --> 00:17:19,650 ay nasa direktoryong ito here-- at ipaalam sa akin sige at patakbuhin ang speller. 390 00:17:19,650 --> 00:17:23,470 Kaya maging malinaw lamang, ito ay ang bersyon ng PHP. 391 00:17:23,470 --> 00:17:25,170 Ako na nagpapakita lamang sa tuktok ng ito dito. 392 00:17:25,170 --> 00:17:32,020 >> Kaya kung gagawin ko speller ng tilda CS50 PSET 5 mga teksto, King James, ipasok. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Ito ay mas mabilis pa rin kaysa sa pagsusulat ito sa C, ngunit ang kabuuang oras 395 00:17:43,050 --> 00:17:47,650 ay, paunawa, 0.93, samantalang ang aking Pagpapatupad batay sa C ay 0.38. 396 00:17:47,650 --> 00:17:49,110 Kaya ito ay isang non-walang halaga pagkakaiba. 397 00:17:49,110 --> 00:17:51,100 >> At ito ay isa lamang sa isang file. 398 00:17:51,100 --> 00:17:53,480 Kung kayo ay upang patakbuhin ang dalawang mga programa kumpara sa malaking board 399 00:17:53,480 --> 00:17:56,510 at magkaroon ng buong bungkos ng input subok, ito ay tiyak na magdagdag ng hanggang. 400 00:17:56,510 --> 00:18:00,310 At kung nagkaroon kami kahit mas malaking hanay ng data, ito, masyadong, ay magdagdag ng hanggang ang lahat ng higit pa. 401 00:18:00,310 --> 00:18:04,820 Kaya oo, pagbabayad ng ilang mga presyo ng bilis nga ang kaso. 402 00:18:04,820 --> 00:18:05,470 Ano pa? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Oo? 405 00:18:08,860 --> 00:18:10,340 >> MAG-AARAL: Halaga ng paggamit RAM. 406 00:18:10,340 --> 00:18:11,756 >> David J. MALAN: Halaga ng paggamit RAM. 407 00:18:11,756 --> 00:18:15,380 Kaya ako ay hindi magbibigay sa isang segundo naisip kapag sumusulat ito PHP 408 00:18:15,380 --> 00:18:17,300 bersyon bilang sa kung magkano memory ako ay ginagamit. 409 00:18:17,300 --> 00:18:22,080 Ganap na ako deferring na sa PHP ang sarili nito at kung sinuman ang nagsulat programang iyon. 410 00:18:22,080 --> 00:18:24,500 At na maaaring OK, ngunit kung ko talagang talaga 411 00:18:24,500 --> 00:18:28,420 nagmamalasakit sa lamira ng maraming pagganap ang aking programa o sa labas ng aking website 412 00:18:28,420 --> 00:18:31,150 o sa labas ng anumang tool Ako sa pagbuo, siguro 413 00:18:31,150 --> 00:18:33,310 PHP, sa katunayan, ay hindi ang tamang wika. 414 00:18:33,310 --> 00:18:36,330 >> At sa katunayan, iyon ay kung bakit, para sa Halimbawa, maraming mga web servers-- 415 00:18:36,330 --> 00:18:38,980 ang aktwal na mga programa na maghatid ng hanggang web content-- 416 00:18:38,980 --> 00:18:41,810 ay hindi nakasulat sa PHP o sa Python o Ruby. 417 00:18:41,810 --> 00:18:44,630 Ang mga ito ay nakasulat, tulad ng makikita mo na ngayon ang gagawin sa PSEt 6, 418 00:18:44,630 --> 00:18:48,120 sa C upang maaari mong kurutin bawat bit ng pagganap out ng ito 419 00:18:48,120 --> 00:18:50,780 at talagang mag-ehersisyo fine-butil na kontrol sa kung ano ang 420 00:18:50,780 --> 00:18:52,980 nangyayari sa ilalim ng hood at hindi tumagal lang ito 421 00:18:52,980 --> 00:18:54,890 para mabigyan ng ilang mga mas mataas na istraktura ng data na antas. 422 00:18:54,890 --> 00:18:58,071 >> Isaalang-alang, pagkatapos ang lahat, kahit sino sa PHP ipinatupad 423 00:18:58,071 --> 00:19:00,070 na kuru-kuro ng isang hash table-- ito ay talagang higit pa 424 00:19:00,070 --> 00:19:04,260 maayos na tinatawag na nag-uugnay array-- ginagawa niya o may siya anumang ideya sa kung anong uri 425 00:19:04,260 --> 00:19:07,090 ng input mo ay magiging paglalagay sa kaayusan? 426 00:19:07,090 --> 00:19:08,260 Kaya malinaw naman hindi, tama? 427 00:19:08,260 --> 00:19:10,340 Ito ay isang pangkaraniwang tool sa toolkit na 428 00:19:10,340 --> 00:19:13,430 ibinigay sa sinuman na nagnanais gamitin ito, at kaya tiyak ito 429 00:19:13,430 --> 00:19:17,680 Hindi maaaring i-optimize sa huli para sa kung ano mismo ang gusto mong gawin. 430 00:19:17,680 --> 00:19:21,180 >> Kaya kalakalan-offs-- oras pag-unlad maaari -iba, ay maaaring maiba pagganap, 431 00:19:21,180 --> 00:19:23,120 pagiging kumplikado o paggamit ng memory ay maaaring maiba. 432 00:19:23,120 --> 00:19:24,820 At kaya kung ano ang makikita mo lalong ay mayroong 433 00:19:24,820 --> 00:19:26,570 pagpunta sa iba mga tool para sa kalakalan. 434 00:19:26,570 --> 00:19:31,160 At sa katunayan para sa isang super karamihan ng huling mga proyekto ng mga tao sa klase na ito, 435 00:19:31,160 --> 00:19:34,360 Naniniwala ito o hindi, C ay hindi papunta sa maging ang mga tamang wika upang gamitin. 436 00:19:34,360 --> 00:19:37,880 >> At sa katunayan, ang isa sa mga takeaways sa huli para sa anumang klase tulad nito 437 00:19:37,880 --> 00:19:40,510 ay upang makakuha ng mong maisip, na rin, ano ang dapat hilahin off mo ang 438 00:19:40,510 --> 00:19:42,710 shelf kung kailan mo nais upang malutas ang ilang mga problema. 439 00:19:42,710 --> 00:19:46,720 At sa katunayan, makikita namin i-cross ang bridge higit pang bilang tinitingnan namin ang higit pang mga wika 440 00:19:46,720 --> 00:19:47,920 kahit na lampas sa ngayon. 441 00:19:47,920 --> 00:19:50,530 >> Kaya ang paglipat ipaalam sa ngayon upang marahil ng isang mas pamilyar na konteksto 442 00:19:50,530 --> 00:19:52,480 para sa paggamit ng wika tulad ng PHP. 443 00:19:52,480 --> 00:19:56,720 Ito ay medyo karaniwang upang gamitin sa sa command line, pagsusulat ng script 444 00:19:56,720 --> 00:19:59,050 tulad ng ginawa ko, ngunit magkano, magkano ang mas karaniwang. 445 00:19:59,050 --> 00:20:02,350 At ito ay inilaan upang gamitin sa sa anyo ng mga file na karaniwang magtapos 446 00:20:02,350 --> 00:20:05,060 sa .php-- ngunit na hindi isang prerequisite-- 447 00:20:05,060 --> 00:20:07,990 na kanilang sarili bumuo ng mga web content. 448 00:20:07,990 --> 00:20:11,310 >> Kaya ipaalam sa akin sige at buksan ang ilang mga mga halimbawa ko ihanda nang maaga. 449 00:20:11,310 --> 00:20:15,100 At ito ay aktwal na uri ng tunay mga kuwento sa na ang isa sa mga unang bagay 450 00:20:15,100 --> 00:20:18,200 Kailanman ginawa ko sa aking sarili pagkatapos Tinatapos CS50 at siguro, sa palagay ko, 451 00:20:18,200 --> 00:20:21,350 CS51 taon na ang nakaraan ay aking kasama sa kuwarto at ako ay pagtulong sa 452 00:20:21,350 --> 00:20:24,320 upang patakbuhin ang presman nasa loob ng lunsod programa sa sports, kung saan, sa panahon, 453 00:20:24,320 --> 00:20:28,610 ay presman pagrehistro para sa iba't ibang sports sa pamamagitan ng pagpuno ng isang piraso ng papel, 454 00:20:28,610 --> 00:20:31,800 dahil ito ay tinawag, naglalakad sa kabuuan ng bakuran sa Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 at pag-drop ito sa ilang pinto drop Proctor ni. 456 00:20:34,030 --> 00:20:37,210 At pagkatapos siya ay pupunta sa pamamagitan ng ang mga ito at pagkatapos ay talagang sa amin nang manu-mano-email 457 00:20:37,210 --> 00:20:39,140 tayo ay nakarehistro para sa ilang mga isport. 458 00:20:39,140 --> 00:20:41,166 >> Kaya malinaw, ng pagkakataon para sa pagpapabuti. 459 00:20:41,166 --> 00:20:44,040 Mga araw na ito, maaari mong i upang lamang Google Forms, ngunit pabalik sa araw, 460 00:20:44,040 --> 00:20:46,914 namin ay may upang aktwal na maabot for-- ito Hindi kahit na mahaba ago-- maabot 461 00:20:46,914 --> 00:20:49,410 para sa isang programming wika na hindi PHP. 462 00:20:49,410 --> 00:20:51,200 Sa oras, ito ay isang bagay na tinatawag Perl, 463 00:20:51,200 --> 00:20:52,890 kung saan ay naging out sa kalakaran dahil. 464 00:20:52,890 --> 00:20:54,160 Ngunit ang ideya ay pareho. 465 00:20:54,160 --> 00:20:58,940 >> At tunay kong umupo pababa upang subukan upang pupunta port bersyon Perl sa PHP, 466 00:20:58,940 --> 00:21:03,710 ngunit sa buong disclaimer, ay hindi magbibigay sa anumang naisip na ang Estetika pa lamang. 467 00:21:03,710 --> 00:21:04,960 Kaya dito ay isang web page. 468 00:21:04,960 --> 00:21:05,670 Ito ay isang file. 469 00:21:05,670 --> 00:21:09,470 Kung mag-zoom in ako, tila nito tinatawag na froshim0.php 470 00:21:09,470 --> 00:21:12,060 dahil lang sa ito ang aming unang Halimbawa sa seryeng ito. 471 00:21:12,060 --> 00:21:15,970 At mapansin na ito ay kung ano ang lumilitaw upang maging isang napaka-pangit na form ng HTML, 472 00:21:15,970 --> 00:21:18,680 ngunit isang form ay kawili-wiling dahil pinapayagan nito 473 00:21:18,680 --> 00:21:21,910 sa akin upang magbigay ng input ng user sa browser. 474 00:21:21,910 --> 00:21:27,730 >> Ngayon huling beses kapag nagkaroon kami ng form na ito, upang kanino ka nagsumite namin ang aming mga parameter ng query, 475 00:21:27,730 --> 00:21:30,450 ang parameter na bilang ito ay tinatawag na pila? 476 00:21:30,450 --> 00:21:31,330 Kaya sa Google, tama? 477 00:21:31,330 --> 00:21:34,090 Lubos naming punted sa ideya ng paggawa ng anumang bagay na may input na iyon. 478 00:21:34,090 --> 00:21:36,160 >> Ngunit ngayon, sisimulan namin ang paggawa output. 479 00:21:36,160 --> 00:21:39,420 At ang pag-uugali Pupunta ako upang makita ang dito sa simula ay medyo hindi mahalaga. 480 00:21:39,420 --> 00:21:42,980 David, magpapadala ako suriin off kasarian dito, sabihin Matthews dito. 481 00:21:42,980 --> 00:21:43,800 Hindi ko ay kapitan. 482 00:21:43,800 --> 00:21:45,410 Pupunta ako sa i-click ang Magrehistro. 483 00:21:45,410 --> 00:21:50,720 At mapansin na ang URL ay Binago upang magparehistro-0.php, 484 00:21:50,720 --> 00:21:52,310 at pagkatapos ay mayroong ito pangit teksto dito. 485 00:21:52,310 --> 00:21:54,460 Nagbigay ako ng walang pag-iisip na ang pag-format ng mga ito. 486 00:21:54,460 --> 00:21:59,900 >> Ngunit kung ano ang kawili-wiling ay na tatlong mga halaga ay tila na ipinasa sa. 487 00:21:59,900 --> 00:22:02,960 Ito ay isang uri ng PHP ni katumbas ng printf-- 488 00:22:02,960 --> 00:22:06,330 ipapakita namin makita kung ano talaga ang tawag dito sa isang bit-- na lamang ng mga Kopya out 489 00:22:06,330 --> 00:22:08,300 kung ano ang pumasa sa mga ito. 490 00:22:08,300 --> 00:22:11,414 Kaya ito ay nagmumungkahi na ang paraan na Nagkaroon ng hindi bababa sa tatlong mga patlang na ito, 491 00:22:11,414 --> 00:22:12,580 at nakita mo sa akin type ang mga ito sa. 492 00:22:12,580 --> 00:22:15,739 Ang isa ay ang aking pangalan, isa ay kasarian, isa ay dormitoryo. 493 00:22:15,739 --> 00:22:18,780 At kapitan ay hindi kahit maipadadala sa ang server dahil hindi ako nag suriin ito. 494 00:22:18,780 --> 00:22:22,150 >> Kaya ito ay upang sabihin sa malas, kapag isinumite mo ang mga bagay sa web, 495 00:22:22,150 --> 00:22:26,830 hindi lamang ang URL kung minsan change-- minsan ito ay hindi. 496 00:22:26,830 --> 00:22:30,330 Sa katunayan, binago ang pangalan ng file, ngunit kung ano ay absent mula sa URL 497 00:22:30,330 --> 00:22:32,861 na ginawa namin makita ang huling beses sa Google. 498 00:22:32,861 --> 00:22:33,360 Oo? 499 00:22:33,360 --> 00:22:34,380 >> MAG-AARAL: Walang string ng query 500 00:22:34,380 --> 00:22:35,220 >> David J. MALAN: Walang query string. 501 00:22:35,220 --> 00:22:37,270 Walang tandang pananong ng isang bagay. 502 00:22:37,270 --> 00:22:40,050 Walang tandang pananong q ay katumbas ng pusa, tulad ng ginawa namin huling beses. 503 00:22:40,050 --> 00:22:42,170 At mayroong tiyak na walang Pangalan ng tandang pananong ay katumbas ng 504 00:22:42,170 --> 00:22:46,310 David o katumbas ng dorm Matthews, kaya kung saan ang lahat ng pagpunta ay? 505 00:22:46,310 --> 00:22:51,290 >> Well, hayaan mo akong bumalik sa gedit dito at buksan ang unang ng mga file 506 00:22:51,290 --> 00:22:57,020 sa aking vhost, lokal na host, pampublikong direktoryo dito at pumunta sa froshim0. 507 00:22:57,020 --> 00:23:02,060 Kaya ito ay lumiliko out na halos lahat ng mga pahinang ito lamang ang HTML. 508 00:23:02,060 --> 00:23:05,410 At ito ay maaaring maging pamilyar sa iyo, ngunit ito sa lalong madaling panahon ay magiging mas kaya may PSET 6 509 00:23:05,410 --> 00:23:07,370 at PSET 7 at 8 PSET. 510 00:23:07,370 --> 00:23:09,160 Ngunit ito lamang ang isang pahina ng HTML. 511 00:23:09,160 --> 00:23:12,400 >> At ang mga kagiliw-giliw na mga bagay-bagay Mukhang sa paglipas dito. 512 00:23:12,400 --> 00:23:16,290 Ang form na tag kung saan ang aksyon na katangian May halaga ng rehistro 0. 513 00:23:16,290 --> 00:23:18,890 Iyon ang dahilan kung bakit kapag isinumite ko ito, ito ang papunta sa file na iyon. 514 00:23:18,890 --> 00:23:20,620 Ngunit pamamaraan ay naiiba post today--. 515 00:23:20,620 --> 00:23:23,120 Kaya ito ay lumiliko out doon ay hindi bababa sa dalawang mga pamamaraan sa web ginagamit 516 00:23:23,120 --> 00:23:24,911 upang magpadala ng impormasyon mula sa browser sa server. 517 00:23:24,911 --> 00:23:25,980 Gamitin naglalagay ito sa URL. 518 00:23:25,980 --> 00:23:27,950 Mag-post ng naglalagay ito sa ibang lugar. 519 00:23:27,950 --> 00:23:30,570 At kung kailan at kung bakit maaari kang talagang gusto ang isang website 520 00:23:30,570 --> 00:23:34,110 gamitin ang post pagkatapos ay sa halip ng makuha, intuitively lamang? 521 00:23:34,110 --> 00:23:37,080 Ang anumang website. 522 00:23:37,080 --> 00:23:42,010 Anong uri ng data ay dapat na maipasa lamang sa pamamagitan ng hinuha na ngayon sa pamamagitan ng post bilang kabaligtaran 523 00:23:42,010 --> 00:23:45,184 upang makakuha ng, kung nasaksihan namin ang dalawang mga pagkakaiba? 524 00:23:45,184 --> 00:23:46,350 MAG-AARAL: [hindi marinig] secure. 525 00:23:46,350 --> 00:23:47,790 David J. MALAN: Kung gusto mong isang bagay na maging ligtas. 526 00:23:47,790 --> 00:23:50,360 Kaya maaaring nagta-type ka ng isang password sa isang website, ang isang credit card 527 00:23:50,360 --> 00:23:53,030 sa isang website gagawin uri ng mga suboptimal 528 00:23:53,030 --> 00:23:56,220 kung ilalagay ang mga browser na halaga sa loob ng URL. 529 00:23:56,220 --> 00:23:57,680 Bakit? 530 00:23:57,680 --> 00:24:00,059 Ang makikita mo ito, na hindi mukhang tulad ng isang malaking deal, 531 00:24:00,059 --> 00:24:03,350 ngunit logro ikaw ay medyo madalas maglakad layo mula sa iyong computer o paggamit ng computer 532 00:24:03,350 --> 00:24:05,310 labs, at sa gayon ang isang tao tao o kahit na isang kasama sa kuwarto 533 00:24:05,310 --> 00:24:08,220 ay madaling lakarin up at tingnan na pribadong impormasyon. 534 00:24:08,220 --> 00:24:10,220 Kapag nagpadala ka ng isang email sa pamamagitan ng web, malamang na 535 00:24:10,220 --> 00:24:12,350 ayaw na nagtatapos data na hanggang sa URL pati na rin. 536 00:24:12,350 --> 00:24:15,266 At kaya mayroong anumang bilang ng mga kadahilanan kung bakit maaari naming nais na ilagay ito dito. 537 00:24:15,266 --> 00:24:18,610 At photos-- karapatan, hindi ko kahit na medyo isipin kung paano mo kumuha ng graphic, 538 00:24:18,610 --> 00:24:21,480 tulad ng isang JPEG, at ilagay ito sa isang URL. 539 00:24:21,480 --> 00:24:22,330 Maaari mong gawin ito. 540 00:24:22,330 --> 00:24:25,840 May mga paraan ng encoding ito, ngunit lamang hindi tuwiran tulad na. 541 00:24:25,840 --> 00:24:29,030 >> Kaya magrehistro 0 ay talagang napaka-underwhelming. 542 00:24:29,030 --> 00:24:31,610 Ang lahat ng mga sinasabi nito ay literal na ito. 543 00:24:31,610 --> 00:24:35,910 Ito Pini-print out sa loob ng ilang HTML tag ang mga sumusunod. 544 00:24:35,910 --> 00:24:38,640 Nakakuha ako ng isang tag PHP dito nested sa loob ng isang paunang tag. 545 00:24:38,640 --> 00:24:42,300 "Pre" ay nangangahulugan lamang pre-formatted na teksto, mono-espasyo, tulad ng isang makinilya. 546 00:24:42,300 --> 00:24:44,836 >> Printr ay isang recursive function na pag-print. 547 00:24:44,836 --> 00:24:46,710 At pagkatapos ay may ito kagiliw-giliw na bagay dito. 548 00:24:46,710 --> 00:24:48,835 At kami ay bumalik sa ito dahil mayroong iba pa, 549 00:24:48,835 --> 00:24:51,140 ngunit dollar sign underscore post ay lilitaw upang maging 550 00:24:51,140 --> 00:24:56,110 isang variable sa PHP kung saan anumang bagay magpadala sa iyo mula sa browser sa server 551 00:24:56,110 --> 00:24:58,040 ay makakakuha ng naka-imbak para sa iyo. 552 00:24:58,040 --> 00:25:00,930 At kami makita kung paano makakuha ng sa na impormasyon bago ang haba. 553 00:25:00,930 --> 00:25:04,000 >> Ngunit una, sabihin bumalik sa isang bahagyang naiiba halimbawa. 554 00:25:04,000 --> 00:25:09,050 Pupunta sa register-- o sa halip, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 na kamukha ng kaunti naiiba. 556 00:25:10,470 --> 00:25:12,670 Kinuha ko ang kaunti pa pagsusumikap sa pag-format, 557 00:25:12,670 --> 00:25:14,370 kahit na ito ay pa rin medyo mainit ang ulo. 558 00:25:14,370 --> 00:25:16,990 Ngunit ako pagpunta sa sige at i-type sa "David" ngayon. 559 00:25:16,990 --> 00:25:17,850 Lalake. 560 00:25:17,850 --> 00:25:19,360 Susubukan naming suriin ang "kapitan" oras na ito. 561 00:25:19,360 --> 00:25:20,660 Gagawin namin ang Matthews. 562 00:25:20,660 --> 00:25:22,430 At magparehistro. 563 00:25:22,430 --> 00:25:24,110 >> At ngayon sinasabi nito, Hm, hindi talaga. 564 00:25:24,110 --> 00:25:26,180 Ang lahat ng mga karapatan, kaya kung ano magrehistro 1? 565 00:25:26,180 --> 00:25:30,509 Hayaan akong pumunta sa open rehistro 1 and-- Hm. 566 00:25:30,509 --> 00:25:32,300 Ang lahat ng mga karapatan, kaya ito ay kawili-wili, at ito 567 00:25:32,300 --> 00:25:34,880 ay isang stepping bato ngayon patungo sa mas kawili-wiling programa. 568 00:25:34,880 --> 00:25:38,970 >> Pansinin ang tuktok ng file na ito ay may Tag PHP pati na rin ang ilang mga komento. 569 00:25:38,970 --> 00:25:42,590 At ang mga ito ay, sa ngayon, isang kaguluhan ng isip kaya ni lamang makakuha ng pawalan ng mga komento ipaalam 570 00:25:42,590 --> 00:25:47,070 tulad lamang ang mga ito sa C. At inaangkin ko ang sa tipak ng code sa isang komento 571 00:25:47,070 --> 00:25:49,280 na ang code na ito ay pagpapatunay sa mga pagsusumite. 572 00:25:49,280 --> 00:25:51,690 >> Well, ito ay lumiliko out na variable tulad ng dollar sign 573 00:25:51,690 --> 00:25:53,739 guhitan sa ilalim ng post ay tinatawag na sobrang globals. 574 00:25:53,739 --> 00:25:55,530 Ang mga ito ay tulad ng mga ito espesyal na mga pangkalahatang variable 575 00:25:55,530 --> 00:25:58,840 na lamang ang Omni-mayamaya magagamit sa loob ng iyong programa. 576 00:25:58,840 --> 00:26:03,870 At maaari mong gamitin ang square bracket pagtatanda i-index sa hindi ang mga ito gamit ang mga numero 577 00:26:03,870 --> 00:26:07,460 tulad ng 0, 1, 2, 3, ngunit mga aktwal na mga salita. 578 00:26:07,460 --> 00:26:12,100 >> Kaya maaari mong isipin ang dollar sign magbigay-diin post bilang uri ng isang hash talahanayan 579 00:26:12,100 --> 00:26:15,920 na maaari kang pumasa sa isang susi sa, ng lookup salita in-sa pagitan ng mga square bracket, 580 00:26:15,920 --> 00:26:19,370 at ito ay pagpunta upang bigyan ka pabalik sa halaga na aktwal na ibinigay ng user. 581 00:26:19,370 --> 00:26:21,210 May isang function na PHP tinatawag na walang laman na lang 582 00:26:21,210 --> 00:26:23,720 sabi oo o hindi, ito variable ay walang laman o hindi. 583 00:26:23,720 --> 00:26:27,250 Mayroon kaming mga double bar, na nangangahulugan lamang o, tulad ng sa C. 584 00:26:27,250 --> 00:26:31,740 >> Kaya sa epekto, ang linya 4 lamang sinasabi kung ang gumagamit ay hindi magbigay ng pangalan 585 00:26:31,740 --> 00:26:36,540 o hindi magbigay ng kasarian o ang hindi bigyan ng dorm, sige at mag-redirect sa kanya 586 00:26:36,540 --> 00:26:38,184 o kanya sa pamamagitan ng linyang ito dito. 587 00:26:38,184 --> 00:26:40,600 Kaya ito ay isang maliit na misteryosong, ngunit ito lamang ay nangangahulugan na literal 588 00:26:40,600 --> 00:26:43,330 bumalik sa lokasyong ito, kaya punts ng user 589 00:26:43,330 --> 00:26:45,420 bumalik sa kung saan man siya nanggaling. 590 00:26:45,420 --> 00:26:47,880 Ngunit ito ay isang maliit na hindi makisig sa mahirap na ako naka-code na ito. 591 00:26:47,880 --> 00:26:52,150 >> Ngunit paano kung ito kung kundisyon Hindi suriin sa true? 592 00:26:52,150 --> 00:26:55,790 Paano kung ang user ay nagbibigay sa akin kanyang o ang kanyang pangalan at dorm at kasarian? 593 00:26:55,790 --> 00:26:58,540 Na kung kondisyon ay hindi pagpunta upang suriin sa true, 594 00:26:58,540 --> 00:27:00,650 kaya hindi ko pindutin ang lumabas sa linya 7. 595 00:27:00,650 --> 00:27:01,680 Kaya kung ano ang mangyayari? 596 00:27:01,680 --> 00:27:03,880 At ito ay kung ano ang kawili-wiling tungkol sa PHP. 597 00:27:03,880 --> 00:27:07,470 >> Maaari mong i-drop in at out ng mode na PHP, kaya upang makipag-usap. 598 00:27:07,470 --> 00:27:10,985 Kung gusto mong ang ilang mga code upang maisagawa, maaari mong buksan at isara ang isang tag na PHP 599 00:27:10,985 --> 00:27:13,010 at ilagay ang code doon tulad ng iyong ginawa ko dito. 600 00:27:13,010 --> 00:27:16,810 Sa sandaling isara mo ang tag na PHP, ang server 601 00:27:16,810 --> 00:27:19,407 ay lamang ng pagpunta sa sabihin ang lahat anumang inilagay mo doon. 602 00:27:19,407 --> 00:27:21,740 At sa katunayan, ito ay bahagi ng ang orihinal na disenyo ng PHP, 603 00:27:21,740 --> 00:27:25,280 para sa mas mahusay para sa mas masahol pa, ay ito commingling ng code at markup 604 00:27:25,280 --> 00:27:25,920 wika. 605 00:27:25,920 --> 00:27:28,670 At kami makita na ito napaka mabilis devolves sa gulo. 606 00:27:28,670 --> 00:27:31,280 At kaya kami na mas mahusay kaysa sa ito huli, ngunit lamang 607 00:27:31,280 --> 00:27:35,620 mapansin ang kadalian na kung saan ako talaga magawang isagawa ang ilang logic. 608 00:27:35,620 --> 00:27:37,440 >> Ngunit pa rin ng isang bit underwhelming. 609 00:27:37,440 --> 00:27:41,210 Hinahayaan buksan up ng bersyon dalawa sa Frosh IMS, na 610 00:27:41,210 --> 00:27:44,270 sa malas na isinusumite sa register2.php. 611 00:27:44,270 --> 00:27:47,600 Kaya ang file na ito ay aktwal na pagpunta upang tingnan ang parehong halos. 612 00:27:47,600 --> 00:27:50,780 Pupunta ako upang pumunta sa Frosh IMS 2. 613 00:27:50,780 --> 00:27:53,050 Ngunit sa Frosh IMS 2, tingnan natin kung ano ang mangyayari. 614 00:27:53,050 --> 00:27:58,110 >> David, i-click ang radio button, tulad ng ang tawag dito; Matthews, walang kapitan. 615 00:27:58,110 --> 00:27:59,230 Magparehistro. 616 00:27:59,230 --> 00:28:00,130 Ikaw ay naka-rehistro. 617 00:28:00,130 --> 00:28:00,700 Hindi talaga. 618 00:28:00,700 --> 00:28:02,574 Oh maghintay, ginawa namin lamang Halimbawa iyon, ang hindi namin? 619 00:28:02,574 --> 00:28:04,520 Ang lahat ng mga karapatan, tumayo sa pamamagitan ng. 620 00:28:04,520 --> 00:28:06,602 Gagawin namin ang tatlo. 621 00:28:06,602 --> 00:28:08,560 Malinaw na ang isang bagay ay tungkol sa mangyari sa Gmail. 622 00:28:08,560 --> 00:28:09,600 Magpapadala kami makarating doon. 623 00:28:09,600 --> 00:28:11,900 >> Kaya Frosh IMS 3 mukhang ganito. 624 00:28:11,900 --> 00:28:13,050 Walang mga naiiba. 625 00:28:13,050 --> 00:28:19,850 Ngunit kapag gagawin ko David, lalaki, Matthews, at magparehistro, ito ikatlong at huling bersyon 626 00:28:19,850 --> 00:28:22,230 claim, medyo simple, mo ay nakarehistro talaga. 627 00:28:22,230 --> 00:28:23,560 Iyon ang uri ng espirituwal. 628 00:28:23,560 --> 00:28:25,600 Ngunit inaangkin ko ang may ito ikatlong at pinal na bersyon 629 00:28:25,600 --> 00:28:30,610 Ngayon ko pa recreated nang eksakto kung ano ang aking kasama sa kuwarto at binuo ko para sa Frosh IMS 630 00:28:30,610 --> 00:28:31,731 taon ang nakalipas programa. 631 00:28:31,731 --> 00:28:32,480 At ito ay simpleng. 632 00:28:32,480 --> 00:28:34,330 Walang database, walang Excel spreadsheet. 633 00:28:34,330 --> 00:28:36,450 Ngunit higit sa lahat, nagkaroon ng hindi hihigit papel 634 00:28:36,450 --> 00:28:42,520 dahil kung ano ang ginawa namin sa programang ito ay talagang i-email ang Proctor, na 635 00:28:42,520 --> 00:28:44,530 ay nakaraang pagtanggap mga bagay na ito sa pamamagitan ng mga form. 636 00:28:44,530 --> 00:28:48,890 >> At tila-program namin ito sa tulad ng isang paraan na kapag may isang taong nagrerehistro, 637 00:28:48,890 --> 00:28:52,470 Mga email John Harvard ng account ang proctor-- o ang kanyang sarili sa kasong ito, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- may mga sumusunod na text-- "Ang taong ito lamang nakarehistro." 639 00:28:55,960 --> 00:29:00,560 Ang pangalan ay David, kapitan ay blangko; kasarian, lalaki; at dorm, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Kaya kung ano ang nangyari doon? 641 00:29:01,560 --> 00:29:05,360 Well, ang file na pinag-uusapan dito ay tila register3.php. 642 00:29:05,360 --> 00:29:09,080 At kung buksan ko ito, makikita mo ang pareho ang lakas ng code tulad nito 643 00:29:09,080 --> 00:29:12,380 at din, lantaran, ang kawalan ng kapanatagan ng isang sistema tulad ng email. 644 00:29:12,380 --> 00:29:16,290 Mabisa lang ako nagkunwari sa maging John Harvard sa sumusunod na paraan. 645 00:29:16,290 --> 00:29:20,920 >> Mayroon akong open php tag up tuktok, na Sinasabi lamang dito ay ang ilang mga code na PHP. 646 00:29:20,920 --> 00:29:23,155 Down dito, lumiliko out doon mga aklatan sa PHP. 647 00:29:23,155 --> 00:29:26,410 Ikaw lamang ay hindi na kailangang Kasama sa header na file ng maraming. 648 00:29:26,410 --> 00:29:28,900 Makakakuha ka ng higit pa sa panlipunan, kaya na magsalita. 649 00:29:28,900 --> 00:29:31,820 >> Ngunit oras na ito sa loob ng 4 na linya, gagawin ko gustong espesyal na library na tinatawag na 650 00:29:31,820 --> 00:29:36,087 PHP mailer, na kung saan ay isang bagay sa iyo maaaring i-install nang libre sa maraming mga system. 651 00:29:36,087 --> 00:29:37,920 Down dito ako pagpapatunay ang pagsusumite lamang 652 00:29:37,920 --> 00:29:40,540 sa pamamagitan ng pagsuri ay gumagamit ng bigyan sa akin ng pangalan, ng kasarian, at dorm. 653 00:29:40,540 --> 00:29:44,130 At kung gayon, sige at magbigay ng halimbawa ng mailer. 654 00:29:44,130 --> 00:29:47,020 >> Maaari mong isipin na ito bilang isang linya ng code na lang naglalaan. 655 00:29:47,020 --> 00:29:48,950 Ito ay tulad ng malloc, ngunit ito ay isang maliit na sexier 656 00:29:48,950 --> 00:29:51,790 sa na banggitin hindi lamang malloc at ilang mga generic na numero. 657 00:29:51,790 --> 00:29:55,030 Sabihin ba ninyo akong bigyan ng isa sa mga ito, bigyan mo ako ng bagong isa sa mga ito. 658 00:29:55,030 --> 00:29:57,950 >> At kung nag-program sa Java o C ++ o iba pang mga wika, 659 00:29:57,950 --> 00:29:59,130 Maaaring nakita mo na ito. 660 00:29:59,130 --> 00:30:01,840 Ngunit ang maikling ng ito, kung hindi pamilyar na, ang linyang ito 661 00:30:01,840 --> 00:30:05,410 Inilalagay sa dollar sign mail isang espesyal na struct na tinatawag na 662 00:30:05,410 --> 00:30:08,731 isang bagay na iyon ay built-in -andar ng email. 663 00:30:08,731 --> 00:30:10,355 At sa katunayan, mapapansin at katulad na syntax. 664 00:30:10,355 --> 00:30:11,900 >> Ito ay hindi isang pointer, per se. 665 00:30:11,900 --> 00:30:13,990 Ginagamit lang PHP ang parehong syntax. 666 00:30:13,990 --> 00:30:17,660 Ang linyang ito ay sinasabi ng paggamit SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protocol, na lamang ang protocol na ginagamit upang magpadala ng mail. 668 00:30:20,900 --> 00:30:24,240 Ito ay tumutukoy ng paggamit SMTP server Harvard, na 669 00:30:24,240 --> 00:30:25,830 ay isang lugar dito sa campus. 670 00:30:25,830 --> 00:30:28,480 >> Ito ay nagsasabi kung ano ang TCP port number upang makipag-usap sa, 671 00:30:28,480 --> 00:30:31,650 at lamang naisip ko na sa pamamagitan ng Pag-Google o sa pamamagitan ng pagtatanong sa tulong desk. 672 00:30:31,650 --> 00:30:34,640 At pagkatapos ay dahil sa Harvard ay gumagamit ng ilang mga seguridad ng system sa mail server-- 673 00:30:34,640 --> 00:30:37,060 hindi bababa sa upang i-encrypt trapiko sa pagitan mo at ito, 674 00:30:37,060 --> 00:30:41,380 kahit na maaaring magpadala sa sinuman na it-- Pupunta ako sa i-on ang TLS protocol 675 00:30:41,380 --> 00:30:42,710 para sa pagpapanatiling secure na ito. 676 00:30:42,710 --> 00:30:44,730 >> Ngunit ito ay kung saan bagay makakuha ng isang maliit na nakakatakot. 677 00:30:44,730 --> 00:30:47,970 Maaari ko nagkataon lang sabihin na ako jharvard, 678 00:30:47,970 --> 00:30:51,930 at maaari ko nagkataon lang -email ang aking sarili dito. 679 00:30:51,930 --> 00:30:55,650 At pagkatapos ay ang maaari kong tukuyin ang isang napapailalim sa line dito. 680 00:30:55,650 --> 00:30:58,460 >> At ito ay mukhang lamang pangit, ngunit ito ay lamang ng grupo ng pagdudugtong. 681 00:30:58,460 --> 00:31:04,480 Ino-out ay may sobrang kapaki-pakinabang na simbolo PHP, tulad ng ilang mga wika, ang tuldok operator, 682 00:31:04,480 --> 00:31:07,340 Literal na lang concatenates string pagkatapos ng string pagkatapos ng string, 683 00:31:07,340 --> 00:31:09,810 at hindi mo na kailangang mag-malloc o figure ang kabuuang haba ng string. 684 00:31:09,810 --> 00:31:10,820 Magagawa mo lang ito. 685 00:31:10,820 --> 00:31:15,220 At sa katunayan, dahil ako concatenating sa lahat ng mga bagay na ito gamit ang mga tuldok, 686 00:31:15,220 --> 00:31:18,330 na ang dahilan kung bakit ang email ko Ipinadala ang tumingin tulad ng ginawa ito. 687 00:31:18,330 --> 00:31:20,610 >> At pagkatapos ay sa wakas dito, ako sa pagpapadala sa ako ng mail. 688 00:31:20,610 --> 00:31:22,580 Kaya kung ito ay hindi totoo, Lamang ako ng pagpunta sa mamatay, 689 00:31:22,580 --> 00:31:25,680 kung saan ay isang function na lamang ng mga kopya sa screen ng ilang mga mensahe ng error. 690 00:31:25,680 --> 00:31:29,170 Ngunit ito ay, sa katunayan, ng pagtawag sa function na ipadala. 691 00:31:29,170 --> 00:31:31,780 Sa kabilang banda, kung ang lahat ng ito nabigo, nagre-redirect ito sa akin pabalik dito. 692 00:31:31,780 --> 00:31:34,050 >> At bakit nakita ko na Ako nakarehistro talaga? 693 00:31:34,050 --> 00:31:36,110 Well, ito ay nangyari dito mismo. 694 00:31:36,110 --> 00:31:38,170 Kaya ko ilabas ito para sa isang pares ng mga dahilan. 695 00:31:38,170 --> 00:31:41,542 >> Ang isa, ito ay eksakto kung paano kung bumuo ka ng ang ilang mga website para sa isang pangwakas na proyekto 696 00:31:41,542 --> 00:31:44,000 o para sa tunay na mundo, ito ay kung paano mo magpadala ng mga paalala ng email 697 00:31:44,000 --> 00:31:45,924 sa iyong mga customer o ang iyong mga subscriber. 698 00:31:45,924 --> 00:31:47,590 Ito ay kung paano mo magpadala ng mga paalala ng password. 699 00:31:47,590 --> 00:31:50,760 Ito ay kung paano mo magpadala ng mga tao mensahe na mayroon sila ng isang bagong Facebook 700 00:31:50,760 --> 00:31:52,990 mensahe nakabinbing o isang bagay tulad na. 701 00:31:52,990 --> 00:31:55,010 >> Ngunit ito rin ay nagsasalita sa ang katotohanan na dati ito 702 00:31:55,010 --> 00:31:58,160 lubos na mabuti mula sa Davin o sinumang iba pa. 703 00:31:58,160 --> 00:32:00,567 At sinasabi ko sa ganitong uri ng may isang ngiti dahil ako 704 00:32:00,567 --> 00:32:03,400 medyo sigurado kung ano ang nangyayari sa pamamagitan ng ang ilan sa iyong mga isip sa puntong ito. 705 00:32:03,400 --> 00:32:11,910 Ngunit ito ay isa sa mga gawin bilang ako sabihin, hindi bilang ko uri ng mga bagay, 706 00:32:11,910 --> 00:32:14,480 dahil ito ay walang halaga sa pekein ng mga email na katulad nito. 707 00:32:14,480 --> 00:32:16,480 Ngunit bilang maaaring nakakita o basahin sa Crimson, 708 00:32:16,480 --> 00:32:18,271 ng late na ito Kahanga-ring walang halaga para sa mga taong 709 00:32:18,271 --> 00:32:20,050 sa trace ang mga ito pabalik sa ilang mga pinagmulan. 710 00:32:20,050 --> 00:32:23,790 At hilingin sa akin ang ilang oras, marahil sa CS50 tanghalian, paano ko unang 711 00:32:23,790 --> 00:32:27,080 Kaka-kilala napaka-malapit Halos sa ed board maraming taon 712 00:32:27,080 --> 00:32:30,890 nakalipas kapag natuklasan ko kung paano nagtrabaho sa internet. 713 00:32:30,890 --> 00:32:36,940 Kaya sa anumang case-- bahagyang pagkatapos ginawa ng ed board. 714 00:32:36,940 --> 00:32:42,300 >> Kaya sa anumang kaso, mayroong isang buong bungkos ng sobrang globals, 715 00:32:42,300 --> 00:32:45,960 habang ang mga ito ay tinatawag na dito, isa sa mga ito ay saw-- namin sa pag-sign underscore dolyar post. 716 00:32:45,960 --> 00:32:49,530 Mayroong isang kamukhang-mukha na tinatawag na kumuha, na kung saan bagay-bagay mula sa isang URL 717 00:32:49,530 --> 00:32:50,690 nagtatapos up ng pagpunta. 718 00:32:50,690 --> 00:32:54,051 At mayroong isang buong bungkos ng iba, too-- session at server at cookie. 719 00:32:54,051 --> 00:32:55,800 Darating kami pabalik sa Cookie ilang iba pang mga oras, 720 00:32:55,800 --> 00:33:01,340 ngunit session ay uri ng mga cool na dahil karapatan now-- hanggang now-- 721 00:33:01,340 --> 00:33:06,350 lahat ng bagay na iyong ginawa namin sa isang web browser ay isang uri ng stateless, kaya upang makipag-usap. 722 00:33:06,350 --> 00:33:10,060 Ang maaari kong i-click sa paligid, pag-access mga file sa server, isang bagay 723 00:33:10,060 --> 00:33:13,500 ang mangyayari sa screen, ngunit pagkatapos ay isinara ang koneksyon. 724 00:33:13,500 --> 00:33:17,450 Ang Internet Explorer o ang Humihinto umiikot na icon sa Firefox 725 00:33:17,450 --> 00:33:20,340 at tingnan mo kung ano ang na web page ay naglalaman. 726 00:33:20,340 --> 00:33:23,530 >> Kaya HTTP ay stateless sa na sa sandaling ito ay gumagawa ng isang koneksyon, 727 00:33:23,530 --> 00:33:25,050 ay makakakuha ng ilang data, na ito. 728 00:33:25,050 --> 00:33:29,940 Wala nang koneksyon, hindi tulad ng Skype, hindi tulad ng Facetime, hindi tulad GChat, na 729 00:33:29,940 --> 00:33:32,180 Pinapanatili ng isang pare-pareho koneksyon sa server. 730 00:33:32,180 --> 00:33:34,650 Ang web ay sa panimula pagkakakonekta, kahit kami ay 731 00:33:34,650 --> 00:33:36,630 makita bago mahaba kung paano maaari naming gayahin bagay 732 00:33:36,630 --> 00:33:39,300 tulad ng Facebook chat at GChat, na mapanatili ang illusion-- 733 00:33:39,300 --> 00:33:41,680 o talagang gawin mapanatili ang isang pare-pareho na koneksyon gamit ang 734 00:33:41,680 --> 00:33:43,270 higit pa modernong teknolohiya. 735 00:33:43,270 --> 00:33:49,000 >> Ngunit kung pumunta ako sa, sabihin nating, counter.php, ito ay isa pang simpleng halimbawa, 736 00:33:49,000 --> 00:33:52,700 bilang namin makita, na kasalukuyang palagay ni Binisita ko ang site zero oras. 737 00:33:52,700 --> 00:33:56,790 Ngunit kung i-reload ko lang ang pahina, ito kahit papaano alam ko dito dati. 738 00:33:56,790 --> 00:33:58,840 Kung i-reload ko muli, ito Alam ko dito dati. 739 00:33:58,840 --> 00:34:01,100 At muli at muli at muli at muli. 740 00:34:01,100 --> 00:34:03,610 >> Kaya mayroong ilang mga plus-plussing pagpunta sa, ngunit paunawa 741 00:34:03,610 --> 00:34:07,090 ang maliit na bagay spins napaka Panandalian up itaas at pagkatapos ay i-disconnects, 742 00:34:07,090 --> 00:34:11,179 kaya hindi ito bang mayroon akong isang pare-pareho koneksyon sa aking appliance. 743 00:34:11,179 --> 00:34:16,929 Well, kung pumunta ako sa counter.php, pansinin kung paano simple ito ay. 744 00:34:16,929 --> 00:34:19,080 Aking unang tawagan ang espesyal na function na kami ay sa lalong madaling panahon 745 00:34:19,080 --> 00:34:21,513 simulan ang paglalaan para sa ipinagkaloob tinatawag na pagsisimula session. 746 00:34:21,513 --> 00:34:22,179 Magsimula ng session. 747 00:34:22,179 --> 00:34:25,095 >> At isang session simula ngayon lamang pagpunta sa maging isang bucket, tulad ng isang shopping 748 00:34:25,095 --> 00:34:28,120 cart kung saan maaari kang maglagay ng mga halaga at uri ng pinagkakatiwalaan bilang isang programmer 749 00:34:28,120 --> 00:34:31,590 na sila ay magiging dito kapag gumagamit na iyon ay back-- isang segundo 750 00:34:31,590 --> 00:34:35,670 sa ibang pagkakataon, isang oras sa paglaon, kahit sa isang taon mamaya, kaya hangga't siya ay hindi malinaw 751 00:34:35,670 --> 00:34:37,602 ang kanilang mga cookies, pati na makikita sa huli naming makita. 752 00:34:37,602 --> 00:34:39,310 At ngayon Mayroon akong lamang isang kung kundisyon dito. 753 00:34:39,310 --> 00:34:44,679 Kaya kung ang mga sumusunod na key, na tinatawag na counter, naka-set sa loob 754 00:34:44,679 --> 00:34:49,210 ng sobrang global-- ito hash talahanayan, kung will-- iyo na tinatawag na session, 755 00:34:49,210 --> 00:34:53,350 pagkatapos ay sige at grab ang halaga mula sa session-- tingin 756 00:34:53,350 --> 00:34:55,250 ng ito bilang isang shopping cart-- at iimbak ito 757 00:34:55,250 --> 00:34:57,680 sa isang pansamantalang variable na tinatawag na counter. 758 00:34:57,680 --> 00:35:02,240 >> Sa kabilang banda, kung na halaga sagot ay hindi nakatakda sa tinatawag na shopping cart, 759 00:35:02,240 --> 00:35:04,430 initialize lang ito sa 0. 760 00:35:04,430 --> 00:35:09,830 Panghuli, pababa dito, pumunta at ibalik sa mga shopping cart o sa session 761 00:35:09,830 --> 00:35:13,000 ang halaga ng counter +1. 762 00:35:13,000 --> 00:35:16,730 Kaya ito ay lumiliko out na ito espesyal na lalagyan here-- 763 00:35:16,730 --> 00:35:20,355 na kung saan, muli, ay isa sa mga nauugnay na array, isang array na maaari mong index 764 00:35:20,355 --> 00:35:25,010 sa mga salita sa halip na numbers-- patuloy kahit na matapos ang gumagamit mawawala. 765 00:35:25,010 --> 00:35:26,510 Muli, magpapadala ako bumalik sa pahina ngayon. 766 00:35:26,510 --> 00:35:28,400 Naging isang minuto o kaya. 767 00:35:28,400 --> 00:35:31,300 Pero Naaalala na na hindi ko na naging dito 19 beses bago. 768 00:35:31,300 --> 00:35:32,740 Ito ang aking ika-20 pagbisita. 769 00:35:32,740 --> 00:35:36,560 >> At kaya ito ay magiging susi sa magpatupad ng anumang mga website na Naaalala 770 00:35:36,560 --> 00:35:40,640 na naka-log in, na inilagay mo isang bagay na literal sa iyong shopping cart 771 00:35:40,640 --> 00:35:43,902 upang bumili o na ikaw ay may ilang mga bilang ng mga mensahe nakabinbin. 772 00:35:43,902 --> 00:35:45,610 Sa anumang oras na nais mong tandaan na impormasyon, 773 00:35:45,610 --> 00:35:48,130 ipapakita namin makita na PHP, tulad ng maraming iba pang mga wika, 774 00:35:48,130 --> 00:35:53,640 Nagbibigay kami ng ang ilusyon ng estado kahit na, pati na iyong makikita sa PSET 6, 775 00:35:53,640 --> 00:35:57,642 bilang nagsasagawa ka ng mga kahilingan ng HTTP mula sa client sa server, na ito. 776 00:35:57,642 --> 00:35:59,850 Sa sandaling makabalik ka na na tugon, walang higit pa kung 777 00:35:59,850 --> 00:36:01,790 bumabalik mula sa server sa pamamagitan ng default. 778 00:36:01,790 --> 00:36:03,820 Ngunit makikita namin kung paano gumana sa paligid na iyon. 779 00:36:03,820 --> 00:36:07,430 >> Subukan na rin ngayon, sabihin linisin ito up ng kaunti. 780 00:36:07,430 --> 00:36:09,470 Nasaksihan namin ang ilang mga iba't-ibang mga halimbawa doon. 781 00:36:09,470 --> 00:36:12,250 Oh, at bilang isang-tabi, para mga pamilyar na pamilyar o, 782 00:36:12,250 --> 00:36:14,230 ang dahilan na ang Frosh IMS halimbawa nagpunta 783 00:36:14,230 --> 00:36:18,060 mula naghahanap talaga pangit sa slightly-- na rin, 784 00:36:18,060 --> 00:36:23,160 ugly-- pa rin sa bahagyang mas mainit ang ulo bagaman pa rin mainit ang ulo 785 00:36:23,160 --> 00:36:25,230 ay dahil sa kung tinitingnan namin sa dito ang source code, 786 00:36:25,230 --> 00:36:28,240 ito ay lumiliko out na mayroon akong ito sa pinakatuktok ng file. 787 00:36:28,240 --> 00:36:32,570 >> Ino-out na Bootstrap ay isa sa maraming mga malayang magagamit library doon 788 00:36:32,570 --> 00:36:37,140 na umiiral ang hindi para sa programming wika laging, ngunit para sa CSS o para sa JavaScript 789 00:36:37,140 --> 00:36:39,190 o HTML o anumang bilang ng mga wika. 790 00:36:39,190 --> 00:36:42,160 >> At ang mga tao here-- Orihinal na dumating out 791 00:36:42,160 --> 00:36:44,730 ng Twitter-- mayroon lamang isang buong bungkos ng mga estilo. 792 00:36:44,730 --> 00:36:47,360 Ito ay isang napakalaking file dito na ang isang tao ay sumulat, 793 00:36:47,360 --> 00:36:51,020 o ng isang tao ay sumulat, sa paglipas ng panahon na Tinutukoy ng kulay at pag-format 794 00:36:51,020 --> 00:36:53,740 at watnat sa gayon ay maaari ko uri ng humiram ng kanilang mga syntax 795 00:36:53,740 --> 00:36:56,157 at hindi na kailangang malaman kung paano mag-ipon ang aking form. 796 00:36:56,157 --> 00:36:57,990 Ito ay minified din upang ang isang computer maaari 797 00:36:57,990 --> 00:37:00,560 maunawaan ito ngunit hindi nangangahulugang isang tao. 798 00:37:00,560 --> 00:37:03,050 Kaya na ang dahilan kung bakit lamang ang estilisasyon may nagbago. 799 00:37:03,050 --> 00:37:05,450 >> Ngunit sabihin ngayon mas mahusay na gawin sa mga tuntunin ng disenyo, 800 00:37:05,450 --> 00:37:07,490 dahil kung manatili namin down na Masyadong mahaba ang kalsadang ito, 801 00:37:07,490 --> 00:37:11,290 ang aming code pupuntahan makakuha ng maraming kalat at Messier. 802 00:37:11,290 --> 00:37:13,040 Kaya sabihin tumuon sa mga halimbawa dito. 803 00:37:13,040 --> 00:37:15,090 Ang huling para sa araw na ito. 804 00:37:15,090 --> 00:37:18,720 >> Kaya dito ay isang napakabilis simple bersyon 1.0 website CS50 ni ng. 805 00:37:18,720 --> 00:37:21,250 Ito lamang ay may mga link sa mga aralin at syllabus, 806 00:37:21,250 --> 00:37:25,490 at gumagamit ito na unordered listahan tag-- ang ul tag na ginamit namin huling oras. 807 00:37:25,490 --> 00:37:28,800 At kung sa katunayan, kung ako buksan ang Tingnan ang Pinagmulan ng Pahina, 808 00:37:28,800 --> 00:37:31,710 makikita mo na ito ay talaga ito, talagang simple HTML. 809 00:37:31,710 --> 00:37:35,460 At sa katunayan, kahit na ito ay isang file ng PHP sa ilalim ng hood, 810 00:37:35,460 --> 00:37:38,620 ito pa rin lang pagsigam ang HTML lamang sa ngayon. 811 00:37:38,620 --> 00:37:41,312 >> Kaya kung nag-click ako sa Lecture, nakikita namin mangyari ito. 812 00:37:41,312 --> 00:37:43,020 At kung nag-click ako sa linggo zero, tingnan namin ito. 813 00:37:43,020 --> 00:37:44,920 At kung nag-click ako sa Miyerkules, nakita namin na ito. 814 00:37:44,920 --> 00:37:47,900 At ito ay tila ang PDF ng mga slide mula sa araw na iyon. 815 00:37:47,900 --> 00:37:52,020 Ang lahat ng mga nagawa ko ay ang link gamit ang isang anchor tag sa URL na ito dito. 816 00:37:52,020 --> 00:37:55,400 >> Kaya ito ay lamang upang sabihin na ito ay isang magandang simpleng bersyon website CS50 ni ng. 817 00:37:55,400 --> 00:37:56,790 Tingnan natin kung paano ito ipinatupad Hayaan. 818 00:37:56,790 --> 00:38:01,240 Kung pumunta ako sa direktoryo mvc0, Makikita natin ang ilang mga file. 819 00:38:01,240 --> 00:38:03,250 Ang isa ay isang Readme, kaya kung ilan sa mga ito ay masyadong mabilis, 820 00:38:03,250 --> 00:38:05,166 Maaari mo lamang sundutin sa paligid higit pang nakakalibang na sa ibang pagkakataon. 821 00:38:05,166 --> 00:38:07,930 At notice in dito ay isang index.php file. 822 00:38:07,930 --> 00:38:09,960 Ito ay lumiliko out na kung mo ang iyong sarili, ang mga tao, 823 00:38:09,960 --> 00:38:14,460 huwag tukuyin ang isang huling pangalan sa isang URL, ang web server ay karaniwang 824 00:38:14,460 --> 00:38:17,010 infers ilang mga default na pangalan para sa iyo. 825 00:38:17,010 --> 00:38:20,060 Ang isang index na tuldok ng isang bagay ay pangkalahatan ang default. 826 00:38:20,060 --> 00:38:23,010 >> Kaya na ang dahilan kung bakit ilang sandali ang nakalipas kapag binisita ko ang URL na ito dito, 827 00:38:23,010 --> 00:38:26,750 Walang pangalan ang file, walang file extension, walang panahon sa URL. 828 00:38:26,750 --> 00:38:29,710 Lang alam ito sa paanuman magically upang maghanap ng mga index.php. 829 00:38:29,710 --> 00:38:30,870 Ito ay isang convention lamang. 830 00:38:30,870 --> 00:38:32,360 Ma-tinatawag na kahit ano. 831 00:38:32,360 --> 00:38:35,110 >> Kaya kung pumunta ako ngayon sa index.php, makikita mo ang 832 00:38:35,110 --> 00:38:37,100 iyon, indeed-- sabihin mapupuksa ang mga komento 833 00:38:37,100 --> 00:38:39,500 dito dahil mayroong talaga wala na interesante sa mga it-- 834 00:38:39,500 --> 00:38:41,579 ito ay lamang hard code ng HTML. 835 00:38:41,579 --> 00:38:43,370 Kaya na pare-pareho, bagaman, sa aking claim 836 00:38:43,370 --> 00:38:45,230 na maaari mong maghalo HTML at PHP. 837 00:38:45,230 --> 00:38:48,060 Walang aktwal na mga programa ng logic sa dito. 838 00:38:48,060 --> 00:38:51,030 >> At ang iba pang mga file ay medyo magkano lamang bilang hindi kawili-wili. 839 00:38:51,030 --> 00:38:56,240 Ito ay lamang hard-code na linggo isa dito sa linggo isa m at linggo isa w, 840 00:38:56,240 --> 00:38:57,510 para sa Lunes at Miyerkules. 841 00:38:57,510 --> 00:39:01,890 At pagkatapos ay kung buksan ko up linggo zero, mapansin ito ay halos magkapareho. 842 00:39:01,890 --> 00:39:03,320 >> At iyon ang uri ng isang pangunahing takeaway. 843 00:39:03,320 --> 00:39:06,180 Pansinin kung paano lang kalabisan ito. 844 00:39:06,180 --> 00:39:10,710 Ang mga file na bahagya baguhin, at pa ako nakuha ang isa sa mga kopya / i-paste ang mga trabaho 845 00:39:10,710 --> 00:39:13,420 kung saan kinuha ko ang isa file-- siguro sa linggo zero-- kinopya ito 846 00:39:13,420 --> 00:39:16,320 kapag linggo ang isa ay dumating sa paligid, at tweaked ng ilang mga halaga. 847 00:39:16,320 --> 00:39:18,590 Dapat marahil namin magagawang gawin mas mahusay kaysa sa na ito. 848 00:39:18,590 --> 00:39:21,800 >> Kaya sabihin bumalik hanggang sa mvc at pumunta sa bersyon isa. 849 00:39:21,800 --> 00:39:24,810 At mapansin Nakakuha ako ng isang ilang mga file, dahil kung ano ang 850 00:39:24,810 --> 00:39:29,870 ay pangkaraniwan sa lahat ng mga file na iyon lamang ago-- sandali kung pumunta ako pabalik sa bersyon 0, 851 00:39:29,870 --> 00:39:32,600 ay bumalik sa index ipaalam, at postulate-- lamang 852 00:39:32,600 --> 00:39:36,090 isang beses ko mapupuksa ang mga comments-- kung anong bahagi ng pahinang ito 853 00:39:36,090 --> 00:39:40,072 ay siguro sa bawat isa sa aking mga file? 854 00:39:40,072 --> 00:39:40,780 Tumawag lamang ito. 855 00:39:40,780 --> 00:39:44,620 Aling mga linya ay nadoble Marahil sa lahat ng mga pahinang ito? 856 00:39:44,620 --> 00:39:45,120 Oo? 857 00:39:45,120 --> 00:39:46,110 >> MAG-AARAL: [hindi marinig]. 858 00:39:46,110 --> 00:39:47,660 >> David J. MALAN: 1 hanggang 9. 859 00:39:47,660 --> 00:39:48,720 Oo, walang pasubali. 860 00:39:48,720 --> 00:39:52,080 1 hanggang 9, maliban siguro 8 nagbabago nang kaunti dahil CS50 861 00:39:52,080 --> 00:39:54,650 nagiging aralin o linggo sa zero o isang bagay. 862 00:39:54,650 --> 00:39:55,970 Pero halos magkapareho. 863 00:39:55,970 --> 00:39:58,657 Kaya ang lahat ng mga bagay-bagay na ito ay lamang uri ng kopyahin at ilagay. 864 00:39:58,657 --> 00:40:00,490 At mayroong ilang iba pang mga linya ang maaari kong isipin 865 00:40:00,490 --> 00:40:05,000 ng na malamang na magkatulad sa lahat ng mga file. 866 00:40:05,000 --> 00:40:06,315 >> MAG-AARAL: 12 at 13. 867 00:40:06,315 --> 00:40:07,190 David J. MALAN: Oo. 868 00:40:07,190 --> 00:40:11,220 Oo naman, 12, 13, at 14 ay marahil, dahil lang sa ang mga kawili-wiling mga bagay-bagay 869 00:40:11,220 --> 00:40:15,460 ang nangyayari sa linya 11 at 10, kaya ito ay tila. 870 00:40:15,460 --> 00:40:18,350 Kaya tingnan natin ang bersyon 1 ipaalam, na sinusubukan upang mapabuti sa ito. 871 00:40:18,350 --> 00:40:24,020 Sa bersyon 1 ng mvc example-- kami ay ipaliwanag kung ano mvc paraan sa isang moment-- 872 00:40:24,020 --> 00:40:27,420 kung pumunta ako sa index, uri ito ng ang hitsura ng isang maliit na nakakalito ngayon. 873 00:40:27,420 --> 00:40:28,880 Ito ay hindi masyadong kasing simple ng dati. 874 00:40:28,880 --> 00:40:30,906 >> Ngunit sa sandaling sinimulan mo upang basahin ito nang mabuti, ito ay 875 00:40:30,906 --> 00:40:32,530 medyo prangka kung ano ang ginagawa nito. 876 00:40:32,530 --> 00:40:34,397 Sa malas line 1 at 8 linya na pinalitan 877 00:40:34,397 --> 00:40:37,230 lahat ng mga bagay-bagay identified-- mo lamang kahit na para lamang sa mabuting panukala, 878 00:40:37,230 --> 00:40:41,900 Iniwan ko ang ULs doon sa kasong ilan lang araw ay hindi magkaroon ng isang listahan ng mga bagay. 879 00:40:41,900 --> 00:40:47,860 At kaya't nangangailangan ang uri ng tulad ng pound Kasama sa C. Ito mga kopya at pastes 880 00:40:47,860 --> 00:40:50,470 ang mga nilalaman epektibong dito sa file na ito. 881 00:40:50,470 --> 00:40:53,650 >> Kaya sa header.php, tulad ng sa iyo maaaring magpakilala mula sa pangalan nito, 882 00:40:53,650 --> 00:40:55,330 ay magiging ang header ng pahina. 883 00:40:55,330 --> 00:40:57,110 Uri ng Ito ay naulila dito. 884 00:40:57,110 --> 00:41:01,820 Ito lamang ay may tuktok na ito, ngunit walang higit pang nilalaman sa ibaba. 885 00:41:01,820 --> 00:41:05,070 >> At kung tumingin ako sa footer samantala, na kung saan ay ang iba pang mga file mentioned-- 886 00:41:05,070 --> 00:41:08,830 ang isang ito ay mas mababa kawili-wili, ngunit muli, ito ay karaniwan sa lahat ng bagay. 887 00:41:08,830 --> 00:41:10,250 Kaya ito ay ang footer. 888 00:41:10,250 --> 00:41:11,300 Ito ang header. 889 00:41:11,300 --> 00:41:13,950 Ito ang file na nagbabago, sa gayon bakit hindi 890 00:41:13,950 --> 00:41:18,140 subukan upang magfa-factor ang commonality gamit ang dalawang mga linya dito? 891 00:41:18,140 --> 00:41:20,090 >> Ngunit maaari naming linisin ito up ng kaunti pa. 892 00:41:20,090 --> 00:41:23,260 Pupunta ako sa magpatuloy at buksan ang bersyon ng dalawang kung saan 893 00:41:23,260 --> 00:41:27,106 ipapakita namin makita na mayroong isang bagong file, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Susubukan naming makita kung ano ang na sa ilang sandali. 895 00:41:28,610 --> 00:41:30,930 Sabihin pumunta sa index, tulad ng entry point tulad ng dati. 896 00:41:30,930 --> 00:41:35,230 >> At mapansin ngayon ako na nangangailangan ng helpers.php, hindi header o footer. 897 00:41:35,230 --> 00:41:41,720 Ngunit helpers ay uri ng bang helpers.c at helpers.h mula PSET 2 898 00:41:41,720 --> 00:41:46,150 o PSET 3 matagal na ang nakalipas kapag aktwal ang hinanap at hanapin para sa PSET, 899 00:41:46,150 --> 00:41:50,950 at nagkaroon ka ng lahat ng iyong code para sa pag-uuri at naghahanap sa isang hiwalay na file. 900 00:41:50,950 --> 00:41:52,510 Iyon ay kung ano ang nangyayari sa dito. 901 00:41:52,510 --> 00:41:54,390 >> At ngayon ang hitsura ng isang maliit na iba't ibang 3 linya. 902 00:41:54,390 --> 00:41:55,920 At ito lamang ay isang linya. 903 00:41:55,920 --> 00:41:57,950 Upang gawin ang kahit na higit pa malinaw, maaari ko lamang 904 00:41:57,950 --> 00:42:01,820 huwag ito upang maging pare-pareho stylistically sa lahat ng iba pa namin tapos na. 905 00:42:01,820 --> 00:42:04,130 Ngunit iyon ay hindi talaga pagbabago ng pag-andar. 906 00:42:04,130 --> 00:42:05,880 Ito ay linya isa lamang sa mga tunay na code. 907 00:42:05,880 --> 00:42:09,010 >> Sa malas, mayroong isang function sa isang lugar na tinatawag na header-render, 908 00:42:09,010 --> 00:42:11,420 at ito ay kung saan bagay makakuha ng mga kaakit-akit na makapangyarihan. 909 00:42:11,420 --> 00:42:17,040 Pansinin na sa loob ng panaklong nito ay kung ano ang iba pang mga piraso ng syntax? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Marahil ito ay isang maliit na mahirap sabihin, ngunit mapansin there's-- makikita ko bang ilagay ang ilang mga puting 912 00:42:23,350 --> 00:42:24,300 espasyo. 913 00:42:24,300 --> 00:42:25,530 May mga square bracket. 914 00:42:25,530 --> 00:42:29,700 >> At square bracket nakita namin ng kaunti ang nakalipas sa konteksto ng nag-uugnay array, 915 00:42:29,700 --> 00:42:31,580 na kung saan ay, muli, tulad ng hash talahanayan. 916 00:42:31,580 --> 00:42:36,230 At kung sa tingin mo na ngayong i C, ang pagkakasunud-sunod ng mga argumento sa isang function 917 00:42:36,230 --> 00:42:37,570 May upang laging maging kapareho. 918 00:42:37,570 --> 00:42:41,146 Mayroon kang matandaan kung ano ang -order is-- x, y, z o z, y, x-- 919 00:42:41,146 --> 00:42:44,020 at mayroon kang palaging ibigay ang mga ito sa parehong pagkakasunud-sunod o maghanap ng mga ito 920 00:42:44,020 --> 00:42:45,100 kung nakalimutan. 921 00:42:45,100 --> 00:42:51,140 >> Ngunit ito ay tila na maging isang matalino na paraan ng pagpasa sa isang arbitrary na halaga ng key 922 00:42:51,140 --> 00:42:55,840 pares kung saan ang pamagat ay ang pangalan ng isang argumento sa kasong ito 923 00:42:55,840 --> 00:42:58,334 at CS50 ay ang halaga nito. 924 00:42:58,334 --> 00:43:00,250 At ang katotohanan na mayroon akong mga square bracket 925 00:43:00,250 --> 00:43:02,560 dito ay nangangahulugan na maaari kong ipasa ang ring sa isang bagay 926 00:43:02,560 --> 00:43:07,550 tulad ng isang linggo ay 1 o 0 o 2 o 3. 927 00:43:07,550 --> 00:43:10,550 Kaya nagbigay kami parameterized ang function na ito sa paraang 928 00:43:10,550 --> 00:43:15,180 na maaari itong tumagal ng maramihang mga input, ngunit sa ngayon ito lang ang isa. 929 00:43:15,180 --> 00:43:20,060 >> Kung pumunta ako ngayon sa helpers.php, mapansin kung ano ang ginagawa nito. 930 00:43:20,060 --> 00:43:22,030 Ito ay isang kaunti ng bagong pag-andar, 931 00:43:22,030 --> 00:43:24,190 ngunit sa ngayon tumagal lamang sa loob na ito ay 932 00:43:24,190 --> 00:43:26,570 ang syntax kung saan ka tukuyin ang isang function sa PHP. 933 00:43:26,570 --> 00:43:27,840 Literal mong sabihin ang function. 934 00:43:27,840 --> 00:43:30,090 Hindi mo tukuyin ang isang pagbalik -type, at iyon ang pare-pareho 935 00:43:30,090 --> 00:43:33,880 sa detalye ng variable mas maaga kung saan wala ka talagang masidhi-type. 936 00:43:33,880 --> 00:43:35,650 >> Ito lamang ang tinutukoy na, sa pamamagitan ng default, ito 937 00:43:35,650 --> 00:43:37,460 kumukuha ng isang nag-uugnay array bilang isang argument. 938 00:43:37,460 --> 00:43:38,210 At alam mo kung ano? 939 00:43:38,210 --> 00:43:41,450 Kung ang gumagamit ay hindi pumasa sa isang sa, ipinapalagay ng isang default na halaga. 940 00:43:41,450 --> 00:43:44,680 >> Ito ay isang tampok na C walang ay para sa atin, na maganda, dahil ngayon 941 00:43:44,680 --> 00:43:46,430 data, kahit na huwag bigyan ito ng anumang bagay, 942 00:43:46,430 --> 00:43:49,300 ay magiging isang array ngunit may isang walang laman. 943 00:43:49,300 --> 00:43:51,860 At bilang isang bukod, katas ginagawa lamang ng isang bagay funky 944 00:43:51,860 --> 00:43:56,380 kung saan ito ay tumatagal ng lahat ng mga susi mula sa nag-uugnay array, ang lahat ng mga bagay 945 00:43:56,380 --> 00:43:59,950 maaari mong ilagay sa mga square bracket, at lumilikha ng mga variable sa kanila 946 00:43:59,950 --> 00:44:06,270 sa gayon ay maaari sa huli naming magkaroon ng access sa kanila sa footet.php at header.php. 947 00:44:06,270 --> 00:44:08,950 Iyon ay isang maliit na abstract, kaya hayaan mo akong ituro ito out. 948 00:44:08,950 --> 00:44:12,990 >> Sa index.php, mapansin na ako pagpasa sa isang key halaga pares ng pamagat 949 00:44:12,990 --> 00:44:14,850 may halaga ng CS50. 950 00:44:14,850 --> 00:44:18,660 Kung ngayon tumingin ako sa helpers.php, mapansin na RenderHeader 951 00:44:18,660 --> 00:44:23,870 ay-extract ang data na iyon na ako ang pagpasa in, at pagkatapos ay nangangailangan ng header.php. 952 00:44:23,870 --> 00:44:27,970 Ano gumawa ako ay isang uri ng isang mahinang tao pagpapatupad ngayon ng mga sumusunod. 953 00:44:27,970 --> 00:44:31,720 >> Kung buksan ko up header.php, notice na na hindi ko na hindi na matigas 954 00:44:31,720 --> 00:44:34,890 -code ang salitang CS50 sa header na file. 955 00:44:34,890 --> 00:44:39,310 Naglagay ako ang tinatanggap na atrociously pinangalanang function, HTML mga espesyal na karakter, 956 00:44:39,310 --> 00:44:40,170 doon. 957 00:44:40,170 --> 00:44:41,640 Ngunit mapansin kung ano ang iyong ginawa ko. 958 00:44:41,640 --> 00:44:44,240 Mayroon akong bukas na HTML. 959 00:44:44,240 --> 00:44:47,420 Pagkatapos Mayroon akong bukas na head at bukas na pamagat. 960 00:44:47,420 --> 00:44:52,380 >> At pagkatapos ay sa loob ng bukas at ang pamagat ng malapit na tag, Mayroon akong ng kaunting code na PHP. 961 00:44:52,380 --> 00:44:56,670 At ito ay isang magandang ngunit ng syntax, na nangangahulugan lamang echo out. 962 00:44:56,670 --> 00:44:59,840 Ito Literal na nangangahulugan this-- Echo ang following-- 963 00:44:59,840 --> 00:45:01,910 ngunit ito ay sexier na magsulat. 964 00:45:01,910 --> 00:45:05,000 Echo ang pamagat na hindi nakapasa sa. 965 00:45:05,000 --> 00:45:07,560 >> Ngunit ano ang iyong palagay HTML espesyal na pansamantalang trabaho ay tungkol sa, 966 00:45:07,560 --> 00:45:10,590 lalo na kung mayroon kang ang ilang mga naunang karanasan sa HTML? 967 00:45:10,590 --> 00:45:14,050 Anong mga character ay maaaring maging mapanganib upang pumasa sa isang pahina 968 00:45:14,050 --> 00:45:17,980 kung saan pabago-bago ka sa pagbuo ng ang web page na may code na ito? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Hayaan akong pumunta sa file na ito, na bersyon dalawang, at makita kung hindi ako maaaring humimok ito. 971 00:45:24,650 --> 00:45:26,210 >> Bersyon ng dalawang ay na ito. 972 00:45:26,210 --> 00:45:28,510 At mapansin ang lahat ng bagay ay pinong, mahusay na gumagana. 973 00:45:28,510 --> 00:45:35,280 Ngunit ipagpalagay na pumunta ako sa index.php at Tinukoy ko na ang pamagat ng aking pahina 974 00:45:35,280 --> 00:45:36,630 Hindi CS50. 975 00:45:36,630 --> 00:45:44,930 Ito ay bukas bracket script alerto kumusta mundo, isara ang solong quote, 976 00:45:44,930 --> 00:45:49,740 malapit panaklong, semicolon, bukas bracket, slash script. 977 00:45:49,740 --> 00:45:51,897 >> Script, pati na kami ay ay makakita, ay isang tag 978 00:45:51,897 --> 00:45:54,480 na maaari mong gamitin sa paggamit ng isa pang tinatawag na programming language 979 00:45:54,480 --> 00:45:56,330 JavaScript sa loob ng isang web page. 980 00:45:56,330 --> 00:45:57,960 At ngayon mapansin ang logic dito. 981 00:45:57,960 --> 00:45:59,840 Narito ang isang key na tinatawag na pamagat. 982 00:45:59,840 --> 00:46:02,690 Narito ang isa itong nakatutuwang mahaba ang halaga ngayon. 983 00:46:02,690 --> 00:46:07,840 >> Ngunit kung pumunta ako sa mga helpers page- o sa halip, ang pahina ng header, 984 00:46:07,840 --> 00:46:11,310 Ako ng pagtawag sa function na ito sa pamagat na unang. 985 00:46:11,310 --> 00:46:15,250 Kaya kung ngayon i-reload ko ang pahinang ito, ako makita ito, na kamukha katawa-tawa, 986 00:46:15,250 --> 00:46:16,110 ngunit ito ay ligtas. 987 00:46:16,110 --> 00:46:17,310 Mukhang lamang itong ugok. 988 00:46:17,310 --> 00:46:20,320 >> Ngunit ipagpalagay na sa halip Ako ay nakalimutan na ito. 989 00:46:20,320 --> 00:46:24,660 At markahan ang aking mga salita, isang nonzero numero Mailalapat Nakalimutan gawin ito 990 00:46:24,660 --> 00:46:27,790 at makakakuha ka ng ilang mga masipag mag-aaral o kaibigan ay paparating na 991 00:46:27,790 --> 00:46:31,540 sa iyo sa CS50 patas o hindi nagpapakilala sa gabi poking sa paligid sa iyong website 992 00:46:31,540 --> 00:46:35,300 at mahalagang injecting code walang anumang kaalaman sa iyo sa iyong site 993 00:46:35,300 --> 00:46:35,800 kahit papaano. 994 00:46:35,800 --> 00:46:39,000 >> Dahil kung lang dumura ako ang pamagat dito at pamagat 995 00:46:39,000 --> 00:46:44,330 there-- na rin, kung ang pamagat ay literal Mukhang ganito at PHP 996 00:46:44,330 --> 00:46:47,660 bilang isang wika na maaaring dumura ang iba pang mga wika ng teksto, 997 00:46:47,660 --> 00:46:50,650 ito ay literal pagpunta upang palitan ang tag na ito sa, 998 00:46:50,650 --> 00:46:53,010 siyempre, kung ano ang ko bang ilagay sa ibang lugar. 999 00:46:53,010 --> 00:46:57,640 >> Kaya kung pumunta ako ngayon dito at i-reload pagkatapos -undo ang mga mekanismo sa kaligtasan, 1000 00:46:57,640 --> 00:46:59,982 ngayon Mayroon akong halo mundo dito. 1001 00:46:59,982 --> 00:47:02,690 Ngayon na hindi lahat na malaki ng isang harapin, ngunit maaari mong gawin ang isang bagay 1002 00:47:02,690 --> 00:47:05,119 higit pa ng kaunti nakakahamak dito, tulad ng mayroong 1003 00:47:05,119 --> 00:47:08,410 iba pang mga tags-- bilang namin makita ang isang beses gastusin namin mas maraming oras sa JavaScript-- tulad ng lokasyon 1004 00:47:08,410 --> 00:47:14,910 tuldok href nakakakuha, quote, magpanipi, HTTP business.com, ngunit ang tapat ng na 1005 00:47:14,910 --> 00:47:15,950 mula sa iba pang mga araw. 1006 00:47:15,950 --> 00:47:20,120 At ngayon maaari kang humimok ng web pahina upang aktwal na pumunta agad 1007 00:47:20,120 --> 00:47:21,190 dito sa web page na ito. 1008 00:47:21,190 --> 00:47:23,000 >> At talagang, hindi ko nais sa kahit na pumunta sa business.com 1009 00:47:23,000 --> 00:47:24,749 dahil hindi ko nais malaman kung ano na. 1010 00:47:24,749 --> 00:47:28,710 Ngunit ito, masyadong, magti-trigger ng code na injected sa pahinang ito. 1011 00:47:28,710 --> 00:47:32,680 Kaya ito ay lamang upang sabihin na kahit na ipinapakilala namin sobrang maaga sa ilang 1012 00:47:32,680 --> 00:47:36,800 sa mga mas kumplikadong kaayusan, lahat ng ito ay patungo sa isang dulo ng pagtiyak 1013 00:47:36,800 --> 00:47:39,320 na ang iyong code ay hindi exploitable. 1014 00:47:39,320 --> 00:47:40,960 >> Kaya ngayon isang third bersyon dito. 1015 00:47:40,960 --> 00:47:42,470 Nakakakuha ito ng isang maliit na may interes. 1016 00:47:42,470 --> 00:47:44,875 Ako ang hindi talaga like-- ang anal bahagi ng akin 1017 00:47:44,875 --> 00:47:47,750 ay nakakakuha ng kaunti inis sa pamamagitan ng katotohanan na ako ay isang function na tinatawag na 1018 00:47:47,750 --> 00:47:51,940 RenderHeader at RenderFooter na ay halos magkapareho. 1019 00:47:51,940 --> 00:47:55,400 Kaya naganap ito sa akin, bakit hindi Parameterize ko ang mga pag-andar 1020 00:47:55,400 --> 00:47:59,180 sa isa lamang na tinatawag na render, na tumagal ng pangalawang argumento 1021 00:47:59,180 --> 00:48:04,420 tulad ng pangalan ng template, ang pangwakas na sa render-- alinman sa header o footer? 1022 00:48:04,420 --> 00:48:07,160 At pagkatapos ay opsyonal, kung gusto ko upang pumasa sa ilang mga pangunahing mga pares ng halaga 1023 00:48:07,160 --> 00:48:10,580 tulad ng gagawin ko para sa pamagat para sa header ngunit hindi para sa footer, 1024 00:48:10,580 --> 00:48:11,800 Maaari kong gawin iyon. 1025 00:48:11,800 --> 00:48:16,510 >> At kaya ngayon kung pumunta ako sa helpers.php, ito ay isang maliit na mas kumplikadong. 1026 00:48:16,510 --> 00:48:19,670 At makikita ko iwagayway ang aking mga kamay sa mga detalye, ngunit ito ay isa lamang pag-andar. 1027 00:48:19,670 --> 00:48:21,890 Kaya iyon ay isang hakbang patungo sa isang mas mahusay na disenyo. 1028 00:48:21,890 --> 00:48:23,360 >> Maaari pa namin ito isang hakbang. 1029 00:48:23,360 --> 00:48:28,890 Kung pumunta ako sa aking pang-apat bersyon ng ito, mapapansin ngayon 1030 00:48:28,890 --> 00:48:31,320 na ako paggawa ng isang bagay higit pang mga uri ng misteryosong. 1031 00:48:31,320 --> 00:48:33,230 At alam ko na ito ay isang marami na maunawaan nang sabay-sabay, 1032 00:48:33,230 --> 00:48:35,080 ngunit kami uri lamang ng paglilinis ng mga bagay-bagay. 1033 00:48:35,080 --> 00:48:38,550 Ngayon ako ng paglalagay aking helpers -file sa isang folder na tinatawag na 1034 00:48:38,550 --> 00:48:41,190 includes-- lamang ng isang arbitrary pangalanan kung saan ako nais na ilagay ang mga bagay-bagay 1035 00:48:41,190 --> 00:48:44,300 na gusto kong include-- at pagkatapos ay ang natitirang bahagi ng ito ay pareho. 1036 00:48:44,300 --> 00:48:47,140 >> Subalit kung titingnan ko ngayon sa gedit, notice na iyong nakuha ko makapagpaalis 1037 00:48:47,140 --> 00:48:51,940 ng lahat ng mga iba pang mga file at na hindi ko na Inilipat ang mga ito, halimbawa, sa dito. 1038 00:48:51,940 --> 00:48:55,110 At pagkatapos ay sa template, Mayroon akong na ito, dito. 1039 00:48:55,110 --> 00:48:59,292 At kaya ito ay ang lahat ngayon papunta sa isang hakbang ng paggamit ng isang mas mas mahusay na pattern disenyo. 1040 00:48:59,292 --> 00:49:01,000 At kami ay masyadong mabilis pagpunta sa ilipat ang layo 1041 00:49:01,000 --> 00:49:03,870 mula sa default na pag-andar ng PHP, na nagsimula kami dito kasama, 1042 00:49:03,870 --> 00:49:07,655 kung saan maghalo mo lamang ang PHP, at iyong HTML, at ang iyong CSS, 1043 00:49:07,655 --> 00:49:09,780 at dumura mo lang ito at pumunta ka tungkol sa iyong paraan. 1044 00:49:09,780 --> 00:49:11,404 Hindi ito ng pagpunta sa maging napaka-maintainable. 1045 00:49:11,404 --> 00:49:14,481 Tulad ng sa C, sinimulan namin ang paggamit ng maraming mga file at maramihang mga pag-andar 1046 00:49:14,481 --> 00:49:15,730 at factoring bagay na out. 1047 00:49:15,730 --> 00:49:16,688 Gagawin namin ang parehong dito. 1048 00:49:16,688 --> 00:49:19,970 At sa katunayan, sa ikalimang at huling bersyon dito, ginawa ko ang isa sa iba pang mga bagay. 1049 00:49:19,970 --> 00:49:23,710 Maaari mo ring gamitin ang tuldok na tuldok, na kung saan, muli, ay isa lamang sa magulang na direktoryo. 1050 00:49:23,710 --> 00:49:28,260 Upang maging malay-tao kahit na higit pa sa seguridad, dahil kung tumingin ako sa pakikinig 1051 00:49:28,260 --> 00:49:32,450 dito para sa ikalimang at huling bersyon, abiso na mayroon akong isang direktoryo na tinatawag dito 1052 00:49:32,450 --> 00:49:35,180 publiko, at pagkatapos ay sa parehong antas, kaya upang magsalita, 1053 00:49:35,180 --> 00:49:38,490 Mayroon akong may kasamang at mga template at pagkatapos na text file Readme. 1054 00:49:38,490 --> 00:49:41,130 >> At ang dahilan na nakaayos ako ito bang this-- at kaya maraming mga web 1055 00:49:41,130 --> 00:49:44,330 host, lalo na ang mga $ 5 buwan bago o $ 10 buwan na, 1056 00:49:44,330 --> 00:49:47,170 kung sakaling nagkaroon ka ng isa sa mga services-- kung ano ang kaya marami sa kanila gawin 1057 00:49:47,170 --> 00:49:50,690 ay inaasahan nila lamang mong i-dump lahat sa iyong mga file sa isang direktoryo, 1058 00:49:50,690 --> 00:49:53,640 tulad ng ginawa namin na sa mga ang unang halimbawa. 1059 00:49:53,640 --> 00:49:56,740 >> Ngunit sa lalong madaling simulan mo ang pagbuo ng higit pa sopistikadong mga site na nag-iimbak lamang 1060 00:49:56,740 --> 00:50:00,480 data na mahalaga sa iyo at mga file na nagmamalasakit sa, aktwal na pag-aayos ng mga bagay 1061 00:50:00,480 --> 00:50:05,060 tama at may higit pang seguridad malay sa isip maaari 1062 00:50:05,060 --> 00:50:07,927 simulan namin na ipagtanggol laban sa lahat ng mga kaibigan 1063 00:50:07,927 --> 00:50:10,135 na mayroon kang alinman sa o sa labas ng klase na ito na, 1064 00:50:10,135 --> 00:50:12,510 sa lalong madaling simulan mo ang paggawa ng mga programa sa sarili mo sa web, 1065 00:50:12,510 --> 00:50:15,140 pupunta upang simulan ang pagpili sa iyo at sa mga ito. 1066 00:50:15,140 --> 00:50:17,420 >> At kaya titingnan namin huli sa disenyong ito. 1067 00:50:17,420 --> 00:50:20,010 Ito ay isang larawan lamang na inilalarawan ang mga sumusunod. 1068 00:50:20,010 --> 00:50:22,897 Kami ay pagpunta sa ilagay ang lahat ng aming mga mga programa ng logic sa isa o higit pang mga file, 1069 00:50:22,897 --> 00:50:25,230 at kami ay pagpunta upang simulan lamang pagtawag sa mga Controllers. 1070 00:50:25,230 --> 00:50:28,022 Ito ay kung saan ang talino ng aming mga website na aktwal na ay. 1071 00:50:28,022 --> 00:50:29,730 Pagkatapos kami ay pagpunta sa May tanawin at ng mga tanawin 1072 00:50:29,730 --> 00:50:32,480 ay kasing simple ng lang hiwalay files-- na tinatawag na template, madalas. 1073 00:50:32,480 --> 00:50:34,410 Mayroon lamang nila ang Estetika ng aking pahina, 1074 00:50:34,410 --> 00:50:37,020 kung ano ang nais ko ang mga pahina upang hanapin like-- ang mga kulay at ang layout 1075 00:50:37,020 --> 00:50:38,870 at ang mga posisyon ng lahat ng mga variable. 1076 00:50:38,870 --> 00:50:41,120 >> At pagkatapos ay mas kawili-wiling na makikita sa kalaunan namin upang 1077 00:50:41,120 --> 00:50:45,420 ay ang modelo, na kung saan ay magiging lamang ang salitang sampal namin sa iba pang mga teknolohiya 1078 00:50:45,420 --> 00:50:47,771 na namin dalhin sa larawan, tulad ng aktwal na mga database, 1079 00:50:47,771 --> 00:50:49,520 nang sa gayon kapag gusto mong i-save ang impormasyon, 1080 00:50:49,520 --> 00:50:52,140 hindi mo lamang magpadala ng isang email sa iyong Proctor o sa iyong sarili, 1081 00:50:52,140 --> 00:50:57,350 aktwal mong iimbak ito sa isang database paggamit ng ibang wika na kilala bilang SQL. 1082 00:50:57,350 --> 00:51:00,450 At kaya namin na nakalabas dito ngayon at pick up na may ito sa Miyerkules 1083 00:51:00,450 --> 00:51:02,990 at ipakikilala database pagkatapos. 1084 00:51:02,990 --> 00:51:06,940 >> [Musika sa pag-play] 1085 00:51:06,940 --> 00:54:24,555