1 00:00:00,000 --> 00:00:03,920 >> [Speel van musiek] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> David J. Malan Alle regte. 4 00:00:13,800 --> 00:00:15,640 Dit is CS50. 5 00:00:15,640 --> 00:00:17,620 Dit is die begin van die week agt. 6 00:00:17,620 --> 00:00:22,440 En jy kan onthou dat ons opgehou het laaste keer op soek na 'n nuwe taal 7 00:00:22,440 --> 00:00:23,240 geheel en al. 8 00:00:23,240 --> 00:00:25,905 Trouens, een wat redelik liggewig en dit is nie eens 9 00:00:25,905 --> 00:00:26,940 'n programmeertaal. 10 00:00:26,940 --> 00:00:31,100 Dit is 'n opmaak taal wat ons kan eintlik struktuur en maak web bladsye. 11 00:00:31,100 --> 00:00:33,350 En wanneer jy iets anders in samewerking met this-- 12 00:00:33,350 --> 00:00:35,670 of jy gou sal, indien jy nie reeds. 13 00:00:35,670 --> 00:00:38,530 Ons gaan Cascading te gebruik Style Sheets, of CSS, wat 14 00:00:38,530 --> 00:00:40,971 is 'n ander tipe van taal met eienskappe en waardes 15 00:00:40,971 --> 00:00:43,220 wat gaan om ons te laat doen dinge wil verander die kleur 16 00:00:43,220 --> 00:00:46,010 en verander die posisie en hierdie soort van tweaks. 17 00:00:46,010 --> 00:00:49,940 Maar vandag en verder, het ons begin om te fokus op meer kragtige tale, 18 00:00:49,940 --> 00:00:52,810 werklike programmeertale soos PHP. 19 00:00:52,810 --> 00:00:54,880 >> So PHP is om vir 'n geruime tyd. 20 00:00:54,880 --> 00:00:56,810 En as jy sien, is dit is hoofsaaklik ontwerp 21 00:00:56,810 --> 00:01:00,280 vroeg op vir die werklike gebruik in die web-ontwikkeling 22 00:01:00,280 --> 00:01:02,360 en eintlik genereer webblaaie. 23 00:01:02,360 --> 00:01:04,849 So watter soort funksies nie 'n taal 24 00:01:04,849 --> 00:01:10,040 nodig het om web te maak bladsye dinamies met dit? 25 00:01:10,040 --> 00:01:14,760 >> Met ander woorde, as jy wil te genereer inhoud dynamically-- soos Facebook se 26 00:01:14,760 --> 00:01:19,480 Newsfeed, wat voortdurend verander, of kitsboodskappe wat pop-up van tyd 27 00:01:19,480 --> 00:01:21,872 te time-- soos wat is die belangrike stuk van die funksies 28 00:01:21,872 --> 00:01:24,580 wat jy nodig het in 'n programmeertaal wat dinamies laat 29 00:01:24,580 --> 00:01:28,070 druk nuwe inligting na die skerm? 30 00:01:28,070 --> 00:01:28,685 >> STUDENT: Kode. 31 00:01:28,685 --> 00:01:29,560 David J. Malan Kode. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Ons neem nie. 34 00:01:31,995 --> 00:01:35,310 'N bietjie meer presies. 35 00:01:35,310 --> 00:01:37,639 Ek bedoel, kan ons doen dit met C, eerlik. 36 00:01:37,639 --> 00:01:38,930 Dit sou 'n pyn in die nek wees. 37 00:01:38,930 --> 00:01:41,045 But-- is hierdie verbintenis? 38 00:01:41,045 --> 00:01:41,895 >> STUDENT: Ja. 39 00:01:41,895 --> 00:01:42,677 Veranderlikes, miskien? 40 00:01:42,677 --> 00:01:43,760 David J. Malan veranderlikes. 41 00:01:43,760 --> 00:01:44,160 OK, seker nie. 42 00:01:44,160 --> 00:01:45,740 Veranderlikes kan beslis help ons uit. 43 00:01:45,740 --> 00:01:47,020 En selfs iets eenvoudiger. 44 00:01:47,020 --> 00:01:50,640 Ons gebruik dit in die heel eerste program van die eerste dag 45 00:01:50,640 --> 00:01:55,686 wanneer ons eintlik sê "hallo wêreld." 46 00:01:55,686 --> 00:01:56,570 >> STUDENT: Print. 47 00:01:56,570 --> 00:01:57,778 >> David J. Malan Print, reg? 48 00:01:57,778 --> 00:02:01,050 Print of printf in die wêreld van C. So al hierdie tyd, 49 00:02:01,050 --> 00:02:03,362 Ons by gehad het om ons beskik oor 'n language-- C, 50 00:02:03,362 --> 00:02:05,570 in particular-- en selfs Nuuts af vir die saak wat 51 00:02:05,570 --> 00:02:07,400 kan genereer snare van die teks. 52 00:02:07,400 --> 00:02:11,090 >> Wel, as HTML, soos ons verlede week gesien, is net 'n hele klomp van die snare van die teks 53 00:02:11,090 --> 00:02:14,692 al is dit met oop hakies en gesluit hakies en 'n soort van rym 54 00:02:14,692 --> 00:02:16,650 en die rede agter dit, Wel, dan kan ons regtig 55 00:02:16,650 --> 00:02:20,440 begin genereer webblaaie óf hand deur te tik hulle in gedit 56 00:02:20,440 --> 00:02:23,870 of in Microsoft Word, vir daardie matter-- ons moet net 'n teks editor. 57 00:02:23,870 --> 00:02:26,830 >> Of ons kan kode skryf, aan jou voorstel 58 00:02:26,830 --> 00:02:30,435 vroeër, sal dit laat ons HTML dinamiese genereer, 59 00:02:30,435 --> 00:02:32,560 en dit is wat ons gaan begin doen met PHP 60 00:02:32,560 --> 00:02:34,900 en uiteindelik selfs met 'n taal, die sogenaamde JavaScript, 61 00:02:34,900 --> 00:02:37,910 is een taal gebruik om mekaar te genereer. 62 00:02:37,910 --> 00:02:40,720 En inderdaad, dit is wat Facebook en baie, baie ander plekke 63 00:02:40,720 --> 00:02:44,530 doen om werklik dinamiese vertoon nuwe inligting aan jou. 64 00:02:44,530 --> 00:02:47,117 >> So laat ons begin met 'n this-- kriptiese soek lyn, maar 'n mens 65 00:02:47,117 --> 00:02:48,450 dit is eintlik redelik sterk. 66 00:02:48,450 --> 00:02:51,210 Tot dusver het ons al met behulp van C, Dit is 'n saamgestel taal. 67 00:02:51,210 --> 00:02:55,050 En net 'n vinnige recap-- n saamgestel taal het wat kenmerkend? 68 00:02:55,050 --> 00:02:59,050 Moet jy natuurlik op te stel nie, maar wat beteken dit? 69 00:02:59,050 --> 00:03:00,505 Ja? 70 00:03:00,505 --> 00:03:02,940 >> STUDENT: Dit moet wees vergader in die masjien kode. 71 00:03:02,940 --> 00:03:03,060 >> David J. Malan OK. 72 00:03:03,060 --> 00:03:04,530 Dit moet saamgestel word in die masjien kode. 73 00:03:04,530 --> 00:03:07,340 So jy jou bron-kode, wat is 'n soort van Engels-agtige. 74 00:03:07,340 --> 00:03:09,270 Jy skakel wat iets laer vlak, 75 00:03:09,270 --> 00:03:11,590 wat uiteindelik genoem voorwerp code-- 0 en 1's. 76 00:03:11,590 --> 00:03:14,830 En dit is die 0 en 1's wat 'n CPU, soos dié wat deur Intel, 77 00:03:14,830 --> 00:03:16,110 eintlik verstaan. 78 00:03:16,110 --> 00:03:19,690 >> Nou, PHP en Python en Ruby en JavaScript en trosse van ander 79 00:03:19,690 --> 00:03:23,190 tale is nie saamgestel tale, maar geïnterpreteer tale, 80 00:03:23,190 --> 00:03:26,630 wat beteken dat jy tik net en dan jy draai nie om hulle in 0 en 1's. 81 00:03:26,630 --> 00:03:30,790 Jy plaas net voorsien dan as insette aan iemand anders se program, 82 00:03:30,790 --> 00:03:32,080 genoem 'n tolk. 83 00:03:32,080 --> 00:03:34,460 En daardie persoon se program is ontwerp 84 00:03:34,460 --> 00:03:38,280 om te verstaan ​​wat elk en elke simbool in Python of PHP 85 00:03:38,280 --> 00:03:42,650 of Ruby of enige aantal ander tale beteken. 86 00:03:42,650 --> 00:03:44,760 >> En so al wat ons nodig het, is iets soos hierdie. 87 00:03:44,760 --> 00:03:46,350 So in werklikheid, ek gaan gaan oor na die toestel 88 00:03:46,350 --> 00:03:48,100 hier, net in 'n ou venster, en ons is 89 00:03:48,100 --> 00:03:52,580 gaan voort en oop te gaan 'n lêer met die naam, sê hallo. 90 00:03:52,580 --> 00:03:55,780 Nou voorheen, kan ek gered het dit selfs met 'n lêer uitbreiding, 91 00:03:55,780 --> 00:03:57,910 maar ek gaan om te doen iets wat selfs eenvoudiger hier. 92 00:03:57,910 --> 00:04:02,450 Ek gaan om voort te gaan en begin hierdie lêer met hierdie kriptiese sintaksis. 93 00:04:02,450 --> 00:04:06,310 So "gebruiker, bin, env, vir die omgewing, PHP. " 94 00:04:06,310 --> 00:04:10,670 >> Dit is eenvoudig 'n reël van die kode wat gaan my bedryfstelsel te vertel, 95 00:04:10,670 --> 00:04:13,730 gaan vind in jou plaaslike omgewing wat dit ook al is, 96 00:04:13,730 --> 00:04:18,149 waar PHP is-- die interpreter-- en voort te gaan en die gebruik dat tolk 97 00:04:18,149 --> 00:04:20,589 die volgende kode te interpreteer. 98 00:04:20,589 --> 00:04:22,760 Nou, hierdie is 'n soort van 'n lelike kenmerk van PHP. 99 00:04:22,760 --> 00:04:24,980 Maar in hierdie taal, enige tyd wat jy skryf PHP-kode, 100 00:04:24,980 --> 00:04:29,200 moet jy een van hierdie lelike te hê PHP tags baken die begin 101 00:04:29,200 --> 00:04:32,220 jou code-- 00:04:37,430 >> Maar onder hier, ek kan nou iets doen eenvoudig soos printf hallo komma 103 00:04:37,430 --> 00:04:40,922 wêreld backslash n noue quote, naby hakies. 104 00:04:40,922 --> 00:04:42,630 En dan net vir 'n goeie maat, ek gaan 105 00:04:42,630 --> 00:04:45,380 om voort te gaan en sluit my PHP tag hier 106 00:04:45,380 --> 00:04:47,390 sodat alles lyk mooi mooi gedruk. 107 00:04:47,390 --> 00:04:50,780 >> En so gou as ek klik op Save, gedit is eintlik slim genoeg 108 00:04:50,780 --> 00:04:54,620 om te kyk na daardie heel eerste lyn en besef, o, jy PHP-kode te skryf. 109 00:04:54,620 --> 00:04:56,710 Laat my sintaksis hoogtepunt dit met die kleure 110 00:04:56,710 --> 00:04:58,690 hier sodat dit uitstaan 'n bietjie meer. 111 00:04:58,690 --> 00:05:01,300 Maar nou is ek gaan om te gaan af na my terminale venster. 112 00:05:01,300 --> 00:05:02,340 Ek sal vergroot in. 113 00:05:02,340 --> 00:05:06,860 >> Hierdie program is die sogenaamde "hello," so ek gaan dot streep te doen hello, 114 00:05:06,860 --> 00:05:07,990 maar toestemming geweier. 115 00:05:07,990 --> 00:05:08,490 En bash. 116 00:05:08,490 --> 00:05:10,610 Ons het eintlik gehoor van daardie ding wat 'n paar weke gelede 117 00:05:10,610 --> 00:05:13,140 in die konteks van Shellshock, een van daardie foute. 118 00:05:13,140 --> 00:05:16,240 >> Maar toestemming geweier het ons gesien voor, miskien in 'n ander konteks. 119 00:05:16,240 --> 00:05:19,060 Is daar iemand onthou hoe jy iets kan regmaak 120 00:05:19,060 --> 00:05:22,100 waar toestemming geweier soos hierdie? 121 00:05:22,100 --> 00:05:23,490 Wat is die opdrag, ten minste? 122 00:05:23,490 --> 00:05:24,159 >> STUDENT: chmod. 123 00:05:24,159 --> 00:05:26,700 David J. MALAN: Ja, chmod, vir die verandering van die wyse van 'n lêer. 124 00:05:26,700 --> 00:05:30,171 En jy sal kry al hoe meer gebruik om te hierdie volgende week met 'n verdere probleem 125 00:05:30,171 --> 00:05:30,670 stel. 126 00:05:30,670 --> 00:05:33,211 Maar vir nou, ek gaan om te verander die modus nie leesbaar wees, 127 00:05:33,211 --> 00:05:36,650 maar almal executeability te gee voorregte, die vermoë 128 00:05:36,650 --> 00:05:37,710 hierdie lêer uit te voer. 129 00:05:37,710 --> 00:05:40,360 En ek gaan om te wys wat aan die lêer hallo. 130 00:05:40,360 --> 00:05:45,150 >> As ek nou doen dot streep gaan hello, jy sien, in werklikheid, my program, hello wêreld. 131 00:05:45,150 --> 00:05:48,760 En wat stap het ek duidelik heeltemal oorslaan? 132 00:05:48,760 --> 00:05:49,520 Opstel van. 133 00:05:49,520 --> 00:05:51,680 So ek het net gehardloop hierdie program eenvoudig. 134 00:05:51,680 --> 00:05:55,690 >> En dit blyk jy dit kan doen met 'n baie van die sintaksis wat herinner aan C. 135 00:05:55,690 --> 00:06:03,400 Laat my gaan in vandag se kode, wat ek in my vhost gids 136 00:06:03,400 --> 00:06:05,250 hier, vir die regte redes ons sal terug te kom. 137 00:06:05,250 --> 00:06:09,350 En ek gaan om te gaan in, kom ons sê, voorwaardes 1. 138 00:06:09,350 --> 00:06:12,450 >> En wat jy hier sien, die eerste en plek, 'n hele klomp van die kommentaar. 139 00:06:12,450 --> 00:06:15,240 Maar dit is eintlik 'n her-skepping in PHP 140 00:06:15,240 --> 00:06:18,960 van 'n program wat ons gedoen het in week een genoem voorwaardes 1.c 141 00:06:18,960 --> 00:06:20,690 waar die doel in lewe van hierdie program 142 00:06:20,690 --> 00:06:22,950 is blykbaar om te vra die gebruiker vir 'n heelgetal 143 00:06:22,950 --> 00:06:25,270 en dan 'n paar sagte doen analise op dit waardeur 144 00:06:25,270 --> 00:06:29,510 jy sê as dit positief of negatiewe of gelyk aan nul. 145 00:06:29,510 --> 00:06:34,220 En ek bring dit op net omdat, behalwe vir miskien 'n klein detail, 146 00:06:34,220 --> 00:06:37,150 dit is ononderskeibaar so ver van C. 147 00:06:37,150 --> 00:06:39,930 >> Wat is die een eienskap hier dat miskien spring uit 148 00:06:39,930 --> 00:06:41,410 by julle as 'n bietjie anders? 149 00:06:41,410 --> 00:06:42,160 Miskien twee dinge. 150 00:06:42,160 --> 00:06:42,660 Ja? 151 00:06:42,660 --> 00:06:44,070 >> STUDENT: Dollar teken n? 152 00:06:44,070 --> 00:06:44,944 >> David J. MALAN: Ja. 153 00:06:44,944 --> 00:06:46,210 So dollar teken N teenwoordig is. 154 00:06:46,210 --> 00:06:48,120 En dollar tekens, soos ons sal sien, gaan 155 00:06:48,120 --> 00:06:51,460 'n oplossing aan die begin te wees van enige veranderlike in PHP. 156 00:06:51,460 --> 00:06:54,250 Dit is beide goed en bad-- goeie in dat dit is soort van voor die hand liggend wat is 157 00:06:54,250 --> 00:06:56,797 'n veranderlike, sleg in dat dit nog 'n ding om te tik. 158 00:06:56,797 --> 00:06:58,630 En daar is 'n ander ding wat ons het nie heeltemal 159 00:06:58,630 --> 00:07:00,876 gesien het, ten minste deur die spelling. ja? 160 00:07:00,876 --> 00:07:01,630 >> STUDENT: read line. 161 00:07:01,630 --> 00:07:02,671 >> David J. Malan read line. 162 00:07:02,671 --> 00:07:06,550 Read line ons nie sien nie, per se, in C, selfs al is daar 'iets 163 00:07:06,550 --> 00:07:09,530 soortgelyke, maar ons het getstring gebruik, en dit is sy eweknie. 164 00:07:09,530 --> 00:07:12,950 So as ek gaan in hierdie gids, wat gebeur om te wees, 165 00:07:12,950 --> 00:07:18,030 as ek in 'n bietjie in my vhost sal verduidelik gids en my bron 'n gids, 166 00:07:18,030 --> 00:07:22,730 en ek gaan voort en doen dot streep conditions-- whoops-- dot streep 167 00:07:22,730 --> 00:07:26,710 voorwaardes 1, sal jy sien, weer, dieselfde issue-- toestemming geweier. 168 00:07:26,710 --> 00:07:33,610 >> So laat my zoom in en chmod 'n plus x op toestande, dot streep voorwaardes. 169 00:07:33,610 --> 00:07:35,222 Ek wil graag 'n heelgetal, asseblief, 50. 170 00:07:35,222 --> 00:07:36,930 En ons kon speel hierdie spel die hele dag lank. 171 00:07:36,930 --> 00:07:39,140 Dit gaan om presies te tree soos dit gedoen het in week een. 172 00:07:39,140 --> 00:07:42,860 >> OK so nie alles wat anders is, behalwe nie net dat effense bietjie van sintaksis, 173 00:07:42,860 --> 00:07:45,490 maar op die top, het ek weer het hierdie lyn wat 174 00:07:45,490 --> 00:07:49,760 het my toegelaat om iets te skep wat lyk soos 'n C program genaamd hello, 175 00:07:49,760 --> 00:07:51,150 genoem voorwaardes 1. 176 00:07:51,150 --> 00:07:54,520 Maar dit is nie 0's en kinders Ek is direk uitvoering. 177 00:07:54,520 --> 00:07:57,620 Dit is eerder die loop van hierdie tolk wie se naam 178 00:07:57,620 --> 00:07:59,440 gebeur identies aan die taal wees. 179 00:07:59,440 --> 00:08:04,970 Die program word PHP genoem, en my kode onder lyn een is wat geslaag het in dit. 180 00:08:04,970 --> 00:08:07,740 >> Ons kan dit doen nog 'n redelik eenvoudige byvoorbeeld herinner aan iets 181 00:08:07,740 --> 00:08:09,240 Ons het weke gelede. 182 00:08:09,240 --> 00:08:12,020 Weereens, dit is 'n soort van arbitrêre stuk van die kode 183 00:08:12,020 --> 00:08:14,000 wat blykbaar nie wat as jy dit sal loop? 184 00:08:14,000 --> 00:08:15,625 Wat is dit gaan om te druk, vermoedelik? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> So het aanvanklik op die lyn 16, is dit gaan sê x is nou 2, waarskynlik. 187 00:08:28,250 --> 00:08:30,920 % D is dieselfde as $ i vir printf. 188 00:08:30,920 --> 00:08:33,460 So dan is dit cubing, dot, dot, dot, in lyn 17. 189 00:08:33,460 --> 00:08:36,299 En dan reël 18 verskyn 'n funksie Cubed te bel. 190 00:08:36,299 --> 00:08:37,600 En waar is Cubed gedefinieer? 191 00:08:37,600 --> 00:08:40,319 >> Wel, dit lyk soos in die lyn 25, so dit is nie al wat verskil. 192 00:08:40,319 --> 00:08:42,610 Ek het 'n paar opmerkings bo nie, maar vir die grootste deel, 193 00:08:42,610 --> 00:08:45,370 dit is 'n redelik eenvoudige porting of sukses 194 00:08:45,370 --> 00:08:48,470 uit die C-program aan die PHP weergawe. 195 00:08:48,470 --> 00:08:52,670 Maar daar is nou 'n paar verskille wat miskien moet spring uit. 196 00:08:52,670 --> 00:08:56,100 Wat anders is anders oor hoe jy kan dit dieselfde program in C skryf? 197 00:08:56,100 --> 00:08:57,900 >> STUDENT: [onhoorbaar]. 198 00:08:57,900 --> 00:09:00,070 >> David J. Malan Daar is geen prototipe tot bo. 199 00:09:00,070 --> 00:09:03,210 So PHP-- en eerlik, 'n Baie van die moderne languages-- 200 00:09:03,210 --> 00:09:06,920 is 'n baie slimmer en meer nuttig as C opstellers in wat jy 201 00:09:06,920 --> 00:09:09,740 kan die funksie sit hier, jy kan 'n funksie sit hier, 202 00:09:09,740 --> 00:09:12,740 en die tolk gaan jy die guns van lees te doen 203 00:09:12,740 --> 00:09:16,010 die hele lêer voordat hy besluit dat 'n funksie nie bestaan ​​nie. 204 00:09:16,010 --> 00:09:17,970 So mooi verbeterings jaar later. 205 00:09:17,970 --> 00:09:22,126 Maar daar is ook iets anders verskillende of afwesig hier. 206 00:09:22,126 --> 00:09:22,626 Ja? 207 00:09:22,626 --> 00:09:25,084 >> STUDENT: [onhoorbaar]. 208 00:09:25,084 --> 00:09:27,750 David J. Malan Ons hoef nie te verklaar die tipes veranderlikes, 209 00:09:27,750 --> 00:09:31,780 so ons sal kort voor lank dat sien Daar is verskillende tipes in PHP, 210 00:09:31,780 --> 00:09:34,970 maar jy hoef dit nie te spesifiseer, wat ook is beide goed en sleg. 211 00:09:34,970 --> 00:09:36,623 En daar is 'n ander ding ontbreek. 212 00:09:36,623 --> 00:09:37,430 >> STUDENT: Daar is geen biblioteke. 213 00:09:37,430 --> 00:09:38,630 >> David J. Malan Daar is geen biblioteke. 214 00:09:38,630 --> 00:09:39,350 OK, so dit is lekker. 215 00:09:39,350 --> 00:09:40,540 Ons kry 'n baie meer uit die boks. 216 00:09:40,540 --> 00:09:43,373 So daar is eintlik 'n baie meer dinge as wat ek gedink het, verskil. 217 00:09:43,373 --> 00:09:44,350 Hoe gaan weg in die rug? 218 00:09:44,350 --> 00:09:46,032 Wat is dit? 219 00:09:46,032 --> 00:09:46,740 Sê dit weer? 220 00:09:46,740 --> 00:09:47,960 >> STUDENT: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> David J. Malan Geen wysers. 222 00:09:49,270 --> 00:09:51,280 OK, ten minste in hierdie voorbeeld nie. 223 00:09:51,280 --> 00:09:52,070 Dit is regverdig. 224 00:09:52,070 --> 00:09:55,090 So is daar nie riglyne in PHP eintlik in die algemeen. 225 00:09:55,090 --> 00:09:58,730 Daar is iets genoem verwysings, maar ons sal nie te veel tyd daar spandeer. 226 00:09:58,730 --> 00:09:59,520 En wat anders? 227 00:09:59,520 --> 00:10:00,185 >> STUDENT: Main. 228 00:10:00,185 --> 00:10:01,060 David J. Malan Main. 229 00:10:01,060 --> 00:10:02,768 So dit was die grote Ek het gedink van. 230 00:10:02,768 --> 00:10:04,660 Let daarop dat daar is geen hoof ingang punt. 231 00:10:04,660 --> 00:10:06,525 Jy begin net die skryf van jou kode. 232 00:10:06,525 --> 00:10:08,400 En dit is eintlik gaan voordelig wees 233 00:10:08,400 --> 00:10:10,560 wanneer ons die oorgang 'n oomblik om werklik die gebruik 234 00:10:10,560 --> 00:10:13,980 dieselfde taal vir web-gebaseerde ontwikkeling, waarvoor ons 235 00:10:13,980 --> 00:10:16,580 wil nie net een inskrywing punt te hê. 236 00:10:16,580 --> 00:10:19,980 Ons wil dalk 'n klomp van die te hê URL, 'n klomp van die verskillende lêers 237 00:10:19,980 --> 00:10:22,930 al wat in die gebruiker se toevoer en die vervaardiging van uitset. 238 00:10:22,930 --> 00:10:27,130 >> Maar hier is die baie teleurstellend voorbeeld wat ek die laaste keer belowe het, 239 00:10:27,130 --> 00:10:30,130 naamlik in hierdie gids hier, spelfoute. 240 00:10:30,130 --> 00:10:33,680 So in hierdie lêer speller, wat ons sal nie te veel tyd spandeer op, daar is ' 241 00:10:33,680 --> 00:10:37,870 in wese 'n porting-- P-O-R-T. Dis net die woord gegee toe, sê, 242 00:10:37,870 --> 00:10:40,800 jy van een taal omskep na 'n ander hand gewoonlik. 243 00:10:40,800 --> 00:10:45,680 >> Dit is 'n verslaggewing van PC weergawe van speller van PSET 5. 244 00:10:45,680 --> 00:10:48,856 En ek wese probeer om te skakel dit reël vir reël so goed as wat ek kan. 245 00:10:48,856 --> 00:10:51,730 So as jy wil hierdie soort van ding, dit eintlik is die moeite werd om op 'n sekere punt 246 00:10:51,730 --> 00:10:54,229 trek hulle albei langs kant en sien wat is dieselfde 247 00:10:54,229 --> 00:10:55,230 en wat anders is. 248 00:10:55,230 --> 00:10:57,510 Maar hulle is pretty darn soortgelyk. 249 00:10:57,510 --> 00:11:00,110 As jy onthou wat speller selfs lyk, 250 00:11:00,110 --> 00:11:02,110 selfs al is jy nie het hierdie lêer te verander, 251 00:11:02,110 --> 00:11:04,860 dit is redelik soortgelyk struktureel met net 'n paar 252 00:11:04,860 --> 00:11:06,200 veranderinge hier en daar. 253 00:11:06,200 --> 00:11:10,140 >> So dit is net om te sê dat dit is redelik eenvoudig speller te omskep 254 00:11:10,140 --> 00:11:12,000 van C na PHP. 255 00:11:12,000 --> 00:11:15,390 Maar in woordeboek, is daar iets wat selfs meer aantreklik. 256 00:11:15,390 --> 00:11:19,270 Laat my voort te gaan en die skep my eie dictionary.php lêer. 257 00:11:19,270 --> 00:11:24,010 So effens anders in die sin dat ons sal noem dit Php plaas van .c. 258 00:11:24,010 --> 00:11:26,980 Want dit is 'n PHP lêer, ek do-- effens annoyingly-- het 259 00:11:26,980 --> 00:11:30,132 die lêer met te begin 'n PHP tag soos dit. 260 00:11:30,132 --> 00:11:32,340 En ek gaan om voort te gaan en definieer 'n paar funksies. 261 00:11:32,340 --> 00:11:35,770 Funksie genoem tjek, wat gaan neem in 'n woord soos tevore. 262 00:11:35,770 --> 00:11:37,520 Maar hierdie argument se gaan 'n dollar te hê 263 00:11:37,520 --> 00:11:39,840 teken, want ons is, weer, met behulp van PHP. 264 00:11:39,840 --> 00:11:42,350 Nog 'n funksie van dictionary.c was vrag 265 00:11:42,350 --> 00:11:47,120 en dit het in die naam van 'n woordeboek, so ek sal kry om daardie funksie gereed om te gaan. 266 00:11:47,120 --> 00:11:50,920 >> Die ander een in dictionary.c was wat? 267 00:11:50,920 --> 00:11:54,580 Grootte was een van die mooiste mense by minste as jy gehou paar veranderlike rond. 268 00:11:54,580 --> 00:11:57,830 so klein is net 'n veranderlike om terug te keer. 269 00:11:57,830 --> 00:11:59,090 En dan was daar aflaai. 270 00:11:59,090 --> 00:12:02,830 >> So was daar hierdie vier funksies in die probleem stel 5 271 00:12:02,830 --> 00:12:06,770 wat jy nodig het om te implementeer met sommige data struktuur of strukture. 272 00:12:06,770 --> 00:12:10,170 So ek het belowe dat in PHP, kan ons verklaar 273 00:12:10,170 --> 00:12:14,490 'n gemors tafel, byvoorbeeld, alles wat makliker. 274 00:12:14,490 --> 00:12:17,377 In werklikheid, as ek wil 'n hash tafel, Ek is net gaan om te gaan soos wat 275 00:12:17,377 --> 00:12:18,460 en daar is my hash tafel. 276 00:12:18,460 --> 00:12:21,555 En dit is die noot, teleurstellend, dat ons links af op die laaste keer. 277 00:12:21,555 --> 00:12:23,930 En jy weet wat, as ek wou 'n veranderlike vir die grootte, goed, 278 00:12:23,930 --> 00:12:25,867 hierdie een is nie al wat verskil van C, 279 00:12:25,867 --> 00:12:27,450 maar ek gaan om voort te gaan en dit doen. 280 00:12:27,450 --> 00:12:28,630 En sien geen data tipe. 281 00:12:28,630 --> 00:12:31,180 En Ek sal later terug te gaan en eintlik hier by te voeg 'n paar opmerkings. 282 00:12:31,180 --> 00:12:32,480 Maar wat van vrag? 283 00:12:32,480 --> 00:12:35,780 >> As dollar teken woordeboek is die naam van my lêer 284 00:12:35,780 --> 00:12:39,600 en ek wil eintlik te laai woorde in die tabel nou, 285 00:12:39,600 --> 00:12:42,360 Ek kan eintlik nie iets redelik eenvoudig. 286 00:12:42,360 --> 00:12:44,880 One-- en dit is minorly annoying-- in PHP, 287 00:12:44,880 --> 00:12:47,710 jy het om in te gee van 'n funksie as jy 288 00:12:47,710 --> 00:12:51,060 wil toegang tot 'n globale veranderlike wat is buite omskryf. 289 00:12:51,060 --> 00:12:53,530 >> Maar dit is nie besonder interessante nou. 290 00:12:53,530 --> 00:12:57,920 Wat is meer interessant is dit vir elke bou wat ek genoem laaste tyd. 291 00:12:57,920 --> 00:13:01,880 En dit blyk dat PHP het 'n funksie genoem lêer wie se doel in die lewe 292 00:13:01,880 --> 00:13:05,550 is 'n lêer oop te maak en te lees in al sy lyne in 'n skikking 293 00:13:05,550 --> 00:13:06,840 en gee hulle terug te. 294 00:13:06,840 --> 00:13:12,170 >> Wat om te sê ek kan woordeboek doen wat nou effektief as ek roep lêer, 295 00:13:12,170 --> 00:13:15,472 dit gaan my terug te gee 'n verskeidenheid van woorde uit die lêer. 296 00:13:15,472 --> 00:13:16,430 Dit is nie al wat goed is. 297 00:13:16,430 --> 00:13:20,130 Dit gaan nog 'n lyn te wees woorde, iets lineêre. 298 00:13:20,130 --> 00:13:23,880 Maar ek kan voort te gaan en Itereer oor elk van hierdie woorde met 299 00:13:23,880 --> 00:13:25,710 dat sintaksis ons gesien kortliks laaste tyd. 300 00:13:25,710 --> 00:13:27,940 En jy sal dit weer sien in die komende PSET. 301 00:13:27,940 --> 00:13:32,070 >> Maar nou het ek 'n lus iterating oor elke woord in die woordeboek. 302 00:13:32,070 --> 00:13:36,100 En op elke iterasie, onthou ek roeping van die huidige woord "woord." 303 00:13:36,100 --> 00:13:39,790 En al wat dit gaan neem om te 'n woord in die woordeboek is 304 00:13:39,790 --> 00:13:43,530 gaan wees woord raaiskoot "waar is." 305 00:13:43,530 --> 00:13:44,740 Dit is my insetsel funksie. 306 00:13:44,740 --> 00:13:46,661 Dit is my vrag funksie vir my woordeboek. 307 00:13:46,661 --> 00:13:49,410 Nou is dit 'n bietjie van 'n bedrieër, want jy weet wat, daar is eintlik 308 00:13:49,410 --> 00:13:52,920 backslash N se aan die einde van die woorde dat ek moet seker ontslae te raak van, 309 00:13:52,920 --> 00:13:56,380 maar dit is nie 'n probleem nie, want PHP het 'n funksie genoem kap wat letterlik 310 00:13:56,380 --> 00:13:58,480 tjops af een karakter aan die einde. 311 00:13:58,480 --> 00:13:59,400 So geen probleem daar. 312 00:13:59,400 --> 00:14:02,199 Ons het voor en eintlik gegaan verkort dat net hierdie. 313 00:14:02,199 --> 00:14:05,240 En nou, ek moet seker dop grootte, so laat ons ten minste doen this-- 314 00:14:05,240 --> 00:14:05,835 grootte ++. 315 00:14:05,835 --> 00:14:07,339 Ek kan dit doen as tevore. 316 00:14:07,339 --> 00:14:10,380 En dan is dit waarskynlik gaan om te werk net 'n boete, sodat se terugkeer waar. 317 00:14:10,380 --> 00:14:10,930 Gedoen. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Gelag] 320 00:14:13,545 --> 00:14:14,420 >> David J. Malan OK. 321 00:14:14,420 --> 00:14:16,628 Ons gaan dit weer te doen met die volgende PSET ook. 322 00:14:16,628 --> 00:14:18,730 So, wat oor die grootte? 323 00:14:18,730 --> 00:14:22,080 Wel, hierdie een hopelik oor as jy die laaste keer te verwag, 324 00:14:22,080 --> 00:14:24,460 maar ek het om te doen hierdie dom globale ding. 325 00:14:24,460 --> 00:14:26,610 Dis net 'n juweel van die taal se ontwerp. 326 00:14:26,610 --> 00:14:28,450 >> Maar tjek is 'n bietjie meer interessant. 327 00:14:28,450 --> 00:14:31,420 So as ek geslaag het in dollar teken woord, het ek eers 328 00:14:31,420 --> 00:14:34,060 wil om toegang te hê dat globale veranderlike tafel. 329 00:14:34,060 --> 00:14:36,700 En nou as ek wil kyk of 'n woord is daar, 330 00:14:36,700 --> 00:14:44,350 Ek kan net sê as dit waar is dat Die volgende is wat in die tabel, 331 00:14:44,350 --> 00:14:49,957 dan voort te gaan en terugkeer waar; anders, terugkeer vals. 332 00:14:49,957 --> 00:14:51,180 Gedoen. 333 00:14:51,180 --> 00:14:52,440 Die ander helfte van PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Alle reg, sodat weer, ek is sny 'n paar hoeke. 335 00:14:54,540 --> 00:14:56,831 In regverdigheid, ek moet seker spandeer 'n paar sekondes 336 00:14:56,831 --> 00:14:58,300 op die implementering van hierdie. 337 00:14:58,300 --> 00:15:01,860 En ek moet seker nie spot al die ure wat jy op die PSET so baie. 338 00:15:01,860 --> 00:15:04,045 So strtolower is 'n funksie. 339 00:15:04,045 --> 00:15:06,670 Iets soortgelyk eksistensialistiese in C, ten minste vir karakters, 340 00:15:06,670 --> 00:15:08,560 maar PHP se het 'n hele string weergawe. 341 00:15:08,560 --> 00:15:11,226 >> Dit gaan alles af te dwing in klein letters, wat sommige van julle 342 00:15:11,226 --> 00:15:14,944 dalk gedoen het om canonicalize wat jy sit in jou woordeboek. 343 00:15:14,944 --> 00:15:16,360 En nou kan jy dit doen in C, ook. 344 00:15:16,360 --> 00:15:17,780 Dit het niks te doen met PHP. 345 00:15:17,780 --> 00:15:20,260 >> Maar enige tyd wat jy het 'n Boolese toestand, 346 00:15:20,260 --> 00:15:22,680 soos iets op die lyn 10 is daar, wat slegs 347 00:15:22,680 --> 00:15:27,145 gaan evalueer waar of vals is, en jou as anders duidelik 348 00:15:27,145 --> 00:15:33,620 terugkeer waar of onwaar, ek kon eenvoudig regtig hierdie sexier 349 00:15:33,620 --> 00:15:38,360 en net iets soos hierdie. 350 00:15:38,360 --> 00:15:40,500 Sodat daar is my tjek funksie. 351 00:15:40,500 --> 00:15:42,560 Reg, as die Boole gee 'n ware of 'n valse, 352 00:15:42,560 --> 00:15:44,630 laat ons net dit terug dadelik. 353 00:15:44,630 --> 00:15:47,340 >> En daar is 'n paar ander tweaks Ek kon hier en daar maak. 354 00:15:47,340 --> 00:15:51,380 Load-- aflaai, op die pad, wat gedoen is. 355 00:15:51,380 --> 00:15:52,850 Niks om daar te doen. 356 00:15:52,850 --> 00:15:55,840 Aangesien al die geheue in PHP en baie ander tale 357 00:15:55,840 --> 00:15:57,570 is eintlik daarin geslaag om vir jou. 358 00:15:57,570 --> 00:16:00,330 So terwyl in C, jy pynlik geleer het, 359 00:16:00,330 --> 00:16:04,700 enigiets wat jy malloc of calloc of realloc, jy het om jouself te bevry. 360 00:16:04,700 --> 00:16:08,770 Enigiets wat jy fopen, jy het om te fclose, sodat hulpbronne uiteindelik bevry 361 00:16:08,770 --> 00:16:11,690 en gereedskap soos Valgrind nie kennis en kla nie, 362 00:16:11,690 --> 00:16:13,570 Dit is 'n goeie ding om te loop op hulle. 363 00:16:13,570 --> 00:16:16,190 >> Maar seker, moet daar 'n paar vang, reg? 364 00:16:16,190 --> 00:16:19,400 Andersins, het ons soort van gemors 'n hele klomp van die weke. 365 00:16:19,400 --> 00:16:23,270 So daar is 'n aantal redes Daarom het ons soort van neem hierdie trajek, 366 00:16:23,270 --> 00:16:24,440 maar daar is 'n trade-off. 367 00:16:24,440 --> 00:16:25,820 Reg, was dit tematiese. 368 00:16:25,820 --> 00:16:29,690 >> So, wat kan 'n trade-off hier beweeg, vanaf C na PHP? 369 00:16:29,690 --> 00:16:33,250 Voel soos al wen so ver behalwe 'n bietjie van die lelike hier of daar nie. 370 00:16:33,250 --> 00:16:34,040 Ja. 371 00:16:34,040 --> 00:16:34,700 Wat is dit? 372 00:16:34,700 --> 00:16:36,064 >> STUDENT: [onhoorbaar] geheue. 373 00:16:36,064 --> 00:16:36,980 David J. Malan Speed. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Wel, my spoed was redelik vinnig. 376 00:16:40,720 --> 00:16:42,020 Reg? 377 00:16:42,020 --> 00:16:44,320 Maar spoed van die uitvoering van die program? 378 00:16:44,320 --> 00:16:45,580 OK, so dit is 'n billike punt. 379 00:16:45,580 --> 00:16:50,930 >> So as dit sou gebeur, het ek in advance cued op beide my probeer oplossing, die een 380 00:16:50,930 --> 00:16:53,510 Ek het op die groot bord was 'n drie-gebaseerde oplossing, 381 00:16:53,510 --> 00:16:55,510 en ek het dit in hierdie gids hier. 382 00:16:55,510 --> 00:16:58,510 So ek in 'n oomblik, ek kan voort te gaan en loop dit op die King James Bybel, 383 00:16:58,510 --> 00:16:59,657 slaan Enter. 384 00:16:59,657 --> 00:17:01,990 En dit is hopelik korrek implementering aan die einde, 385 00:17:01,990 --> 00:17:05,109 gee my tyd in totale van 0.38 sekondes vir daardie 386 00:17:05,109 --> 00:17:07,270 een ietwat arbitrêre voorbeeld. 387 00:17:07,270 --> 00:17:09,270 >> En as ek gaan nou in hierdie tweede terminale venster 388 00:17:09,270 --> 00:17:14,569 hier waar ek die eerste keer geopen gedit, laat my gaan in vandag se code-- wat, weer, 389 00:17:14,569 --> 00:17:19,650 is in hierdie gids here-- en Laat my voort te gaan en uit te voer speller. 390 00:17:19,650 --> 00:17:23,470 So net om duidelik te wees, dit is die PHP weergawe. 391 00:17:23,470 --> 00:17:25,170 Ek is net wat die top van dit hier. 392 00:17:25,170 --> 00:17:32,020 >> So as ek dit doen speller van tilde CS50 PSET 5 tekste, King James, betree. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Dit is nog steeds vinniger as skriftelik dit in C, maar die totale tyd 395 00:17:43,050 --> 00:17:47,650 is, kennisgewing, 0,93, terwyl my C-implementering was 0.38. 396 00:17:47,650 --> 00:17:49,110 So dit is 'n nie-triviale verskil. 397 00:17:49,110 --> 00:17:51,100 >> En dit is net op 'n lêer. 398 00:17:51,100 --> 00:17:53,480 As jy die twee te hardloop programme teenoor die groot bord 399 00:17:53,480 --> 00:17:56,510 en het 'n hele klomp van die insette getoets is, sou dit sekerlik voeg. 400 00:17:56,510 --> 00:18:00,310 En as ons het selfs groter stelle data, Dit is ook optel al hoe meer. 401 00:18:00,310 --> 00:18:04,820 So ja, die betaling van 'n prys spoed wel die geval is. 402 00:18:04,820 --> 00:18:05,470 Wat anders? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Ja? 405 00:18:08,860 --> 00:18:10,340 >> STUDENT: Bedrag van geheue gebruik. 406 00:18:10,340 --> 00:18:11,756 >> David J. Malan Bedrag van geheue gebruik. 407 00:18:11,756 --> 00:18:15,380 So ek het nie een sekonde gedink het toe die skryf van hierdie PHP 408 00:18:15,380 --> 00:18:17,300 weergawe as om hoeveel geheue Ek was die gebruik. 409 00:18:17,300 --> 00:18:22,080 Ek is heeltemal uitstel wat aan PHP self en elkeen het daardie program. 410 00:18:22,080 --> 00:18:24,500 En wat dalk OK, maar as ek eintlik regtig 411 00:18:24,500 --> 00:18:28,420 omgee smaller soveel prestasie uit my program of uit my webwerf 412 00:18:28,420 --> 00:18:31,150 of uit watter instrument Ek bou, miskien 413 00:18:31,150 --> 00:18:33,310 PHP, inderdaad, is nie die regte taal. 414 00:18:33,310 --> 00:18:36,330 >> En in werklikheid, dit is die rede waarom, vir Byvoorbeeld, baie web servers-- 415 00:18:36,330 --> 00:18:38,980 die werklike programme wat dien web content-- 416 00:18:38,980 --> 00:18:41,810 word nie in PHP geskryf of in Python of Ruby. 417 00:18:41,810 --> 00:18:44,630 Hulle is geskryf, soos jy sal nou met PSEt 6, 418 00:18:44,630 --> 00:18:48,120 in C sodat jy kan druk elke bietjie van die prestasie uit dit 419 00:18:48,120 --> 00:18:50,780 en regtig oefen fyn-graan beheer oor wat daar 420 00:18:50,780 --> 00:18:52,980 gaan op onder die kap en nie net neem dit 421 00:18:52,980 --> 00:18:54,890 vanselfsprekend een of ander hoër vlak data struktuur. 422 00:18:54,890 --> 00:18:58,071 >> Oorweeg, na alles, elkeen wat in PHP geïmplementeer 423 00:18:58,071 --> 00:19:00,070 dat die idee van 'n gemors table-- dit is eintlik meer 424 00:19:00,070 --> 00:19:04,260 behoorlik genoem 'n assosiatiewe array-- doen hy of sy 'n idee watter soort 425 00:19:04,260 --> 00:19:07,090 insette wat jy gaan wees om in die struktuur? 426 00:19:07,090 --> 00:19:08,260 So natuurlik nie, reg? 427 00:19:08,260 --> 00:19:10,340 Dit is 'n generiese instrument in die toolkit wat 428 00:19:10,340 --> 00:19:13,430 verskaf aan enigiemand wat wil om dit te gebruik, en so seker dit 429 00:19:13,430 --> 00:19:17,680 kan uiteindelik nie geskik word vir presies wat jy wil doen. 430 00:19:17,680 --> 00:19:21,180 >> So trade-offs-- ontwikkeling tyd mag verskil, prestasie kan verskil, 431 00:19:21,180 --> 00:19:23,120 kompleksiteit of geheue gebruik kan verskil. 432 00:19:23,120 --> 00:19:24,820 En ja, wat jy sal vind toenemend is dat daar 433 00:19:24,820 --> 00:19:26,570 gaan anders wees gereedskap vir die handel. 434 00:19:26,570 --> 00:19:31,160 En in die feit dat 'n super meerderheid van mense se finale projekte in hierdie klas, 435 00:19:31,160 --> 00:19:34,360 glo dit of nie, is C nie gaan die reg om die taal te gebruik om te wees. 436 00:19:34,360 --> 00:19:37,880 >> En in die feit dat een van die wegneemetes uiteindelik vir 'n klas soos hierdie 437 00:19:37,880 --> 00:19:40,510 is om te kry wat jy dink oor, Wel, wat moet jy trek 438 00:19:40,510 --> 00:19:42,710 die rak wanneer jy wil 'n probleem op te los. 439 00:19:42,710 --> 00:19:46,720 En inderdaad, sal ons hierdie brug oorsteek selfs meer as ons kyk na meer tale 440 00:19:46,720 --> 00:19:47,920 selfs buite vandag. 441 00:19:47,920 --> 00:19:50,530 >> So laat se oorgang nou miskien 'n meer bekende konteks 442 00:19:50,530 --> 00:19:52,480 vir die gebruik van 'n taal soos PHP. 443 00:19:52,480 --> 00:19:56,720 Dit is 'n bietjie algemeen by te gebruik die opdrag lyn, skryf skrifte 444 00:19:56,720 --> 00:19:59,050 soos ek gedoen het, maar dit is baie, baie meer algemeen. 445 00:19:59,050 --> 00:20:02,350 En dit bedoel is om gebruik te word die vorm van lêers wat tipies eindig 446 00:20:02,350 --> 00:20:05,060 in .php-- maar dis nie 'n prerequisite-- 447 00:20:05,060 --> 00:20:07,990 wat hulleself genereer web inhoud. 448 00:20:07,990 --> 00:20:11,310 >> So laat my gaan voort en maak 'n paar voorbeelde wat ek voorberei het. 449 00:20:11,310 --> 00:20:15,100 En dit is eintlik soort van ware stories in dat een van die eerste dinge 450 00:20:15,100 --> 00:20:18,200 Ek ooit gedoen het myself na die afwerking CS50 en miskien, dink ek, 451 00:20:18,200 --> 00:20:21,350 CS51 jaar gelede is my kamermaat en ek is gehelp 452 00:20:21,350 --> 00:20:24,320 die eerstejaars binnemuurse te hardloop sport-program, wat, by die tyd, 453 00:20:24,320 --> 00:20:28,610 het eerstejaars wat vir verskeie sport deur die invul van 'n stuk papier, 454 00:20:28,610 --> 00:20:31,800 soos dit genoem is, loop oor die werf te Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 en dit te laat val in sommige Proctor se deur val. 456 00:20:34,030 --> 00:20:37,210 En dan sal hy of sy gaan deur en dan ons eintlik met die hand e-pos 457 00:20:37,210 --> 00:20:39,140 dat ons vir 'n paar sport is geregistreer. 458 00:20:39,140 --> 00:20:41,166 >> So duidelik, 'n geleentheid om vir verbetering. 459 00:20:41,166 --> 00:20:44,040 Hierdie dae, kan jy draai net Google Vorms, maar terug in die dag, 460 00:20:44,040 --> 00:20:46,914 Ons moes eintlik bereik for-- hierdie was nie eens so lank ago-- bereik 461 00:20:46,914 --> 00:20:49,410 vir 'n ontwikkeling taal wat nie PHP. 462 00:20:49,410 --> 00:20:51,200 Teen die tyd, was dit iets genoem Perl, 463 00:20:51,200 --> 00:20:52,890 wat gegaan het uit die mode sedert. 464 00:20:52,890 --> 00:20:54,160 Maar die idee is dieselfde. 465 00:20:54,160 --> 00:20:58,940 >> En ek het in wese af te probeer na die hawe gaan Perl weergawes PHP, 466 00:20:58,940 --> 00:21:03,710 maar in volle vrywaring, gee nie enige gedink aan die estetika net nog nie. 467 00:21:03,710 --> 00:21:04,960 So hier is 'n web bladsy. 468 00:21:04,960 --> 00:21:05,670 Dit is 'n lêer. 469 00:21:05,670 --> 00:21:09,470 As ek vergroot, sy glo genoem froshim0.php 470 00:21:09,470 --> 00:21:12,060 net omdat dit is ons eerste voorbeeld in hierdie reeks. 471 00:21:12,060 --> 00:21:15,970 En sien dat dit wat blyk 'n baie lelike HTML vorm te wees nie, 472 00:21:15,970 --> 00:21:18,680 maar 'n vorm is interessant want dit kan 473 00:21:18,680 --> 00:21:21,910 my gebruiker om insette te lewer tot die leser. 474 00:21:21,910 --> 00:21:27,730 >> Nou die laaste keer toe ons 'n vorm, wie het ons 'ons navraag parameter, 475 00:21:27,730 --> 00:21:30,450 die tou parameter soos dit genoem is? 476 00:21:30,450 --> 00:21:31,330 So om te Google, reg? 477 00:21:31,330 --> 00:21:34,090 Ons heeltemal gestamp op die idee van om iets te doen met die insette. 478 00:21:34,090 --> 00:21:36,160 >> Maar vandag, het ons begin met die vervaardiging uitvoer. 479 00:21:36,160 --> 00:21:39,420 En die gedrag wat ek gaan om te sien hier aanvanklik is redelik triviaal. 480 00:21:39,420 --> 00:21:42,980 David, ek sal kyk af geslag hier, sê Matthews hier. 481 00:21:42,980 --> 00:21:43,800 Ek sal nie die kaptein. 482 00:21:43,800 --> 00:21:45,410 Ek gaan om te klik Register. 483 00:21:45,410 --> 00:21:50,720 En sien dat die URL het verander om te registreer-0.php, 484 00:21:50,720 --> 00:21:52,310 en dan is daar hierdie lelike teks hier. 485 00:21:52,310 --> 00:21:54,460 Ek het geen gedagte te die uitleg van hierdie. 486 00:21:54,460 --> 00:21:59,900 >> Maar wat interessant is, is dat drie waardes is blykbaar geslaag in. 487 00:21:59,900 --> 00:22:02,960 Dit is PHP se soort gelykstaande aan printf-- 488 00:22:02,960 --> 00:22:06,330 ons sal sien wat dit regtig genoem in 'n bit-- dat net druk uit 489 00:22:06,330 --> 00:22:08,300 wat jy geslaag het in dit. 490 00:22:08,300 --> 00:22:11,414 So dit dui daarop dat die vorm minstens drie velde om dit, 491 00:22:11,414 --> 00:22:12,580 en jy my sien tik hulle in. 492 00:22:12,580 --> 00:22:15,739 Een was my naam, die een was geslag, een was koshuis. 493 00:22:15,739 --> 00:22:18,780 En die kaptein, het nie eens kry gestuur na die bediener, want ek het nie nagaan. 494 00:22:18,780 --> 00:22:22,150 >> So is dit te glo sê, wanneer jy dinge lê op die web, 495 00:22:22,150 --> 00:22:26,830 Nie net het die URL soms change-- soms is dit nie. 496 00:22:26,830 --> 00:22:30,330 Trouens, die naam verander het, maar wat afwesig is van die URL 497 00:22:30,330 --> 00:22:32,861 dat ons gesien het die laaste keer met Google. 498 00:22:32,861 --> 00:22:33,360 Ja? 499 00:22:33,360 --> 00:22:34,380 >> STUDENT: Geen soektog string 500 00:22:34,380 --> 00:22:35,220 >> David J. Malan Daar is geen navraag string. 501 00:22:35,220 --> 00:22:37,270 Daar is geen vraagteken iets. 502 00:22:37,270 --> 00:22:40,050 Daar is geen vraagteken Q gelyk katte, soos ons gedoen het die afgelope tyd. 503 00:22:40,050 --> 00:22:42,170 En daar is beslis geen vraagteken naam is gelyk aan 504 00:22:42,170 --> 00:22:46,310 David of dorm gelyk Matthews, So waar is dat almal gaan? 505 00:22:46,310 --> 00:22:51,290 >> Wel, laat my terug na gedit gaan hier en maak die eerste van die lêers 506 00:22:51,290 --> 00:22:57,020 in my vhost, plaaslike gasheer, openbare gids hier en gaan na froshim0. 507 00:22:57,020 --> 00:23:02,060 So dit blyk dat byna al hierdie bladsy is net HTML. 508 00:23:02,060 --> 00:23:05,410 En dit kan nie vertroud is met jou, maar dit het gou meer so sal wees met PSET 6 509 00:23:05,410 --> 00:23:07,370 en PSET 7 en 8 PSET. 510 00:23:07,370 --> 00:23:09,160 Maar dit is net 'n HTML-bladsy. 511 00:23:09,160 --> 00:23:12,400 >> En die interessante dinge lyk hier te wees. 512 00:23:12,400 --> 00:23:16,290 'N vorm tag wie se optrede kenmerk het 'n waarde van 0 register. 513 00:23:16,290 --> 00:23:18,890 Dit is hoekom wanneer ek ' hierdie, dit gaan na die lêer. 514 00:23:18,890 --> 00:23:20,620 Maar metode is anders today-- post. 515 00:23:20,620 --> 00:23:23,120 So dit blyk daar ten minste twee metodes op die web gebruik 516 00:23:23,120 --> 00:23:24,911 inligting te stuur van die leser aan die bediener. 517 00:23:24,911 --> 00:23:25,980 Kry sit dit in die URL. 518 00:23:25,980 --> 00:23:27,950 Post dit stel elders. 519 00:23:27,950 --> 00:23:30,570 En wanneer en hoekom mag jy eintlik wil 'n webwerf 520 00:23:30,570 --> 00:23:34,110 pos te gebruik dan plaas van kry, net intuïtief? 521 00:23:34,110 --> 00:23:37,080 Enige webwerf. 522 00:23:37,080 --> 00:23:42,010 Watter soort data moet net verby deur afleiding nou per pos in teenstelling 523 00:23:42,010 --> 00:23:45,184 te kry, as ons het gesien die twee verskille? 524 00:23:45,184 --> 00:23:46,350 STUDENT: [onhoorbaar] beveilig. 525 00:23:46,350 --> 00:23:47,790 David J. Malan As jy wil iets veilig te wees. 526 00:23:47,790 --> 00:23:50,360 So kan jy 'n wagwoord intik in 'n webwerf, 'n kredietkaart 527 00:23:50,360 --> 00:23:53,030 in 'n webwerf sou soort van hierdie suboptimale 528 00:23:53,030 --> 00:23:56,220 As die leser sit dit waarde binnekant van die URL. 529 00:23:56,220 --> 00:23:57,680 Hoekom? 530 00:23:57,680 --> 00:24:00,059 Jy sien dit, wat nie lyk soos 'n groot deal te wees, 531 00:24:00,059 --> 00:24:03,350 maar die kans is jy mooi gereeld loop weg van jou rekenaar of gebruik rekenaar 532 00:24:03,350 --> 00:24:05,310 laboratoriums, en so iemand anders of selfs 'n kamermaat 533 00:24:05,310 --> 00:24:08,220 kon maklik loop op en sien dat private inligting. 534 00:24:08,220 --> 00:24:10,220 Wanneer jy 'n e-pos stuur via die web, jy sal waarskynlik 535 00:24:10,220 --> 00:24:12,350 nie wil hê dat die data einde in die URL as well. 536 00:24:12,350 --> 00:24:15,266 En dus is daar 'n aantal redes Daarom het ons dalk wil om dit hier te plaas. 537 00:24:15,266 --> 00:24:18,610 En photos-- reg, ek kan nie eens heeltemal dink hoe jy 'n grafiese neem, 538 00:24:18,610 --> 00:24:21,480 soos 'n JPEG, en sit dit in 'n URL. 539 00:24:21,480 --> 00:24:22,330 Jy kan dit doen. 540 00:24:22,330 --> 00:24:25,840 Daar is maniere om die kodering, maar dit is nie net eenvoudig soos dit. 541 00:24:25,840 --> 00:24:29,030 >> So registreer 0 is eintlik baie underwhelming. 542 00:24:29,030 --> 00:24:31,610 Al wat dit sê letterlik is nie. 543 00:24:31,610 --> 00:24:35,910 Dit druk uit binnekant van 'n paar HTML tags die volgende. 544 00:24:35,910 --> 00:24:38,640 Ek het 'n PHP tag hier geneste binnekant van 'n pre tag. 545 00:24:38,640 --> 00:24:42,300 "Voor" beteken net pre-formaat teks, mono-afstand, soos 'n tikmasjien. 546 00:24:42,300 --> 00:24:44,836 >> Printr is 'n druk rekursiewe funksie. 547 00:24:44,836 --> 00:24:46,710 En dan is daar hierdie interessante ding hier. 548 00:24:46,710 --> 00:24:48,835 En ons sal terug kom na hierdie want daar is ander, 549 00:24:48,835 --> 00:24:51,140 maar dollar teken underscore post blyk te wees, 550 00:24:51,140 --> 00:24:56,110 'n veranderlike in PHP waarin enigiets jy stuur uit leser na bediener 551 00:24:56,110 --> 00:24:58,040 kry gestoor vir jou. 552 00:24:58,040 --> 00:25:00,930 En ons sal sien hoe om by daardie inligting voor lank. 553 00:25:00,930 --> 00:25:04,000 >> Maar eers, laat ons gaan terug na 'n effens ander voorbeeld. 554 00:25:04,000 --> 00:25:09,050 Gaan in register-- of eerder, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 wat lyk 'n bietjie anders. 556 00:25:10,470 --> 00:25:12,670 Ek het 'n bietjie meer poging om met die uitleg, 557 00:25:12,670 --> 00:25:14,370 selfs al is dit nog redelik lelik. 558 00:25:14,370 --> 00:25:16,990 Maar ek gaan om voort te gaan en tik in "David" nou. 559 00:25:16,990 --> 00:25:17,850 Manlike. 560 00:25:17,850 --> 00:25:19,360 Ons sal "kaptein" hierdie keer gaan. 561 00:25:19,360 --> 00:25:20,660 Ons sal doen Matthews. 562 00:25:20,660 --> 00:25:22,430 En registreer. 563 00:25:22,430 --> 00:25:24,110 >> En hierdie keer is dit sê, hm, nie regtig nie. 564 00:25:24,110 --> 00:25:26,180 Alle reg, so wat se registreer 1? 565 00:25:26,180 --> 00:25:30,509 Laat my gaan in die oop register 1 and-- hm. 566 00:25:30,509 --> 00:25:32,300 Alle reg, sodat dit is interessant, en dit 567 00:25:32,300 --> 00:25:34,880 is 'n stepping stone nou op na meer interessante programme. 568 00:25:34,880 --> 00:25:38,970 >> Let op die top van hierdie lêer het 'n PHP tag sowel as 'n paar opmerkings. 569 00:25:38,970 --> 00:25:42,590 En dit is vir nou, 'n afleiding So laat ons net ontslae te raak van die kommentaar 570 00:25:42,590 --> 00:25:47,070 net soos hulle is in C. En ek eis met hierdie stuk van kode met 'n opmerking 571 00:25:47,070 --> 00:25:49,280 Hierdie kode is bevestiging van die voorlegging. 572 00:25:49,280 --> 00:25:51,690 >> Wel, dit blyk dat veranderlikes soos dollar-teken 573 00:25:51,690 --> 00:25:53,739 beklemtoon post is genoem super globals. 574 00:25:53,739 --> 00:25:55,530 Hulle is soos hierdie spesiale globale veranderlikes 575 00:25:55,530 --> 00:25:58,840 wat net omni-tans beskikbaar in jou program. 576 00:25:58,840 --> 00:26:03,870 En jy kan vierkante bracket notasie gebruik na die indeks in hulle nie die gebruik van getalle 577 00:26:03,870 --> 00:26:07,460 soos 0, 1, 2, 3, maar die werklike woorde. 578 00:26:07,460 --> 00:26:12,100 >> So jy kan dink dollar teken beklemtoon post as 'n soort van 'n hash tafel 579 00:26:12,100 --> 00:26:15,920 dat jy 'n sleutel in 'n lookup kon slaag woord in-tussen die vierkante hakies, 580 00:26:15,920 --> 00:26:19,370 en dit gaan jou terug te gee die waarde wat die gebruiker eintlik voorsien. 581 00:26:19,370 --> 00:26:21,210 PHP het 'n funksie genoem leë wat net 582 00:26:21,210 --> 00:26:23,720 sê ja of nee, dit veranderlike is leeg, of nie. 583 00:26:23,720 --> 00:26:27,250 Ons het hierdie dubbele bars, wat net beteken of, soos in C. 584 00:26:27,250 --> 00:26:31,740 >> So in effek, die lyn 4 is net sê as die gebruiker het nie 'n naam gee 585 00:26:31,740 --> 00:26:36,540 of het nie 'n geslag of het nie gee 'n koshuiskamer, gaan voort en lei hom 586 00:26:36,540 --> 00:26:38,184 of haar via hierdie lyn hier. 587 00:26:38,184 --> 00:26:40,600 So, dit is 'n bietjie kripties, maar dit beteken net letterlik 588 00:26:40,600 --> 00:26:43,330 gaan terug na hierdie plek sodat dit trappe die gebruiker 589 00:26:43,330 --> 00:26:45,420 terug na waar hy of sy vandaan kom. 590 00:26:45,420 --> 00:26:47,880 Maar dit is 'n bietjie onbevallig in dat ek hard gekodeer nie. 591 00:26:47,880 --> 00:26:52,150 >> Maar wat as dit as voorwaarde evalueer nie waar? 592 00:26:52,150 --> 00:26:55,790 Wat as die gebruiker het gee my sy of haar naam en dorm en geslag? 593 00:26:55,790 --> 00:26:58,540 Dat indien toestand is nie gaan evalueer waar, 594 00:26:58,540 --> 00:27:00,650 so ek getref nie die uitgang in reël 7. 595 00:27:00,650 --> 00:27:01,680 So wat gebeur? 596 00:27:01,680 --> 00:27:03,880 En dit is wat interessant oor PHP. 597 00:27:03,880 --> 00:27:07,470 >> Jy kan laat val in en uit PHP mode, om so te praat. 598 00:27:07,470 --> 00:27:10,985 As jy wil 'n paar kode uit te voer, jy kan oop en toe 'n PHP tag 599 00:27:10,985 --> 00:27:13,010 en sit-kode is daar soos ek hier gedoen het. 600 00:27:13,010 --> 00:27:16,810 Sodra jy naby die PHP tag, die bediener 601 00:27:16,810 --> 00:27:19,407 is net gaan om te spoeg uit wat jy ook al daar. 602 00:27:19,407 --> 00:27:21,740 En inderdaad, dit was deel van die oorspronklike ontwerp van PHP, 603 00:27:21,740 --> 00:27:25,280 vir 'n beter vir erger, was hierdie meng van kode en opmaak 604 00:27:25,280 --> 00:27:25,920 taal. 605 00:27:25,920 --> 00:27:28,670 En ons sal sien dat hierdie baie vinnig oorgaan in 'n gemors. 606 00:27:28,670 --> 00:27:31,280 En so sal ons beter doen as Dit het uiteindelik, maar net 607 00:27:31,280 --> 00:27:35,620 kennis van die gemak waarmee ek eintlik in staat om die logika te voer. 608 00:27:35,620 --> 00:27:37,440 >> Maar nog 'n bietjie underwhelming. 609 00:27:37,440 --> 00:27:41,210 Kom ons oop weergawe twee van Frosh kitsboodskappe, wat 610 00:27:41,210 --> 00:27:44,270 blykbaar lê te register2.php. 611 00:27:44,270 --> 00:27:47,600 So hierdie lêer is eintlik gaan om te kyk byna dieselfde. 612 00:27:47,600 --> 00:27:50,780 Ek gaan om te gaan na Frosh kitsboodskappe 2. 613 00:27:50,780 --> 00:27:53,050 Maar in Frosh kitsboodskappe 2, Kom ons kyk wat gebeur. 614 00:27:53,050 --> 00:27:58,110 >> David, kliek op die radio knoppie, as dit genoem; Matthews, geen kaptein. 615 00:27:58,110 --> 00:27:59,230 Registreer nie. 616 00:27:59,230 --> 00:28:00,130 Jy is geregistreer. 617 00:28:00,130 --> 00:28:00,700 Nie regtig nie. 618 00:28:00,700 --> 00:28:02,574 O wag, ons het net wat byvoorbeeld het ons nie? 619 00:28:02,574 --> 00:28:04,520 Alle reg, staan. 620 00:28:04,520 --> 00:28:06,602 Ons sal doen om die drie. 621 00:28:06,602 --> 00:28:08,560 Duidelik iets gaan oor gebeur met Gmail. 622 00:28:08,560 --> 00:28:09,600 Ons sal daar kom. 623 00:28:09,600 --> 00:28:11,900 >> So Frosh kitsboodskappe 3 lyk. 624 00:28:11,900 --> 00:28:13,050 Nie anders nie. 625 00:28:13,050 --> 00:28:19,850 Maar toe ek David, manlik, Matthews, en registreer, hierdie derde en finale weergawe 626 00:28:19,850 --> 00:28:22,230 eise, heel eenvoudig, jy werklik geregistreer is. 627 00:28:22,230 --> 00:28:23,560 Dit is soort van onbelangrik. 628 00:28:23,560 --> 00:28:25,600 Maar ek eis met hierdie derde en finale weergawe 629 00:28:25,600 --> 00:28:30,610 Ek het nou herskep presies wat my kamermaat en ek gebou vir die Frosh kitsboodskappe 630 00:28:30,610 --> 00:28:31,731 program jaar gelede. 631 00:28:31,731 --> 00:28:32,480 En dit was eenvoudig. 632 00:28:32,480 --> 00:28:34,330 Daar was geen databasis, geen Excel. 633 00:28:34,330 --> 00:28:36,450 Maar meer belangrik, was daar nie meer papier 634 00:28:36,450 --> 00:28:42,520 want wat ons gedoen het met hierdie program was eintlik e-pos die Proctor, wat 635 00:28:42,520 --> 00:28:44,530 was voorheen ontvang hierdie dinge via vorms. 636 00:28:44,530 --> 00:28:48,890 >> En glo ons het hierdie geprogrammeer in so 'n manier dat wanneer iemand registers, 637 00:28:48,890 --> 00:28:52,470 John Harvard se rekening e-pos die proctor-- of homself in hierdie geval, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- met die volgende text-- "Hierdie persoon net geregistreer is." 639 00:28:55,960 --> 00:29:00,560 Naam is David, kaptein is leeg; geslag, 'n mannetjie; en dorm, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> So, wat daar gebeur het? 641 00:29:01,560 --> 00:29:05,360 Wel, die lêer in die vraag hier is blykbaar register3.php. 642 00:29:05,360 --> 00:29:09,080 En as ek oop het, sal jy sien beide die krag van die kode soos hierdie 643 00:29:09,080 --> 00:29:12,380 en ook, eerlik, die onveiligheid van 'n stelsel soos e-pos. 644 00:29:12,380 --> 00:29:16,290 Ek het nou net effektief voorgegee wees John Harvard in die volgende manier. 645 00:29:16,290 --> 00:29:20,920 >> Ek het die ope PHP tag tot bo, wat sê net hier kom 'n paar PHP-kode. 646 00:29:20,920 --> 00:29:23,155 Hier, blyk daar biblioteke in PHP. 647 00:29:23,155 --> 00:29:26,410 Jy moet net nie nodig het om te sluit header lêers soveel. 648 00:29:26,410 --> 00:29:28,900 Jy kry meer met die kombuis wasbak, om so te praat. 649 00:29:28,900 --> 00:29:31,820 >> Maar hierdie keer in reël 4, doen ek wil spesiale biblioteek genoem 650 00:29:31,820 --> 00:29:36,087 PHP mail, dit is iets wat jy kan installeer gratis in baie stelsels. 651 00:29:36,087 --> 00:29:37,920 Hier Ek is valid die indiening net 652 00:29:37,920 --> 00:29:40,540 deur die nagaan het die gebruiker gee my 'n naam, 'n geslag, en 'n koshuiskamer. 653 00:29:40,540 --> 00:29:44,130 En indien wel, gaan voort en instansieer 'n e-mail. 654 00:29:44,130 --> 00:29:47,020 >> Jy kan dink van hierdie as 'n lyn van kode wat net ken. 655 00:29:47,020 --> 00:29:48,950 Dit is soos malloc, maar dit is 'n bietjie sexier 656 00:29:48,950 --> 00:29:51,790 in wat jy noem nie net malloc en 'n paar generiese nommer. 657 00:29:51,790 --> 00:29:55,030 Jy sê vir my een van hierdie, gee my 'n nuwe een van hierdie. 658 00:29:55,030 --> 00:29:57,950 >> En as jy in geprogrammeer het Java of C ++ of ander tale, 659 00:29:57,950 --> 00:29:59,130 Jy kan gesien het nie. 660 00:29:59,130 --> 00:30:01,840 Maar die kort van dit, as onbekende, hierdie lyn 661 00:30:01,840 --> 00:30:05,410 sit in die dollar teken pos 'n spesiale struct genoem 662 00:30:05,410 --> 00:30:08,731 'n voorwerp wat ingeboude het e-pos funksionaliteit. 663 00:30:08,731 --> 00:30:10,355 En in die feit, kennis en soortgelyke sintaksis. 664 00:30:10,355 --> 00:30:11,900 >> Dit is nie 'n wyser, per se. 665 00:30:11,900 --> 00:30:13,990 PHP gebruik net dieselfde sintaksis. 666 00:30:13,990 --> 00:30:17,660 Hierdie lyn word gesê gebruik SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protokol, wat net die protokol gebruik pos te stuur. 668 00:30:20,900 --> 00:30:24,240 Dit is spesifiseer gebruik Harvard se SMTP-bediener, wat 669 00:30:24,240 --> 00:30:25,830 iewers hier op die kampus. 670 00:30:25,830 --> 00:30:28,480 >> Dit is om te sê wat TCP poort nommer te praat, 671 00:30:28,480 --> 00:30:31,650 en ek het net gedink dat deur googlen of deur te vra die hulp lessenaar. 672 00:30:31,650 --> 00:30:34,640 En dan, omdat Harvard gebruik sommige stelsel sekuriteit op die pos server-- 673 00:30:34,640 --> 00:30:37,060 ten minste te enkripteer verkeer tussen jou en dit, 674 00:30:37,060 --> 00:30:41,380 selfs al is iemand kan stuur it-- Ek gaan om te draai op die TLS-protokol 675 00:30:41,380 --> 00:30:42,710 vir die behoud van 'n veilige. 676 00:30:42,710 --> 00:30:44,730 >> Maar dit is waar dinge kry 'n bietjie scary. 677 00:30:44,730 --> 00:30:47,970 Ek kan net arbitrêr sê dat ek jharvard, 678 00:30:47,970 --> 00:30:51,930 en ek kan net arbitrêr E-pos my hier. 679 00:30:51,930 --> 00:30:55,650 En dan het ek kan spesifiseer 'n onderwerp met hierdie lyn hier. 680 00:30:55,650 --> 00:30:58,460 >> En dit lyk net lelik, maar dit is net 'n klomp van die aaneenskakeling. 681 00:30:58,460 --> 00:31:04,480 Blyk PHP het 'n super nuttig simbool, soos 'n paar tale, die dot-operateur, 682 00:31:04,480 --> 00:31:07,340 wat net letterlik concatenates string na string na string, 683 00:31:07,340 --> 00:31:09,810 en jy hoef nie te malloc of figuur die totale lengte van die string. 684 00:31:09,810 --> 00:31:10,820 Jy doen dit net. 685 00:31:10,820 --> 00:31:15,220 En inderdaad, want ek concatenating in al hierdie dinge met hierdie punte, 686 00:31:15,220 --> 00:31:18,330 dit is die rede waarom die e-pos wat ek gestuur het as dit gedoen het. 687 00:31:18,330 --> 00:31:20,610 >> En dan laastens hier, ek stuur e-pos. 688 00:31:20,610 --> 00:31:22,580 So as dit vals is, Ek is net gaan om te sterf, 689 00:31:22,580 --> 00:31:25,680 Dit is 'n funksie wat net afdrukke na die skerm 'n fout boodskap. 690 00:31:25,680 --> 00:31:29,170 Maar dit is, in werklikheid, roep die stuur funksie. 691 00:31:29,170 --> 00:31:31,780 Andersins, as al hierdie versuim, dit aansture my terug hier. 692 00:31:31,780 --> 00:31:34,050 >> En hoekom het ek sien dat Ek is regtig geregistreer? 693 00:31:34,050 --> 00:31:36,110 Wel, dit gebeur hier. 694 00:31:36,110 --> 00:31:38,170 So bring ek hierdie vir 'n paar van die redes. 695 00:31:38,170 --> 00:31:41,542 >> Een, dit is presies hoe as jy bou sommige webwerf vir 'n finale projek 696 00:31:41,542 --> 00:31:44,000 of vir die werklike wêreld, dit is hoe jy e-pos aanmanings stuur 697 00:31:44,000 --> 00:31:45,924 aan jou kliënte of jou intekenaars. 698 00:31:45,924 --> 00:31:47,590 Dit is hoe jy 'n wagwoord aanmanings stuur. 699 00:31:47,590 --> 00:31:50,760 Dit is hoe jy mense boodskappe stuur dat hulle 'n nuwe Facebook 700 00:31:50,760 --> 00:31:52,990 boodskap hangende of iets soos dit. 701 00:31:52,990 --> 00:31:55,010 >> Maar dit het ook praat die feit dat dit kan 702 00:31:55,010 --> 00:31:58,160 het baie goed gewees het van Davin of enigiemand anders. 703 00:31:58,160 --> 00:32:00,567 En ek sê hierdie soort met 'n glimlag, want ek is 704 00:32:00,567 --> 00:32:03,400 heeltemal seker wat gaan deur verskeie van jou gedagtes op hierdie punt. 705 00:32:03,400 --> 00:32:11,910 Maar dit is een van daardie doen as ek sê, nie soos ek doen soort van dinge, 706 00:32:11,910 --> 00:32:14,480 want dit is alledaags tot smee e-pos soos hierdie. 707 00:32:14,480 --> 00:32:16,480 Maar as jy gesien het of lees in die rooi, 708 00:32:16,480 --> 00:32:18,271 laat dit is ook mooi triviaal vir mense 709 00:32:18,271 --> 00:32:20,050 hulle terug na 'n paar oorsprong spoor. 710 00:32:20,050 --> 00:32:23,790 En vra my 'n paar keer, miskien op CS50 middagete, hoe ek die eerste keer 711 00:32:23,790 --> 00:32:27,080 het baie nou bekend byna aan die ge raad baie jare 712 00:32:27,080 --> 00:32:30,890 gelede, toe ek ontdek hoe die internet werk. 713 00:32:30,890 --> 00:32:36,940 So in enige case-- effens na die ge raad gedoen het. 714 00:32:36,940 --> 00:32:42,300 >> So in elk geval, daar is 'n hele klomp van super globals, 715 00:32:42,300 --> 00:32:45,960 soos hulle hier genoem word, een van die wat ons saw-- dollar teken underscore post. 716 00:32:45,960 --> 00:32:49,530 Daar is 'n eweknie genoem get, dit is waar dinge uit 'n URL 717 00:32:49,530 --> 00:32:50,690 eindig gaan. 718 00:32:50,690 --> 00:32:54,051 En daar is 'n hele klomp van die ander, too-- sessie en bediener en koekie. 719 00:32:54,051 --> 00:32:55,800 Ons sal terug te kom na cookies 'n ander tyd, 720 00:32:55,800 --> 00:33:01,340 maar sessie is gaaf omdat reg now-- tot now-- 721 00:33:01,340 --> 00:33:06,350 alles wat ons gedoen het met 'n webblaaier is 'n soort van staatlose, om so te praat. 722 00:33:06,350 --> 00:33:10,060 Ek kan kliek om toegang lêers op die bediener, iets 723 00:33:10,060 --> 00:33:13,500 gebeur op die skerm, maar dan is die verband sluit. 724 00:33:13,500 --> 00:33:17,450 Die Internet Explorer of die Firefox ikoon stop spin 725 00:33:17,450 --> 00:33:20,340 en jy moet net sien wat dat webblad bevat. 726 00:33:20,340 --> 00:33:23,530 >> So HTTP is staatloos in daardie sodra dit maak 'n verband, 727 00:33:23,530 --> 00:33:25,050 kry sommige data, dit is dit. 728 00:33:25,050 --> 00:33:29,940 Geen meer verband, in teenstelling met Skype, In teenstelling met FaceTime, in teenstelling met Gchat, wat 729 00:33:29,940 --> 00:33:32,180 handhaaf 'n konstante verbinding met die bediener. 730 00:33:32,180 --> 00:33:34,650 Die web is fundamenteel ontkoppel, maar ons sal 731 00:33:34,650 --> 00:33:36,630 sien voor lank hoe ons dinge kan simuleer 732 00:33:36,630 --> 00:33:39,300 soos Facebook chat en Gchat, wat die illusion-- handhaaf 733 00:33:39,300 --> 00:33:41,680 of eintlik hou ' konstante verbinding met behulp 734 00:33:41,680 --> 00:33:43,270 meer moderne tegnologie. 735 00:33:43,270 --> 00:33:49,000 >> Maar as ek gaan, sê counter.php, dit is nog 'n eenvoudige voorbeeld, 736 00:33:49,000 --> 00:33:52,700 soos ons sal sien, wat tans dink Ek besoek die webwerf nul tyd. 737 00:33:52,700 --> 00:33:56,790 Maar as ek net die bladsy te herlaai, een of ander manier weet ek was hier voor. 738 00:33:56,790 --> 00:33:58,840 As ek herlaai weer, dit weet ek was hier voor. 739 00:33:58,840 --> 00:34:01,100 En weer en weer en weer en weer. 740 00:34:01,100 --> 00:34:03,610 >> So is daar 'n paar plus-plussing aangaan nie, maar kennis 741 00:34:03,610 --> 00:34:07,090 die dingetjie spin ooit so kortliks tot bo en dan koppel, 742 00:34:07,090 --> 00:34:11,179 so dit is nie soos ek het 'n konstante verbinding met my toestel. 743 00:34:11,179 --> 00:34:16,929 Wel, as ek gaan in counter.php, sien hoe maklik dit is. 744 00:34:16,929 --> 00:34:19,080 Ek het eers noem hierdie spesiale funksie wat ons sal gou 745 00:34:19,080 --> 00:34:21,513 begin neem vir toegestaan genoem sessie begin. 746 00:34:21,513 --> 00:34:22,179 Begin 'n sessie. 747 00:34:22,179 --> 00:34:25,095 >> En 'n sessie van nou af net gaan 'n emmer te wees, soos 'n winkelsentrum 748 00:34:25,095 --> 00:34:28,120 wa waarin jy waardes kan sit en soort vertrou as 'n programmeerder 749 00:34:28,120 --> 00:34:31,590 dat hulle gaan om hier te wees wanneer dat die gebruiker kom back-- 'n tweede 750 00:34:31,590 --> 00:34:35,670 later, 'n uur later, selfs 'n jaar later, so lank as wat hy of sy doen nie duidelik 751 00:34:35,670 --> 00:34:37,602 hul koekies, soos ons sal uiteindelik sien. 752 00:34:37,602 --> 00:34:39,310 En nou, ek het net 'n indien toestand hier. 753 00:34:39,310 --> 00:34:44,679 So as die volgende sleutel, genoem toonbank, is binne-in sit 754 00:34:44,679 --> 00:34:49,210 van hierdie super global-- hierdie hash tafel, as jy will-- genoem sessie 755 00:34:49,210 --> 00:34:53,350 dan voort te gaan en gryp die waarde uit die session-- think 756 00:34:53,350 --> 00:34:55,250 van hierdie as 'n winkelsentrum cart-- en stoor dit 757 00:34:55,250 --> 00:34:57,680 in 'n tydelike veranderlike genoem toonbank. 758 00:34:57,680 --> 00:35:02,240 >> Andersins, as dit waarde toonbank was nie ingestel in die sogenaamde shopping cart, 759 00:35:02,240 --> 00:35:04,430 net inisialiseer tot 0. 760 00:35:04,430 --> 00:35:09,830 Laastens, hier, gaan sit terug in die shopping carts of die sessie 761 00:35:09,830 --> 00:35:13,000 die waarde van die toonbank 1. 762 00:35:13,000 --> 00:35:16,730 So dit blyk dat hierdie spesiale houer here-- 763 00:35:16,730 --> 00:35:20,355 wat, weer, is een van hierdie verband skikkings, 'n skikking wat jy kan indeks 764 00:35:20,355 --> 00:35:25,010 in woorde in plaas van numbers-- voortduur selfs nadat die gebruiker gaan weg. 765 00:35:25,010 --> 00:35:26,510 Weereens, ek sal terug na die artikel nou. 766 00:35:26,510 --> 00:35:28,400 Dit was 'n minuut of so. 767 00:35:28,400 --> 00:35:31,300 Maar dit onthou dat ek hier 19 keer voor. 768 00:35:31,300 --> 00:35:32,740 Dit is my 20ste besoek. 769 00:35:32,740 --> 00:35:36,560 >> En so dit gaan die sleutel te wees implementering van enige webwerf wat onthou 770 00:35:36,560 --> 00:35:40,640 dat jy aangeteken het, dat jy iets letterlike in jou inkopie mandjie 771 00:35:40,640 --> 00:35:43,902 te koop, of dat jy 'n paar aantal boodskappe hangende. 772 00:35:43,902 --> 00:35:45,610 Enige tyd wat jy wil onthou inligting 773 00:35:45,610 --> 00:35:48,130 ons sal wat PHP sien, soos verskeie ander tale, 774 00:35:48,130 --> 00:35:53,640 bied ons met hierdie illusie van die staat selfs al is, soos jy sal sien in PSET 6, 775 00:35:53,640 --> 00:35:57,642 as jy maak HTTP versoeke van die kliënt aan die bediener, dit is dit. 776 00:35:57,642 --> 00:35:59,850 Sodra jy terug wat reaksie, daar is niks meer 777 00:35:59,850 --> 00:36:01,790 kom terug van die bediener by verstek. 778 00:36:01,790 --> 00:36:03,820 Maar ons sal sien hoe om te werk om dit. 779 00:36:03,820 --> 00:36:07,430 >> Wel nou, laat ons probeer om te skoon dit op 'n bietjie. 780 00:36:07,430 --> 00:36:09,470 Ons het gesien hoe 'n paar verskillende voorbeelde is daar. 781 00:36:09,470 --> 00:36:12,250 O ja, en as 'n eenkant, vir diegene bekende of onbekende, 782 00:36:12,250 --> 00:36:14,230 Die rede waarom die Frosh kitsboodskappe byvoorbeeld het 783 00:36:14,230 --> 00:36:18,060 uit te kyk regtig lelike goed slightly--, 784 00:36:18,060 --> 00:36:23,160 nog ugly-- effens minder lelik maar nog steeds lelik 785 00:36:23,160 --> 00:36:25,230 is, want as ons kyk by die bron-kode hier, 786 00:36:25,230 --> 00:36:28,240 dit blyk dat ek hierdie by die top van die lêer. 787 00:36:28,240 --> 00:36:32,570 >> Blyk dat bootstrap is een van vele vrylik beskikbaar biblioteke daar buite 788 00:36:32,570 --> 00:36:37,140 wat vir programmeertale bestaan ​​nie altyd nie, maar vir CSS of JavaScript 789 00:36:37,140 --> 00:36:39,190 of HTML of enige aantal tale. 790 00:36:39,190 --> 00:36:42,160 >> En hierdie mense here-- kom oorspronklik uit 791 00:36:42,160 --> 00:36:44,730 van Twitter-- net 'n hele klomp van style. 792 00:36:44,730 --> 00:36:47,360 Dit is 'n massiewe lêer hier dat iemand geskryf het, 793 00:36:47,360 --> 00:36:51,020 of iemand se geskryf het, met verloop van tyd wat spesifiseer kleure en uitleg 794 00:36:51,020 --> 00:36:53,740 en noem maar op, sodat ek kan soort leen hul sintaksis 795 00:36:53,740 --> 00:36:56,157 en nie om uit te vind hoe om uit te lê my vorm. 796 00:36:56,157 --> 00:36:57,990 Dit is ook minified sodat 'n rekenaar kan 797 00:36:57,990 --> 00:37:00,560 verstaan ​​dit, maar nie noodwendig 'n mens. 798 00:37:00,560 --> 00:37:03,050 So dit is net die rede waarom die stilering daar verander. 799 00:37:03,050 --> 00:37:05,450 >> Maar laat ons nou beter in terme van die ontwerp, 800 00:37:05,450 --> 00:37:07,490 want as ons bly af hierdie pad te lank is, 801 00:37:07,490 --> 00:37:11,290 ons kode gaan morsig en morsig. 802 00:37:11,290 --> 00:37:13,040 So laat se fokus op die voorbeelde hier. 803 00:37:13,040 --> 00:37:15,090 Die laaste vir vandag. 804 00:37:15,090 --> 00:37:18,720 >> So hier is 'n super eenvoudige weergawe 1.0 van CS50 se webwerf. 805 00:37:18,720 --> 00:37:21,250 Dit het slegs skakels na lesings en leerplan 806 00:37:21,250 --> 00:37:25,490 en dit is die gebruik van daardie geordende lys tag-- die UL etiket wat ons gebruik laaste keer. 807 00:37:25,490 --> 00:37:28,800 En as in die feit dat, as ek oopmaak View Page Bron, 808 00:37:28,800 --> 00:37:31,710 sal jy sien dat dit regtig, regtig eenvoudige HTML. 809 00:37:31,710 --> 00:37:35,460 En in die feit, selfs al is dit 'n PHP-lêer onder die enjinkap, 810 00:37:35,460 --> 00:37:38,620 dit is nog steeds net spoeg uit net HTML vir nou. 811 00:37:38,620 --> 00:37:41,312 >> So as ek op Lesings, ons sien dit gebeur. 812 00:37:41,312 --> 00:37:43,020 En as ek op week nul, sien ons dit. 813 00:37:43,020 --> 00:37:44,920 En as ek op Woensdag, sien ons dit. 814 00:37:44,920 --> 00:37:47,900 En dit was blykbaar die PDF van die skyfies van daardie dag. 815 00:37:47,900 --> 00:37:52,020 Al wat ek gedoen het, is met 'n skakel anker tag na hierdie URL hier. 816 00:37:52,020 --> 00:37:55,400 >> So dit is net om te sê dit is 'n mooi eenvoudige weergawe van CS50 se webwerf. 817 00:37:55,400 --> 00:37:56,790 Kom ons kyk hoe dit geïmplementeer word. 818 00:37:56,790 --> 00:38:01,240 As ek gaan in die mvc0 gids, ons sal sien 'n paar lêers. 819 00:38:01,240 --> 00:38:03,250 Een is 'n README, so as sommige van hierdie is te vinnig, 820 00:38:03,250 --> 00:38:05,166 jy kan net steek om rustiger later. 821 00:38:05,166 --> 00:38:07,930 En kennis hier is 'n index.php lêer. 822 00:38:07,930 --> 00:38:09,960 Dit blyk dat indien jy jouself, die mens, 823 00:38:09,960 --> 00:38:14,460 nie 'n finale naam spesifiseer nie 'n URL, die web bediener gewoonlik 824 00:38:14,460 --> 00:38:17,010 maak afleidings ten einde 'n standaard naam vir jou. 825 00:38:17,010 --> 00:38:20,060 'N indeks dot iets is gewoonlik die standaard. 826 00:38:20,060 --> 00:38:23,010 >> So dit is waarom 'n oomblik gelede wanneer ek besoek hierdie skakel hier 827 00:38:23,010 --> 00:38:26,750 geen lêer naam, geen lêer uitbreiding, geen tydperk in die URL. 828 00:38:26,750 --> 00:38:29,710 Dit het net geweet een of ander manier mettertyd om te kyk vir index.php. 829 00:38:29,710 --> 00:38:30,870 Dit is net 'n konvensie. 830 00:38:30,870 --> 00:38:32,360 Kan enigiets genoem word. 831 00:38:32,360 --> 00:38:35,110 >> So as ek gaan nou in index.php, sal jy sien 832 00:38:35,110 --> 00:38:37,100 dat indeed-- laat ontslae te raak van die kommentaar 833 00:38:37,100 --> 00:38:39,500 hier, want daar is regtig niks interessant te it-- 834 00:38:39,500 --> 00:38:41,579 dit is net harde gekodeerde HTML. 835 00:38:41,579 --> 00:38:43,370 So dit is konsekwent, al is, met my eis 836 00:38:43,370 --> 00:38:45,230 dat jy HTML en PHP kan commingle. 837 00:38:45,230 --> 00:38:48,060 Daar is geen werklike programmering logika hier. 838 00:38:48,060 --> 00:38:51,030 >> En die ander lêers is redelik veel net so oninteressant. 839 00:38:51,030 --> 00:38:56,240 Dit is net harde gekodeerde week een hier om te week een m en week een w, 840 00:38:56,240 --> 00:38:57,510 Maandag en Woensdag. 841 00:38:57,510 --> 00:39:01,890 En dan as ek oop week nul, sien dit is byna identies. 842 00:39:01,890 --> 00:39:03,320 >> En dit is soort van 'n sleutel afhaal. 843 00:39:03,320 --> 00:39:06,180 Let net hoe oortollige dit is. 844 00:39:06,180 --> 00:39:10,710 Hierdie lêers skaars verander, en tog het ek getrek een van hierdie kopie / plak werk 845 00:39:10,710 --> 00:39:13,420 waar ek het een file-- vermoedelik in week zero-- kopieer dit 846 00:39:13,420 --> 00:39:16,320 wanneer week het gekom om, en tweaked 'n paar waardes. 847 00:39:16,320 --> 00:39:18,590 Ons moet seker wees om beter as om dit te doen. 848 00:39:18,590 --> 00:39:21,800 >> So laat ons gaan terug na mvc en gaan in weergawe een. 849 00:39:21,800 --> 00:39:24,810 En sien Ek het 'n paar lêers, want wat 850 00:39:24,810 --> 00:39:29,870 was algemeen vir al die lêers net 'n oomblik ago-- as ek gaan terug na weergawe 0, 851 00:39:29,870 --> 00:39:32,600 Kom ons gaan terug na indeks en net postulate-- 852 00:39:32,600 --> 00:39:36,090 sodra ek ontslae raak van die comments-- wat deel van hierdie bladsy 853 00:39:36,090 --> 00:39:40,072 is vermoedelik in elkeen van my lêers? 854 00:39:40,072 --> 00:39:40,780 Noem dit net uit. 855 00:39:40,780 --> 00:39:44,620 Watter lyne is gedupliseer waarskynlik oor al hierdie bladsye? 856 00:39:44,620 --> 00:39:45,120 Ja? 857 00:39:45,120 --> 00:39:46,110 >> STUDENT: [onhoorbaar]. 858 00:39:46,110 --> 00:39:47,660 >> David J. Malan 1 tot 9. 859 00:39:47,660 --> 00:39:48,720 Ja, absoluut. 860 00:39:48,720 --> 00:39:52,080 1 tot 9, behalwe miskien 8 verander 'n bietjie, want CS50 861 00:39:52,080 --> 00:39:54,650 word lesings of week nul of iets. 862 00:39:54,650 --> 00:39:55,970 Maar byna identies. 863 00:39:55,970 --> 00:39:58,657 So al hierdie dinge is net soort gekopieer en geplak. 864 00:39:58,657 --> 00:40:00,490 En daar is 'n paar ander lyne wat ek kan dink 865 00:40:00,490 --> 00:40:05,000 van wat waarskynlik identies oor al die lêers. 866 00:40:05,000 --> 00:40:06,315 >> STUDENT: 12 en 13. 867 00:40:06,315 --> 00:40:07,190 David J. MALAN: Ja. 868 00:40:07,190 --> 00:40:11,220 Seker, 12, 13, en 14 waarskynlik, net omdat die interessante dinge 869 00:40:11,220 --> 00:40:15,460 gebeur op die lyne 11 en 10, so dit lyk. 870 00:40:15,460 --> 00:40:18,350 So laat ons kyk na weergawe 1, wat probeer om te verbeter op hierdie. 871 00:40:18,350 --> 00:40:24,020 In weergawe 1 van hierdie MVC example-- ons sal verduidelik wat mvc middel in 'n moment-- 872 00:40:24,020 --> 00:40:27,420 As ek gaan in indeks, is dit soort van lyk 'n bietjie verwarrend nou. 873 00:40:27,420 --> 00:40:28,880 Dit is nie heeltemal so eenvoudig soos tevore. 874 00:40:28,880 --> 00:40:30,906 >> Maar wanneer jy begin om te lees dit versigtig, dit is 875 00:40:30,906 --> 00:40:32,530 redelik eenvoudig wat dit doen. 876 00:40:32,530 --> 00:40:34,397 Blykbaar lyn 1 en lyn 8 vervang 877 00:40:34,397 --> 00:40:37,230 al die dinge wat jy net identified-- al was dit vir 'n goeie maatreël, 878 00:40:37,230 --> 00:40:41,900 Ek het die ULS daar net in die geval 'n paar dae het nie 'n lys van dinge. 879 00:40:41,900 --> 00:40:47,860 En dit vereis is soort van soos pond sluit in C. Dit kopieer en plak 880 00:40:47,860 --> 00:40:50,470 die inhoud effektief reg hier in hierdie lêer. 881 00:40:50,470 --> 00:40:53,650 >> So in header.php, soos jy kan aflei uit die naam, 882 00:40:53,650 --> 00:40:55,330 gaan die kop van die bladsy wees. 883 00:40:55,330 --> 00:40:57,110 Dit is soort van hier gelaat. 884 00:40:57,110 --> 00:41:01,820 Dit het net die top om dit, maar daar is geen inhoud meer hieronder. 885 00:41:01,820 --> 00:41:05,070 >> En as ek kyk na footer intussen, wat was die ander lêer mentioned-- 886 00:41:05,070 --> 00:41:08,830 hierdie een is selfs minder interessant, Maar weereens, dit is algemeen vir alles. 887 00:41:08,830 --> 00:41:10,250 So dit is die voet. 888 00:41:10,250 --> 00:41:11,300 Dit is die kop. 889 00:41:11,300 --> 00:41:13,950 Dit is die lêer wat verander, so hoekom nie 890 00:41:13,950 --> 00:41:18,140 probeer om faktor uit die gemeenskaplikheid Met hierdie twee lyne hier? 891 00:41:18,140 --> 00:41:20,090 >> Maar ons kan dit skoon te maak 'n bietjie verder. 892 00:41:20,090 --> 00:41:23,260 Ek gaan om voort te gaan en oop weergawe twee waar 893 00:41:23,260 --> 00:41:27,106 ons sal sien dat daar 'n nuwe lêer, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Ons sal sien wat dit is in 'n oomblik. 895 00:41:28,610 --> 00:41:30,930 Kom ons gaan na die indeks, soos die inskrywing punt as tevore. 896 00:41:30,930 --> 00:41:35,230 >> En nou sien ek wat helpers.php, nie kop-of voet. 897 00:41:35,230 --> 00:41:41,720 Maar helpers is 'n soort van hou helpers.c en helpers.h van PSET 2 898 00:41:41,720 --> 00:41:46,150 of PSET 3 lank gelede wanneer jy eintlik het soek en vind dat PSET, 899 00:41:46,150 --> 00:41:50,950 en jy het al jou kode vir sortering en soek in 'n aparte lêer. 900 00:41:50,950 --> 00:41:52,510 Dit is wat hier aangaan nie. 901 00:41:52,510 --> 00:41:54,390 >> En nou lyn 3 lyk 'n bietjie anders. 902 00:41:54,390 --> 00:41:55,920 En dit is net een reël. 903 00:41:55,920 --> 00:41:57,950 Dit selfs meer te maak duidelik, ek kon net 904 00:41:57,950 --> 00:42:01,820 nie hierdie stilisties konsekwent te wees met alles wat ons gedoen het. 905 00:42:01,820 --> 00:42:04,130 Maar dit is nie regtig die verandering van die funksie. 906 00:42:04,130 --> 00:42:05,880 Dit is net een lyn van die werklike kode. 907 00:42:05,880 --> 00:42:09,010 >> Blykbaar is daar 'n funksie iewers genoem lewer kop, 908 00:42:09,010 --> 00:42:11,420 en dit is waar dinge 'n bietjie sterk. 909 00:42:11,420 --> 00:42:17,040 Let daarop dat die binnekant van sy hakies is wat ander stuk van die sintaksis? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Dit is waarskynlik 'n bietjie moeilik om te sê nie, maar sien there's-- ek 'n paar wit sal sit 912 00:42:23,350 --> 00:42:24,300 ruimte. 913 00:42:24,300 --> 00:42:25,530 Daar is vierkantige hakies. 914 00:42:25,530 --> 00:42:29,700 >> En vierkantige hakies ons 'n bietjie gelede gesien in die konteks van assosiatiewe skikkings, 915 00:42:29,700 --> 00:42:31,580 wat, weer, soos hash tabelle. 916 00:42:31,580 --> 00:42:36,230 En as jy nou dink aan C, die orde van argumente in 'n funksie 917 00:42:36,230 --> 00:42:37,570 moet altyd dieselfde wees. 918 00:42:37,570 --> 00:42:41,146 Jy het om te onthou wat die bestel is-- x, y, z of z, y, x-- 919 00:42:41,146 --> 00:42:44,020 en jy moet altyd vir hulle in dieselfde volgorde of kyk hulle 920 00:42:44,020 --> 00:42:45,100 As jy vergeet het. 921 00:42:45,100 --> 00:42:51,140 >> Maar dit lyk na 'n slim manier wees van verbygaande 'n arbitrêre sleutel waarde 922 00:42:51,140 --> 00:42:55,840 pare waardeur titel is die naam van 'n argument in hierdie geval 923 00:42:55,840 --> 00:42:58,334 en CS50 is die waarde daarvan. 924 00:42:58,334 --> 00:43:00,250 En die feit dat ek ' hierdie vierkantige hakies 925 00:43:00,250 --> 00:43:02,560 hier beteken dat ek kon ook slaag in iets 926 00:43:02,560 --> 00:43:07,550 soos 'n week is 1 of 0 of 2 of 3. 927 00:43:07,550 --> 00:43:10,550 Dus het ons geparameteriseer hierdie funksie in so 'n manier 928 00:43:10,550 --> 00:43:15,180 dat dit kan neem verskeie insette, maar vir nou is dit net die een. 929 00:43:15,180 --> 00:43:20,060 >> As ek gaan nou in helpers.php, sien wat dit doen. 930 00:43:20,060 --> 00:43:22,030 Dit is 'n bietjie van die nuwe funksies, 931 00:43:22,030 --> 00:43:24,190 maar vir nou net ' geloof dat dit 932 00:43:24,190 --> 00:43:26,570 die sintaksis wat jy 'n funksie in PHP definieer. 933 00:43:26,570 --> 00:43:27,840 Jy sê letterlik funksie. 934 00:43:27,840 --> 00:43:30,090 Jy het 'n opbrengs spesifiseer nie tik, en dit is in ooreenstemming 935 00:43:30,090 --> 00:43:33,880 met die veranderlike detail vroeër waar jy werklik tik nie sterk. 936 00:43:33,880 --> 00:43:35,650 >> Dit spesifiseer net wat by verstek hierdie 937 00:43:35,650 --> 00:43:37,460 neem 'n assosiatiewe skikking as 'n argument. 938 00:43:37,460 --> 00:43:38,210 En weet jy wat? 939 00:43:38,210 --> 00:43:41,450 Indien die gebruiker nie een slaag in, neem 'n standaard waarde. 940 00:43:41,450 --> 00:43:44,680 >> Dit is 'n funksie wat C het nie vir ons, wat is lekker, want nou 941 00:43:44,680 --> 00:43:46,430 data, selfs as jy gee dit niks, 942 00:43:46,430 --> 00:43:49,300 gaan 'n wees verskeidenheid, maar 'n leë een. 943 00:43:49,300 --> 00:43:51,860 En as 'n eenkant, uittreksel net iets funky 944 00:43:51,860 --> 00:43:56,380 waar dit neem al die sleutels van hierdie assosiatiewe skikking, al die dinge wat 945 00:43:56,380 --> 00:43:59,950 jy kan sit in vierkantige hakies, en skep veranderlikes uit hulle 946 00:43:59,950 --> 00:44:06,270 sodat ons uiteindelik toegang kan hê hulle in footet.php en header.php. 947 00:44:06,270 --> 00:44:08,950 Dit is 'n bietjie abstrakte, so laat my wys dit uit. 948 00:44:08,950 --> 00:44:12,990 >> In index.php, kennis dat ek verby in 'n belangrike waarde denim titel 949 00:44:12,990 --> 00:44:14,850 met 'n waarde van CS50. 950 00:44:14,850 --> 00:44:18,660 As ek nou na helpers.php, sien dat RenderHeader 951 00:44:18,660 --> 00:44:23,870 is onttrek dat die data wat ek verby in, en dan wat header.php. 952 00:44:23,870 --> 00:44:27,970 Wat ek gedoen het is 'n soort van 'n arm man se implementering nou die volgende. 953 00:44:27,970 --> 00:44:31,720 >> As ek oop header.php, kennis dat ek nie meer hard 954 00:44:31,720 --> 00:44:34,890 gekodeerde die woord CS50 in hierdie kop-lêer. 955 00:44:34,890 --> 00:44:39,310 Ek het hierdie gesit het weliswaar afgrijselijk vernoem funksie, HTML spesiale karakters, 956 00:44:39,310 --> 00:44:40,170 daar. 957 00:44:40,170 --> 00:44:41,640 Maar let op wat ek gedoen het. 958 00:44:41,640 --> 00:44:44,240 Ek het 'n oop HTML. 959 00:44:44,240 --> 00:44:47,420 Ek het dan oop kop en oop titel. 960 00:44:47,420 --> 00:44:52,380 >> En dan binnekant van die titel se oop en naby etikette, ek het 'n bietjie van die PHP-kode. 961 00:44:52,380 --> 00:44:56,670 En dit is 'n mooi, maar van sintaksis, wat beteken net eggo uit. 962 00:44:56,670 --> 00:44:59,840 Dit beteken letterlik this-- eggo die following-- 963 00:44:59,840 --> 00:45:01,910 maar dit is sexier te skryf. 964 00:45:01,910 --> 00:45:05,000 Eggo uit die titel dit is aangeneem in. 965 00:45:05,000 --> 00:45:07,560 >> Maar wat dink jy HTML spesiale kar is alles oor, 966 00:45:07,560 --> 00:45:10,590 veral as jy ' sommige voor HTML ervaring? 967 00:45:10,590 --> 00:45:14,050 Wat karakters kan wees gevaarlik om te slaag in 'n bladsy 968 00:45:14,050 --> 00:45:17,980 waar jy dinamiese genereer die webblad met 'n kode soos hierdie? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Laat my gaan hierdie lêer, weergawe twee, en sien as ek nie kan veroorsaak nie. 971 00:45:24,650 --> 00:45:26,210 >> Weergawe twee is dit. 972 00:45:26,210 --> 00:45:28,510 En sien alles is goed, goed werk. 973 00:45:28,510 --> 00:45:35,280 Maar dink ek gaan in index.php en Ek vermeld dat die titel van my bladsy 974 00:45:35,280 --> 00:45:36,630 is nie CS50. 975 00:45:36,630 --> 00:45:44,930 Dit is oop bracket script waarskuwing hello world, naby enkele aanhaling, 976 00:45:44,930 --> 00:45:49,740 naby hakies, kommapunt, oop bracket, streep script. 977 00:45:49,740 --> 00:45:51,897 >> Script, soos ons sal uiteindelik sien, is 'n tag 978 00:45:51,897 --> 00:45:54,480 wat jy kan gebruik van 'n ander te gebruik programmeertaal genoem 979 00:45:54,480 --> 00:45:56,330 JavaScript binnekant van 'n web bladsy. 980 00:45:56,330 --> 00:45:57,960 En nou sien die logika hier. 981 00:45:57,960 --> 00:45:59,840 Hier is 'n sleutel genoem titel. 982 00:45:59,840 --> 00:46:02,690 Hier is dit is gek lang waarde nou. 983 00:46:02,690 --> 00:46:07,840 >> Maar as ek gaan na die helpers page- of liewer, die kop bladsy 984 00:46:07,840 --> 00:46:11,310 Ek noem hierdie funksie op die titel eerste. 985 00:46:11,310 --> 00:46:15,250 So as ek herlaai nou hierdie bladsy, ek sien, wat belaglik lyk, 986 00:46:15,250 --> 00:46:16,110 maar dit is veilig. 987 00:46:16,110 --> 00:46:17,310 Dit lyk net dom. 988 00:46:17,310 --> 00:46:20,320 >> Maar veronderstel plaas Ek het vergeet. 989 00:46:20,320 --> 00:46:24,660 En let op my woorde, 'n nie-nul getal julle sal vergeet om dit te doen 990 00:46:24,660 --> 00:46:27,790 en jy sal 'n vlytige kry student of vriend te kom 991 00:46:27,790 --> 00:46:31,540 om u by die CS50 billike of anoniem snags skeer rond op jou webwerf 992 00:46:31,540 --> 00:46:35,300 en wese spuit kode unbeknownst aan jou in jou werf 993 00:46:35,300 --> 00:46:35,800 een of ander manier. 994 00:46:35,800 --> 00:46:39,000 >> Want as ek net spoeg uit die titel hier en titel 995 00:46:39,000 --> 00:46:44,330 there-- Wel, as titel letterlik lyk en PHP 996 00:46:44,330 --> 00:46:47,660 as 'n taal wat kan spoeg uit ander tale teks, 997 00:46:47,660 --> 00:46:50,650 dit letterlik gaan hierdie merker te vervang met, 998 00:46:50,650 --> 00:46:53,010 natuurlik, wat ek elders. 999 00:46:53,010 --> 00:46:57,640 >> So as ek hier gaan herlaai na nou die verwydering van die veiligheid meganismes, 1000 00:46:57,640 --> 00:46:59,982 nou het ek hello world hier. 1001 00:46:59,982 --> 00:47:02,690 Nou dit is nie al dat die groot van 'n hanteer, maar jy kan iets doen 1002 00:47:02,690 --> 00:47:05,119 'n bietjie meer kwaadwillige hier, soos daar is 1003 00:47:05,119 --> 00:47:08,410 ander tags-- soos ons sal sien wanneer ons spandeer meer tyd in JavaScript-- soos plek 1004 00:47:08,410 --> 00:47:14,910 dot href kry, haal, unquote, HTTP business.com, maar die teenoorgestelde van wat 1005 00:47:14,910 --> 00:47:15,950 van die ander dag. 1006 00:47:15,950 --> 00:47:20,120 En nou kan jy 'n web veroorsaak bladsy te eintlik gaan onmiddellik 1007 00:47:20,120 --> 00:47:21,190 hierdie webblad hier. 1008 00:47:21,190 --> 00:47:23,000 >> En eintlik, ek wil nie selfs gaan na business.com 1009 00:47:23,000 --> 00:47:24,749 want ek wil nie om te weet wat dit is. 1010 00:47:24,749 --> 00:47:28,710 Maar dit sal ook kode sneller om in hierdie bladsy ingespuit word. 1011 00:47:28,710 --> 00:47:32,680 So dit is net om te sê dat selfs al ons die bekendstelling van super vroeg op 'n paar 1012 00:47:32,680 --> 00:47:36,800 van hierdie meer komplekse strukture, dit is alles in die rigting van 'n einde te maak seker 1013 00:47:36,800 --> 00:47:39,320 dat jou kode is nie ontginbaar. 1014 00:47:39,320 --> 00:47:40,960 >> So nou 'n derde weergawe hier. 1015 00:47:40,960 --> 00:47:42,470 Dit is 'n bietjie liefhebber. 1016 00:47:42,470 --> 00:47:44,875 Ek het nie regtig like-- die anale kant van my 1017 00:47:44,875 --> 00:47:47,750 was 'n bietjie vererg deur die feit dat ek het 'n funksie genoem 1018 00:47:47,750 --> 00:47:51,940 RenderHeader en RenderFooter wat byna identies. 1019 00:47:51,940 --> 00:47:55,400 Daarom is dit vir my voorgekom, hoekom dit nie doen nie Ek parameteriseren hierdie funksies 1020 00:47:55,400 --> 00:47:59,180 in net een genoem lewer, het dit 'n tweede argument 1021 00:47:59,180 --> 00:48:04,420 soos die naam van die sjabloon, die finale óf kop-of voet te render--? 1022 00:48:04,420 --> 00:48:07,160 En dan opsioneel, as ek wil in sommige sleutel waarde pare te slaag 1023 00:48:07,160 --> 00:48:10,580 soos ek doen om die titel vir die header maar nie vir die voet, 1024 00:48:10,580 --> 00:48:11,800 Ek kon dit doen. 1025 00:48:11,800 --> 00:48:16,510 >> En so nou as ek gaan in helpers.php, dit is 'n bietjie meer kompleks. 1026 00:48:16,510 --> 00:48:19,670 En ek sal my hande waai by die besonderhede, maar dit is net een funksie. 1027 00:48:19,670 --> 00:48:21,890 So dit is 'n stap in die rigting om 'n beter ontwerp. 1028 00:48:21,890 --> 00:48:23,360 >> Ons kan dit 'n stap verder te neem. 1029 00:48:23,360 --> 00:48:28,890 As ek gaan in my vierde weergawe van hierdie, let nou 1030 00:48:28,890 --> 00:48:31,320 dat ek om iets te doen selfs meer soort van kriptiese. 1031 00:48:31,320 --> 00:48:33,230 En ek weet dit is 'n baie op een slag te absorbeer, 1032 00:48:33,230 --> 00:48:35,080 maar ons is net 'n soort van die skoonmaak van die dinge op. 1033 00:48:35,080 --> 00:48:38,550 Nou is ek besig om my helpers lêer in 'n gids met die naam 1034 00:48:38,550 --> 00:48:41,190 includes-- net 'n arbitrêre noem waar ek wil dinge om te sit 1035 00:48:41,190 --> 00:48:44,300 wat ek wil include-- en dan die res van hierdie is dieselfde. 1036 00:48:44,300 --> 00:48:47,140 >> Maar as ek nou in gedit, kennis dat ek ontslae geraak 1037 00:48:47,140 --> 00:48:51,940 van al die ander lêers en ek het verskuif hulle, byvoorbeeld, in hier. 1038 00:48:51,940 --> 00:48:55,110 En dan in templates, Ek het dit hier ook. 1039 00:48:55,110 --> 00:48:59,292 En so is dit nou almal na 'n stap van die gebruik van 'n baie beter ontwerp patroon. 1040 00:48:59,292 --> 00:49:01,000 En ons is baie vinnig gaan om weg te beweeg 1041 00:49:01,000 --> 00:49:03,870 van PHP se standaard funksies, wat ons hier begin met, 1042 00:49:03,870 --> 00:49:07,655 waar jy net commingle PHP, en jou HTML, en jou CSS, 1043 00:49:07,655 --> 00:49:09,780 en jy net spoeg dit uit en jy gaan oor jou pad. 1044 00:49:09,780 --> 00:49:11,404 Dit is nie van plan om baie te onderhou. 1045 00:49:11,404 --> 00:49:14,481 Net soos in C, het ons begin met veelvuldige lêers en verskeie funksies 1046 00:49:14,481 --> 00:49:15,730 en factoring dinge wat uit. 1047 00:49:15,730 --> 00:49:16,688 Ons sal dieselfde doen hier. 1048 00:49:16,688 --> 00:49:19,970 En in werklikheid, in die vyfde en finale weergawe hier, ek het 'n ander ding. 1049 00:49:19,970 --> 00:49:23,710 Jy kan selfs gebruik dot dot, wat weer, is net die ouer gids. 1050 00:49:23,710 --> 00:49:28,260 Te wees, selfs meer sekuriteit bewus, want as ek kyk na die luister 1051 00:49:28,260 --> 00:49:32,450 hier vir die vyfde en finale weergawe, kennisgewing dat ek een gids hier genoem 1052 00:49:32,450 --> 00:49:35,180 publiek, en dan op die dieselfde vlak, so te sê, 1053 00:49:35,180 --> 00:49:38,490 Ek het sluit en templates en dan die teks lêer readme. 1054 00:49:38,490 --> 00:49:41,130 >> En die rede waarom ek het gestruktureerde dit wil this-- en so baie web 1055 00:49:41,130 --> 00:49:44,330 gashere, veral dié wat $ 5 per maand kinders of $ 10 maande kinders, 1056 00:49:44,330 --> 00:49:47,170 As jy al ooit gehad het een van hierdie services-- wat so baie van hulle doen 1057 00:49:47,170 --> 00:49:50,690 is hulle net van jou verwag om alles te stort van jou lêers in een gids 1058 00:49:50,690 --> 00:49:53,640 soos ons gedoen het reeds met hierdie eerste voorbeeld. 1059 00:49:53,640 --> 00:49:56,740 >> Maar so gou as jy begin die bou van meer gesofistikeerde webwerwe wat net stoor 1060 00:49:56,740 --> 00:50:00,480 data wat jy omgee en lêers wat jy omgee, eintlik organisering dinge 1061 00:50:00,480 --> 00:50:05,060 korrek en met meer sekerheid bewussyn in gedagte kan 1062 00:50:05,060 --> 00:50:07,927 ons begin om te verdedig teen al die vriende 1063 00:50:07,927 --> 00:50:10,135 dat jy in of buite hierdie klas wat 1064 00:50:10,135 --> 00:50:12,510 sodra jy begin om programme jouself op die web, 1065 00:50:12,510 --> 00:50:15,140 gaan begin pluk op jou en op hulle. 1066 00:50:15,140 --> 00:50:17,420 >> En so sal ons kyk uiteindelik by hierdie ontwerp. 1067 00:50:17,420 --> 00:50:20,010 Dit is net 'n foto wat toon die volgende. 1068 00:50:20,010 --> 00:50:22,897 Ons gaan almal sit ons programmering logika in een of meer lêers, 1069 00:50:22,897 --> 00:50:25,230 en ons gaan net begin roep die leiers. 1070 00:50:25,230 --> 00:50:28,022 Dit is waar die brein van ons webblaaie eintlik is. 1071 00:50:28,022 --> 00:50:29,730 Toe ons gaan het 'n uitsig en menings 1072 00:50:29,730 --> 00:50:32,480 is so eenvoudig soos net afsonderlike files-- genoem templates, dikwels. 1073 00:50:32,480 --> 00:50:34,410 Hulle moet net die estetika van my bladsy, 1074 00:50:34,410 --> 00:50:37,020 wat ek wil om die bladsy te sien like-- die kleure en die uitleg 1075 00:50:37,020 --> 00:50:38,870 en die posisies van al die veranderlikes. 1076 00:50:38,870 --> 00:50:41,120 >> En dan meer interessant dat ons uiteindelik sal kry om 1077 00:50:41,120 --> 00:50:45,420 is die model, wat gaan om net te wees die woord wat ons klap op ander tegnologie 1078 00:50:45,420 --> 00:50:47,771 wat bring ons in die prentjie, soos werklike databasisse, 1079 00:50:47,771 --> 00:50:49,520 sodat wanneer jy wil inligting te red, 1080 00:50:49,520 --> 00:50:52,140 jy stuur net nie 'n e- aan jou Proctor of vir jouself, 1081 00:50:52,140 --> 00:50:57,350 jy eintlik stoor dit in 'n databasis met behulp van 'n ander taal bekend as SQL. 1082 00:50:57,350 --> 00:51:00,450 En so sal ons vandag hier verlaat en haal met hierdie Woensdag 1083 00:51:00,450 --> 00:51:02,990 en databasisse stel dan. 1084 00:51:02,990 --> 00:51:06,940 >> [Speel van musiek] 1085 00:51:06,940 --> 00:54:24,555