1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Week 8] 2 00:00:02,000 --> 00:00:04,000 [David J Malan] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Dit is CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,000 >> Welkom terug. 5 00:00:09,000 --> 00:00:11,000 Dit is CS50, en dit is het begin van week 8. 6 00:00:11,000 --> 00:00:14,000 Een paar mogelijkheden die deze week, 7 00:00:14,000 --> 00:00:17,000 onder hen dit gesprek hier, waar wat te eten wordt geserveerd. 8 00:00:17,000 --> 00:00:20,000 Voor meer informatie kijken op de dia's die online zijn. 9 00:00:20,000 --> 00:00:24,000 En ook een ander evenement deze week door onze eigen Thomas Carriero. 10 00:00:24,000 --> 00:00:27,000 Hij is een van de voormalige hoofd van het onderwijs CS50 de medemens die nu aan Dropbox, 11 00:00:27,000 --> 00:00:29,000 en hij is de man die ons gekoppeld met de je weet wat, 12 00:00:29,000 --> 00:00:36,000 dus als je meer van dat hoofd om hun gesprek wilt vanmiddag voor Dropbox en nog veel meer. 13 00:00:36,000 --> 00:00:38,000 CS50 lunch is deze vrijdag. 14 00:00:38,000 --> 00:00:41,000 Doe mee met ons op als je in staat bent, 1:15, zoals gewoonlijk, bij Fire and Ice. 15 00:00:41,000 --> 00:00:45,000 >> En nu hebben we een duik in iets genaamd Seminars. 16 00:00:45,000 --> 00:00:49,000 Onze CS50 Seminars, recall, zijn deze optionele klassen onder leiding van het onderwijs fellows 17 00:00:49,000 --> 00:00:51,000 en natuurlijk assistenten en vrienden van de cursus, 18 00:00:51,000 --> 00:00:55,000 mensen uit een groep campus genoemd ABCD, een groep 19 00:00:55,000 --> 00:00:58,000 technofielen op de campus, maar ook een groep genaamd HCS, 20 00:00:58,000 --> 00:01:02,000 de Harvard Computer Society, studenten die op soortgelijke wijze zijn geïnteresseerd in computers. 21 00:01:02,000 --> 00:01:08,000 Dit jaar is de rooster van seminars omvat seminars op Android en iOS en JavaScript 22 00:01:08,000 --> 00:01:13,000 en PHP, Unix, Vim, en nog veel meer, zodat zich realiseren dat deze seminars komen eraan. 23 00:01:13,000 --> 00:01:16,000 Als u wilt RSVP voor een van hen het hoofd naar die URL daar. 24 00:01:16,000 --> 00:01:20,000 Wij zullen dan plaatsen op de website van de cursus de tijden en plaatsen zodra ze zijn afgerond. 25 00:01:20,000 --> 00:01:26,000 Maar weet dat er's 5 jaar ter waarde van eerdere seminars online beschikbaar, 26 00:01:26,000 --> 00:01:29,000 waarvan er vele nog steeds zeer veel stroom in termen van technologie je misschien 27 00:01:29,000 --> 00:01:36,000 wilt spelen met voor uw afstudeerprojecten, dus er hoofd voor een aantal beschikbare video's daarvan. 28 00:01:36,000 --> 00:01:39,000 >> CSS, diegenen van jullie die bekend zijn met CSS al, 29 00:01:39,000 --> 00:01:42,000 wat is het in een notendop? 30 00:01:42,000 --> 00:01:45,000 Wat is CSS? 31 00:01:45,000 --> 00:01:48,000 Het is cascading style sheets, en wat betekent dat? 32 00:01:48,000 --> 00:01:53,000 Wat betekent dat voor ons doen, CSS? 33 00:01:53,000 --> 00:01:57,000 Oke, laten we opwarmen met een eenvoudiger een, HTML, HyperText Markup Language. 34 00:01:57,000 --> 00:02:01,000 Wat betekent dat voor ons doen? 35 00:02:01,000 --> 00:02:04,000 Wie dan? 36 00:02:04,000 --> 00:02:07,000 Het wordt echt lastig deze vragen. 37 00:02:07,000 --> 00:02:11,000 HTML, Hypertext Markup Language. 38 00:02:11,000 --> 00:02:14,000 Ja? Nee? 39 00:02:14,000 --> 00:02:17,000 [Onverstaanbaar student reactie] 40 00:02:17,000 --> 00:02:20,000 Oke, goed, het laat ons toe om het markeren van tekst om weer te geven in een webbrowser. 41 00:02:20,000 --> 00:02:22,000 Het is geen programmeertaal. 42 00:02:22,000 --> 00:02:25,000 Het is inderdaad een opmaaktaal, wat betekent dat het zorgt ervoor dat de browser hoe u het scherm 43 00:02:25,000 --> 00:02:28,000 informatie, zodat de eenvoudigste incarnatie van dit zoals we hebben gezien 44 00:02:28,000 --> 00:02:32,000 is iets super simpels als boldfacing, open beugel b gesloten beugel zegt 45 00:02:32,000 --> 00:02:36,000 maken deze tekst vet, en dat is eigenlijk alleen maar een van de vele manieren 46 00:02:36,000 --> 00:02:39,000 waarin we kunnen dat doen, en inderdaad, deze dagen een betere aanpak 47 00:02:39,000 --> 00:02:42,000 te stileren uw webpagina, het maken van dingen vet en cursief 48 00:02:42,000 --> 00:02:47,000 en gecentreerd en gerechtvaardigd en dergelijke, wordt niet gedaan via HTML-tags alleen 49 00:02:47,000 --> 00:02:51,000 maar met een techniek genaamd CSS, cascading style sheets. 50 00:02:51,000 --> 00:02:53,000 Dit is een taal zichzelf. 51 00:02:53,000 --> 00:02:55,000 Het is ook geen programmeertaal but- 52 00:02:55,000 --> 00:02:58,000 iedereen, dit is Dan, die steeds bij ons vandaag. 53 00:02:58,000 --> 00:03:01,000 Enkele technische problemen. Geen probleem. 54 00:03:01,000 --> 00:03:04,000 >> CSS kunnen we stileren een pagina 55 00:03:04,000 --> 00:03:07,000 door het instellen van zogenaamde eigenschappen, dus laten we een kijkje nemen op deze 56 00:03:07,000 --> 00:03:09,000 door middel van een aantal fundamentele voorbeelden. 57 00:03:09,000 --> 00:03:12,000 Laat me gaan in het apparaat vandaag. 58 00:03:12,000 --> 00:03:15,000 Ik heb de bron 8 Maandag directory hier, 59 00:03:15,000 --> 00:03:18,000 en ik ga om te gaan in een directory met de naam CSS waar we een hele hoop 60 00:03:18,000 --> 00:03:21,000 van bestanden op ons te wachten hier, 61 00:03:21,000 --> 00:03:27,000 en in deze map hebben we, bijvoorbeeld, search0.html van de vorige keer. 62 00:03:27,000 --> 00:03:31,000 Nu, herinner met search0 we vertrokken op deze nota 63 00:03:31,000 --> 00:03:35,000 door soort van de uitvoering van Google of eigenlijk gewoon de front-end voor het een week of zo geleden, 64 00:03:35,000 --> 00:03:38,000 en merk op dat we een aantal nieuwe tags er moest. 65 00:03:38,000 --> 00:03:41,000 We hadden h1 voor een groot, vet rubriek, 66 00:03:41,000 --> 00:03:45,000 vorm, waardoor we eigenlijk een HTML-formulier voor invoer van de gebruiker. 67 00:03:45,000 --> 00:03:48,000 Actie, wat was de betekenis van een action attribuut 68 00:03:48,000 --> 00:03:52,000 op het HTML-formulier tag? 69 00:03:52,000 --> 00:03:58,000 Wat was de betekenis van deze, actie? 70 00:03:58,000 --> 00:04:00,000 Ik zal gewoon doen vandaag. 71 00:04:00,000 --> 00:04:03,000 Actie is de bestemming waar het formulier zal worden ingediend. 72 00:04:03,000 --> 00:04:07,000 Het feit dat die zegt action = "google.com / search" 73 00:04:07,000 --> 00:04:10,000 betekent dat wanneer de gebruiker op de submit knop of het equivalent 74 00:04:10,000 --> 00:04:14,000 welke vorm dan ook velden die ingevuld zullen worden gestuurd niet naar onze server 75 00:04:14,000 --> 00:04:17,000 of onze apparatuur, maar om dat specifieke URL bij Google. 76 00:04:17,000 --> 00:04:19,000 En de methode het gaat gebruiken heet te krijgen, 77 00:04:19,000 --> 00:04:25,000 en te krijgen, voor nu, maar is een techniek voor het doorgeven van informatie langs op een webserver 78 00:04:25,000 --> 00:04:29,000 door middel van de URL, dus laten we eens een snelle blik terug op hoe dit werkt. 79 00:04:29,000 --> 00:04:31,000 >> Merk op dat er een ingang waarvan de naam is q 80 00:04:31,000 --> 00:04:35,000 waarvan het type is tekst en vervolgens een tweede ingang in te dienen van het type 81 00:04:35,000 --> 00:04:39,000 waarvan de waarde CS50 Zoek, en inderdaad, als we open dit bestand hier, 82 00:04:39,000 --> 00:04:42,000 search0.html, het is een super eenvoudige vorm, 83 00:04:42,000 --> 00:04:45,000 en als ik zoek naar iets als de informatica 84 00:04:45,000 --> 00:04:50,000 en dan druk op enter of klik op CS50 Zoeken 85 00:04:50,000 --> 00:04:53,000 merken dat wat er gebeurt is voorbij om naar Google 86 00:04:53,000 --> 00:04:56,000 Ik heb specifiek belandde op deze URL aan de top, 87 00:04:56,000 --> 00:05:01,000 google.com / search? q = computer + wetenschap, 88 00:05:01,000 --> 00:05:04,000 en informatica is uiteraard wat ik getypt inch 89 00:05:04,000 --> 00:05:06,000 De + betekent alleen dat is waar een spatie was, 90 00:05:06,000 --> 00:05:10,000 en het is gedaan door de browser alleen maar om ervoor te zorgen dat er geen 91 00:05:10,000 --> 00:05:13,000 verwarring en witte ruimte in de werkelijke URL. 92 00:05:13,000 --> 00:05:15,000 En q natuurlijk de parameter naam. 93 00:05:15,000 --> 00:05:20,000 We hebben niet gezien hoe wij, de programmeur, daadwerkelijk kan q nog toegang. 94 00:05:20,000 --> 00:05:23,000 We kunnen aannemen dat Google weet wat ik moet doen met deze, 95 00:05:23,000 --> 00:05:25,000 maar we komen er wel te zijner tijd vandaag. 96 00:05:25,000 --> 00:05:30,000 >> Maar laat me in plaats daarvan een kijkje nemen op search1.html, 97 00:05:30,000 --> 00:05:34,000 die ziet er een beetje anders, omdat ik besloten dat dit formulier hier was gewoon een beetje lame. 98 00:05:34,000 --> 00:05:36,000 Ik bedoel, het is in de linkerbovenhoek. 99 00:05:36,000 --> 00:05:40,000 Er is echt geen esthetiek aan, en daarom wil ik deze stileren 100 00:05:40,000 --> 00:05:43,000 een beetje meer zoals Google, wiens homepage, recall, 101 00:05:43,000 --> 00:05:47,000 Ook al heb je misschien niet te bezoeken die vaak, lijkt dit vandaag op Halloween. 102 00:05:47,000 --> 00:05:53,000 Als we in plaats daarvan opent versie 1 van dit bestand, zoeken 1.html, heb ik in het midden het. 103 00:05:53,000 --> 00:05:57,000 Nog vrij lelijk, maar in ieder geval nu ben ik begonnen met de esthetiek van deze pagina te controleren, 104 00:05:57,000 --> 00:06:00,000 niet alleen de markering omhoog daarvan. 105 00:06:00,000 --> 00:06:04,000 Laten we eens een kijkje nemen op zoeken 1, en er is echt maar een verschil hier, 106 00:06:04,000 --> 00:06:06,000 die kunnen springen op je, of misschien niet, 107 00:06:06,000 --> 00:06:11,000 maar wat is het een regel of een fragment van verschil? 108 00:06:11,000 --> 00:06:14,000 >> Er is een stijlkenmerk, dus het blijkt dat in HTML 109 00:06:14,000 --> 00:06:19,000 de meeste elementen, de meeste tags kunnen een stijl attribuut hebben op hen, 110 00:06:19,000 --> 00:06:23,000 en de binnenkant van die stijl attribuut is een tekenreeks tussen aanhalingstekens, 111 00:06:23,000 --> 00:06:26,000 en dat tekenreeks tussen aanhalingstekens is CSS. 112 00:06:26,000 --> 00:06:29,000 U kunt cascading style sheet daar 113 00:06:29,000 --> 00:06:32,000 door het specificeren van het als een eigenschap naam 114 00:06:32,000 --> 00:06:34,000 gevolgd door een dubbele punt gevolgd door een waarde. 115 00:06:34,000 --> 00:06:37,000 Dit is een soort van een ongelukkige ontwerpbeslissing enkele jaren geleden 116 00:06:37,000 --> 00:06:40,000 dat CSS is een taal op zich, 117 00:06:40,000 --> 00:06:43,000 maar syntactisch het is heel anders dan HTML. 118 00:06:43,000 --> 00:06:46,000 In dit geval zien we dat de binnenkant van mijn webpagina, die is geschreven in HTML, 119 00:06:46,000 --> 00:06:51,000 Ik heb CSS binnenkant van deze citaten, en de conventie voor CSS 120 00:06:51,000 --> 00:06:55,000 is dat je wat een eigenschap, gevolgd door, opnieuw, een dubbele punt genoemd, 121 00:06:55,000 --> 00:06:58,000 gevolgd door de waarde van die eigenschap, dus er is geen gelijk-teken. 122 00:06:58,000 --> 00:07:00,000 Er is geen extra citaten. 123 00:07:00,000 --> 00:07:03,000 Het is gewoon deze scheiden met dubbele sleutel waarde paar, 124 00:07:03,000 --> 00:07:05,000 en tekstregel doet precies wat het zegt. 125 00:07:05,000 --> 00:07:09,000 Het brengt de tekst in de body van de pagina, dat is echt het lef van de pagina, 126 00:07:09,000 --> 00:07:11,000 in het midden. 127 00:07:11,000 --> 00:07:13,000 >> Oke, het eindresultaat, dan om duidelijk te zijn, is het volgende. 128 00:07:13,000 --> 00:07:17,000 Niet alles wat sexier, maar in ieder geval is gecentreerd en een beetje meer als de echte Google. 129 00:07:17,000 --> 00:07:21,000 Maar wat als ik in plaats daarvan open versie 2 van deze 130 00:07:21,000 --> 00:07:25,000 en wijzen hier beneden een nieuwe tag bij elkaar? 131 00:07:25,000 --> 00:07:30,000 Nu in de kop van mijn pagina, die alleen eerder die tag 132 00:07:30,000 --> 00:07:32,000 in alle voorgaande voorbeelden? 133 00:07:32,000 --> 00:07:34,000 Het had net dit, de titel. 134 00:07:34,000 --> 00:07:38,000 Een moment geleden de kop tag er als volgt uit. 135 00:07:38,000 --> 00:07:40,000 Nu in plaats daarvan heeft een stijl tag binnenkant van het, 136 00:07:40,000 --> 00:07:44,000 en ook dit, mijn excuses, syntactisch ziet er heel anders uit HTML, 137 00:07:44,000 --> 00:07:47,000 maar je went er wel aan, waarbij de binnenkant van de stijl tag 138 00:07:47,000 --> 00:07:50,000 Ik kan nu factor wat was een moment geleden 139 00:07:50,000 --> 00:07:54,000 een attribuut, de stijl attribuut, en ik kan zet het op de top van mijn pagina. 140 00:07:54,000 --> 00:07:56,000 >> Waarom? 141 00:07:56,000 --> 00:08:00,000 Nou, dit is een stap in de richting schoon dingen, net als in het schrijven van C-code 142 00:08:00,000 --> 00:08:04,000 We zouden wel eens schrijven functies factor van gemeenschappelijke functionaliteit. 143 00:08:04,000 --> 00:08:07,000 Het is gewoon een beetje schoner te factoring beginnen dingen als de esthetiek 144 00:08:07,000 --> 00:08:11,000 op een centrale locatie in plaats van het allemaal tussenwerpen in uw HTML. 145 00:08:11,000 --> 00:08:14,000 Dat doet ook wat hij zegt, ook al is er een beetje van nieuwe syntax. 146 00:08:14,000 --> 00:08:19,000 Dit is hier een selector, en het lichaam gewoon betekent selecteert u het body element 147 00:08:19,000 --> 00:08:21,000 en pas de volgende eigenschappen aan. 148 00:08:21,000 --> 00:08:23,000 Nou, het pand is precies hetzelfde. 149 00:08:23,000 --> 00:08:25,000 Voor de goede orde ik heb een puntkomma aan het einde, 150 00:08:25,000 --> 00:08:29,000 die de neiging heeft om conventie, en ik heb ingepakt dit hele pand 151 00:08:29,000 --> 00:08:33,000 tussen accolades, want ik kon hier eigenlijk hebben verschillende dingen. 152 00:08:33,000 --> 00:08:39,000 Ik kon eigenlijk iets zeggen als kleur: blauw; 153 00:08:39,000 --> 00:08:42,000 >> Nu ook dit is niet van plan om een ​​stap in de richting van iets dat alles mooier zijn, 154 00:08:42,000 --> 00:08:47,000 maar als ik nu terug ga naar versie 2 heb ik in ieder geval nu gemaakt het lichaam van mijn 155 00:08:47,000 --> 00:08:49,000 pagina's tekst alle blauw. 156 00:08:49,000 --> 00:08:51,000 De knop blijft hetzelfde, want dat is een ingang. Het is niet puur tekst. 157 00:08:51,000 --> 00:08:56,000 Maar al het andere dat is tekst, zoals CS50 Zoek tot boven, is in feite blauw. 158 00:08:56,000 --> 00:09:01,000 Nogmaals, alles wat we nu hebben gedaan verwijderen uit het lichaam tag, mededeling, 159 00:09:01,000 --> 00:09:04,000 de stijl attribuut, en we hebben meegenomen het hier. 160 00:09:04,000 --> 00:09:08,000 Dit is niet een enorme verbetering, maar als we nog een stap verder 161 00:09:08,000 --> 00:09:10,000 let op wat we hier kunnen doen in deze derde versie. 162 00:09:10,000 --> 00:09:14,000 >> In search3.html de webpagina is bijna identiek 163 00:09:14,000 --> 00:09:17,000 behalve voor wat nu nieuwe tag? 164 00:09:17,000 --> 00:09:20,000 Link, dus deze is niet erg toepasselijke naam 165 00:09:20,000 --> 00:09:24,000 omdat je niet koppelen in de zin van een klikbare hyperlink. 166 00:09:24,000 --> 00:09:28,000 Integendeel, je bent soort van het doen van het equivalent van # include in C 167 00:09:28,000 --> 00:09:31,000 waarbij de link tag met een href attribuut 168 00:09:31,000 --> 00:09:34,000 en een rel attribuut zegt ga je gang 169 00:09:34,000 --> 00:09:39,000 kopieer en plak de inhoud van een bestand met de naam search3.css hier wezen. 170 00:09:39,000 --> 00:09:42,000 Het is niet helemaal doen, maar dat is de geest van het. 171 00:09:42,000 --> 00:09:45,000 Het zegt verder open dat bestand, search3.css, 172 00:09:45,000 --> 00:09:49,000 en behandelen alsof de gebruiker had getypt het hier in de kop van de pagina 173 00:09:49,000 --> 00:09:51,000 net zoals ik deed in het vorige voorbeeld. 174 00:09:51,000 --> 00:09:54,000 Search3.css, ondertussen, is vrij eenvoudig. 175 00:09:54,000 --> 00:09:58,000 Het is echt gewoon bevat precies wat was een moment geleden 176 00:09:58,000 --> 00:10:03,000 in de stijl tag, maar ik heb meegenomen het hier om zijn eigen dossier. 177 00:10:03,000 --> 00:10:07,000 >> Ook al hebben we niet veel tijd doorgebracht op alle in HTML of web programmeren 178 00:10:07,000 --> 00:10:11,000 gewoon intuïtief wat is de motivatie, misschien, voor factoring uit 179 00:10:11,000 --> 00:10:14,000 dit kleine fragment zelfs van CSS in een leeg bestand 180 00:10:14,000 --> 00:10:19,000 en dan ook met deze link tag hier? 181 00:10:19,000 --> 00:10:21,000 [Onverstaanbaar student reactie] 182 00:10:21,000 --> 00:10:25,000 Oke, het is makkelijker te lezen in de zin dat je je CSS hebben in een CSS-bestand. 183 00:10:25,000 --> 00:10:28,000 Je hebt je HTML in uw HTML-bestand, dus het is beter leesbaar in die zin. 184 00:10:28,000 --> 00:10:30,000 Wat zou kunnen zijn dwingende? Ja. 185 00:10:30,000 --> 00:10:32,000 [Onverstaanbaar student reactie] 186 00:10:32,000 --> 00:10:35,000 Ja, dus u kunt ook het vele malen, dus nu zijn we aan het doen bent deze 187 00:10:35,000 --> 00:10:38,000 elementaire voorbeelden met individuele dossiers, maar stel dat je in feite het maken van 188 00:10:38,000 --> 00:10:42,000 een echte website zoals jij wil voor PSET 7 of je afstudeerproject misschien, 189 00:10:42,000 --> 00:10:45,000 en u wilt meerdere webpagina's hebben, zoals is zeker gebruikelijk op 190 00:10:45,000 --> 00:10:48,000 de werkelijke World Wide Web, en het zou een beetje zwak zijn 191 00:10:48,000 --> 00:10:52,000 te moeten kopiëren en plakken van dezelfde blauwe kleur 192 00:10:52,000 --> 00:10:56,000 en dezelfde tekst uitgelijnd centrum in elk van die pagina's. 193 00:10:56,000 --> 00:10:59,000 Eerder heeft het meer zin om factor uit, net als we hebben gedaan in C 194 00:10:59,000 --> 00:11:02,000 met de. h-bestand, zet het op een centrale plaats, 195 00:11:02,000 --> 00:11:06,000 in dit geval search3.css, en laat ieder bestand 196 00:11:06,000 --> 00:11:11,000 in uw website naar dat bestand daadwerkelijk onder meer door middel van deze tag hier in lijn 16. 197 00:11:11,000 --> 00:11:14,000 Zoals meestal het geval is, zijn we begonnen met versie 0, wat voor soort werk 198 00:11:14,000 --> 00:11:18,000 maar is niet per se de beste, en met elke stap, 199 00:11:18,000 --> 00:11:21,000 zoeken 1, zoeken 2, en nu zoeken 3 die we hebben genomen van deze kleine stapjes 200 00:11:21,000 --> 00:11:26,000 in de richting van ontwerpen die zijn een beetje schoner en zijn voorbereidende 201 00:11:26,000 --> 00:11:30,000 voor meer complexe pagina's die we zouden kunnen doen op de weg. 202 00:11:30,000 --> 00:11:33,000 >> Laat me open te stellen hier een laatste voorbeeld om te laten zien 203 00:11:33,000 --> 00:11:36,000 een nog meer gestileerd pagina, maar laten we eerst eens kijken naar de HTML. 204 00:11:36,000 --> 00:11:41,000 Dit is search4.html, en merken dat structureel het is bijna hetzelfde 205 00:11:41,000 --> 00:11:44,000 behalve voor de invoering van een nieuwe tag, div. 206 00:11:44,000 --> 00:11:48,000 Div is een tag die een verdeling van de pagina introduceert. 207 00:11:48,000 --> 00:11:51,000 U kunt denken aan dit als een onzichtbare rechthoek. 208 00:11:51,000 --> 00:11:54,000 Het soort creëert een strook van het gebied in de webpagina 209 00:11:54,000 --> 00:11:56,000 die u kunt stileren in een keer. 210 00:11:56,000 --> 00:11:58,000 Wat ik heb hier gedaan is als volgt. 211 00:11:58,000 --> 00:12:01,000 Binnenkant van mijn body-tag, die er al die tijd al, 212 00:12:01,000 --> 00:12:05,000 Ik zeg hier een afdeling van de pagina via lijnen 45 tot en met 47, 213 00:12:05,000 --> 00:12:09,000 en dat betekent in wezen geef me een onzichtbare rechthoek langs de bovenkant van de pagina. 214 00:12:09,000 --> 00:12:14,000 Geef me dan een tweede rechthoek, zij het onzichtbare, daaronder, 215 00:12:14,000 --> 00:12:16,000 en geïdentificeerd door de naam inhoud en tenslotte 216 00:12:16,000 --> 00:12:19,000 geef me een derde divisie van de pagina aan de onderkant 217 00:12:19,000 --> 00:12:21,000 genaamd ID. 218 00:12:21,000 --> 00:12:23,000 We zullen zien waarom ik heb dit gedaan in slechts een moment, 219 00:12:23,000 --> 00:12:26,000 maar conceptueel Ik heb een header divisie. 220 00:12:26,000 --> 00:12:30,000 Ik heb een inhoud divisie, en ik heb een voettekst verdeling van de pagina 221 00:12:30,000 --> 00:12:32,000 ook al is dit zijn slechts in markup. 222 00:12:32,000 --> 00:12:35,000 Het is de gebruiker niet van plan om 3 rechthoeken te zien, 223 00:12:35,000 --> 00:12:37,000 maar soort van structureel er achter de schermen 224 00:12:37,000 --> 00:12:39,000 ze daadwerkelijk aanwezig is. 225 00:12:39,000 --> 00:12:41,000 >> Nu, who cares? Waarom eigenlijk? 226 00:12:41,000 --> 00:12:43,000 Al het andere op de pagina is hetzelfde als we al eerder gezien. 227 00:12:43,000 --> 00:12:47,000 Hier is mijn vorm. Hier is mijn input, mijn input, een regeleinde, enzovoort. 228 00:12:47,000 --> 00:12:50,000 Hier is een beeld, al, dus we zullen zien waar dit vandaan kwam in slechts een moment. 229 00:12:50,000 --> 00:12:52,000 Hier is een voettekst, die nieuw is, alleen maar omdat ik wilde introduceren 230 00:12:52,000 --> 00:12:54,000 wat meer inhoud hier. 231 00:12:54,000 --> 00:12:58,000 Als we naar boven op dat ID van deze div is header. 232 00:12:58,000 --> 00:13:02,000 De ID van deze div is content, en de ID van deze is voettekst. 233 00:13:02,000 --> 00:13:05,000 En zoals de naam al doet vermoeden, als je een ID attribuut 234 00:13:05,000 --> 00:13:09,000 in HTML, per definitie moet uniek te identificeren 235 00:13:09,000 --> 00:13:12,000 een van de elementen, een van de tags in uw pagina. 236 00:13:12,000 --> 00:13:16,000 De last is volledig op u te onthouden dat je een kop-ID al hebt. 237 00:13:16,000 --> 00:13:19,000 Je hebt een voettekst. Je hebt een inhouds-id al. 238 00:13:19,000 --> 00:13:22,000 De computer is niet van plan om uit te vinden wat een beschikbare-ID is voor u, 239 00:13:22,000 --> 00:13:27,000 dus je zou per ongeluk geven 2 tags een ID van header, 240 00:13:27,000 --> 00:13:29,000 en dat zou gewoon verkeerd. 241 00:13:29,000 --> 00:13:31,000 >> Je moet in gedachten houden wat je hebt gecreëerd, 242 00:13:31,000 --> 00:13:34,000 maar zodra je dat gedaan hebt merk op wat we hier kunnen doen. 243 00:13:34,000 --> 00:13:38,000 Ik kan nu opgeven in mijn stijl tag aan de top 244 00:13:38,000 --> 00:13:41,000 of gelijkwaardig in mijn CSS-bestand, als ik nog steeds met behulp van die versie, 245 00:13:41,000 --> 00:13:46,000 Ik kan zeggen # header, en wat dat betekent is dat wat er ook tag 246 00:13:46,000 --> 00:13:49,000 in deze webpagina heeft een ID van header 247 00:13:49,000 --> 00:13:53,000 en #, gewoon door menselijke conventie, vertegenwoordigt ID. 248 00:13:53,000 --> 00:13:56,000 De scherpe teken of hekje staat voor ID. 249 00:13:56,000 --> 00:13:58,000 Header is de naam die ik het gaf. 250 00:13:58,000 --> 00:14:01,000 Dit betekent toepassen van deze CSS-eigenschap 251 00:14:01,000 --> 00:14:04,000 naar wat tag op deze pagina draagt ​​een ID van header. 252 00:14:04,000 --> 00:14:06,000 Zelfde deal hier. 253 00:14:06,000 --> 00:14:09,000 Breng deze eigenschap, die toevallig ook dezelfde, om het even welk element 254 00:14:09,000 --> 00:14:11,000 waarvan het ID is content, en dan hier beneden 255 00:14:11,000 --> 00:14:14,000 merk dat ik kreeg een beetje liefhebber met voettekst. 256 00:14:14,000 --> 00:14:18,000 Elk element waarvan id footer, waarvan er slechts een kan per definitie 257 00:14:18,000 --> 00:14:21,000 ga je gang en maak het lettertype kleiner, 258 00:14:21,000 --> 00:14:24,000 het lettertype gewicht vet, de marge 20 pixels. 259 00:14:24,000 --> 00:14:26,000 >> Wat betekent dat? 260 00:14:26,000 --> 00:14:28,000 Het is gewoon een marge boven, onder en links en rechts. 261 00:14:28,000 --> 00:14:31,000 Dit betekent geef me een 20-pixel gifs marge rond het 262 00:14:31,000 --> 00:14:35,000 alleen maar om al het andere weg te duwen van het een beetje, zoals je zou doen in Word, 263 00:14:35,000 --> 00:14:37,000 Microsoft Word of Pages of iets dergelijks. 264 00:14:37,000 --> 00:14:39,000 En dan tekst uit te lijnen centrum. 265 00:14:39,000 --> 00:14:43,000 Laten we eens kijken het eindresultaat, en dan zullen we terug te gaan naar de enige overgebleven fragment van CSS daar. 266 00:14:43,000 --> 00:14:48,000 Dit is versie 4, de laatste voor het zoeken voorbeelden, en het is veel, veel sexier. 267 00:14:48,000 --> 00:14:54,000 Nu, in alle eerlijkheid, ik heb net gegoogeld 'google lettertype logo generator. " 268 00:14:54,000 --> 00:14:58,000 En dat kon ik een GIF-, een beeld formaat, dat lijkt op dat er te creëren. 269 00:14:58,000 --> 00:15:00,000 In feite, kunt u dit ook doen. 270 00:15:00,000 --> 00:15:03,000 We hebben 'google fonts logo generator. " 271 00:15:03,000 --> 00:15:05,000 >> Laten we eens kijken of we dit kunnen doen. 272 00:15:05,000 --> 00:15:07,000 Oke, ik denk dat dit is de website ik heb gebruikt. 273 00:15:07,000 --> 00:15:11,000 We zeggen Ec 10, bijvoorbeeld, en ze hun eigen. 274 00:15:11,000 --> 00:15:13,000 U kunt lang spelen met de hele dag en dan rechts klik erop 275 00:15:13,000 --> 00:15:16,000 en download vervolgens de werkelijke GIF, dat is alles wat ik deed. 276 00:15:16,000 --> 00:15:19,000 En inderdaad, dat is de reden waarom in mijn HTML,, herinneren hier 277 00:15:19,000 --> 00:15:22,000 Ik had een image tag, die kort zagen we vorige week 278 00:15:22,000 --> 00:15:24,000 waarvan de bron logo.gif. 279 00:15:24,000 --> 00:15:28,000 En wat was weer de motivatie voor het feit dat deze alt-attribuut, 280 00:15:28,000 --> 00:15:31,000 deze alternatieve attribuut? 281 00:15:31,000 --> 00:15:33,000 Ja. 282 00:15:33,000 --> 00:15:35,000 [Onverstaanbaar student reactie] 283 00:15:35,000 --> 00:15:37,000 Goed, dus 2 redenen echt, als de browser niet kan trekken het beeld 284 00:15:37,000 --> 00:15:40,000 omdat u een langzame netwerkverbinding of het beeld is beschadigd 285 00:15:40,000 --> 00:15:44,000 of iets dergelijks in ieder geval de mens kan zien "CS50 zoeken," 286 00:15:44,000 --> 00:15:46,000 en ook voor de toegankelijkheid. 287 00:15:46,000 --> 00:15:48,000 Als je een gebruiker die is blind en maakt gebruik van een schermlezer 288 00:15:48,000 --> 00:15:50,000 en dus uiteraard geen afbeeldingen zien ze kunnen op zijn minst 289 00:15:50,000 --> 00:15:52,000 horen tekst als hun computer spreekt het aan hen. 290 00:15:52,000 --> 00:15:56,000 >> In het algemeen wordt deze best practice als het gaat om de toegankelijkheid van pagina's 291 00:15:56,000 --> 00:16:00,000 zodat zelfs gebruikers in die situatie kan horen of zien, om zo te zeggen, 292 00:16:00,000 --> 00:16:03,000 wat het is dat er op je pagina. 293 00:16:03,000 --> 00:16:05,000 Er is een ander ding dat ik deed hier 294 00:16:05,000 --> 00:16:09,000 dat is een beetje interessant, en we zullen meer over dit te zien in probleem set 7 295 00:16:09,000 --> 00:16:12,000 via een van de korte broek onder leiding van een van de leer kerels. 296 00:16:12,000 --> 00:16:15,000 Maar # inhoud verwijst naar de tag 297 00:16:15,000 --> 00:16:20,000 waarvan het ID is de inhoud, maar dan is er een spatie, en dan is er het woord input. 298 00:16:20,000 --> 00:16:25,000 Nou, wat is interessant over CSS is dat je kunt 299 00:16:25,000 --> 00:16:29,000 verwijzen om tags op een pagina soort hiërarchisch, 300 00:16:29,000 --> 00:16:33,000 en wat dit stukje CSS middel vinden de tag 301 00:16:33,000 --> 00:16:37,000 waarvan het ID is de inhoud, en vervolgens de volgende eigenschappen 302 00:16:37,000 --> 00:16:42,000 om alle invoer tags die afstammelingen van inhoud, 303 00:16:42,000 --> 00:16:44,000 dat is dat zijn ingesprongen binnenkant van het. 304 00:16:44,000 --> 00:16:48,000 Inspringing weer is alleen belangrijk voor de computer, om de menselijke, 305 00:16:48,000 --> 00:16:51,000 maar door conventie we streepje dingen als we dieper ingaan op een pagina, 306 00:16:51,000 --> 00:16:54,000 dus dit betekent toepassing een marge van 5 pixels op een ingangselement 307 00:16:54,000 --> 00:16:57,000 dat ergens in of genest van 308 00:16:57,000 --> 00:16:59,000  het element waarvan de ID is tevreden. 309 00:16:59,000 --> 00:17:01,000 >> Wie wil die van toepassing zijn? 310 00:17:01,000 --> 00:17:03,000 Nou, er is eigenlijk alleen maar deze 2 jongens hier. 311 00:17:03,000 --> 00:17:05,000 Merk op dat de binnenkant van de vorm is er 2 ingangen, 312 00:17:05,000 --> 00:17:07,000 Omdat er al al deze voorbeelden. 313 00:17:07,000 --> 00:17:11,000 Maar merk op dat die 2 ingangen toevallig naar binnen worden genest, 314 00:17:11,000 --> 00:17:13,000 zij het een beetje diep, een paar lagen van inspringen, 315 00:17:13,000 --> 00:17:16,000 binnenkant van de tag waarvan het ID is tevreden. 316 00:17:16,000 --> 00:17:18,000 Wat betekent dit? 317 00:17:18,000 --> 00:17:21,000 Als we naar de browser hier kun je ooit zo iets-te zien 318 00:17:21,000 --> 00:17:23,000 laat me in te zoomen, dat er een beetje van opvulling tussen de knop 319 00:17:23,000 --> 00:17:25,000 en tussen het tekstveld. 320 00:17:25,000 --> 00:17:27,000 >> Laat ik tijdelijk die uit te schakelen. 321 00:17:27,000 --> 00:17:30,000 Laat me naar mijn CSS, en laat mij ga je gang en net 322 00:17:30,000 --> 00:17:34,000 Wijzig deze marge van 5 pixels naar 0 pixels. 323 00:17:34,000 --> 00:17:37,000 Laat mij dan ga je gang en sla het bestand op, ga terug naar de zoekmachine 324 00:17:37,000 --> 00:17:40,000 en herladen, en kijk naar het midden van de pagina. 325 00:17:40,000 --> 00:17:43,000 Alles bij elkaar geperst, en toen ik voor het eerst slagroom dit bijvoorbeeld tot 326 00:17:43,000 --> 00:17:46,000 Ik dacht dat leek dom met de tekst veld en vervolgens op de knop direct eronder. 327 00:17:46,000 --> 00:17:50,000 Ik wilde pad het een beetje, dus ik geïntroduceerd marges. 328 00:17:50,000 --> 00:17:55,000 Wat we niet doen in collegezaal is ga je door de tientallen 329 00:17:55,000 --> 00:17:58,000 CSS-eigenschappen die bestaan ​​omdat, nogmaals, er zijn dingen zoals lettergrootte, 330 00:17:58,000 --> 00:18:02,000 font gewicht, marge, tekst uitlijnen en enkele tientallen anderen, 331 00:18:02,000 --> 00:18:06,000 en wij zullen u verwijzen probleem 7 tot verschillende tutorials online 332 00:18:06,000 --> 00:18:08,000 en referenties die u in staat om deze dingen op te pakken. 333 00:18:08,000 --> 00:18:10,000 Maar wat echt belangrijk is aan het eind van de dag 334 00:18:10,000 --> 00:18:12,000 >> is te begrijpen hoe deze dingen worden toegepast. 335 00:18:12,000 --> 00:18:15,000 Nogmaals, als we de stijl tag binnenkant van die 336 00:18:15,000 --> 00:18:19,000 kan gaan van de selectors, het soort identifiers die aangeven 337 00:18:19,000 --> 00:18:21,000 aan wie wilt u deze eigenschappen toe te passen, 338 00:18:21,000 --> 00:18:24,000 en dan moet je de eigenschappen zet als belangrijke waarde-paar 339 00:18:24,000 --> 00:18:28,000 gescheiden door een dubbele punt en dan werd afgesloten met een puntkomma, 340 00:18:28,000 --> 00:18:32,000 of u kunt rippen dat allemaal uit en zet het in een apart CSS-bestand 341 00:18:32,000 --> 00:18:35,000 op zichzelf. 342 00:18:35,000 --> 00:18:39,000 Oke, eventuele vragen over de concepten 343 00:18:39,000 --> 00:18:41,000 of het grote plaatje van CSS? 344 00:18:41,000 --> 00:18:43,000 Je zult weer zien meer van het in PSET 7, 345 00:18:43,000 --> 00:18:47,000 maar we houden het over het algemeen vrij eenvoudig. 346 00:18:47,000 --> 00:18:49,000 Nee? Oke. 347 00:18:49,000 --> 00:18:51,000 Het is tijd voor een echte programmeertaal, 348 00:18:51,000 --> 00:18:54,000 en komen we terug om een ​​beetje van CSS in de vorm van een voorbeeld. 349 00:18:54,000 --> 00:18:58,000 PHP is eigenlijk een heerlijk toegankelijke taal 350 00:18:58,000 --> 00:19:02,000 in dat het syntactisch bijna gelijk aan C. 351 00:19:02,000 --> 00:19:06,000 Met andere woorden, als je weet C, weet je voor het grootste deel PHP, 352 00:19:06,000 --> 00:19:08,000 op zijn minst syntactisch, ook al zijn er een aantal nieuwe functies 353 00:19:08,000 --> 00:19:10,000 en een aantal nieuwe concepten zullen we moeten kijken naar. 354 00:19:10,000 --> 00:19:13,000 >> Maar voor het grootste deel, nu we overgang van C naar PHP 355 00:19:13,000 --> 00:19:16,000 de meeste nieuwe spul is echt in het grote geheel, 356 00:19:16,000 --> 00:19:19,000 hoe u een taal te programmeren op het web, in tegenstelling tot 357 00:19:19,000 --> 00:19:23,000 op de opdrachtregel of in een knipperende prompt als we al tot nu toe doen. 358 00:19:23,000 --> 00:19:27,000 Ter referentie, vooral met PSET 7 en het uiteindelijke project verder, 359 00:19:27,000 --> 00:19:31,000 niet profiteren van deze URL hier als je wilt om te lezen over de formaliteiten van PHP. 360 00:19:31,000 --> 00:19:34,000 Het is eigenlijk effectief als een gratis online leerboek, 361 00:19:34,000 --> 00:19:37,000 en je zult ook merken dat wat echt leuk over PHP 362 00:19:37,000 --> 00:19:41,000 is dat er honderden functies die daarbij horen, 363 00:19:41,000 --> 00:19:44,000 terwijl in C dat je niet per se toegang tot 364 00:19:44,000 --> 00:19:47,000 meer functies dan waren in de wiskunde bibliotheek, de CS50 bibliotheek. 365 00:19:47,000 --> 00:19:51,000 In PHP en veel moderne talen, Python en Ruby onder hen, 366 00:19:51,000 --> 00:19:54,000 krijgt u toegang tot zo veel meer functies, wat betekent dat je te schrijven 367 00:19:54,000 --> 00:19:57,000 een stuk minder code, want je kunt staan ​​op de schouders van andere mensen 368 00:19:57,000 --> 00:19:59,000 die al geschreven bepaalde dingen voor je. 369 00:19:59,000 --> 00:20:03,000 >> Laten we eens een snelle rondleiding door de syntaxis van PHP en dan schrijf ik een paar voorbeelden. 370 00:20:03,000 --> 00:20:06,000 Wat is er leuk over PHP in de eerste plaats 371 00:20:06,000 --> 00:20:08,000 is er geen hoofdfunctie. 372 00:20:08,000 --> 00:20:10,000 Als u een programma wilt in PHP schrijf je gewoon beginnen met het schrijven van code, 373 00:20:10,000 --> 00:20:12,000 en je hoeft geen zorgen te maken over de belangrijkste. 374 00:20:12,000 --> 00:20:14,000 Er is geen int. Er is geen terugkeer. 375 00:20:14,000 --> 00:20:17,000 Er is geen argv, argc dat is vereist wanneer u het programma. 376 00:20:17,000 --> 00:20:20,000 In plaats kun je gewoon beginnen met het schrijven van code, en dit is voor een deel 377 00:20:20,000 --> 00:20:23,000 want PHP is wat heet een geïnterpreteerde taal. 378 00:20:23,000 --> 00:20:26,000 C werd samengesteld, en het werd samengesteld in de zin dat je begint 379 00:20:26,000 --> 00:20:29,000 met broncode, voer het uit door Clang, dat is een compiler, 380 00:20:29,000 --> 00:20:33,000 en uiteindelijk na een aantal aantal stappen krijg je object code, 0s en 1s. 381 00:20:33,000 --> 00:20:36,000 PHP en Python en Ruby en Pearl en anderen 382 00:20:36,000 --> 00:20:39,000 zijn verschillende soorten talen in die u niet compileren. 383 00:20:39,000 --> 00:20:42,000 Je gaat niet van broncode tot 0s en 1s. 384 00:20:42,000 --> 00:20:45,000 U alleen nog maar de broncode, en u de broncode 385 00:20:45,000 --> 00:20:49,000 door het schrijven in een gewone tekstbestand, eindigend in. php in dit geval 386 00:20:49,000 --> 00:20:53,000 in plaats van. c, en wat het programma doet op uw computer 387 00:20:53,000 --> 00:20:57,000 is het interpreteert letterlijk je code regel voor regel voor regel. 388 00:20:57,000 --> 00:21:00,000 >> Met andere woorden, in plaats van een programma te schrijven en voer het programma 389 00:21:00,000 --> 00:21:04,000 direct u in plaats daarvan schrijf ik een programma met een bestand dat eindigt op. php. 390 00:21:04,000 --> 00:21:09,000 Dan loop je een echte programma genaamd php.exe, als je op Windows, 391 00:21:09,000 --> 00:21:12,000 of gewoon PHP als je op Mac OS of Linux, 392 00:21:12,000 --> 00:21:17,000 en u te voorzien als input voor de PHP-programma uw eigen broncode, 393 00:21:17,000 --> 00:21:20,000 en haar doel in het leven is om te lezen de code boven naar beneden, van links naar rechts, 394 00:21:20,000 --> 00:21:23,000 en doen wat je hebt verteld dat het te doen. 395 00:21:23,000 --> 00:21:25,000 >> Laten we eens kijken wat dit gaat syntactisch betekenen. 396 00:21:25,000 --> 00:21:27,000 In PHP hebben we voorwaarden. 397 00:21:27,000 --> 00:21:29,000 Deze dia is identiek aan wat je zag weer in week 1 398 00:21:29,000 --> 00:21:33,000 want syntactisch voorwaarden, mitsen en anders mitsen en anders in PHP 399 00:21:33,000 --> 00:21:35,000 er precies zo uit. 400 00:21:35,000 --> 00:21:38,000 Als het gaat om booleaanse expressies ze gaan precies zo uitzien. 401 00:21:38,000 --> 00:21:43,000 Als het aankomt op Anding dingen samen als booleans het gaat om precies zo uitzien. 402 00:21:43,000 --> 00:21:46,000 Schakelt zien er hetzelfde uit, en je krijgt het extra voordeel in PHP 403 00:21:46,000 --> 00:21:51,000 dat de schakelaars in C kon alleen schakelen op een char of een int. 404 00:21:51,000 --> 00:21:53,000 Je kon niet overschakelen op een tekenreekswaarde. 405 00:21:53,000 --> 00:21:55,000 In PHP kun je eigenlijk een uitdrukking 406 00:21:55,000 --> 00:21:58,000 dat een variabele waarvan de inhoud een tekenreeks, 407 00:21:58,000 --> 00:22:01,000 en je kunt string vergelijking eigenlijk doen in de echte intuïtieve manier, 408 00:22:01,000 --> 00:22:06,000 niet wijzer vergelijking, om te beslissen of tot geval te doen i of j of iets anders. 409 00:22:06,000 --> 00:22:09,000 We zullen dat potentieel zien voor lang. 410 00:22:09,000 --> 00:22:11,000 >> Loops ook heerlijk zijn hetzelfde. 411 00:22:11,000 --> 00:22:15,000 Voor loops hebben een initialisatie, een voorwaarde, en een aantal aantal updates. 412 00:22:15,000 --> 00:22:18,000 Terwijl lussen bestaan ​​ook in PHP. 413 00:22:18,000 --> 00:22:21,000 Doe while loops bestaan ​​ook in PHP, 414 00:22:21,000 --> 00:22:26,000 en arrays bestaan ​​in PHP, maar hier is waar de syntaxis begint te worden een beetje anders, 415 00:22:26,000 --> 00:22:29,000 maar de concepten zijn hetzelfde, en de begrippen echt dezelfde 416 00:22:29,000 --> 00:22:32,000 als ze waren in week 0 met Scratch. 417 00:22:32,000 --> 00:22:34,000 Eerst en vooral is het $-teken. 418 00:22:34,000 --> 00:22:37,000 Dit was een ontwerpbeslissing in PHP, waarbij elke variabele 419 00:22:37,000 --> 00:22:41,000 in PHP door het ontwerp begint met $ teken. 420 00:22:41,000 --> 00:22:46,000 Er is geen meer X, Y, Z. Het is nu $ x, $ y, $ Z gewoon omdat. 421 00:22:46,000 --> 00:22:49,000 Het is iets om in gedachten te houden, en nu op de rechterkant 422 00:22:49,000 --> 00:22:52,000 Dit lijkt op een array, 423 00:22:52,000 --> 00:22:54,000 maar we zijn door vierkante haken hier. 424 00:22:54,000 --> 00:22:57,000 In PHP en in JavaScript, zoals we zullen uiteindelijk zien, 425 00:22:57,000 --> 00:23:01,000 aan een array doe je open plein beugel en gesloten vierkante haken te verklaren, 426 00:23:01,000 --> 00:23:04,000 en dan heb je een door komma's gescheiden lijst van waarden, of ints 427 00:23:04,000 --> 00:23:09,000 of strings of karakters, wat je wilt, de binnenkant van die uitdrukking daar. 428 00:23:09,000 --> 00:23:11,000 >> Nu, hoe we iets doen als dit in C? 429 00:23:11,000 --> 00:23:16,000 Wat was de syntaxis voor statisch verklaren een scala van bekende nummers? 430 00:23:16,000 --> 00:23:19,000 Het was accolades, dus klein verschil hier, maar in beide PHP 431 00:23:19,000 --> 00:23:22,000 en uiteindelijk JavaScript hij gebruikt gewoon vierkante haakjes, dus echt 432 00:23:22,000 --> 00:23:25,000 de enige interessant detail is hier de $ teken voor de naam van de variabele 433 00:23:25,000 --> 00:23:28,000 en ook de vierkante haakjes, en er is een merkwaardig 434 00:23:28,000 --> 00:23:32,000 die is ook weggelaten op de linkerkant van het = teken. 435 00:23:32,000 --> 00:23:36,000 Wat ontbreekt, dat we al die nu voor weken? Ja. 436 00:23:36,000 --> 00:23:38,000 [Onverstaanbaar student reactie] 437 00:23:38,000 --> 00:23:41,000 De omvang, zodat er geen vermelding van de grootte van de matrix. 438 00:23:41,000 --> 00:23:45,000 Eerlijk gezegd, er is geen melding gemaakt van vierkante haakjes aan de linkerkant 439 00:23:45,000 --> 00:23:47,000 van het =-teken, en wat er nog meer ontbreekt in de lijn? 440 00:23:47,000 --> 00:23:49,000 Ja. >> [Onverstaanbaar student reactie] 441 00:23:49,000 --> 00:23:52,000 Het type, dus wat is interessant in het bijzonder over PHP 442 00:23:52,000 --> 00:23:56,000 is dat het niet een sterk getypeerde taal C, 443 00:23:56,000 --> 00:23:58,000 en dat is strongly typed in de zin dat je moet char zeggen, 444 00:23:58,000 --> 00:24:00,000 je moet int zeggen, moet je zeggen vlotter. 445 00:24:00,000 --> 00:24:03,000 >> Wanneer je maar wilt een variabele moet je Clang vertellen wat het type is. 446 00:24:03,000 --> 00:24:05,000 PHP is een beetje luier. 447 00:24:05,000 --> 00:24:08,000 Het is losjes getypt in de zin dat 448 00:24:08,000 --> 00:24:11,000 kunt u praalwagens en chars en strijkers 449 00:24:11,000 --> 00:24:14,000 en ints enzovoort, maar de taal zelf 450 00:24:14,000 --> 00:24:17,000 niet kan schelen wat je de binnenkant van een variabele. 451 00:24:17,000 --> 00:24:20,000 Je hoeft niet te informeren op voorhand wat gegevenstype 452 00:24:20,000 --> 00:24:22,000 gaat in een variabele. 453 00:24:22,000 --> 00:24:24,000 Het is helemaal aan jou, dus dit is leuk 454 00:24:24,000 --> 00:24:27,000 in dat je niet zo veel zorgen te maken over gegevens te typen 455 00:24:27,000 --> 00:24:29,000 en zorgen te maken wat uw argumenten zijn, enzovoort. 456 00:24:29,000 --> 00:24:32,000 Dit betekent uiteindelijk ook functies in PHP gaan om te kunnen terugkeren 457 00:24:32,000 --> 00:24:36,000 ofwel een int meestal, en misschien af ​​en toe 458 00:24:36,000 --> 00:24:40,000 zullen ze terugkeren van een bool, een boolean false, bijvoorbeeld om aan te geven dat er iets fout is gegaan. 459 00:24:40,000 --> 00:24:44,000 Dit geeft ons een aantal positieve kanten, maar het zal ook ons ​​soort te maken door het ontwerp 460 00:24:44,000 --> 00:24:47,000 wat luier als het gaat om gegevensinvoer. 461 00:24:47,000 --> 00:24:50,000 >> Wat is er hier te houden in gedachten? 462 00:24:50,000 --> 00:24:54,000 Variabelen ziet er heel leuk dit, dus $ s = "hello, world". 463 00:24:54,000 --> 00:24:57,000 Dat is misschien wel consequenties van het vorige voorbeeld, 464 00:24:57,000 --> 00:24:59,000 en we hebben een ander type lus. 465 00:24:59,000 --> 00:25:02,000 Deze zullen we echt een keer zien in een tijdje geleden dat het is heel handig, 466 00:25:02,000 --> 00:25:04,000 een foreach construct. 467 00:25:04,000 --> 00:25:11,000 In dit geval is de foreach lus neemt binnen de haakjes van 3 woorden typisch 468 00:25:11,000 --> 00:25:16,000 $ Eerst iets, dat is wat serie wil je itereren over de leden van, 469 00:25:16,000 --> 00:25:19,000 dan letterlijk het zoekwoord als, en dan ten slotte, 470 00:25:19,000 --> 00:25:21,000 een andere variabele naam die u krijgt om te kiezen. 471 00:25:21,000 --> 00:25:23,000 Het kan foo, bar of element, 472 00:25:23,000 --> 00:25:26,000 en wat dit construct doet 473 00:25:26,000 --> 00:25:29,000 is als de $ array bevat 10 elementen 474 00:25:29,000 --> 00:25:34,000 op elke iteratie van deze array-me, op elke iteratie van deze lus 475 00:25:34,000 --> 00:25:37,000 het variabele genoemd element zal worden bijgewerkt 476 00:25:37,000 --> 00:25:40,000 het eerste element in de array, de tweede element in de array, 477 00:25:40,000 --> 00:25:44,000 vervolgens het derde element van de array, waardoor overbodig 478 00:25:44,000 --> 00:25:46,000 om de een beetje vervelend vierkante haakjesnotering doen en 479 00:25:46,000 --> 00:25:49,000 $ I teneinde index in een array. 480 00:25:49,000 --> 00:25:53,000 PHP doet al dat werk voor u en op elke iteratie 481 00:25:53,000 --> 00:25:55,000 net geeft je het volgende element uit de array 482 00:25:55,000 --> 00:26:01,000 zonder dat u hoeft te weten over of over de numerieke index locatie schelen. 483 00:26:01,000 --> 00:26:04,000 >> En dan tot slot, voor nu, er is een andere eigenschap van PHP 484 00:26:04,000 --> 00:26:08,000 dat gaat worden enorm nuttig, vooral wanneer we beginnen met programmeren op het web, 485 00:26:08,000 --> 00:26:10,000 en dat bekend staat als een associatieve array. 486 00:26:10,000 --> 00:26:13,000 De arrays die wij kennen tot nu toe vanaf 20 seconden geleden 487 00:26:13,000 --> 00:26:17,000 en voor de afgelopen 8 weken zijn numeriek geindexeerde arrays, 488 00:26:17,000 --> 00:26:20,000 soort van traditionele arrays waar de indices ints, 489 00:26:20,000 --> 00:26:23,000 0, 1, 2, helemaal naar boven. 490 00:26:23,000 --> 00:26:25,000 Associatieve arrays zijn een stuk krachtiger. 491 00:26:25,000 --> 00:26:28,000 Hiermee kunt u willekeurige sleutels te hebben, 492 00:26:28,000 --> 00:26:31,000 willekeurige indices en willekeurige waarden. 493 00:26:31,000 --> 00:26:34,000 Dat in een traditioneel stelsel is 0, 1, 2, 494 00:26:34,000 --> 00:26:37,000 in een associatieve array kunt u een index 495 00:26:37,000 --> 00:26:41,000 of een sleutel van foo waarvan de waarde bar. 496 00:26:41,000 --> 00:26:46,000 U kunt dan een andere toets waarvan de naam is baz en waarvan de waarde is QHx. 497 00:26:46,000 --> 00:26:49,000 >> Nogmaals, stomme informatica generieke variabele namen hier, 498 00:26:49,000 --> 00:26:55,000 maar het punt is dat deze array niet hoeft beugel 0 of beugel 1. 499 00:26:55,000 --> 00:26:59,000 Het is in plaats daarvan gaat beugel foo en beugel baz hebben. 500 00:26:59,000 --> 00:27:03,000 Dit is een stuk veelzijdiger in dat we gaan om te kunnen associëren 501 00:27:03,000 --> 00:27:07,000 woorden met andere woorden toetsen met waarden volledig willekeurig, 502 00:27:07,000 --> 00:27:12,000 en we gaan in staat om terug te krijgen die waarden in constante tijd 503 00:27:12,000 --> 00:27:14,000 omdat onder de kap wat een associatieve array 504 00:27:14,000 --> 00:27:16,000 echt een hash-tabel. 505 00:27:16,000 --> 00:27:20,000 Bedenk dat een hash tabel kun je zetten in een aantal invoer 506 00:27:20,000 --> 00:27:25,000 zoals gesteld in het woord David als je wilt David in te voegen in een soort woordenboek, 507 00:27:25,000 --> 00:27:27,000 en dan krijg je weer een bepaalde waarde typisch. 508 00:27:27,000 --> 00:27:29,000 In het geval van speller, waar of onwaar. 509 00:27:29,000 --> 00:27:33,000 David of wat woord of niet in het woordenboek. 510 00:27:33,000 --> 00:27:36,000 Een associatieve array is eigenlijk gewoon een hash-tabel, 511 00:27:36,000 --> 00:27:38,000 maar het is een veel gebruikersvriendelijker incarnatie van het. 512 00:27:38,000 --> 00:27:41,000 Zoals we zullen zien, het gaat om ons in staat om een ​​aantal dingen te doen 513 00:27:41,000 --> 00:27:43,000 heel, heel gemakkelijk. 514 00:27:43,000 --> 00:27:45,000 >> Laten we eens een kijkje nemen op een aantal fundamentele PHP 515 00:27:45,000 --> 00:27:47,000 voorbeelden en zien wat we kunnen doen met deze taal. 516 00:27:47,000 --> 00:27:51,000 Laat me gaan en open te stellen in onze source directory vandaag 517 00:27:51,000 --> 00:27:54,000 een bestand met de naam hello1.php. 518 00:27:54,000 --> 00:27:57,000 Dit bestand is meer commentaar dan het is eigenlijke code, 519 00:27:57,000 --> 00:28:00,000 dus laat me eigenlijk alle opmerkingen te verwijderen uit het bestand 520 00:28:00,000 --> 00:28:05,000 en aanwezig om u misschien wel de eenvoudigste PHP-programma hier. 521 00:28:05,000 --> 00:28:07,000 5 lijnen en een aantal daarvan zijn witruimte 522 00:28:07,000 --> 00:28:09,000 dus even opmerken enkele belangrijke verschillen. 523 00:28:09,000 --> 00:28:12,000 Het bestand heet hello1.php. 524 00:28:12,000 --> 00:28:16,000 De eerste regel is echter 00:28:18,000 In dezelfde geest naar HTML, 526 00:28:18,000 --> 00:28:21,000 die reeks tekens vertelt de computer 527 00:28:21,000 --> 00:28:25,000 "He, computer, hier komt een programma dat we in in PHP." 528 00:28:25,000 --> 00:28:28,000 Het zorgt ervoor dat het niet verward dat het een andere taal. 529 00:28:28,000 --> 00:28:30,000 Lijn 2 is een interessante witte ruimte. 530 00:28:30,000 --> 00:28:32,000 Lijn 3 is onze oude vriend printf, 531 00:28:32,000 --> 00:28:34,000 dit keer in het kader van PHP. 532 00:28:34,000 --> 00:28:37,000 PHP heeft zijn eigen versie van printf die precies hetzelfde gedraagt, 533 00:28:37,000 --> 00:28:39,000 dus dit is gewoon om af te drukken "hello, world". 534 00:28:39,000 --> 00:28:46,000 En dan is dit tegenover tag hier?>, Betekent dat het voor mijn PHP-code. 535 00:28:46,000 --> 00:28:48,000 >> Laten we eens kijken hoe dit uit te voeren. 536 00:28:48,000 --> 00:28:50,000 Ik ga om terug te gaan naar mijn terminal venster. 537 00:28:50,000 --> 00:28:52,000 Ik ga om te gaan in mijn PHP directory. 538 00:28:52,000 --> 00:28:56,000 Merk op dat we een hele hoop bestanden, de eerste daarvan is hello.php hebben. 539 00:28:56,000 --> 00:29:01,000 Laat me ga je gang en het uitvoeren van deze, hello1.php, in te voeren. 540 00:29:01,000 --> 00:29:03,000 Toestemming geweigerd. Oke. 541 00:29:03,000 --> 00:29:06,000 Hoe hebben we vastgelegd dit soort dingen in het verleden? 542 00:29:06,000 --> 00:29:08,000 Wat is dat? >> [Onverstaanbaar student reactie] 543 00:29:08,000 --> 00:29:11,000 We moeten lezen en schrijven, maar laat mij ls-l. 544 00:29:11,000 --> 00:29:14,000 Onthoud deze enigszins cryptische uitgang waarbij hello1 545 00:29:14,000 --> 00:29:17,000 lijkt lees-en schrijfbaar zijn door mij 546 00:29:17,000 --> 00:29:19,000 maar leesbaar voor iedereen. 547 00:29:19,000 --> 00:29:22,000 Het blijkt dat dit eigenlijk geen stap in de goede richting. 548 00:29:22,000 --> 00:29:25,000 Het verschil weer met een geïnterpreteerde taal 549 00:29:25,000 --> 00:29:27,000 wordt u niet direct het programma uitvoert. 550 00:29:27,000 --> 00:29:30,000 Je in plaats daarvan een tolk en geef het de code 551 00:29:30,000 --> 00:29:33,000 die u hebt geschreven zodat het kan interpreteren regel voor regel. 552 00:29:33,000 --> 00:29:36,000 In dit geval is de tolk of programma dat ik eigenlijk wilt uitvoeren 553 00:29:36,000 --> 00:29:38,000 wordt letterlijk genoemd PHP. 554 00:29:38,000 --> 00:29:41,000 >> Ergens op deze harde schijf van het apparaat is er een programma 555 00:29:41,000 --> 00:29:45,000 iemand anders schreef, heet PHP, of op Windows php.exe. 556 00:29:45,000 --> 00:29:48,000 Wat ik ga hier moet doen is ga ik eigenlijk PHP 557 00:29:48,000 --> 00:29:51,000 maar geef het als een command line argument van de code die ik heb geschreven, 558 00:29:51,000 --> 00:29:54,000 en dan zal ik uit te zoomen en druk op enter. 559 00:29:54,000 --> 00:29:58,000 Het loopt mijn programma voor mij, van boven naar beneden, van links naar rechts. 560 00:29:58,000 --> 00:30:01,000 Laat me ga je gang en opent een klein verschil van. 561 00:30:01,000 --> 00:30:05,000 In hello2.php merken dat dit ook 562 00:30:05,000 --> 00:30:08,000 is meestal opmerkingen, dus laat me te ontdoen van die als afleiding, 563 00:30:08,000 --> 00:30:13,000 en wat is er duidelijk anders nu over dit bestand? 564 00:30:13,000 --> 00:30:15,000 Er is een nieuwe lijn, enigszins cryptisch aan de top. 565 00:30:15,000 --> 00:30:20,000 In regel 1 is het #! / Bin / php. 566 00:30:20,000 --> 00:30:24,000 Bin is een conventie over Linux en Mac OS voor binaries, 567 00:30:24,000 --> 00:30:27,000 dus / bin betekent dat het een map met een bos van binaire bestanden 568 00:30:27,000 --> 00:30:29,000 die geprogrammeerd, waarvan een PHP. 569 00:30:29,000 --> 00:30:32,000 De #! is de bijnaam keet, 570 00:30:32,000 --> 00:30:35,000 dat is de snelle manier om te zeggen, en wat dit betekent 571 00:30:35,000 --> 00:30:40,000 is dat wanneer je dit programma nu uitvoeren is er een hint aan de top van het bestand 572 00:30:40,000 --> 00:30:44,000 dat vertelt de computer wat tolk te gebruiken. 573 00:30:44,000 --> 00:30:47,000 >> Het wordt een beetje vervelend als je aan uw gebruikers en uw klanten te vertellen 574 00:30:47,000 --> 00:30:50,000 "He, we schreven dit programma genaamd hello1.php." 575 00:30:50,000 --> 00:30:54,000 Het enige wat je hoeft te doen is altijd PHP en vervolgens de naam van dit programma. 576 00:30:54,000 --> 00:30:58,000 Eerlijk gezegd, zou het gewoon leuker om hello1.php lopen, 577 00:30:58,000 --> 00:31:00,000 en inderdaad, we kunnen als we het volgende doen. 578 00:31:00,000 --> 00:31:05,000 Laat me ga je gang en doe ls-l, en mededeling in hello2 het is nog net lezen en schrijven 579 00:31:05,000 --> 00:31:10,000 en lees dan lezen, dus ik kan nog niet doen, hello2.php. 580 00:31:10,000 --> 00:31:15,000 Maar we introduceerde dit ooit zo kort vorige keer, het chmod commando. 581 00:31:15,000 --> 00:31:20,000 Als ik chmod a + x, waarbij alle plus uitvoerbaarheid betekent, 582 00:31:20,000 --> 00:31:26,000 en dan hello2.php en kies dan ls-l weer zien wat er veranderd is. 583 00:31:26,000 --> 00:31:29,000 One, is Linux laat me de bestandsnaam in het groen aan het idee over te brengen 584 00:31:29,000 --> 00:31:32,000 dat het een uitvoerbaar bestand, maar nog belangrijker, aan de linkerkant 585 00:31:32,000 --> 00:31:36,000 merken dat de bit die x voor uitvoerbare nu is ingesteld. 586 00:31:36,000 --> 00:31:42,000 Wat dit nu betekent is dat ik kan ./hello2.php lopen zoals gebruikelijk, 587 00:31:42,000 --> 00:31:45,000 druk op enter, en als gevolg van de keet aan het begin van het bestand 588 00:31:45,000 --> 00:31:48,000 dat is een hint, nogmaals, aan Linux dat zegt 589 00:31:48,000 --> 00:31:51,000 Gebruik deze tolk om dit bestand uit te voeren. 590 00:31:51,000 --> 00:31:54,000 Maak je geen zorgen over dat de gebruiker daadwerkelijk te typen. 591 00:31:54,000 --> 00:31:57,000 >> En wat is leuk nu is het is een soort van irrelevant voor mijn klanten of mijn vrienden 592 00:31:57,000 --> 00:32:01,000 welke taal ik dit programma schreef in, dus ik kan gaan met mv 593 00:32:01,000 --> 00:32:04,000 en hernoem dit ding te hello2, bijvoorbeeld. 594 00:32:04,000 --> 00:32:07,000 En nu als ik dat doe ./hello2 595 00:32:07,000 --> 00:32:10,000 en uit te zoomen mijn programma blijft draaien. 596 00:32:10,000 --> 00:32:13,000 Deze bestandsextensies een menselijke conventie die nodig is 597 00:32:13,000 --> 00:32:15,000 voor iets als Clang en Zorg die op zoek zijn voor hen. 598 00:32:15,000 --> 00:32:18,000 Maar voor PHP, kon ik noem dit bestandsextensie wat ik wil. 599 00:32:18,000 --> 00:32:22,000 Ik kon misleiden de wereld te laten denken dat ik ben erg goed in Ruby, 600 00:32:22,000 --> 00:32:25,000 en ik kon schrijven hello2.rb en voer dit, 601 00:32:25,000 --> 00:32:28,000 en voila, nu heb ik de Ruby versie, die is een complete leugen. 602 00:32:28,000 --> 00:32:30,000 Maar de bestandsextensies zijn betekenisloos 603 00:32:30,000 --> 00:32:35,000 als het bestand uitvoerbaar en heeft deze bijzondere wijzen op het begin van het bestand. 604 00:32:35,000 --> 00:32:38,000 >> Nu, als een terzijde, laat ik je snel versie 3, 605 00:32:38,000 --> 00:32:40,000 dat is een soort van een handige truc om te weten. 606 00:32:40,000 --> 00:32:45,000 In hello3 Ik heb iets iets mis 607 00:32:45,000 --> 00:32:47,000 dat ik het actualiseren van de broncode online. 608 00:32:47,000 --> 00:32:50,000 In versie 3 blijkt dat op de meeste Linux-computers 609 00:32:50,000 --> 00:32:53,000 Er is een programma genaamd env voor milieu, 610 00:32:53,000 --> 00:32:56,000 en wat je hier kunt doen is als je geen idee waar PHP 611 00:32:56,000 --> 00:33:00,000 is geïnstalleerd op de lokale harde schijf, omdat inderdaad kan variëren naargelang de computer 612 00:33:00,000 --> 00:33:03,000 dat iemand gebruikt, env zegt alleen nog maar env, 613 00:33:03,000 --> 00:33:07,000 dat is op de meeste systemen, en uitzoeken waar PHP is. 614 00:33:07,000 --> 00:33:11,000 Gewoon een gemeenschappelijke truc, zodat je niet zorgen te maken over het vinden van waar een programma is. 615 00:33:11,000 --> 00:33:14,000 Maar als je zorg om uit te vinden waar een programma is en je hebt tot nu toe niet verzorgd 616 00:33:14,000 --> 00:33:16,000 kunt u gebruik maken van de die commando. 617 00:33:16,000 --> 00:33:19,000 >> Laat me uit te zoomen en type dat php, 618 00:33:19,000 --> 00:33:23,000 en merken dat zegt me dat het eigenlijk in usr / bin / php. 619 00:33:23,000 --> 00:33:25,000 Het is een soort van een leugen. Het is ook in bin. 620 00:33:25,000 --> 00:33:27,000 Het is gewoon je me de eerste hit. 621 00:33:27,000 --> 00:33:31,000 Als je ooit afgevraagd waar Clang is, dat Clang, dat is in usr / bin / kletteren, 622 00:33:31,000 --> 00:33:34,000 waardoor, usr / bin / maken, en wat dat betekent is al die tijd 623 00:33:34,000 --> 00:33:38,000 je had kunnen typen usr / bin / clang in te voeren Clang lopen, 624 00:33:38,000 --> 00:33:41,000 maar het is een soort van vervelend om dat te doen, dus sommige mappen 625 00:33:41,000 --> 00:33:44,000 zoals usr / bin en bin worden verondersteld standaardwaarden 626 00:33:44,000 --> 00:33:50,000 zodat de computer weet in te kijken voor je. 627 00:33:50,000 --> 00:33:53,000 Hebt u vragen over het schrijven van een super, super eenvoudige Hello World programma 628 00:33:53,000 --> 00:33:55,000 in PHP en dan draait het? 629 00:33:55,000 --> 00:33:59,000 Want nu beginnen we om meer dwingende syntax in te voeren. 630 00:33:59,000 --> 00:34:01,000 Oke, daar gaan we. 631 00:34:01,000 --> 00:34:03,000 Deze programma's hebben we eigenlijk allemaal gezien. 632 00:34:03,000 --> 00:34:07,000 >> Als ik open te stellen, bijvoorbeeld, laten we beer1.php te doen, 633 00:34:07,000 --> 00:34:09,000 wij zullen niet gaan door verschillende versies van deze, maar wat ik heb gedaan 634 00:34:09,000 --> 00:34:13,000 was Ik ging zitten en goot het of omgezet 635 00:34:13,000 --> 00:34:15,000 mijn C-code om PHP code hier. 636 00:34:15,000 --> 00:34:18,000 Meeste van de top van het bestand reacties hier. 637 00:34:18,000 --> 00:34:20,000 Het blijkt dat er een nieuwe functie die we nodig hebben genoemd readline. 638 00:34:20,000 --> 00:34:23,000 GetString, terugroepen, uit Week 0 verder was een CS50 ding. 639 00:34:23,000 --> 00:34:27,000 PHP komt met zijn eigen gebruiksvriendelijke functie genaamd readline 640 00:34:27,000 --> 00:34:30,000 dat duurt 1 argument dat de prompt specificeert 641 00:34:30,000 --> 00:34:33,000 die u wilt laten zien aan de gebruiker, en wat readline doet 642 00:34:33,000 --> 00:34:35,000 wordt het terug wat de gebruiker typt inch 643 00:34:35,000 --> 00:34:39,000 In dit geval, ik ben verklaren van een variabele met de naam $ n. 644 00:34:39,000 --> 00:34:42,000 Ik opslag in het de return waarde van readline 645 00:34:42,000 --> 00:34:44,000 na dat de gebruiker met deze string. 646 00:34:44,000 --> 00:34:47,000 Gewoon om een ​​back-up, om daadwerkelijk uitvoeren van dit ding, laat me gaan 647 00:34:47,000 --> 00:34:50,000 en uit te voeren php beer1.php. 648 00:34:50,000 --> 00:34:53,000 Hoeveel flessen zullen er zijn? Laten we gewoon doen 2 deze tijd. 649 00:34:53,000 --> 00:34:55,000 Enter. Dat is alles. 650 00:34:55,000 --> 00:34:59,000 >> Het programma is functioneel identiek aan de versie van C weken geleden. 651 00:34:59,000 --> 00:35:01,000 Maar syntactisch laten we eens kijken wat er anders is. 652 00:35:01,000 --> 00:35:05,000 Nadat ik krijg een int van de gebruiker merken dat ik wat foutcontrole te doen, 653 00:35:05,000 --> 00:35:08,000 en als n kleiner is dan 1 ben ik gestopt en ik print 654 00:35:08,000 --> 00:35:11,000 een droevig bericht naar de gebruiker en uitgang met 1. 655 00:35:11,000 --> 00:35:13,000 Ook dit is een beetje anders. 656 00:35:13,000 --> 00:35:16,000  In C wat hebben we gedaan? In C keerden we terug 1. 657 00:35:16,000 --> 00:35:20,000 In PHP het verlaten van met 1, die eerlijk gezegd is denk ik een beetje meer intuïtief 658 00:35:20,000 --> 00:35:22,000 omdat je letterlijk het verlaten van het programma. 659 00:35:22,000 --> 00:35:25,000 Oke, en dan hier beneden de vervelende lied is identiek syntactisch 660 00:35:25,000 --> 00:35:29,000 met uitzondering van de variabele, dus hier in lijn 24 verder 661 00:35:29,000 --> 00:35:31,000 merkt mijn for-lus is bijna hetzelfde, 662 00:35:31,000 --> 00:35:34,000 maar ik heb $ voor i en n, 663 00:35:34,000 --> 00:35:37,000 en wat ook ontbreekt in lijn 26 die we hebben gehad in het verleden 664 00:35:37,000 --> 00:35:39,000 Bij de aangifte van een variabele i? 665 00:35:39,000 --> 00:35:41,000 Er is geen type. 666 00:35:41,000 --> 00:35:43,000 Het is onjuist in PHP te zeggen int. 667 00:35:43,000 --> 00:35:45,000 Je gewoon niet nodig om dat te doen. 668 00:35:45,000 --> 00:35:48,000 De computer, de tolk PHP is slim genoeg om te beseffen 669 00:35:48,000 --> 00:35:51,000 dat als je een nummer in $ Ik zal behandelen 670 00:35:51,000 --> 00:35:53,000 als een nummer voor je. 671 00:35:53,000 --> 00:35:57,000 En dan hier beneden hebben we plug-in $ i, $ i, $ i - 1. 672 00:35:57,000 --> 00:36:00,000 Dat alles is hetzelfde, en dan naar beneden hier doen we een "Wow, dat is vervelend" printf 673 00:36:00,000 --> 00:36:02,000 en sluit (0). 674 00:36:02,000 --> 00:36:05,000 >> Nogmaals, de afhaalmaaltijden hier is dat, hoewel we gaan relatief te besteden 675 00:36:05,000 --> 00:36:09,000 weinig tijd over PHP, zeker ten opzichte van wat we gedaan hebben op C, 676 00:36:09,000 --> 00:36:12,000 het is bijna hetzelfde, en dus wat we doen vandaag en volgende week 677 00:36:12,000 --> 00:36:14,000 en verder is aandacht echt op een aantal van de nieuwe ideeën. 678 00:36:14,000 --> 00:36:17,000 Gewoon om te zien dat een ander ding doet meer dan vertalen van C, 679 00:36:17,000 --> 00:36:20,000 dit was een super eenvoudig programma die we deden in week 1 680 00:36:20,000 --> 00:36:22,000 of 2 die een waarde in blokjes. 681 00:36:22,000 --> 00:36:25,000 Maar wat was interessant op het moment dat over dit programma is dat het 682 00:36:25,000 --> 00:36:28,000 introduceerde het idee van een op maat geschreven functie die we zelf schreven. 683 00:36:28,000 --> 00:36:31,000 De syntax in PHP is bijna hetzelfde. 684 00:36:31,000 --> 00:36:33,000 Hier is mijn programma boven. 685 00:36:33,000 --> 00:36:35,000 Let nog eens afwezig is elke notie van de belangrijkste. 686 00:36:35,000 --> 00:36:39,000 Ik begin het schrijven van code, en dit is wat er aan de hand om aan de slag uitgevoerd door de tolk. 687 00:36:39,000 --> 00:36:42,000 Print ik x is nu 2 vermoedelijk. 688 00:36:42,000 --> 00:36:44,000 Dan eis ik cubing ... 689 00:36:44,000 --> 00:36:47,000 Dan roep ik de kubus functie en pas in $ x 690 00:36:47,000 --> 00:36:50,000 en wijs de return waarde van $ x. 691 00:36:50,000 --> 00:36:53,000 Daarna heb ik beweren dat het is in blokjes, en dan zeg ik dit, die hopelijk 692 00:36:53,000 --> 00:36:55,000 zal zeggen x is nu 8. 693 00:36:55,000 --> 00:36:59,000 De syntaxis voor de functie in PHP is ooit zo iets anders. 694 00:36:59,000 --> 00:37:01,000 Ook hier ontbreekt, is de return type. 695 00:37:01,000 --> 00:37:05,000 Opnieuw ontbreekt is de return type en ook ontbreekt is wat andere type? 696 00:37:05,000 --> 00:37:07,000 [Onverstaanbaar student reactie] 697 00:37:07,000 --> 00:37:10,000 Nou, oke, dat is goed. Laten terugkomen in een tweede. 698 00:37:10,000 --> 00:37:12,000 >> We hebben geen, bijvoorbeeld, hier int. 699 00:37:12,000 --> 00:37:15,000 Geef bijvoorbeeld hier zijn int omdat weer in PHP 700 00:37:15,000 --> 00:37:18,000 je gewoon niet nodig en zou het niet doen, 701 00:37:18,000 --> 00:37:20,000 maar er is een nieuwe zoekwoord functietoetsen genoemd. 702 00:37:20,000 --> 00:37:23,000 In PHP is het bijna een beetje duidelijker, want als je wilt dat een functie 703 00:37:23,000 --> 00:37:26,000 je letterlijk functie zeggen, je geeft het een naam en dan een door komma's gescheiden lijst 704 00:37:26,000 --> 00:37:28,000 indien een van hun argumenten. 705 00:37:28,000 --> 00:37:32,000 Geen behoefte om nietige of iets dergelijks zeggen, en dan terug is hetzelfde, 706 00:37:32,000 --> 00:37:35,000 $ A * $ a * $ a. 707 00:37:35,000 --> 00:37:38,000 Wat ook ontbreekt? Sammy gewezen hier. 708 00:37:38,000 --> 00:37:43,000 Bovenaan het bestand volledig afwezig in PHP ook een prototype. 709 00:37:43,000 --> 00:37:45,000 Ook dit is door het ontwerp. 710 00:37:45,000 --> 00:37:48,000 Talen en tolken zoals PHP zijn slimmer dan C ooit was 711 00:37:48,000 --> 00:37:50,000 in compilers zoals Clang. 712 00:37:50,000 --> 00:37:53,000 >> Bedenk dat Clang, als je niet vertellen dat kubus bestaat, 713 00:37:53,000 --> 00:37:56,000 als je niet vertellen dat printf bestaat als met een prototype 714 00:37:56,000 --> 00:38:00,000 of met een # include, goed, het zou te schreeuwen naar je en niet eens compileren uw code. 715 00:38:00,000 --> 00:38:03,000 PHP en meer moderne talen zijn een stuk slimmer als het gaat om dit. 716 00:38:03,000 --> 00:38:07,000 Zij zullen het op zich om te lezen door al uw code 717 00:38:07,000 --> 00:38:11,000 en dan schreeuwen tegen je alleen, indien hij vaststelt kubus nergens. 718 00:38:11,000 --> 00:38:15,000 Het maakt niet uit of kubus is aan de onderkant of de bovenkant of zelfs in sommige apart bestand. 719 00:38:15,000 --> 00:38:18,000 PHP en soortgelijke talen zijn nu slim genoeg om vooruit te kijken 720 00:38:18,000 --> 00:38:26,000 naar alles alvorens haar u te hebben een fout gemaakt. 721 00:38:26,000 --> 00:38:28,000 Wat betekent dat voor ons? 722 00:38:28,000 --> 00:38:32,000 >> Laten we een laatste voorbeeld hier in omstandigheden, 723 00:38:32,000 --> 00:38:35,000 en als ik open conditions2.php bericht te 724 00:38:35,000 --> 00:38:37,000 syntaxis is bijna hetzelfde. 725 00:38:37,000 --> 00:38:40,000 Ik gebruik readline in plaats van GetString, maar die lijn is hetzelfde als voorheen, 726 00:38:40,000 --> 00:38:42,000 "Ik zou graag een geheel getal te behagen." 727 00:38:42,000 --> 00:38:45,000 Vervolgens heb ik heb een if-conditie, een else if, en dan een ander, 728 00:38:45,000 --> 00:38:48,000 maar functioneel is dit programma ook identiek aan wat we deden weken geleden, 729 00:38:48,000 --> 00:38:51,000 dus als ik zonder dit ding, php van conditions2, 730 00:38:51,000 --> 00:38:54,000 en ik geef het een nummer als 23 - 731 00:38:54,000 --> 00:38:57,000 Ik pakte een positief getal. Als ik er -1 Ik pakte een negatief getal. 732 00:38:57,000 --> 00:39:00,000 Als ik geef het 0 ik inderdaad geplukt 0. 733 00:39:00,000 --> 00:39:02,000 Dus who cares over dit alles? 734 00:39:02,000 --> 00:39:06,000 Nou, een van de leuke soort oefeningen hier 735 00:39:06,000 --> 00:39:10,000 voor mij althans was om terug te gaan en hoe snel ik kon PSET 5 ten zien, 736 00:39:10,000 --> 00:39:12,000 de spelfouten PSET. 737 00:39:12,000 --> 00:39:15,000 Bedenk dat er was een bestand met de naam speller.c, 738 00:39:15,000 --> 00:39:17,000 en er was een bestand met de naam dictionary.c. 739 00:39:17,000 --> 00:39:20,000 Wat ik deed was ik soort van bracht een paar minuten en ik zette de C-code 740 00:39:20,000 --> 00:39:23,000 PHP-code, en we zullen niet veel tijd te besteden aan speller 741 00:39:23,000 --> 00:39:26,000 want net als in PSET 5 je niet echt nodig hebt om 742 00:39:26,000 --> 00:39:29,000 besteden veel tijd aan speller zelf, omdat je aandacht was op woordenboek. 743 00:39:29,000 --> 00:39:32,000 >> Het volstaat om te zeggen dat als je doorleest speller, 744 00:39:32,000 --> 00:39:35,000 dit bestand hier, het is vrij veel gelijk aan de C-code 745 00:39:35,000 --> 00:39:37,000 gaven we u voor PSET 5. 746 00:39:37,000 --> 00:39:39,000 Ik heb net nog wat $ plaatsen. 747 00:39:39,000 --> 00:39:43,000 Ik ben veranderd bepaalde functie namen als ze niet bestaan ​​in PHP. 748 00:39:43,000 --> 00:39:45,000 Er is een extra ding hier, preg_match, 749 00:39:45,000 --> 00:39:48,000 dat is een beetje liefhebber manier om iets te doen, maar we zullen terugkomen om die uiteindelijk. 750 00:39:48,000 --> 00:39:51,000 Maar in het kort, speller is bijna identiek, en als je kijkt naar de bodem 751 00:39:51,000 --> 00:39:54,000 wat het uiteindelijk spuugt is dit hier, 752 00:39:54,000 --> 00:39:57,000 woorden verkeerd gespeld, woorden in het woordenboek, woorden in een tekst. 753 00:39:57,000 --> 00:40:00,000 Oke, dus wat is interessant nu is het volgende. 754 00:40:00,000 --> 00:40:05,000 Op de top van mijn dossier ben ik die dictionary.php. 755 00:40:05,000 --> 00:40:09,000 Net zoals C heeft # include PHP heeft een speciale functie genaamd nodig 756 00:40:09,000 --> 00:40:14,000 dat vrij veel het zelfde ding doet, vereisen een bestand met de naam dictionary.php. 757 00:40:14,000 --> 00:40:18,000 Hoe kan ik gaan over de uitvoering PSET 5? 758 00:40:18,000 --> 00:40:21,000 Laat me verder gaan en het openen van een bestand. 759 00:40:21,000 --> 00:40:24,000 Laat mij hier een weinig referentie. 760 00:40:24,000 --> 00:40:29,000 En laat me maak een nieuw bestand en start het aanroepen van deze dictionary.php. 761 00:40:29,000 --> 00:40:31,000 Laat ik het in een andere map, zodat we dit kunnen doen leven. 762 00:40:31,000 --> 00:40:33,000 En nu zal ik zoomen 763 00:40:33,000 --> 00:40:37,000 Ik ga mijn PHP-bestand te beginnen met open beugel php gesloten beugel. 764 00:40:37,000 --> 00:40:40,000 En dan hier waren er een paar functies die ik nodig had om te implementeren voor PSET 5, 765 00:40:40,000 --> 00:40:42,000 dus laat ik beginnen met de uitvoering een aantal van deze, 766 00:40:42,000 --> 00:40:47,000 dus functiecontrole, die moest een woord in als argument te nemen. 767 00:40:47,000 --> 00:40:49,000 We doen dat en komen terug om het in een moment. 768 00:40:49,000 --> 00:40:53,000 >> Er was functie lading, die in wat er als een argument? 769 00:40:53,000 --> 00:40:56,000 Woordenboek, zodat het bestand dat ik eigenlijk wilde laden. 770 00:40:56,000 --> 00:41:00,000 Er was functie grootte, die geen rekening argumenten 771 00:41:00,000 --> 00:41:04,000 en er was functie-wat was de andere? 772 00:41:04,000 --> 00:41:06,000 Unload, die geen enkele argumenten ofwel nemen. 773 00:41:06,000 --> 00:41:10,000 Dit zijn de 4 functies die ik nodig zou hebben om nu te implementeren in PHP, 774 00:41:10,000 --> 00:41:13,000 en wat ik ga doen is door te gaan en dit doen. 775 00:41:13,000 --> 00:41:16,000 Veel van jullie gebruikt een hash tabel in PSET 5, 776 00:41:16,000 --> 00:41:21,000 dus laat me ga je gang en maak een hash-tabel in PHP. 777 00:41:21,000 --> 00:41:23,000 Gereed. 778 00:41:23,000 --> 00:41:25,000 Dat geeft mij een hash-tabel. Nou ja, waarom? 779 00:41:25,000 --> 00:41:30,000 One, wordt de variabele genaamd $ table, gewoon op te roepen het idee van een hash-tabel. 780 00:41:30,000 --> 00:41:34,000 De vierkante haakjes, echter herinneren, vertegenwoordigen wat? 781 00:41:34,000 --> 00:41:37,000 Een array, maar in PHP arrays niet numeriek worden geïndexeerd. 782 00:41:37,000 --> 00:41:41,000 Ze kunnen ook associatieve arrays, 783 00:41:41,000 --> 00:41:44,000 wat betekent dat je kan hebben willekeurige sleutels en waarden. 784 00:41:44,000 --> 00:41:49,000 >> Heel erg zoals in PSET 5, diegenen van jullie die wel hash table implementaties 785 00:41:49,000 --> 00:41:53,000 je waarschijnlijk geplaatst het woord en vervolgens ingebracht het in een keten van gekoppelde lijsten, 786 00:41:53,000 --> 00:41:56,000 of als u de opgeslagen waarde true ergens of iets van die strekking. 787 00:41:56,000 --> 00:41:59,000 U een of andere manier herinnerde het feit dat het woord was. 788 00:41:59,000 --> 00:42:01,000 Voor nu, dat gaat mijn hash-tabel is, 789 00:42:01,000 --> 00:42:06,000 en dus nu om te gaan over de uitvoering van de controle-functie 790 00:42:06,000 --> 00:42:09,000 Ik moet naar binnen te kijken van die hash-tabel 791 00:42:09,000 --> 00:42:11,000 en zien of een woord is er. 792 00:42:11,000 --> 00:42:15,000 Wat ik ga doen is dat ik ga zeggen als- 793 00:42:15,000 --> 00:42:20,000 laten we zeggen isset, dat is een PHP-functie die letterlijk betekent is de sleutel set, 794 00:42:20,000 --> 00:42:24,000 dus isset ($ table [$ woord], 795 00:42:24,000 --> 00:42:29,000 en zo ja, return true. 796 00:42:29,000 --> 00:42:32,000 Dat is het. Dat is PSET 5 in PHP. 797 00:42:32,000 --> 00:42:34,000 Nou ja, in alle eerlijkheid, oke. 798 00:42:34,000 --> 00:42:37,000 Else valse terug, dus het is er niet. 799 00:42:37,000 --> 00:42:39,000 Wat is er werkelijk aan de hand hier? 800 00:42:39,000 --> 00:42:42,000 Nou, als tafel-of hash-tabel hier meer in het algemeen- 801 00:42:42,000 --> 00:42:46,000 is een associatieve array dat betekent dat je kan indexeren erin 802 00:42:46,000 --> 00:42:50,000 met een woord als 'woord', en je hebt terug te krijgen een bepaalde waarde. 803 00:42:50,000 --> 00:42:52,000 >> We zijn soort op het krijgen van een stap voor onszelf. 804 00:42:52,000 --> 00:42:56,000 Het zou wel leuk zijn als we daadwerkelijk geladen het bestand eerst, 805 00:42:56,000 --> 00:42:58,000 dus belasting is niet zo eenvoudig, maar laat me ga je gang en zweep 806 00:42:58,000 --> 00:43:00,000  echt een snelle implementatie van de belasting. 807 00:43:00,000 --> 00:43:07,000 Laat me ga je gang en zeg woorden krijgt bestand woordenboek. 808 00:43:07,000 --> 00:43:10,000 Het bestand functie in PHP een bestand wordt geopend 809 00:43:10,000 --> 00:43:12,000 en keert terug naar je een array van alle woorden in dat bestand, 810 00:43:12,000 --> 00:43:14,000 gewoon overhandigt ze aan u. 811 00:43:14,000 --> 00:43:16,000 Dat was een grote pijn ook, was het niet? 812 00:43:16,000 --> 00:43:21,000 Nu foreach, dit is onze nieuwe construct, foreach ($ woorden als $ woord). 813 00:43:21,000 --> 00:43:25,000 Deze lus gaat beginnen itereren over de array woorden 814 00:43:25,000 --> 00:43:30,000 en toe te wijzen aan de $ woord variabele elk woord in het bestand 815 00:43:30,000 --> 00:43:32,000 van de eerste naar de tweede naar de derde naar de vierde helemaal 816 00:43:32,000 --> 00:43:35,000 dus ik hoef niet de vervelende [i] notatie te doen en dergelijke. 817 00:43:35,000 --> 00:43:38,000 En wat ik gewoon gaan doen voor elk van deze woorden 818 00:43:38,000 --> 00:43:43,000 is het op te slaan in mijn tabel door indexering in tabel 819 00:43:43,000 --> 00:43:47,000 en vervolgens doen waar, omdat te onthouden 820 00:43:47,000 --> 00:43:50,000 dat een woord in mijn woordenboek alles wat ik echt moet doen 821 00:43:50,000 --> 00:43:55,000 is een soort van flip een beetje en zeggen dat dit woord in mijn hash-tabel is er, waar. 822 00:43:55,000 --> 00:43:58,000 En als het er niet is, hoef ik niet te expliciet zetten valse, 823 00:43:58,000 --> 00:44:01,000 anders zou ik moeten valse opgemaakt voor alle mogelijke woorden in het universum. 824 00:44:01,000 --> 00:44:05,000 >> Het volstaat voor mij alleen maar om te stellen een indexwaarde 825 00:44:05,000 --> 00:44:09,000 op true wanneer een woord eigenlijk in mijn hash tabel. 826 00:44:09,000 --> 00:44:12,000 Nu, ik ben het snijden van een paar bochten hier dat ik mijn handen zwaaien voor nu, 827 00:44:12,000 --> 00:44:15,000 maar nu de belading wordt uitgevoerd. 828 00:44:15,000 --> 00:44:18,000 Ik laad alle woorden uit het bestand in een array. 829 00:44:18,000 --> 00:44:21,000 I itereren over die array en voor elk woord in de reeks 830 00:44:21,000 --> 00:44:24,000 Ik sluit hem aan op mijn hash tabel met 1 regel code. 831 00:44:24,000 --> 00:44:26,000 Dit is leuk. Je weet hoe we kunnen grootte nu te implementeren? 832 00:44:26,000 --> 00:44:28,000 Nou, de grootte is altijd vrij eenvoudig, in alle eerlijkheid. 833 00:44:28,000 --> 00:44:32,000 Hier kunnen we gewoon terugkeren telling van tafel. 834 00:44:32,000 --> 00:44:34,000 Ook dat is vrij makkelijk, tel het aantal van de dingen in de tabel. 835 00:44:34,000 --> 00:44:36,000 Dat is eigenlijk wel niet de meest efficiënte. 836 00:44:36,000 --> 00:44:39,000 Ik zou waarschijnlijk een variabele genaamd formaat, zodat we kunnen doen 837 00:44:39,000 --> 00:44:41,000 in constante tijd, maar dat is vrij eenvoudig. 838 00:44:41,000 --> 00:44:45,000 Oh, en dan lossen, als we echt willen om hier te zijn anale 839 00:44:45,000 --> 00:44:47,000 kunnen we zeggen dat is hoe je iets lossen. 840 00:44:47,000 --> 00:44:49,000 U hoeft alleen de variabele gelijk is aan een lege array, 841 00:44:49,000 --> 00:44:51,000 en het wordt ontdoen van alles wat er was. 842 00:44:51,000 --> 00:44:53,000 Geen behoefte om te bellen gratis. 843 00:44:53,000 --> 00:44:56,000 >> Nogmaals, ik heb geknipt sommige bochten, en ik verontschuldig me voor het toekennen probleem set 5 844 00:44:56,000 --> 00:45:00,000 misschien in C, maar als we nu verder gaan en het uitvoeren van deze, 845 00:45:00,000 --> 00:45:02,000 Ik ga eigenlijk draaien de versie die ik schreef op voorhand 846 00:45:02,000 --> 00:45:05,000 gewoon zo dat ik geen syntactische fouten dan ook te maken. 847 00:45:05,000 --> 00:45:08,000 Laat me ga je gang en lopen speller. Het gebruik is hetzelfde. 848 00:45:08,000 --> 00:45:12,000 Hier is een woordenboek bestand die net bevat het woord foo. 849 00:45:12,000 --> 00:45:15,000 Hier is een tekstbestand dat net bevat foo bar. 850 00:45:15,000 --> 00:45:19,000 Laten we spellingcontrole dit, dus speller, met behulp van dit woordenboek bestand op dit tekstbestand. 851 00:45:19,000 --> 00:45:21,000 Er is een verkeerd gespeld woord, een bar, en voila. 852 00:45:21,000 --> 00:45:23,000 Gedaan met PSET 5. 853 00:45:23,000 --> 00:45:30,000 Laten we hier eens 5-minuten pauze, en we komen terug en nog veel meer komen op PHP. 854 00:45:30,000 --> 00:45:32,000 Goed, we zijn weer terug. 855 00:45:32,000 --> 00:45:34,000 Laten we mij doe-haat voor een tijdje. 856 00:45:34,000 --> 00:45:37,000 Laten we nu eigenlijk zien of was dit niet een positief 857 00:45:37,000 --> 00:45:39,000 het daadwerkelijk implementeren van dit ding in PHP. 858 00:45:39,000 --> 00:45:43,000 Toegegeven, het duurde 45 seconden om te implementeren. 859 00:45:43,000 --> 00:45:45,000 >> Maar laten we nu verder gaan en lopen dingen. 860 00:45:45,000 --> 00:45:49,000 Laat me ga je gang en uitvoeren van een C-versie 861 00:45:49,000 --> 00:45:52,000 van speller, en wij zullen het draaien op een van de grootste bestanden, 862 00:45:52,000 --> 00:45:54,000 dat is de King James Bijbel. 863 00:45:54,000 --> 00:45:57,000 En dat is hier in-laten we gaan in onze C map, 864 00:45:57,000 --> 00:46:01,000 speller op King James de 5e. 865 00:46:01,000 --> 00:46:03,000 Een groot deel van verkeerd gespelde woorden. 866 00:46:03,000 --> 00:46:06,000 Oke, dus dat is de uitgang die u waarschijnlijk hebt, zelfs als de tijden zijn een beetje anders, 867 00:46:06,000 --> 00:46:09,000 Als je alles goed werkt, en dus tijd in totaal spellingcontrole 868 00:46:09,000 --> 00:46:13,000 de King James Bijbel was 0,38 seconde, dus vrij goed met behulp van dat de uitvoering. 869 00:46:13,000 --> 00:46:16,000 Laat me nu gaan in de PHP-versie, die net schreven we. 870 00:46:16,000 --> 00:46:18,000 Laat me lopen speller op King James. 871 00:46:18,000 --> 00:46:21,000 Oeps, negeer die fout. Ik ben in de verkeerde map. 872 00:46:21,000 --> 00:46:24,000 Speller op King James de 5e. 873 00:46:46,000 --> 00:46:48,000 Bijna klaar. 874 00:46:48,000 --> 00:46:51,000 >> Oke, de scherpzinnige waarnemer zich realiseren dat was meer dan 3 seconden daar. 875 00:46:51,000 --> 00:46:54,000 Dat is de ware looptijd. 876 00:46:54,000 --> 00:46:58,000 Het blijkt dat het tijd kost om veel tekst uitspuugt 877 00:46:58,000 --> 00:47:00,000 als gevolg van buffering problemen, maar lang verhaal kort, 878 00:47:00,000 --> 00:47:04,000 dat was 3,15 seconde van de machine de tijd, CPU-tijd, 879 00:47:04,000 --> 00:47:07,000 ten opzichte van wat was het een moment geleden? 880 00:47:07,000 --> 00:47:09,000 Net als 0.3. 881 00:47:09,000 --> 00:47:11,000 Ik bedoel, het is een orde van grootte trager, dus waar is dat 882 00:47:11,000 --> 00:47:14,000 belachelijk vertraging vandaan? 883 00:47:14,000 --> 00:47:17,000 Nou, zoals al het geval is met de meeste elk ontwerp beslissing die we hebben gemaakt 884 00:47:17,000 --> 00:47:21,000 in de klas over de afgelopen 9 weken is er bijna altijd deze afweging. 885 00:47:21,000 --> 00:47:24,000 Soms tussen gewoon ruimte, soms tussen ruimte en tijd, 886 00:47:24,000 --> 00:47:27,000 ruimte, tijd en ontwikkelingsinspanningen, en ook hier, hoewel 887 00:47:27,000 --> 00:47:31,000 we bespaarden enorm veel tijd, misschien potentieel 10-20-30 uur 888 00:47:31,000 --> 00:47:34,000 ontwikkelingstijd uitvoering van de spellingcontrole 889 00:47:34,000 --> 00:47:36,000 door zweepslagen het op in slechts 45 seconden met deze taal 890 00:47:36,000 --> 00:47:40,000 de prijs die we betalen is dat het een orde van grootte lager als gevolg daarvan, 891 00:47:40,000 --> 00:47:43,000 en dit is meestal het geval met vrijwel elke geïnterpreteerde taal, 892 00:47:43,000 --> 00:47:46,000 PHP, Python, Ruby, Pearl of anderen, waarbij 893 00:47:46,000 --> 00:47:49,000 als je gaat om het uit te voeren door middel van een tolk en laat het lezen van uw code 894 00:47:49,000 --> 00:47:52,000 regel voor regel van boven naar beneden, van links naar rechts, 895 00:47:52,000 --> 00:47:55,000 dat tussenpersoon gaat enige tijd van zijn eigen te nemen, 896 00:47:55,000 --> 00:47:59,000 en wat je hier het gevoel in de 3 seconden, in tegenstelling tot 0,3 seconden 897 00:47:59,000 --> 00:48:02,000 is het feit dat er deze tussenpersoon die moet letterlijk interpreteren onze code 898 00:48:02,000 --> 00:48:05,000 regel voor regel, en God verhoede als je de binnenkant van een lus 899 00:48:05,000 --> 00:48:08,000 met een groot bestand met honderden duizenden woorden. 900 00:48:08,000 --> 00:48:11,000 >> Dat overhead gaat optellen en optellen en optellen en optellen. 901 00:48:11,000 --> 00:48:16,000 Voor een hulpmiddel als dit het is waarschijnlijk niet de beste taal om te gebruiken voor de uitvoering van 902 00:48:16,000 --> 00:48:20,000 een spellingcontrole als directheid is van belang voor uw gebruikers en voor jou. 903 00:48:20,000 --> 00:48:23,000 Maar de luxe die we hebben in een moment is als je 904 00:48:23,000 --> 00:48:27,000 gebruik maken van een taal zoals PHP of veel geïnterpreteerde talen 905 00:48:27,000 --> 00:48:30,000 in het kader van het web, wat dat betreft, heb je het voordeel 906 00:48:30,000 --> 00:48:34,000 dat het internet is een stuk langzamer dan de meeste computers. 907 00:48:34,000 --> 00:48:38,000 Je hebt een GHz CPU in uw computer, 2 GHz, misschien zelfs meer van deze dagen. 908 00:48:38,000 --> 00:48:41,000 Maar de realiteit is op het internet is er een grote hoeveelheid latency 909 00:48:41,000 --> 00:48:45,000 waarbij voor een browser om te praten met een server, ook al zagen we vorige week 910 00:48:45,000 --> 00:48:47,000 dat dat is vrij snel, een halve milliseconde of zo, 911 00:48:47,000 --> 00:48:51,000 dat voegt ook omhoog, en als je aan het downloaden bent dingen als een afbeelding 912 00:48:51,000 --> 00:48:54,000 of een Facebook-foto of het krijgen van instant messages via Facebook chatter, 913 00:48:54,000 --> 00:48:57,000 Gchat of iets dergelijks, al deze round trip-tijd 914 00:48:57,000 --> 00:49:00,000 tussen de browser en de server beginnen te kloppen, 915 00:49:00,000 --> 00:49:03,000 waardoor uw specifieke keuze van de taal in veel gevallen 916 00:49:03,000 --> 00:49:07,000 niet zo relevant is, dus je bent in orde met behulp van een iets trager taal 917 00:49:07,000 --> 00:49:10,000 zoals PHP of Python of Ruby 918 00:49:10,000 --> 00:49:13,000 maar waarvoor er enorme positieve kanten aan u en uw collega's 919 00:49:13,000 --> 00:49:17,000 en je vrienden, want je kunt implementeren dingen zo, zo veel sneller. 920 00:49:17,000 --> 00:49:20,000 En bovendien, je hebt veel minder kans op bepaalde beveiligingslekken. 921 00:49:20,000 --> 00:49:22,000 Er is geen pointers in PHP. 922 00:49:22,000 --> 00:49:25,000 Er is geen seg fouten die je gemakkelijk kunt bewegen 923 00:49:25,000 --> 00:49:27,000 op dezelfde manier kon je in C. 924 00:49:27,000 --> 00:49:29,000 Met C ben je super dicht bij de hardware. 925 00:49:29,000 --> 00:49:33,000 Met PHP en soortgelijke talen je bent soort van hoger niveau, om zo te zeggen, 926 00:49:33,000 --> 00:49:37,000 met veel verdedigingswerken tussen u en wat er eigenlijk aan de hand 927 00:49:37,000 --> 00:49:39,000 in de machine, en het is gewoon een afweging. 928 00:49:39,000 --> 00:49:42,000 >> We hebben gekregen tot het punt van het hebben van deze moderne, hoog niveau talen 929 00:49:42,000 --> 00:49:47,000 zoals PHP als gevolg van de lessen die zijn geleerd in talen als PHP in C. 930 00:49:47,000 --> 00:49:50,000 Maar als je niet begrijpt wat er aan de hand onder de kap al die tijd 931 00:49:50,000 --> 00:49:53,000 Je kan zeker niet de juiste ontwerpbeslissingen, 932 00:49:53,000 --> 00:49:56,000 en zeker als het gaat om het werken op een plek als Facebook of Google 933 00:49:56,000 --> 00:49:59,000 of een van deze plaatsen die in toenemende mate spelen met grote datasets 934 00:49:59,000 --> 00:50:01,000 zelfs als u terug te gaan en hebben PREMED en werken samen met een aantal MD 935 00:50:01,000 --> 00:50:04,000 op sommige grote data set met patiënten en artsen 936 00:50:04,000 --> 00:50:08,000 en dergelijke met behulp van de juiste tools is enorm meeslepend 937 00:50:08,000 --> 00:50:11,000 omdat anders uw analyse van een aantal dataset zou kunnen nemen seconden, 938 00:50:11,000 --> 00:50:14,000 of het kan letterlijk uren duren. 939 00:50:14,000 --> 00:50:17,000 Dit is slechts een voorbeeld, niet om u te frustreren met hoeveel meer inspanning 940 00:50:17,000 --> 00:50:21,000 het was in C, maar om u te helpen begrijpen dat als je iets in C te implementeren 941 00:50:21,000 --> 00:50:24,000 je echt begrijpt, of in theorie, echt begrijpen 942 00:50:24,000 --> 00:50:28,000 hoe alles is of zou moeten werken, en je hebt bijna volledige controle 943 00:50:28,000 --> 00:50:31,000 over wat er aan de hand onder de kap, en met deze hogere talen 944 00:50:31,000 --> 00:50:34,000 moet je meer controle te geven aan de mensen die het bedacht ze 945 00:50:34,000 --> 00:50:37,000 en zijn onderhevig meer om hun ontwerpbeslissingen dan de jouwe. 946 00:50:37,000 --> 00:50:41,000 Maar als we voor lief nemen dat de prestaties 947 00:50:41,000 --> 00:50:44,000 is niet zo belangrijk op het web als gevolg van deze andere kwesties, 948 00:50:44,000 --> 00:50:47,000 net-netwerk snelheden zijn een beetje trager dan CPU snelheden toch, 949 00:50:47,000 --> 00:50:50,000 dus we kunnen sorteren van veroorloven om een ​​iets trager taal te gebruiken 950 00:50:50,000 --> 00:50:55,000 indien de upsides zijn wij dingen kunnen ontwikkelen 10 keer sneller of zelfs meer. 951 00:50:55,000 --> 00:50:57,000 >> Laten we eens kijken hoe we kunnen beginnen met deze. 952 00:50:57,000 --> 00:51:00,000 Laat me gaan in een map 953 00:51:00,000 --> 00:51:03,000 onder de voorbeelden van vandaag genoemd frosh.ims, 954 00:51:03,000 --> 00:51:06,000 en dit was eigenlijk persoonlijk ingegeven door het feit dat het allereerste wat 955 00:51:06,000 --> 00:51:10,000 Ik schreef voor het web jaar geleden na het nemen van CS50 en CS51 956 00:51:10,000 --> 00:51:14,000 was een website voor het Frosh IMS-programma, eerstejaars intramurale sport, 957 00:51:14,000 --> 00:51:16,000 die op dat moment was dat voldoende jaar geleden dat ten tijde 958 00:51:16,000 --> 00:51:19,000 was er geen website voor het programma, ook al was er een Web, 959 00:51:19,000 --> 00:51:22,000 en in plaats daarvan was er een surveillant in Wigglesworth, waarbij als je wilde 960 00:51:22,000 --> 00:51:26,000 in te schrijven voor volleybal of voetbal of wat je zou invullen van een stuk papier. 961 00:51:26,000 --> 00:51:28,000 Je zou dan lopen over het erf. 962 00:51:28,000 --> 00:51:31,000 Je zou dan kloppen op hun deur en schuif in de deur of hand aan de surveillant 963 00:51:31,000 --> 00:51:34,000 een stuk papier met je naam erop, of u wilt een team captain te zijn, 964 00:51:34,000 --> 00:51:37,000 welke sport je wilde doen, en wat dorm je was binnen 965 00:51:37,000 --> 00:51:39,000 Het was een soort van een oude school manier van doen, en dit was een uitstekende 966 00:51:39,000 --> 00:51:41,000 mogelijkheid om veel van dit proces te automatiseren. 967 00:51:41,000 --> 00:51:43,000 Je moet gewoon naar de website. U typt iets in 968 00:51:43,000 --> 00:51:46,000 Je krijgt een e-mail bevestiging en giek, je bent klaar. 969 00:51:46,000 --> 00:51:49,000 >> Dit was het allereerste wat ik deed, zij het in een taal genaamd Pearl, 970 00:51:49,000 --> 00:51:52,000 maar het is relatief eenvoudig om te doen in PHP, en dit is een soort van representatieve 971 00:51:52,000 --> 00:51:55,000 van de problemen die u kunt beginnen met het oplossen als je kunt jezelf uitdrukken 972 00:51:55,000 --> 00:51:58,000 programmatisch en hoeven niet te vertrouwen op zaken als Google-sites 973 00:51:58,000 --> 00:52:01,000 of Excel of gereedschappen die worden overhandigd aan u. 974 00:52:01,000 --> 00:52:03,000 Jullie hebben nu de mogelijkheid om dingen te doen als dit. 975 00:52:03,000 --> 00:52:06,000 Dit is een super lelijke versie van een formulier, 976 00:52:06,000 --> 00:52:09,000 maar laten we gewoon gebruik maken van het voor het begin van het gesprek waarbij deze is 977 00:52:09,000 --> 00:52:12,000 ongeveer wat de vorm leek jaren geleden voor ons 978 00:52:12,000 --> 00:52:14,000 om mensen in staat op het web aan te melden voor Frosh IM. 979 00:52:14,000 --> 00:52:18,000 We vroegen voor een naam, een selectievakje voor al dan niet wilde zijn kapitein, 980 00:52:18,000 --> 00:52:21,000 man of vrouw, en wat slaapzaal waren ze in, 981 00:52:21,000 --> 00:52:23,000 en dan zouden ze dit formulier. 982 00:52:23,000 --> 00:52:27,000 Laten we eerst eens kijken onder de motorkap op de HTML die deze webpagina vertegenwoordigt. 983 00:52:27,000 --> 00:52:31,000 Laat me gaan in froshims0, 984 00:52:31,000 --> 00:52:35,000 en als een terzijde, want PSET 7 Ik neem voor lief 985 00:52:35,000 --> 00:52:37,000 de mappen en de mappen die ik dingen zetten binnen 986 00:52:37,000 --> 00:52:40,000 We zullen u door precies waar spul moet gaan in het apparaat, 987 00:52:40,000 --> 00:52:43,000 die mod commando's je moet rennen, dus maak je geen zorgen te maken over alle 988 00:52:43,000 --> 00:52:46,000 dom gegevens synchroniseren in van de get-go hier. 989 00:52:46,000 --> 00:52:49,000 >> Oke, hier is froshims0.php. 990 00:52:49,000 --> 00:52:52,000 Laat me naar beneden scrollen, en wat is nieuwsgierig hier, 991 00:52:52,000 --> 00:52:56,000 dit is een PHP-bestand, maar wat er in het, duidelijk? 992 00:52:56,000 --> 00:52:59,000 Het is een heleboel van HTML, en inderdaad, PHP, waarvan de oorsprong 993 00:52:59,000 --> 00:53:02,000 waren echt voor het zijn een web-centric taal. 994 00:53:02,000 --> 00:53:04,000 Een moment geleden hebben we gebruikt om het bier voorbeeld te implementeren, 995 00:53:04,000 --> 00:53:07,000 de voorwaarden bijvoorbeeld de hallo voorbeeld, en dat is prima. 996 00:53:07,000 --> 00:53:11,000 U kunt gebruik maken van PHP als scripting taal 997 00:53:11,000 --> 00:53:15,000 waar een script is eigenlijk gewoon de nomenclatuur gegeven aan een snelle en vuile programma 998 00:53:15,000 --> 00:53:19,000 of iets dat je schrijft in een script of meer in het algemeen een geïnterpreteerde taal. 999 00:53:19,000 --> 00:53:22,000 PHP is super handig voor dat, omdat je hebt gezien hoe snel 1000 00:53:22,000 --> 00:53:24,000 relatief kunnen we zweep programma's in PHP. 1001 00:53:24,000 --> 00:53:27,000 Maar het was echt ontworpen om te worden gebruikt voor het web, 1002 00:53:27,000 --> 00:53:31,000 en ontworpen voor het web in de zin dat merkt hier aan de top van het bestand 1003 00:53:31,000 --> 00:53:34,000 Ik begin met 00:53:38,000 Dan heb ik een hoop nutteloze opmerkingen, verleend, maar dan sluit ik PHP-modus. 1005 00:53:38,000 --> 00:53:41,000 Maar dan moet ik laten vallen in de HTML-modus. 1006 00:53:41,000 --> 00:53:45,000 >> Wat is er interessant aan PHP is ook al is het bestand eindigt op. Php 1007 00:53:45,000 --> 00:53:48,000 het is over het algemeen bedoeld om te worden samengevoegd met HTML, 1008 00:53:48,000 --> 00:53:50,000 sommige PHP-code, een aantal HTML. 1009 00:53:50,000 --> 00:53:53,000 En we zullen uiteindelijk zien dat we kunnen beginnen met die uit elkaar te plagen 1010 00:53:53,000 --> 00:53:56,000 en onze HTML gescheiden helemaal te houden van onze PHP, 1011 00:53:56,000 --> 00:53:59,000 maar de oorsprong van PHP waren echt om u deze flexibiliteit, 1012 00:53:59,000 --> 00:54:02,000 dat als je wilt een aantal HTML gewoon schrijven, en dat zal 1013 00:54:02,000 --> 00:54:04,000 identiek spuwde naar de browser. 1014 00:54:04,000 --> 00:54:07,000 Maar als je wat programmeertechniek, 1015 00:54:07,000 --> 00:54:12,000 wat programmeerwerk code, kunt u ook zet het in dezelfde exacte bestandsnaam, zoals we zullen snel te zien. 1016 00:54:12,000 --> 00:54:14,000 Hier is mijn HTML. 1017 00:54:14,000 --> 00:54:16,000 Ik heb een titel van dit voor Frosh IM. 1018 00:54:16,000 --> 00:54:20,000 Ik heb een body-tag die een aantal CSS op het kreeg om naar het midden alles in het midden, 1019 00:54:20,000 --> 00:54:23,000 en dan naar beneden hier Ik heb een formulier die blijkbaar zal worden ingediend 1020 00:54:23,000 --> 00:54:27,000 om een ​​nieuw bestand met de naam register0.php, dus we zullen zien dat in een moment. 1021 00:54:27,000 --> 00:54:31,000 Het is met behulp van een methode genaamd post, die we zullen terug aan zo goed. 1022 00:54:31,000 --> 00:54:34,000 Dan heb ik een of andere vorm ingangen, een zogenaamde naam, waarvan het type is tekst, 1023 00:54:34,000 --> 00:54:37,000 Degene wiens naam is kapitein, waarvan het type is checkbox, 1024 00:54:37,000 --> 00:54:40,000 en dit hebben we niet eerder gezien, maar het doet precies wat het zegt. 1025 00:54:40,000 --> 00:54:42,000 U krijgt een checkbox in plaats van een tekstvak. 1026 00:54:42,000 --> 00:54:46,000 Hier onder heb je een keuzerondje, dat is een van die ronde knoppen 1027 00:54:46,000 --> 00:54:48,000 dat u kunt kiezen dit of dat is. 1028 00:54:48,000 --> 00:54:52,000 >> Let op het bewuste is dat ik gaf beide keuzerondjes de naam van geslacht. 1029 00:54:52,000 --> 00:54:55,000 Dit is hoe je wederzijdse uitsluiting, waarbij je moet klikken krijgt 1030 00:54:55,000 --> 00:54:58,000 ofwel deze of dat een, en door te klikken op de andere 1031 00:54:58,000 --> 00:55:01,000 Het unchecks de andere, dus je moet hen dezelfde naam 1032 00:55:01,000 --> 00:55:03,000 Als je wilt dat ze elkaar uitsluiten als dat. 1033 00:55:03,000 --> 00:55:07,000 En dan voor dorm, ik denk niet dat we dit nog niet gezien, maar het is een select menu, een drop-down menu. 1034 00:55:07,000 --> 00:55:09,000 De tag voor deze is geselecteerd. 1035 00:55:09,000 --> 00:55:11,000 Vervolgens geeft het drop-down menu een naam, 1036 00:55:11,000 --> 00:55:13,000 en dan heb je een hele hoop van deze opties. 1037 00:55:13,000 --> 00:55:16,000 De eerste, alleen voor esthetiek, is een lege tekenreeks. 1038 00:55:16,000 --> 00:55:20,000 Ik wilde gewoon de drop down te leeg zijn standaard, 1039 00:55:20,000 --> 00:55:22,000 en dan is er Apley, Canaday, Grays, enzovoort. 1040 00:55:22,000 --> 00:55:24,000 En hier ziet de dichotomie. 1041 00:55:24,000 --> 00:55:27,000 De optie in het drop heeft beneden een waarde, 1042 00:55:27,000 --> 00:55:30,000 maar het heeft een mensvriendelijke naam, die in dit voorbeeld 1043 00:55:30,000 --> 00:55:33,000 is identiek, maar als we echt wilden zijn anale we konden 1044 00:55:33,000 --> 00:55:36,000 de waarde van deze drop down gewoon de korte versie, 1045 00:55:36,000 --> 00:55:39,000 Grays, maar we konden echt zeggen Grays Hall dat de menselijke werkelijkheid ziet, 1046 00:55:39,000 --> 00:55:43,000 maar dat is niet zo interessant, dus ik hield het simpel en maakte ze identiek. 1047 00:55:43,000 --> 00:55:46,000 Dan naar beneden op de bodem hebben we een submit knop 1048 00:55:46,000 --> 00:55:49,000 die we eerder hebben gezien, maar merk dat ik gaf het gewoon een ander woord. 1049 00:55:49,000 --> 00:55:53,000 In plaats van CS50 zoeken gaf ik het label "Registreer". 1050 00:55:53,000 --> 00:55:56,000 >> Het eindresultaat is deze webpagina hier, en opnieuw, 1051 00:55:56,000 --> 00:56:00,000 waar komt dit krijgt voorgelegd aan? 1052 00:56:00,000 --> 00:56:04,000 Het wordt onderworpen aan een bestand, de waarde van de actie kenmerk, 1053 00:56:04,000 --> 00:56:07,000 was register0.php. 1054 00:56:07,000 --> 00:56:09,000 Laten we eens kijken wat er werkelijk hier gebeurt. 1055 00:56:09,000 --> 00:56:13,000 Laat me ga je gang en vul dit formulier in, laten we zeggen David, 1056 00:56:13,000 --> 00:56:16,000 mannelijke, Matthews, en dan zal ik zeggen registreren. 1057 00:56:16,000 --> 00:56:18,000 Laat me uit te zoomen en klik op registreren. 1058 00:56:18,000 --> 00:56:22,000 Oke, dus soort van nutteloos, maar laten we eens kijken wat er eigenlijk aan de hand. 1059 00:56:22,000 --> 00:56:26,000 Merk op dat de URL is veranderd te zijn register0.php. 1060 00:56:26,000 --> 00:56:34,000 Wat is merkwaardig afwezig in de URL, hoewel, ook al hebben we gewoon een vorm ingediend? 1061 00:56:34,000 --> 00:56:37,000 [Onverstaanbaar student reactie] 1062 00:56:37,000 --> 00:56:39,000 Oke, dat is gewoon Chrome zijn gebruiksvriendelijk deze dagen. 1063 00:56:39,000 --> 00:56:42,000 Dat is eigenlijk daar. Ze verbergen om ruimte te besparen. 1064 00:56:42,000 --> 00:56:44,000 Maar goede gedachte, goede gedachte. 1065 00:56:44,000 --> 00:56:46,000 Tegen het andere einde van de URL, hoewel, wat is wat? Ja. 1066 00:56:46,000 --> 00:56:48,000 [Student] De query string. 1067 00:56:48,000 --> 00:56:51,000 De query string, dus herinneren van onze eenvoudige Google-zoekopdracht voorbeelden. 1068 00:56:51,000 --> 00:56:54,000 Zodra ik op de submit knop de URL 1069 00:56:54,000 --> 00:57:00,000 nam me mee naar Google, maar toen was er? q = informatica of wat dan ook ik had getypt inch 1070 00:57:00,000 --> 00:57:04,000 Dat komt omdat we de get methode met de zoektocht voorbeeld. 1071 00:57:04,000 --> 00:57:06,000 >> Deze keer gebruiken we welke methode in plaats daarvan? 1072 00:57:06,000 --> 00:57:10,000 Bericht, en een van de onmiddellijke onderscheidingen 1073 00:57:10,000 --> 00:57:14,000 tussen GET en POST is die post zet geen invoer van de gebruiker in de URL. 1074 00:57:14,000 --> 00:57:16,000 Het verbergt het. Het stuurt het nog steeds. 1075 00:57:16,000 --> 00:57:19,000 In feite, wat we nu zien in de browser hier, zoals we zullen zien in een ogenblik 1076 00:57:19,000 --> 00:57:22,000 door te kijken naar register0, is Ik ben gewoon het zien van de inhoud 1077 00:57:22,000 --> 00:57:25,000 van de array die werden ingediend via de browser naar de server. 1078 00:57:25,000 --> 00:57:29,000 Maar de URL niet een? Hebben, heeft geen zoekwoorden 1079 00:57:29,000 --> 00:57:31,000 of waarden in, en waarom is dat? 1080 00:57:31,000 --> 00:57:35,000 Nou, post kunt u alsnog de gegevens van het formulier naar een server, 1081 00:57:35,000 --> 00:57:38,000 maar het niet het in de URL, dus wat voor soort informatie is na 1082 00:57:38,000 --> 00:57:41,000 bijzonder geschikt voor misschien als je vraagt ​​de gebruiker om 1083 00:57:41,000 --> 00:57:44,000 typen input naar een formulier? 1084 00:57:44,000 --> 00:57:48,000 Zoiets als een wachtwoord, zoiets als wat anders? 1085 00:57:48,000 --> 00:57:50,000 Credit card nummers. 1086 00:57:50,000 --> 00:57:53,000 Alles wat is licht gevoelig je waarschijnlijk niet wilt eindigen in de URL 1087 00:57:53,000 --> 00:57:56,000 al was het maar omdat het betekent dat je kamergenoot of familielid kan gewoon trol door 1088 00:57:56,000 --> 00:57:59,000 uw internet geschiedenis en dan letterlijk zien uw wachtwoorden, 1089 00:57:59,000 --> 00:58:02,000 letterlijk zien uw credit card nummers, omdat de meeste browsers 1090 00:58:02,000 --> 00:58:05,000 herinneren in de geschiedenis welke URL's die u geweest bent op, 1091 00:58:05,000 --> 00:58:09,000 dus als het alleen maar omdat dat zou een slecht idee zijn. 1092 00:58:09,000 --> 00:58:11,000 Met behulp van bericht verbergt dat detail van de gebruiker. 1093 00:58:11,000 --> 00:58:14,000 >> Ook, hoe doe je een foto uploaden naar Facebook? 1094 00:58:14,000 --> 00:58:17,000 Nou ja, de enige 2 mechanismen kan je echt gebruik maken, 1095 00:58:17,000 --> 00:58:21,000 ook al is er een aantal andere, meer mysterieuze degenen, is te krijgen en te plaatsen. 1096 00:58:21,000 --> 00:58:26,000 Hoe is het mogelijk een foto uploaden via een URL? 1097 00:58:26,000 --> 00:58:28,000 Je kunt eigenlijk doen. 1098 00:58:28,000 --> 00:58:30,000 U kunt een JPEG-of bitmap of GIF en je kunt het vertegenwoordigen in hexadecimale 1099 00:58:30,000 --> 00:58:32,000 of iets genaamd base 64. 1100 00:58:32,000 --> 00:58:35,000 In plaats van basis 16 die u gebruikt basis 64, die in wezen lijkt 1101 00:58:35,000 --> 00:58:38,000 ASCII-tekens, en je kunt eigenlijk een foto uploaden via een URL 1102 00:58:38,000 --> 00:58:41,000 na een vraagteken, maar er zijn over het algemeen maximale afmetingen. 1103 00:58:41,000 --> 00:58:44,000 De meeste browsers dwingen URL's niet meer dan 1.000 tekens, 1104 00:58:44,000 --> 00:58:47,000 misschien 2.000 tekens of iets dergelijks, dus je kunt niet uploaden 1105 00:58:47,000 --> 00:58:50,000 een 10 MB Facebook foto. 1106 00:58:50,000 --> 00:58:54,000 Voor dat je bericht te gebruiken als goed, dus voor nu te zet de parameters in de URL, 1107 00:58:54,000 --> 00:58:57,000 dat is leuk en nuttig soms, maar voor alles wat gevoelig of grote 1108 00:58:57,000 --> 00:58:59,000 post is de weg te gaan. 1109 00:58:59,000 --> 00:59:02,000 Wat is register0 eigenlijk aan het doen hier? 1110 00:59:02,000 --> 00:59:05,000 Nou, als ik open register0 aankondiging dat dit een super eenvoudige pagina, 1111 00:59:05,000 --> 00:59:09,000 maar het is het aantonen van de feit dat ik naast elkaar kunnen mengen, ten goede of ten kwade, 1112 00:59:09,000 --> 00:59:12,000 HTML met PHP. 1113 00:59:12,000 --> 00:59:15,000 Dit hele bestand, met uitzondering van de opmerkingen aan de top, zijn HTML 1114 00:59:15,000 --> 00:59:19,000 behalve voor deze jongen hier. 1115 00:59:19,000 --> 00:59:22,000 >> Merk op dat in het midden van mijn PHP-code, 1116 00:59:22,000 --> 00:59:26,000 in het midden van mijn HTML, ik heb soort van tijdelijk 1117 00:59:26,000 --> 00:59:28,000 ingevoerde PHP-modus. 1118 00:59:28,000 --> 00:59:31,000 Ik bel een speciale functie genaamd afdrukken r. 1119 00:59:31,000 --> 00:59:34,000 Het betekent recursieve af te drukken, en wat het doet is het recursief wordt afgedrukt 1120 00:59:34,000 --> 00:59:38,000 wat variabele die u het met de hand, puntkomma, afrit PHP-modus. 1121 00:59:38,000 --> 00:59:40,000 En de pre tag geeft u voor-geformateerde tekst, 1122 00:59:40,000 --> 00:59:43,000 mono ruimte tekst, zodat elke ruimte je eigenlijk zien. 1123 00:59:43,000 --> 00:59:46,000 Het verdwijnt niet. Wat is post? 1124 00:59:46,000 --> 00:59:48,000 Wel, wat is interessant en boeiend over PHP 1125 00:59:48,000 --> 00:59:52,000 is dat wanneer u een formulier met behulp van GET of POST 1126 00:59:52,000 --> 00:59:56,000 iets dat is aan u die door een browser 1127 00:59:56,000 --> 01:00:00,000 PHP zelf cijfers wat die sleutel waarde paren, 1128 01:00:00,000 --> 01:00:02,000 cijfers als er gelijk tekenen, cijfers of er een vraagteken. 1129 01:00:02,000 --> 01:00:07,000 Het doet al het harde werk voor u, en dan geeft je een associatieve array 1130 01:00:07,000 --> 01:00:10,000 met alles wat de gebruiker heeft ingevoerd in het formulier. 1131 01:00:10,000 --> 01:00:12,000 Nou, deze vorm heeft wat velden? 1132 01:00:12,000 --> 01:00:14,000 >> Het had 4 velden. 1133 01:00:14,000 --> 01:00:16,000 Een daarvan was een tekstveld met de naam naam. 1134 01:00:16,000 --> 01:00:18,000 Een van hen was een checkbox genaamd kapitein. 1135 01:00:18,000 --> 01:00:22,000 Een daarvan was een keuzerondje genaamd geslacht, 1136 01:00:22,000 --> 01:00:24,000 en een was een drop-down menu met de naam dorm, 1137 01:00:24,000 --> 01:00:27,000 dus opvalt als ik afdrukken recursief 1138 01:00:27,000 --> 01:00:29,000 de inhoud van deze speciale variabele. 1139 01:00:29,000 --> 01:00:34,000 Dit is een speciale globale variabele genaamd letterlijk $ _POST, in hoofdletters. 1140 01:00:34,000 --> 01:00:39,000 Dit is een speciale globale variabele dat PHP alleen creëert voor jou 1141 01:00:39,000 --> 01:00:42,000 en handen aan u, zodat u kunt alles 1142 01:00:42,000 --> 01:00:45,000 De verzonden via een formulier door een gebruiker. 1143 01:00:45,000 --> 01:00:48,000 En door te bellen druk r op het-zou je niet doen in een normale toepassing. 1144 01:00:48,000 --> 01:00:50,000 We doen dit aan de binnenkant van deze variabele te zien, 1145 01:00:50,000 --> 01:00:53,000 en wat er in het, goed, 4 toetsen, 1146 01:00:53,000 --> 01:00:56,000 4 http parameters, om zo te zeggen, 1147 01:00:56,000 --> 01:00:59,000 naam, kapitein, geslacht, slaapzaal, en dan de waarden die de gebruiker 1148 01:00:59,000 --> 01:01:01,000 typen met een uitzondering. 1149 01:01:01,000 --> 01:01:03,000 Ik heb type D-A-V-I-D. 1150 01:01:03,000 --> 01:01:05,000 Ik controleerde de doos, echter, voor mannelijke, die blijkbaar een waarde ingediend 1151 01:01:05,000 --> 01:01:07,000 van slechts m te beknopt. 1152 01:01:07,000 --> 01:01:10,000 >> Toen ik Matthews gekozen, dat is de waarde die werd geselecteerd, 1153 01:01:10,000 --> 01:01:12,000 en dit is een beetje dom, maar het is de conventie. 1154 01:01:12,000 --> 01:01:17,000 Toen ik de doos, een waarde van over, gecontroleerd "op," werd ingediend voor het selectievakje. 1155 01:01:17,000 --> 01:01:21,000 Als ik niet had gecontroleerd, zou geen enkele waarde zijn verzonden. 1156 01:01:21,000 --> 01:01:26,000 Dit is alleen het geven van ons inzicht in wat er in deze speciale globale variabele, 1157 01:01:26,000 --> 01:01:29,000 en het is zo bijzonder dat het is wel een super globale variabele. 1158 01:01:29,000 --> 01:01:33,000 Het bestaat overal voor u in uw code, zodat je daadwerkelijk kunt openen. 1159 01:01:33,000 --> 01:01:36,000 Dit is niet zo dwingend, dus laten we eigenlijk de super wereldwijde gebruik 1160 01:01:36,000 --> 01:01:38,000 en eigenlijk proberen om iemand te registreren. 1161 01:01:38,000 --> 01:01:41,000 In froshims1 Ik ga een verandering te maken. 1162 01:01:41,000 --> 01:01:44,000 Ik verander de actie te zijn register1.php, 1163 01:01:44,000 --> 01:01:46,000 en ik doe een ander ding. 1164 01:01:46,000 --> 01:01:48,000 Ik was een beetje in verlegenheid gebracht door de kwaliteit van mijn webpagina daar. 1165 01:01:48,000 --> 01:01:52,000 Het is vrij afschuwelijk, eerlijk gezegd, zo blijkt 1166 01:01:52,000 --> 01:01:56,000 die u kunt heel gemakkelijk te gebruiken op het web 1167 01:01:56,000 --> 01:01:59,000 andere mensen JavaScript-code, andere mensen CSS 1168 01:01:59,000 --> 01:02:02,000 dat ze geschreven en open-source en beschikbaar gemaakt als een bibliotheek, 1169 01:02:02,000 --> 01:02:06,000 zo te zeggen, en bijvoorbeeld, hier ben ik met behulp van een vrij beschikbaar bibliotheek, 1170 01:02:06,000 --> 01:02:08,000 een bos van code die iemand anders heeft geschreven. 1171 01:02:08,000 --> 01:02:11,000 >> Twitter is er gebeurd met deze code te schrijven, en het heet de bootstrap bibliotheek, 1172 01:02:11,000 --> 01:02:15,000 en het is gewoon een stelletje van CSS stylesheets, een bos van. css-bestanden 1173 01:02:15,000 --> 01:02:19,000 dat iemand anders heeft geschreven en bedacht hoe om alles mooi en vrij 1174 01:02:19,000 --> 01:02:22,000 zodat mensen zoals wij kunnen een beetje minder zorgen te maken over esthetiek en de focus veel meer 1175 01:02:22,000 --> 01:02:24,000 de logica en de werkelijke programmering. 1176 01:02:24,000 --> 01:02:30,000 Door deze te koppelen met dat label, dat is hetzelfde label Ik herinner me gebruikt voor styles3.css eerder, 1177 01:02:30,000 --> 01:02:34,000 Ik heb nu toegang tot een bestand met de naam bootstrap.min.css. 1178 01:02:34,000 --> 01:02:37,000 Min betekent gewoon dat ze het minified en ze hebben gekregen ontdoen van alle witruimte enzovoort 1179 01:02:37,000 --> 01:02:40,000 gewoon om ervoor te zorgen dat ze niet sturen me meer bytes dan ik eigenlijk nodig hebben. 1180 01:02:40,000 --> 01:02:45,000 Maar daar is een gehele bos van CSS, dus als ik nu open versie 1 van Frosh IM 1181 01:02:45,000 --> 01:02:49,000 merken dat mijn dossier is zeker mooier. 1182 01:02:49,000 --> 01:02:54,000 Nu is het nog alleen zwart en wit, maar merken dat door gewoon met behulp van hun style sheet 1183 01:02:54,000 --> 01:02:58,000 en het gebruik van bepaalde functies van het op mijn formulier dat is niet geweldig, 1184 01:02:58,000 --> 01:03:01,000 maar het is zeker schoner dan het vroeger was, en de projector doet het niet rechtvaardigheid. 1185 01:03:01,000 --> 01:03:05,000 Er is weinig grijze lijnen rond de knoppen en rond het tekstveld hier, 1186 01:03:05,000 --> 01:03:07,000 maar het is zeker schoner dan voorheen. 1187 01:03:07,000 --> 01:03:09,000 >> Nu, in alle eerlijkheid, ik moet mijn opmaak een beetje veranderen. 1188 01:03:09,000 --> 01:03:12,000 Dit is versie 1, en merk dat ik een paar nieuwe tags gebruikt, 1189 01:03:12,000 --> 01:03:17,000 en eerlijk gezegd, ik had geen idee hoe dit te doen totdat ik lees de documentatie 1190 01:03:17,000 --> 01:03:20,000 voor bootstrap Twitter-bibliotheek, en ze vertelde me dat als je wilt onze bibliotheek te gebruiken 1191 01:03:20,000 --> 01:03:23,000 gebruik maken van een fieldset element in uw formulier, 1192 01:03:23,000 --> 01:03:27,000 zet het woord dat u wilt naast een veld binnenkant van een label label weer te geven, 1193 01:03:27,000 --> 01:03:30,000 Vervolgens geef je een naam invoeren, net als voorheen, 1194 01:03:30,000 --> 01:03:34,000 en vervolgens voor de checkbox, niet alleen wikkel het in een label element, 1195 01:03:34,000 --> 01:03:36,000 u gebruik maken van zoiets als een klasse, dus we hebben niet eerder gezien, 1196 01:03:36,000 --> 01:03:39,000 maar je zult zien in een van PSET 7's shorts. 1197 01:03:39,000 --> 01:03:43,000 Een klasse in CSS kunt u iets zeer vergelijkbaar met de ID, 1198 01:03:43,000 --> 01:03:46,000 maar toen we hadden een ID met de #-symbool 1199 01:03:46,000 --> 01:03:48,000 dat was voor een en slechts een element. 1200 01:03:48,000 --> 01:03:51,000 Wat is er leuk over een klasse is dat meerdere elementen kunnen hebben dezelfde klasse 1201 01:03:51,000 --> 01:03:54,000 of dezelfde CSS-dingen toegepast. 1202 01:03:54,000 --> 01:03:57,000 >> Maar nogmaals, is meer op die op de korte en de rest van deze gewoon kopiëren en plakken 1203 01:03:57,000 --> 01:04:00,000 van hun documentatie waar ik een label toegevoegd hier en daar. 1204 01:04:00,000 --> 01:04:03,000 En aan het eind, want ik heb onder meer de link tag aan de top, 1205 01:04:03,000 --> 01:04:06,000 alles ziet er mooier automatisch 1206 01:04:06,000 --> 01:04:10,000 door gewoon te hebben opgemaakt mijn pagina op een manier die 1207 01:04:10,000 --> 01:04:12,000 Twitter verwacht, en er zijn zoveel verschillende manieren 1208 01:04:12,000 --> 01:04:14,000 dit te doen, en dit is inderdaad zeer geschikt. 1209 01:04:14,000 --> 01:04:17,000 Op dit punt in het semester, zoals u zult zien in spec PSET 7's, 1210 01:04:17,000 --> 01:04:20,000 Googlen rond, het lezen op bibliotheken, met behulp van andere mensen CSS 1211 01:04:20,000 --> 01:04:23,000 en JavaScript om bijkomende problemen op te lossen 1212 01:04:23,000 --> 01:04:26,000 het probleem set zelf zeker gestimuleerd en is de manier 1213 01:04:26,000 --> 01:04:29,000 het web is gebouwd deze dagen, door op te staan ​​op andermans schouders 1214 01:04:29,000 --> 01:04:32,000 zodat je echt kunt richten op de nieuwe en interessante problemen. 1215 01:04:32,000 --> 01:04:34,000 Maar laten we ons nu richten op, opnieuw, de logica. 1216 01:04:34,000 --> 01:04:38,000 >> Dat was een snelle omweg op esthetiek alleen om te laten zien in welke richting je kunt gaan. 1217 01:04:38,000 --> 01:04:40,000 Ik ga terug naar de lelijker een voor nu, alleen maar omdat 1218 01:04:40,000 --> 01:04:44,000 er is geen afleiding met Twitter spul, en laat me gaan en open te stellen 1219 01:04:44,000 --> 01:04:51,000 froshims2, die weer,, verschilt alleen in de actie, register2.php, 1220 01:04:51,000 --> 01:04:55,000 en laten we een kijkje nemen op wat het effect is hier. 1221 01:04:55,000 --> 01:04:57,000 Laat me ga je gang en typ in David. 1222 01:04:57,000 --> 01:04:59,000 Ik zal niet kapitein deze keer. 1223 01:04:59,000 --> 01:05:01,000 Ik zeg man, Matthews, register. 1224 01:05:01,000 --> 01:05:05,000 Verdomme. Oke, dat is een schroef-up van mijn kant. 1225 01:05:05,000 --> 01:05:07,000 Stand-by. 1226 01:05:07,000 --> 01:05:17,000 Register2, lijn 22, als leeg of-me. 1227 01:05:17,000 --> 01:05:19,000 Laten we opnieuw te laden. 1228 01:05:19,000 --> 01:05:22,000 Oke, op dit formulier wat er net gebeurd? 1229 01:05:22,000 --> 01:05:25,000 Ik typte in David, gecontroleerd mannelijke, klikte Matthews, register. 1230 01:05:25,000 --> 01:05:27,000 U bent geregistreerd. (Nou ja, niet echt.) 1231 01:05:27,000 --> 01:05:32,000 Dit is duidelijk een stap verder dan alleen het afdrukken van de inhoud van sommige variabele, 1232 01:05:32,000 --> 01:05:34,000 maar wat is dit bestand eigenlijk aan het doen? 1233 01:05:34,000 --> 01:05:37,000 In register2.php 1234 01:05:37,000 --> 01:05:40,000 merk dat ik sommige nieuwe code te hebben. 1235 01:05:40,000 --> 01:05:44,000 Binnenkant van mijn lichaam tag heb ik in wezen een if anders te bouwen, 1236 01:05:44,000 --> 01:05:47,000 maar omdat ik co-mingling dit met enkele HTML 1237 01:05:47,000 --> 01:05:51,000 Ik moet in-en uitstappen PHP-modus heen en weer, dus laten we eens kijken wat ik doe. 1238 01:05:51,000 --> 01:05:55,000 >> In de eerste regel hier wat ik zeg als dit het geval is 1239 01:05:55,000 --> 01:06:00,000 dat de post super wereldwijde leeg is voor de sleutel van de naam, 1240 01:06:00,000 --> 01:06:04,000 dus met andere woorden, als de gebruiker niet geef me een waarde voor naam in de vorm, 1241 01:06:04,000 --> 01:06:07,000 dan leeg gaat om terug te keren waar, omdat de waarde leeg is. 1242 01:06:07,000 --> 01:06:11,000 Or-let op de verticale balken-of geslacht is leeg 1243 01:06:11,000 --> 01:06:15,000 binnenkant van deze speciale super global, die wederom geeft de inhoud van de vorm, 1244 01:06:15,000 --> 01:06:19,000 of de slaapzaal leeg is, dan ga ik om verder te gaan en op de gebruiker schreeuwen. 1245 01:06:19,000 --> 01:06:22,000 Hoe? Nou, let op ik ga zeggen moet u uw naam, geslacht, en slaapzaal bieden. 1246 01:06:22,000 --> 01:06:24,000 Laten we eigenlijk die fout veroorzaken. 1247 01:06:24,000 --> 01:06:27,000 Laat me terug naar mijn vorm. Laat me opnieuw om het te wissen. 1248 01:06:27,000 --> 01:06:30,000 En ik ga gewoon om hen David, en ze hoeven niet te weten waar ik woon. 1249 01:06:30,000 --> 01:06:33,000 Registreren. Blijkbaar heb ik hoef te vertellen waar ik woon. 1250 01:06:33,000 --> 01:06:35,000 U moet uw naam, geslacht en slaapzaal. Ga terug. 1251 01:06:35,000 --> 01:06:39,000 >> En ik kon klikken om terug te gaan naar die vorm, maar waarom is dat? 1252 01:06:39,000 --> 01:06:43,000 Nou, in dat geval naam was niet leeg, maar geslacht was, en slaapzaal was, 1253 01:06:43,000 --> 01:06:47,000 dus dit hele expressie geëvalueerd om waar te zijn, en ook al is de syntax is een beetje nieuw, 1254 01:06:47,000 --> 01:06:51,000 weer, gaan we PHP-modus, bekend als verklaring, 1255 01:06:51,000 --> 01:06:54,000 maar het nieuwe gedeelte is vaak precies deze dubbele punt, en ik had verknald door het weglaten van een haakje 1256 01:06:54,000 --> 01:06:57,000 per ongeluk, maar let op de dikke darm, en dat betekent 1257 01:06:57,000 --> 01:07:00,000 ook al zijn we het verlaten van PHP-modus alles 1258 01:07:00,000 --> 01:07:03,000 die volgt moet letterlijk worden spugen naar de browser 1259 01:07:03,000 --> 01:07:07,000 totdat u een ander blok te zien, zoals wij hier doen, 1260 01:07:07,000 --> 01:07:10,000 In dat geval moet u in plaats daarvan spugen dit uit 1261 01:07:10,000 --> 01:07:13,000 totdat u de endif zien, dus een iets nieuwe syntaxis 1262 01:07:13,000 --> 01:07:16,000 die me in staat stelt om te schakelen tussen HTML en PHP. 1263 01:07:16,000 --> 01:07:19,000 We kunnen dit opruimen uiteindelijk, maar voor nu, 1264 01:07:19,000 --> 01:07:22,000 het is een soort van een dwingende manier van foutcontrole het formulier. 1265 01:07:22,000 --> 01:07:25,000 >> Nu, ik zeg dat je echt niet geregistreerd want natuurlijk hebben we niets anders gedaan dan de gegevens, 1266 01:07:25,000 --> 01:07:28,000 dus laten we eigenlijk proberen om iets leuks te doen. 1267 01:07:28,000 --> 01:07:33,000 In froshims3 het enige verschil is dat ik ga te onderwerpen aan register3, 1268 01:07:33,000 --> 01:07:35,000 zodat de HTML is hetzelfde. 1269 01:07:35,000 --> 01:07:38,000 In register3 merken. 1270 01:07:38,000 --> 01:07:40,000 Deze is een soort van sexy. 1271 01:07:40,000 --> 01:07:44,000 Op de top ben ik een require statement gebruikt, dus dit is net als # include. 1272 01:07:44,000 --> 01:07:46,000 Deze keer is het niet stdio.h of iets dergelijks. 1273 01:07:46,000 --> 01:07:50,000 Het is een PHP bibliotheek, en deze heet PHPMailer. 1274 01:07:50,000 --> 01:07:53,000 Hoe wist ik precies deze tekenreeks tussen aanhalingstekens zijn? 1275 01:07:53,000 --> 01:07:56,000 Ik las het in de documentatie, dus toen vertelden ze me dit zet aan de bovenkant van het bestand 1276 01:07:56,000 --> 01:08:00,000 als je wilt een speciale bibliotheek genaamd PHPMailer dat doet wat het zegt te gebruiken. 1277 01:08:00,000 --> 01:08:03,000 Hiermee kunt u e-mail verzenden via PHP. 1278 01:08:03,000 --> 01:08:05,000 Laten we nu naar beneden scrollen verder. 1279 01:08:05,000 --> 01:08:08,000 >> Merk om te beginnen ben ik in PHP mode de hele tijd, 1280 01:08:08,000 --> 01:08:11,000 dus nu hier op te merken naar beneden na het importeren van die bibliotheek, 1281 01:08:11,000 --> 01:08:13,000  om zo te zeggen, ik ben een aantal sanity checks doen. 1282 01:08:13,000 --> 01:08:16,000 Als het het geval is die naam niet leeg is 1283 01:08:16,000 --> 01:08:19,000 en geslacht is niet leeg-merkt dat de uitroeptekens- 1284 01:08:19,000 --> 01:08:24,000 en dorm niet leeg is, dan is de gebruiker heeft logischerwijs het formulier ingevuld, in ieder geval genoeg. 1285 01:08:24,000 --> 01:08:28,000 Kan me niet schelen als ze kapitein of niet. Ik moet alleen hun naam, geslacht en slaapzaal. 1286 01:08:28,000 --> 01:08:31,000 Als ze hebben ingevuld die uit, zodat geen van deze velden zijn leeg 1287 01:08:31,000 --> 01:08:33,000 Dit is iets nieuwe syntax. 1288 01:08:33,000 --> 01:08:36,000 PHP, als een terzijde, is een object georiënteerde programmeertaal 1289 01:08:36,000 --> 01:08:39,000 die sommige van jullie misschien herinnert van APCS of iets dergelijks. 1290 01:08:39,000 --> 01:08:42,000 Voor nu, als onbekende, weet alleen dat deze bibliotheek gebruiken 1291 01:08:42,000 --> 01:08:45,000 moet je een regel code als volgt uit met een nieuw trefwoord te schrijven, 1292 01:08:45,000 --> 01:08:47,000 letterlijk een nieuw zoekwoord genaamd nieuw. 1293 01:08:47,000 --> 01:08:50,000 Maar buiten dat, hebben we een aantal bekende syntax. 1294 01:08:50,000 --> 01:08:54,000 Het is een pijl operator, die vergelijkbaar is met wat we gebruikt structs in de context van pointers. 1295 01:08:54,000 --> 01:08:57,000 Voor vandaag PHP heeft geen pointers, 1296 01:08:57,000 --> 01:09:01,000 maar weet voor nu dat de binnenkant van de e-mail variabele 1297 01:09:01,000 --> 01:09:05,000 is in wezen een soort pointer naar een speciale bibliotheek 1298 01:09:05,000 --> 01:09:08,000 dat iemand anders heeft geschreven, en als ik wil specifieke functionaliteit voor toegang 1299 01:09:08,000 --> 01:09:12,000 binnenkant van die bibliotheek ik, net als in C, gebruikt u de pijl-operator, 1300 01:09:12,000 --> 01:09:14,000 ook al is deze niet echt pointers. 1301 01:09:14,000 --> 01:09:16,000 Het is een soort van eigen versie van PHP daarvan. 1302 01:09:16,000 --> 01:09:20,000 Dit betekent dat je in de bibliotheek en bel de IsSMTP functie. 1303 01:09:20,000 --> 01:09:23,000 SMTP, terugroepen, uit onze Warriors of the Net verwijst e-mail naar, 1304 01:09:23,000 --> 01:09:28,000 en dat betekent gewoon gebruik maken van een e-mailserver voor deze Frosh IM registratie. 1305 01:09:28,000 --> 01:09:30,000 >> Wat gastheer wil ik gebruiken? 1306 01:09:30,000 --> 01:09:34,000 Nou, Harvard, als je op Google rond, heeft een e-mail server met de naam smtp.fas.harvard.edu. 1307 01:09:34,000 --> 01:09:37,000 Als je meespeelt thuis of je woont op een Comcast-netwerk 1308 01:09:37,000 --> 01:09:40,000 het zou iets als smtp.comcast.net zijn. 1309 01:09:40,000 --> 01:09:43,000 Het hangt helemaal af van waar je woont en wie je ISP is. 1310 01:09:43,000 --> 01:09:47,000 Daarna ga ik mijn set van adres willekeurig te zijn jharvard@cs50.net. 1311 01:09:47,000 --> 01:09:52,000 Ik vervolgens naar de op te pakken te zijn jharvard@cs50.net. 1312 01:09:52,000 --> 01:09:55,000 De enige manier waarop ik wist dat deze functies werden genoemd setFrom en AddAddress 1313 01:09:55,000 --> 01:09:57,000 is, nogmaals, ik lees de documentatie. 1314 01:09:57,000 --> 01:09:59,000 Dit is niet soort van magische wijze bekend aan alle programmeurs. 1315 01:09:59,000 --> 01:10:02,000 Dan stel ik een voorbehoud van "registratie". 1316 01:10:02,000 --> 01:10:07,000 En nu deze lijn is een beetje lelijk, want wat doet de puntoperator betekenen in PHP? 1317 01:10:07,000 --> 01:10:09,000 Iedereen weet? 1318 01:10:09,000 --> 01:10:11,000 Aaneenschakelen. 1319 01:10:11,000 --> 01:10:14,000 In C is het een pijn in de nek om samen samenvoegen 2 strings. 1320 01:10:14,000 --> 01:10:17,000 Je hebt te maken met malloc of realloc of al dat spul 1321 01:10:17,000 --> 01:10:20,000 alleen de lengte van een string te verlengen. 1322 01:10:20,000 --> 01:10:22,000 In PHP, in JavaScript en andere talen 1323 01:10:22,000 --> 01:10:24,000 U kunt dit meestal met een enkel karakter. 1324 01:10:24,000 --> 01:10:28,000 In dit geval, punt betekent hier nemen deze string 1325 01:10:28,000 --> 01:10:30,000 en toevoegen aan het op deze string. 1326 01:10:30,000 --> 01:10:32,000 >> Oh, en door de manier, toe te voegen aan het deze string, 1327 01:10:32,000 --> 01:10:34,000 die toevallig ook een variabele binnenkant van die super globaal. 1328 01:10:34,000 --> 01:10:37,000 Dan toevoegen aan het een nieuwe lijn, zodat al deze punten alleen maar betekenen 1329 01:10:37,000 --> 01:10:39,000 blijven maken van een groter en groter en groter string, 1330 01:10:39,000 --> 01:10:43,000 en je hoeft niet te allen zorg over malloc of iets dergelijks in een taal als deze, 1331 01:10:43,000 --> 01:10:46,000 en er zijn andere manieren om dit te doen, maar dit is een van de snelste 1332 01:10:46,000 --> 01:10:48,000 manieren om het lay-out. 1333 01:10:48,000 --> 01:10:50,000 Wat is dit nou? 1334 01:10:50,000 --> 01:10:55,000 Het is het creëren van een e-mail lichaam dat gaat Naam zeggen: Captain: Geslacht: Dorm: 1335 01:10:55,000 --> 01:10:58,000 allemaal op aparte lijnen, en dan ten slotte, 1336 01:10:58,000 --> 01:11:00,000 een regel code, en ik ga om dit te negeren voor nu. 1337 01:11:00,000 --> 01:11:02,000 Als == false betekent gewoon als er iets mis ging, 1338 01:11:02,000 --> 01:11:04,000 maar de magie gebeurt hier. 1339 01:11:04,000 --> 01:11:08,000 Stuur dan een mail betekent stuur deze e-mail. 1340 01:11:08,000 --> 01:11:10,000 Laten we eens kijken wat het resultaat is. 1341 01:11:10,000 --> 01:11:13,000 Aan de onderkant van het bestand, merkt het gaat te zeggen dat je echt geregistreerd 1342 01:11:13,000 --> 01:11:15,000 als ik zo ver. 1343 01:11:15,000 --> 01:11:18,000 Indien echter de gebruiker schroeven up, merken dat we dit begonnen 1344 01:11:18,000 --> 01:11:21,000 als voorwaarde hier, als het niet leeg is en niet leeg 1345 01:11:21,000 --> 01:11:24,000 en niet leeg sturen wij de e-mail. 1346 01:11:24,000 --> 01:11:27,000 Anders gaan we deze regel code te sturen, 1347 01:11:27,000 --> 01:11:30,000 die gaat naar het effect hebben, zoals u zult zien in PSET 7, de omschakeling gebruiker 1348 01:11:30,000 --> 01:11:35,000 terug naar waar ze vandaan kwamen, froshims3.php. 1349 01:11:35,000 --> 01:11:38,000 >> Vingers gekruist, anders gaat dit de meest teleurstellende demo vandaag. 1350 01:11:38,000 --> 01:11:40,000 Daar gaan we. 1351 01:11:40,000 --> 01:11:42,000 Laat me open mijn e-mail inbox voor jharvard in Gmail. 1352 01:11:42,000 --> 01:11:44,000 Geen e-mail op dit moment. Oke. 1353 01:11:44,000 --> 01:11:53,000 Laat me open te stellen froshims3, dat is de derde en laatste voorbeeld kijken we naar hier. 1354 01:11:53,000 --> 01:11:55,000 Oke, hier gaan we. 1355 01:11:55,000 --> 01:12:00,000 Nate, zal hij kapitein, man, van, zeg, Apley. 1356 01:12:00,000 --> 01:12:04,000 Registreren. Oke, ben je echt ingeschreven. 1357 01:12:04,000 --> 01:12:07,000 Nu, als ik ga naar mijn e-mail, oh, mijn God. 1358 01:12:07,000 --> 01:12:09,000 Ik heb zojuist dynamisch een e-mail op het web. 1359 01:12:09,000 --> 01:12:11,000 >> Laten we vertrekken op dat briefje. 1360 01:12:11,000 --> 01:12:16,000 Een video is binnenkort voor de lezing dat we gemist. Zie je volgende week. 1361 01:12:16,000 --> 01:12:18,000 [CS50.TV]