1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Uge 8] 2 00:00:02,000 --> 00:00:04,000 [David J Malan] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Dette er CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,000 >> Velkommen tilbage. 5 00:00:09,000 --> 00:00:11,000 Dette er CS50, og dette er begyndelsen af ​​uge 8. 6 00:00:11,000 --> 00:00:14,000 Et par muligheder i denne uge, 7 00:00:14,000 --> 00:00:17,000 blandt dem denne snak her, hvor nogle fødevarer vil blive serveret. 8 00:00:17,000 --> 00:00:20,000 For flere detaljer se de dias, der er online. 9 00:00:20,000 --> 00:00:24,000 Og også en anden begivenhed i denne uge af vores egen Thomas Carriero. 10 00:00:24,000 --> 00:00:27,000 Han er en af ​​CS50 s tidligere leder undervisning stipendiater, der nu er ved Dropbox, 11 00:00:27,000 --> 00:00:29,000 og han er den fyr, der videostikket os med det ved du hvad, 12 00:00:29,000 --> 00:00:36,000 så hvis du vil have mere af det hoved til deres tale i eftermiddag for Dropbox og mere. 13 00:00:36,000 --> 00:00:38,000 CS50 frokost er denne fredag. 14 00:00:38,000 --> 00:00:41,000 Gør slutte sig til os, hvis du er i stand til, 1:15, som sædvanlig, i Fire and Ice. 15 00:00:41,000 --> 00:00:45,000 >> Og nu har vi dykke ned i noget, der hedder Seminarer. 16 00:00:45,000 --> 00:00:49,000 Vores CS50 Seminarer, tilbagekaldelser, er disse valgfrie klasser ledet af undervisningen stipendiater 17 00:00:49,000 --> 00:00:51,000 og kursus assistenter og venner af kurset, 18 00:00:51,000 --> 00:00:55,000 folk fra en gruppe på campus kaldet ABCD, som er en gruppe af 19 00:00:55,000 --> 00:00:58,000 technophiles på campus, samt en gruppe kaldet HCS, 20 00:00:58,000 --> 00:01:02,000 Harvard Computer Society, undergraduates der er ligeledes interesseret i computing. 21 00:01:02,000 --> 00:01:08,000 Dette års liste over seminarer omfatter seminarer om Android og iOS og JavaScript 22 00:01:08,000 --> 00:01:13,000 og PHP, Unix, Vim, og mere, så indse, at disse seminarer kommer op. 23 00:01:13,000 --> 00:01:16,000 Hvis du gerne vil RSVP for nogen af ​​dem hoved til den pågældende webadresse dér. 24 00:01:16,000 --> 00:01:20,000 Vi vil derefter sende på kursets hjemmeside, hvornår og hvor, når de er afsluttet. 25 00:01:20,000 --> 00:01:26,000 Men ved, at der er 5 års forbrug af tidligere seminarer er tilgængelige online, 26 00:01:26,000 --> 00:01:29,000 hvoraf mange er stadig meget strøm i forhold til teknologier, du måske 27 00:01:29,000 --> 00:01:36,000 ønsker at spille med for dine endelige projekter, så dyr der for nogle tilgængelige videoer deraf. 28 00:01:36,000 --> 00:01:39,000 >> CSS, de af jer der er bekendt med CSS allerede, 29 00:01:39,000 --> 00:01:42,000 hvad er det i en nøddeskal? 30 00:01:42,000 --> 00:01:45,000 Hvad er CSS? 31 00:01:45,000 --> 00:01:48,000 Det er cascading style sheets, og hvad betyder det? 32 00:01:48,000 --> 00:01:53,000 Hvad betyder det gøre for os, CSS? 33 00:01:53,000 --> 00:01:57,000 Okay, lad os varme op med en nemmere, HTML, Hypertext Markup Language. 34 00:01:57,000 --> 00:02:01,000 Hvad betyder det gøre for os? 35 00:02:01,000 --> 00:02:04,000 Nogen overhovedet? 36 00:02:04,000 --> 00:02:07,000 Det bliver virkelig akavet at stille disse spørgsmål. 37 00:02:07,000 --> 00:02:11,000 HTML, Hypertext Markup Language. 38 00:02:11,000 --> 00:02:14,000 Ja? Nej? 39 00:02:14,000 --> 00:02:17,000 [Uhørlig student svar] 40 00:02:17,000 --> 00:02:20,000 Okay, godt, det giver os mulighed for at markere tekst skal vises i en webbrowser. 41 00:02:20,000 --> 00:02:22,000 Det er ikke et programmeringssprog. 42 00:02:22,000 --> 00:02:25,000 Det er faktisk et kodesprog, hvilket betyder, at det instruerer browseren, hvordan skal vises 43 00:02:25,000 --> 00:02:28,000 information, så den simpleste inkarnation af dette, som vi har set 44 00:02:28,000 --> 00:02:32,000 er noget super simpelt lignende boldfacing, åben beslag B lukket beslag siger 45 00:02:32,000 --> 00:02:36,000 gøre denne tekst fed, og det er faktisk bare en af ​​mange måder 46 00:02:36,000 --> 00:02:39,000 hvor vi kan gøre det, og ja, i disse dage en bedre tilgang 47 00:02:39,000 --> 00:02:42,000 til stilisering din webside, hvilket gør tingene fed og kursiv 48 00:02:42,000 --> 00:02:47,000 og centreret og begrundet og lignende, er ikke gjort via HTML-tags alene 49 00:02:47,000 --> 00:02:51,000 men snarere med en teknik kaldet CSS, cascading style sheets. 50 00:02:51,000 --> 00:02:53,000 Det er et sprog i sig selv. 51 00:02:53,000 --> 00:02:55,000 Det er også ikke et programmeringssprog, men- 52 00:02:55,000 --> 00:02:58,000 alle, dette er Dan, der holder slutter sig til os i dag. 53 00:02:58,000 --> 00:03:01,000 Nogle tekniske vanskeligheder. Ikke et problem. 54 00:03:01,000 --> 00:03:04,000 >> CSS giver os mulighed for at stilisere en side 55 00:03:04,000 --> 00:03:07,000 ved at sætte det, der kaldes egenskaber, så lad os tage et kig på denne 56 00:03:07,000 --> 00:03:09,000 ved hjælp af nogle grundlæggende eksempler. 57 00:03:09,000 --> 00:03:12,000 Lad mig gå ind i apparatet i dag. 58 00:03:12,000 --> 00:03:15,000 Jeg har kilden 8 Mandag mappe i her, 59 00:03:15,000 --> 00:03:18,000 og jeg har tænkt mig at gå ind i en mappe kaldet CSS, hvor vi har en hel masse 60 00:03:18,000 --> 00:03:21,000 af filer, der venter for os lige her, 61 00:03:21,000 --> 00:03:27,000 og i denne folder har vi for eksempel search0.html fra sidste gang. 62 00:03:27,000 --> 00:03:31,000 Nu mindes med search0 vi tilbage på denne note 63 00:03:31,000 --> 00:03:35,000 ved slags implementering af Google eller egentlig bare den forreste ende for det en uges tid siden, 64 00:03:35,000 --> 00:03:38,000 og bemærk, at vi havde nogle nye mærker der. 65 00:03:38,000 --> 00:03:41,000 Vi havde h1 for en stor, fed overskrift, 66 00:03:41,000 --> 00:03:45,000 form, hvilket tillod os at rent faktisk har en HTML-formular for bruger input. 67 00:03:45,000 --> 00:03:48,000 Action, hvad var betydningen af ​​en handling attribut 68 00:03:48,000 --> 00:03:52,000 på HTML formular tag? 69 00:03:52,000 --> 00:03:58,000 Hvad var meningen med dette, action? 70 00:03:58,000 --> 00:04:00,000 Jeg vil bare gøre det i dag. 71 00:04:00,000 --> 00:04:03,000 Action er den destination, hvor formen vil blive forelagt. 72 00:04:03,000 --> 00:04:07,000 Den omstændighed, at der siger action = "google.com / search" 73 00:04:07,000 --> 00:04:10,000 betyder, at når brugeren klikker på send-knappen eller tilsvarende 74 00:04:10,000 --> 00:04:14,000 uanset form felter de udfyldte vil blive sendt ikke til vores server 75 00:04:14,000 --> 00:04:17,000 eller vores apparat, men snarere at den specifikke webadresse på Google. 76 00:04:17,000 --> 00:04:19,000 Og den metode, den kommer til at bruge, kaldes får, 77 00:04:19,000 --> 00:04:25,000 og få, for nu, bare er en teknik til at videregive oplysninger sammen til en webserver 78 00:04:25,000 --> 00:04:29,000 ved hjælp af webadressen, så lad os tage et hurtigt kig tilbage på hvordan det virker. 79 00:04:29,000 --> 00:04:31,000 >> Bemærk, at der er et input, hvis navn er q 80 00:04:31,000 --> 00:04:35,000 hvis type er tekst og derefter en anden indgang af typen indgive 81 00:04:35,000 --> 00:04:39,000 hvis værdi er CS50 Søg, og ja, hvis vi åbner op denne fil her, 82 00:04:39,000 --> 00:04:42,000 search0.html, det er en super enkel form, 83 00:04:42,000 --> 00:04:45,000 og hvis jeg søger efter noget som datalogi 84 00:04:45,000 --> 00:04:50,000 og derefter ramte ind eller klik på CS50 Søg 85 00:04:50,000 --> 00:04:53,000 bemærke, at det, der sker, er ud over at komme til Google 86 00:04:53,000 --> 00:04:56,000 Jeg har specifikt endte på denne webadresse i toppen, 87 00:04:56,000 --> 00:05:01,000 google.com / search? q = computer + videnskab, 88 00:05:01,000 --> 00:05:04,000 og datalogi er naturligvis, hvad jeg har skrevet i. 89 00:05:04,000 --> 00:05:06,000 Den + betyder blot, det er, hvor et mellemrum karakter var, 90 00:05:06,000 --> 00:05:10,000 og det er gjort af browseren blot for at sikre, at der ikke er nogen 91 00:05:10,000 --> 00:05:13,000 forvirring og hvid plads i den faktiske webadresse. 92 00:05:13,000 --> 00:05:15,000 Og derefter q, selvfølgelig, er parameteren navn. 93 00:05:15,000 --> 00:05:20,000 Vi har ikke set, hvordan vi, programmør, kan faktisk få adgang q endnu. 94 00:05:20,000 --> 00:05:23,000 Vi kan antage, at Google ved, hvad at gøre med dette her, 95 00:05:23,000 --> 00:05:25,000 men vi får der i god tid i dag. 96 00:05:25,000 --> 00:05:30,000 >> Men lad mig tage et kig i stedet på search1.html, 97 00:05:30,000 --> 00:05:34,000 der ser lidt anderledes, fordi jeg besluttede, at denne form her var bare en lille smule halt. 98 00:05:34,000 --> 00:05:36,000 Jeg mener, det er øverst til venstre. 99 00:05:36,000 --> 00:05:40,000 Der er virkelig ingen æstetik til det, og så vil jeg stilisere dette 100 00:05:40,000 --> 00:05:43,000 en smule mere som Google, hvis hjemmeside, tilbagekaldelse, 101 00:05:43,000 --> 00:05:47,000 selvom du måske ikke besøge det så tit, ser sådan her ud i dag på Halloween. 102 00:05:47,000 --> 00:05:53,000 Hvis vi i stedet åbne op version 1 af denne fil, søg 1.html, jeg har centreret det. 103 00:05:53,000 --> 00:05:57,000 Stadig temmelig grim, men i det mindste nu jeg er begyndt at kontrollere æstetik denne side, 104 00:05:57,000 --> 00:06:00,000 ikke bare markeringen op herom. 105 00:06:00,000 --> 00:06:04,000 Lad os tage et kig på søgningen 1, og der er virkelig bare en forskel her, 106 00:06:04,000 --> 00:06:06,000 som kan springe ud på dig, eller måske ikke, 107 00:06:06,000 --> 00:06:11,000 men hvad er den ene linje eller uddrag af forskel? 108 00:06:11,000 --> 00:06:14,000 >> Der er denne stil attribut, så viser det sig at i HTML 109 00:06:14,000 --> 00:06:19,000 de fleste elementer, kan de fleste mærker har en stil attribut på dem, 110 00:06:19,000 --> 00:06:23,000 og indersiden af ​​den stil attribut er et børsnoteret streng, 111 00:06:23,000 --> 00:06:26,000 og det citerede streng er CSS. 112 00:06:26,000 --> 00:06:29,000 Du kan sætte overlappende typografiark derinde 113 00:06:29,000 --> 00:06:32,000 ved at angive det som en egenskab navn 114 00:06:32,000 --> 00:06:34,000 efterfulgt af et kolon efterfulgt af en værdi. 115 00:06:34,000 --> 00:06:37,000 Det er lidt af en uheldig design beslutning for nogle år siden 116 00:06:37,000 --> 00:06:40,000 at CSS er et sprog i sig selv, 117 00:06:40,000 --> 00:06:43,000 men syntaktisk det er meget forskelligt fra HTML. 118 00:06:43,000 --> 00:06:46,000 I dette tilfælde ser vi, at indersiden af ​​min webside, der er skrevet i HTML, 119 00:06:46,000 --> 00:06:51,000 Jeg har CSS indersiden af ​​disse citater, og konventionen for CSS 120 00:06:51,000 --> 00:06:55,000 er, at du har, hvad der kaldes en ejendom efterfulgt af, igen, et kolon, 121 00:06:55,000 --> 00:06:58,000 efterfulgt af værdien af ​​den faste ejendom, så der er ingen lighedstegn. 122 00:06:58,000 --> 00:07:00,000 Der er ingen yderligere citater. 123 00:07:00,000 --> 00:07:03,000 Det er bare denne kolonsepareret nøgleværdi par, 124 00:07:03,000 --> 00:07:05,000 og tekstlinie gør præcis hvad den siger. 125 00:07:05,000 --> 00:07:09,000 Det bringer teksten i brødteksten på siden, som er virkelig modet på siden, 126 00:07:09,000 --> 00:07:11,000 i midten. 127 00:07:11,000 --> 00:07:13,000 >> Okay, det endelige resultat så, at være klar, er dette. 128 00:07:13,000 --> 00:07:17,000 Ikke alt, mere sexet, men mindst det er centreret og lidt mere som den virkelige Google. 129 00:07:17,000 --> 00:07:21,000 Men hvad hvis jeg i stedet åbne op version 2 af denne 130 00:07:21,000 --> 00:07:25,000 og påpege hernede et nyt tag helt? 131 00:07:25,000 --> 00:07:30,000 Nu i hovedet på min side, der tidligere kun havde som tag 132 00:07:30,000 --> 00:07:32,000 i alle tidligere eksempler? 133 00:07:32,000 --> 00:07:34,000 Det bare havde det, titlen. 134 00:07:34,000 --> 00:07:38,000 For et øjeblik siden hovedet tag lignede dette. 135 00:07:38,000 --> 00:07:40,000 Nu i stedet det har en stil tag indersiden af ​​det, 136 00:07:40,000 --> 00:07:44,000 og også dette, jeg undskylder, syntaktisk ser meget anderledes fra HTML, 137 00:07:44,000 --> 00:07:47,000 men man vænner sig til det, hvorved indersiden af ​​stil tag 138 00:07:47,000 --> 00:07:50,000 Jeg kan nu faktor ud af, hvad var for et øjeblik siden 139 00:07:50,000 --> 00:07:54,000 en attribut, den stil attribut, og jeg kan sætte det øverst på min side. 140 00:07:54,000 --> 00:07:56,000 >> Hvorfor? 141 00:07:56,000 --> 00:08:00,000 Nå, det er et skridt i retning af rengøring ting op, meget gerne skriftligt C-kode 142 00:08:00,000 --> 00:08:04,000 ville vi undertiden skrive funktioner til faktor ud fælles funktionalitet. 143 00:08:04,000 --> 00:08:07,000 Det er bare en lidt renere at starte factoring ud ting som æstetik 144 00:08:07,000 --> 00:08:11,000 til et centralt sted i stedet for at have det hele intersperse hele din HTML. 145 00:08:11,000 --> 00:08:14,000 Også dette gør hvad det siger, selvom der er lidt af ny syntaks. 146 00:08:14,000 --> 00:08:19,000 Dette her er en selector, og krop betyder bare vælge kropelementet 147 00:08:19,000 --> 00:08:21,000 og anvende følgende egenskaber til den. 148 00:08:21,000 --> 00:08:23,000 Nå, egenskaben er nøjagtig det samme. 149 00:08:23,000 --> 00:08:25,000 For god ordens Jeg har tilføjet et semikolon i slutningen, 150 00:08:25,000 --> 00:08:29,000 som har en tendens til at være konvention, og jeg har pakket hele denne egenskab 151 00:08:29,000 --> 00:08:33,000 i krøllede parenteser, fordi jeg faktisk kunne have forskellige ting her. 152 00:08:33,000 --> 00:08:39,000 Jeg kunne faktisk sige noget lignende farve: blå; 153 00:08:39,000 --> 00:08:42,000 >> Nu er dette også kommer ikke til at være et skridt i retning af noget alt det pænere, 154 00:08:42,000 --> 00:08:47,000 men hvis jeg nu gå tilbage til version 2 har jeg i det mindste nu gjort liget af min 155 00:08:47,000 --> 00:08:49,000 sides tekst helt blå. 156 00:08:49,000 --> 00:08:51,000 Knappen forbliver den samme, fordi det er en indgang. Det er ikke ren tekst. 157 00:08:51,000 --> 00:08:56,000 Men alt andet, der er tekst, ligesom CS50 Søg up top, er i virkeligheden blå. 158 00:08:56,000 --> 00:09:01,000 Igen, er alt hvad vi har gjort nu fjerne fra kroppen tag, varsel, 159 00:09:01,000 --> 00:09:04,000 den stil attribut, og vi har indregnet det ud her. 160 00:09:04,000 --> 00:09:08,000 Dette er ikke en enorm forbedring, men hvis vi tager dette et skridt videre 161 00:09:08,000 --> 00:09:10,000 mærke til, hvad vi kan gøre i denne tredje udgave her. 162 00:09:10,000 --> 00:09:14,000 >> I search3.html websiden er næsten identisk 163 00:09:14,000 --> 00:09:17,000 undtagen for hvad nyt tag nu? 164 00:09:17,000 --> 00:09:20,000 Link, så denne ene er ikke meget rammende navn 165 00:09:20,000 --> 00:09:24,000 fordi du ikke forbinder i betydningen et klikbart hyperlink. 166 00:09:24,000 --> 00:09:28,000 Snarere, du er slags at gøre hvad der svarer til # include i C 167 00:09:28,000 --> 00:09:31,000 hvorved link tag med en href attribut 168 00:09:31,000 --> 00:09:34,000 og en rel attribut siger gå videre 169 00:09:34,000 --> 00:09:39,000 og kopiere indsætte indholdet af en fil kaldet search3.css lige her, det væsentlige. 170 00:09:39,000 --> 00:09:42,000 Det er ikke helt gøre det, men det er ånden i det. 171 00:09:42,000 --> 00:09:45,000 Det siger gå åbent denne fil, search3.css, 172 00:09:45,000 --> 00:09:49,000 og behandle det, som om brugeren havde skrevet det lige her i hovedet på siden 173 00:09:49,000 --> 00:09:51,000 ligesom jeg gjorde i det forrige eksempel. 174 00:09:51,000 --> 00:09:54,000 Search3.css, i mellemtiden, er ret enkel. 175 00:09:54,000 --> 00:09:58,000 Det er virkelig bare indeholder præcis hvad der var for et øjeblik siden 176 00:09:58,000 --> 00:10:03,000 i den stil tag, men jeg har indregnet det ud her til sin egen fil. 177 00:10:03,000 --> 00:10:07,000 >> Selvom vi ikke har brugt meget tid på alle i HTML eller web-programmering 178 00:10:07,000 --> 00:10:11,000 bare intuitivt hvad er motivationen, måske, for factoring ud 179 00:10:11,000 --> 00:10:14,000 denne lille kodestump selv af CSS ind i sin egen fil 180 00:10:14,000 --> 00:10:19,000 og derefter integrere det med dette link tag her? 181 00:10:19,000 --> 00:10:21,000 [Uhørlig student svar] 182 00:10:21,000 --> 00:10:25,000 Okay, det er lettere at læse i den forstand, at du har din CSS i en CSS-fil. 183 00:10:25,000 --> 00:10:28,000 Du har din HTML i din HTML-fil, så det er mere læsbar i den forstand. 184 00:10:28,000 --> 00:10:30,000 Hvad ellers kunne være overbevisende? Yeah. 185 00:10:30,000 --> 00:10:32,000 [Uhørlig student svar] 186 00:10:32,000 --> 00:10:35,000 Ja, så du kan medtage det mange gange, så lige nu har vi laver disse 187 00:10:35,000 --> 00:10:38,000 basale eksempler med enkelte filer, men formoder du faktisk gøre 188 00:10:38,000 --> 00:10:42,000 en reel hjemmeside som du vil for Pset 7 eller din endelige projekt måske, 189 00:10:42,000 --> 00:10:45,000 og du ønsker at have flere websider, som er helt sikkert fælles om 190 00:10:45,000 --> 00:10:48,000 den faktiske World Wide Web, og det ville være slags halt 191 00:10:48,000 --> 00:10:52,000 at skulle kopiere og indsætte den samme blå farve 192 00:10:52,000 --> 00:10:56,000 og den samme tekst justeret center i hver eneste af disse sider. 193 00:10:56,000 --> 00:10:59,000 Snarere giver det mere mening at faktor ud, ligesom vi har gjort i C 194 00:10:59,000 --> 00:11:02,000 med. h-filen, sætte det i ét centralt sted, 195 00:11:02,000 --> 00:11:06,000 i dette tilfælde search3.css og derefter tillade nogen fil 196 00:11:06,000 --> 00:11:11,000 i dit websted til rent faktisk at inkludere denne fil ved hjælp af dette tag her på linje 16. 197 00:11:11,000 --> 00:11:14,000 Som det typisk er tilfældet, vi startede med version 0, hvilken slags værker 198 00:11:14,000 --> 00:11:18,000 men er ikke nødvendigvis den bedste, og med hvert trin, 199 00:11:18,000 --> 00:11:21,000 søgningen 1, søgning 2, og nu søge 3 vi har taget disse små skridt 200 00:11:21,000 --> 00:11:26,000 mod design, der er lidt renere og er mere forberedende 201 00:11:26,000 --> 00:11:30,000 for mere komplekse sider, som vi kan gøre ned af vejen. 202 00:11:30,000 --> 00:11:33,000 >> Lad mig åbne op en sidste eksempel her bare for at vise 203 00:11:33,000 --> 00:11:36,000 en endnu mere stiliseret side, men lad os først se på HTML. 204 00:11:36,000 --> 00:11:41,000 Det er search4.html, og bemærke, at strukturelt det er næsten det samme 205 00:11:41,000 --> 00:11:44,000 bortset fra at indføre en ny kode, div. 206 00:11:44,000 --> 00:11:48,000 Div er en kode, der indfører en opdeling af siden. 207 00:11:48,000 --> 00:11:51,000 Du kan tænke på det som en usynlig firkant. 208 00:11:51,000 --> 00:11:54,000 Den slags skaber en skår af område på websiden 209 00:11:54,000 --> 00:11:56,000 at man kan stilisere på én gang. 210 00:11:56,000 --> 00:11:58,000 Hvad jeg har gjort her er som følger. 211 00:11:58,000 --> 00:12:01,000 Inde i min krop tag, som har været der hele tiden, 212 00:12:01,000 --> 00:12:05,000 Jeg siger skabe en opdeling af siden her via linjerne 45 gennem 47, 213 00:12:05,000 --> 00:12:09,000 og det betyder i realiteten give mig en usynlig firkant øverst på siden. 214 00:12:09,000 --> 00:12:14,000 Så giv mig en anden rektangel, omend usynlig, under dette, 215 00:12:14,000 --> 00:12:16,000 og identificere det ved navn indholdet, og derefter endelig 216 00:12:16,000 --> 00:12:19,000 give mig en tredje division af siden i bunden 217 00:12:19,000 --> 00:12:21,000 kaldes ID. 218 00:12:21,000 --> 00:12:23,000 Vi vil se, hvorfor jeg har gjort dette på bare et øjeblik, 219 00:12:23,000 --> 00:12:26,000 men begrebsmæssigt jeg har en header division. 220 00:12:26,000 --> 00:12:30,000 Jeg har et indhold division, og jeg har en sidefod division af siden 221 00:12:30,000 --> 00:12:32,000 selv om disse er blot i markup. 222 00:12:32,000 --> 00:12:35,000 Brugeren vil ikke se 3 rektangler, 223 00:12:35,000 --> 00:12:37,000 men slags strukturelt der bag kulisserne 224 00:12:37,000 --> 00:12:39,000 de er faktisk til stede. 225 00:12:39,000 --> 00:12:41,000 >> Nu, hvem bekymrer sig? Hvorfor egentlig det? 226 00:12:41,000 --> 00:12:43,000 Alt andet på siden er det samme som vi har set før. 227 00:12:43,000 --> 00:12:47,000 Her er min form. Her er mit input, mit input, et linjeskift og så videre. 228 00:12:47,000 --> 00:12:50,000 Her er et billede, men så må vi se hvor det kom fra i blot et øjeblik. 229 00:12:50,000 --> 00:12:52,000 Her er en sidefod, der er nyt, bare fordi jeg ønskede at introducere 230 00:12:52,000 --> 00:12:54,000 nogle mere indhold her. 231 00:12:54,000 --> 00:12:58,000 Hvis vi ruller op bemærke, at ID for denne div er header. 232 00:12:58,000 --> 00:13:02,000 Id'et på denne div er indhold, og ID for denne ene er footer. 233 00:13:02,000 --> 00:13:05,000 Og som navnet antyder, når du har et ID attribut 234 00:13:05,000 --> 00:13:09,000 i HTML, det per definition skal entydigt identificere 235 00:13:09,000 --> 00:13:12,000 et af de elementer, en af ​​de tags på din side. 236 00:13:12,000 --> 00:13:16,000 Byrden er helt på dig at huske, at du har en header-id allerede. 237 00:13:16,000 --> 00:13:19,000 Du har en sidefod. Du har en indholds-id allerede. 238 00:13:19,000 --> 00:13:22,000 Computeren vil ikke finde ud af hvad en tilgængelig ID er for dig, 239 00:13:22,000 --> 00:13:27,000 så du kunne ved et uheld giver 2 tags en ID på header, 240 00:13:27,000 --> 00:13:29,000 og det ville bare være forkert. 241 00:13:29,000 --> 00:13:31,000 >> Du er nødt til at huske på, hvad du har lavet, 242 00:13:31,000 --> 00:13:34,000 men når du har gjort denne meddelelse, hvad vi kan gøre her. 243 00:13:34,000 --> 00:13:38,000 Jeg kan nu angive i min stil tag øverst 244 00:13:38,000 --> 00:13:41,000 eller ækvivalent i min CSS fil, hvis jeg stadig var ved hjælp denne version 245 00:13:41,000 --> 00:13:46,000 Jeg kan sige # header, og hvad det betyder er, at uanset tag 246 00:13:46,000 --> 00:13:49,000 i denne webside har et id på header 247 00:13:49,000 --> 00:13:53,000 og #, blot ved menneskelig konvention, repræsenterer ID. 248 00:13:53,000 --> 00:13:56,000 Den skarpe tegn eller firkant repræsenterer ID. 249 00:13:56,000 --> 00:13:58,000 Header er det navn, jeg gav det. 250 00:13:58,000 --> 00:14:01,000 Dette betyder anvende denne CSS ejendom 251 00:14:01,000 --> 00:14:04,000 at uanset mærke i denne side bærer en id header. 252 00:14:04,000 --> 00:14:06,000 Samme deal her. 253 00:14:06,000 --> 00:14:09,000 Anvend denne egenskab, der sker for at være det samme, at ethvert element 254 00:14:09,000 --> 00:14:11,000 hvis ID er indhold, og derefter ned her 255 00:14:11,000 --> 00:14:14,000 bemærke, at jeg fik en lidt mere avanceret med footer. 256 00:14:14,000 --> 00:14:18,000 Ethvert element, hvis ID er footer, som der kan være blot én af definition, 257 00:14:18,000 --> 00:14:21,000 gå videre og gøre sin skriftstørrelse mindre, 258 00:14:21,000 --> 00:14:24,000 sin skrifttype vægt fed, dens margin 20 pixels. 259 00:14:24,000 --> 00:14:26,000 >> Hvad betyder det? 260 00:14:26,000 --> 00:14:28,000 Det er bare en margen på toppen, bunden og til venstre og højre. 261 00:14:28,000 --> 00:14:31,000 Det betyder, at give mig en 20-pixel usynlig margin omkring det 262 00:14:31,000 --> 00:14:35,000 bare at skubbe alt andet væk fra det lidt, ligesom du kan gøre i Word, 263 00:14:35,000 --> 00:14:37,000 Microsoft Word eller Pages eller lignende. 264 00:14:37,000 --> 00:14:39,000 Og så tekst justere center. 265 00:14:39,000 --> 00:14:43,000 Lad os se det endelige resultat, og så vil vi gå tilbage til den ene tilbageværende stump CSS dér. 266 00:14:43,000 --> 00:14:48,000 Dette er version 4, vores sidste for de søgeord eksempler, og det er meget, meget sexet. 267 00:14:48,000 --> 00:14:54,000 Nu, i retfærdighed, jeg bare googlede "google font logo generator." 268 00:14:54,000 --> 00:14:58,000 Og det tillod mig at skabe en GIF, et billede format, som ligner den der. 269 00:14:58,000 --> 00:15:00,000 Faktisk kan du gøre dette også. 270 00:15:00,000 --> 00:15:03,000 Vi har "google skrifttyper logo generator." 271 00:15:03,000 --> 00:15:05,000 >> Lad os se, om vi kan gøre det. 272 00:15:05,000 --> 00:15:07,000 Okay, jeg tror, ​​det er hjemmesiden jeg brugte. 273 00:15:07,000 --> 00:15:11,000 Vi kan sige Ec 10, for eksempel, og gøre dem til deres egne. 274 00:15:11,000 --> 00:15:13,000 Du kan spille med dette hele dagen lang og derefter højreklikke på det 275 00:15:13,000 --> 00:15:16,000 og derefter downloade den faktiske GIF, som er alt, jeg gjorde. 276 00:15:16,000 --> 00:15:19,000 Og ja, det er derfor i min HTML, husker herovre 277 00:15:19,000 --> 00:15:22,000 Jeg havde et billede tag, som vi så kortvarigt i sidste uge 278 00:15:22,000 --> 00:15:24,000 hvis kilde er logo.gif. 279 00:15:24,000 --> 00:15:28,000 Og hvad var igen motivationen for at have denne alt-attributten, 280 00:15:28,000 --> 00:15:31,000 dette alternative attribut? 281 00:15:31,000 --> 00:15:33,000 Yeah. 282 00:15:33,000 --> 00:15:35,000 [Uhørlig student svar] 283 00:15:35,000 --> 00:15:37,000 Godt, så 2 grunde virkelig, hvis browseren ikke kan trække op billedet 284 00:15:37,000 --> 00:15:40,000 fordi du har en langsom netforbindelse, eller billedet er beskadiget 285 00:15:40,000 --> 00:15:44,000 eller noget i den stil i hvert fald det menneskelige kan se "CS50 søgning," 286 00:15:44,000 --> 00:15:46,000 og derefter også for tilgængelighed årsager. 287 00:15:46,000 --> 00:15:48,000 Hvis du har en bruger, der er blind og bruger en skærmlæser 288 00:15:48,000 --> 00:15:50,000 og derfor kan naturligvis ikke se billeder, de kan i det mindste 289 00:15:50,000 --> 00:15:52,000 høre tekst, hvis deres computer taler den til dem. 290 00:15:52,000 --> 00:15:56,000 >> I almindelighed er det bedste praksis, når det kommer til adgangen til sider 291 00:15:56,000 --> 00:16:00,000 så selv brugere i denne situation kan høre eller se, så at sige, 292 00:16:00,000 --> 00:16:03,000 hvad det er, der er på din side. 293 00:16:03,000 --> 00:16:05,000 Der er en anden ting, som jeg gjorde her 294 00:16:05,000 --> 00:16:09,000 hvilket er lidt interessant, og vi vil se mere om dette i problem indstille 7 295 00:16:09,000 --> 00:16:12,000 via en af ​​de shorts ledet af en af ​​de pædagogiske stipendiater. 296 00:16:12,000 --> 00:16:15,000 Men # indhold refererer til tag 297 00:16:15,000 --> 00:16:20,000 hvis ID er indhold, men så er der et mellemrum, og så er der ordet input. 298 00:16:20,000 --> 00:16:25,000 Nå, hvad er interessant ved CSS er, at du kan 299 00:16:25,000 --> 00:16:29,000 henvise til tags på en side slags hierarkisk, 300 00:16:29,000 --> 00:16:33,000 og hvad denne stump CSS midler er at finde tag 301 00:16:33,000 --> 00:16:37,000 hvis ID er indhold, og derefter anvende de følgende egenskaber 302 00:16:37,000 --> 00:16:42,000 til alle de indgående tags, der er efterkommere af indhold, 303 00:16:42,000 --> 00:16:44,000 nemlig at indrykkes inde i den. 304 00:16:44,000 --> 00:16:48,000 Fordybning, igen er kun vigtigt til computeren, ikke til mennesket, 305 00:16:48,000 --> 00:16:51,000 men efter sædvane vi led ting, som vi går dybere ind i en side, 306 00:16:51,000 --> 00:16:54,000 så det betyder anvende en margen på 5 pixels til ethvert input element 307 00:16:54,000 --> 00:16:57,000 Det er et sted inde i eller indlejret i af 308 00:16:57,000 --> 00:16:59,000  elementet, hvis ID er indholdet. 309 00:16:59,000 --> 00:17:01,000 >> Hvem gælder dette for? 310 00:17:01,000 --> 00:17:03,000 Tja, der er faktisk bare disse 2 fyre her. 311 00:17:03,000 --> 00:17:05,000 Bemærk, at indersiden af ​​formen er der 2 indgange, 312 00:17:05,000 --> 00:17:07,000 da der har været for alle disse eksempler. 313 00:17:07,000 --> 00:17:11,000 Men læg mærke til, at disse 2 indgange tilfældigvis er indlejret i, 314 00:17:11,000 --> 00:17:13,000 omend en smule dybt, et par lag af indrykning 315 00:17:13,000 --> 00:17:16,000 indersiden af ​​tag, hvis ID er indhold. 316 00:17:16,000 --> 00:17:18,000 Hvad betyder dette? 317 00:17:18,000 --> 00:17:21,000 Hvis vi går til browseren her kan du se nogensinde så lidt- 318 00:17:21,000 --> 00:17:23,000 Lad mig zoome ind-at der er en smule polstring mellem knappen 319 00:17:23,000 --> 00:17:25,000 og mellem tekstfeltet. 320 00:17:25,000 --> 00:17:27,000 >> Lad mig midlertidigt slå funktionen fra. 321 00:17:27,000 --> 00:17:30,000 Lad mig gå op til min CSS, og lad mig gå videre og blot 322 00:17:30,000 --> 00:17:34,000 ændre denne margen fra 5 pixels til 0 pixel. 323 00:17:34,000 --> 00:17:37,000 Lad mig gå videre derefter og gemme filen, skal du gå tilbage til søgemaskinen 324 00:17:37,000 --> 00:17:40,000 og genindlæs, og se midt på siden. 325 00:17:40,000 --> 00:17:43,000 Alt blev presset sammen, og da jeg først piskede dette eksempel op 326 00:17:43,000 --> 00:17:46,000 Jeg troede, at så dum med tekstfeltet og derefter på knappen umiddelbart under det. 327 00:17:46,000 --> 00:17:50,000 Jeg ønskede at pad det en lille smule, så jeg introducerede marginer. 328 00:17:50,000 --> 00:17:55,000 Hvad vi ikke vil gøre i foredrag er at gå igennem de flere dusin 329 00:17:55,000 --> 00:17:58,000 CSS egenskaber, der findes, fordi igen, der er ting som skriftstørrelse, 330 00:17:58,000 --> 00:18:02,000 font vægt, margin, tekst justeres, og et par dusin andre, 331 00:18:02,000 --> 00:18:06,000 og vi vil henvise dig i problemer indstille 7 til forskellige tutorials online 332 00:18:06,000 --> 00:18:08,000 og referencer, der giver dig mulighed for at samle disse ting op. 333 00:18:08,000 --> 00:18:10,000 Men hvad der er virkelig vigtigt i slutningen af ​​dagen 334 00:18:10,000 --> 00:18:12,000 >> er at forstå, hvordan disse ting anvendes. 335 00:18:12,000 --> 00:18:15,000 Igen, hvis vi har den stil tag inden i hvilken 336 00:18:15,000 --> 00:18:19,000 kan gå selectors, den slags identifikatorer, der angiver 337 00:18:19,000 --> 00:18:21,000 til hvem vil du anvende disse egenskaber, 338 00:18:21,000 --> 00:18:24,000 og derefter du sætte egenskaber som nøgleværdi par 339 00:18:24,000 --> 00:18:28,000 adskilt af et kolon og derefter endte med et semikolon, 340 00:18:28,000 --> 00:18:32,000 eller du kan rippe alt det ud og sætte det i en separat CSS-fil 341 00:18:32,000 --> 00:18:35,000 sig selv. 342 00:18:35,000 --> 00:18:39,000 Okay, nogen spørgsmål om begreberne 343 00:18:39,000 --> 00:18:41,000 eller det store billede af CSS? 344 00:18:41,000 --> 00:18:43,000 Du vil igen se mere af det i Pset 7, 345 00:18:43,000 --> 00:18:47,000 men vi vil holde det generelt temmelig simpelt. 346 00:18:47,000 --> 00:18:49,000 Nej? Ok. 347 00:18:49,000 --> 00:18:51,000 Det er tid til en egentlig programmeringssprog, 348 00:18:51,000 --> 00:18:54,000 og vi vil komme tilbage til en lille smule af CSS i form af et eksempel. 349 00:18:54,000 --> 00:18:58,000 PHP er faktisk et vidunderligt tilgængeligt sprog 350 00:18:58,000 --> 00:19:02,000 idet det er syntaktisk næsten svarer til C. 351 00:19:02,000 --> 00:19:06,000 Med andre ord, hvis du kender C du kender for det meste PHP, 352 00:19:06,000 --> 00:19:08,000 mindst syntaktisk, selv om der er nogle nye funktioner 353 00:19:08,000 --> 00:19:10,000 og nogle nye begreber, vi bliver nødt til at se på. 354 00:19:10,000 --> 00:19:13,000 >> Men for det meste, at vi nu overgang fra C til PHP 355 00:19:13,000 --> 00:19:16,000 de fleste af de nye ting er virkelig i det store billede, 356 00:19:16,000 --> 00:19:19,000 hvordan du bruger et sprog til program på nettet i modsætning til 357 00:19:19,000 --> 00:19:23,000 på kommandolinjen eller i en blinkende prompt som vi har gjort hidtil. 358 00:19:23,000 --> 00:19:27,000 For reference, især med Pset 7 og det endelige projekt og fremefter 359 00:19:27,000 --> 00:19:31,000 må drage fordel af denne webadresse her, hvis du gerne vil læse op på de formaliteter i PHP. 360 00:19:31,000 --> 00:19:34,000 Det er faktisk gerne et gratis online lærebog effektivt, 361 00:19:34,000 --> 00:19:37,000 og du vil også opleve, at hvad der er virkelig rart om PHP 362 00:19:37,000 --> 00:19:41,000 er, at der er hundredvis af funktioner, der kommer med det, 363 00:19:41,000 --> 00:19:44,000 hvorimod i C du ikke nødvendigvis har adgang til 364 00:19:44,000 --> 00:19:47,000 flere funktioner end var i matematik bibliotek, CS50 biblioteket. 365 00:19:47,000 --> 00:19:51,000 I PHP og en masse moderne sprog, Python og Ruby blandt dem, 366 00:19:51,000 --> 00:19:54,000 får du adgang til så mange flere funktioner, hvilket betyder at du kommer til at skrive 367 00:19:54,000 --> 00:19:57,000 en masse mindre kode, fordi du kan stå på skuldrene af andre mennesker 368 00:19:57,000 --> 00:19:59,000 der allerede har skrevet nogle ting for dig. 369 00:19:59,000 --> 00:20:03,000 >> Lad os tage en hurtig rundtur i syntaksen i PHP og derefter skrive et par eksempler. 370 00:20:03,000 --> 00:20:06,000 Hvad er rart om PHP først og fremmest 371 00:20:06,000 --> 00:20:08,000 er der ingen hovedfunktion. 372 00:20:08,000 --> 00:20:10,000 Hvis du ønsker at skrive et program i PHP du bare begynde at skrive kode, 373 00:20:10,000 --> 00:20:12,000 og du behøver ikke at bekymre sig om main. 374 00:20:12,000 --> 00:20:14,000 Der er ingen int. Der er ingen tilbage. 375 00:20:14,000 --> 00:20:17,000 Der er ingen argv, argc, der kræves, når du skriver programmet. 376 00:20:17,000 --> 00:20:20,000 Snarere kan du bare begynde at skrive kode, og det er til dels 377 00:20:20,000 --> 00:20:23,000 fordi PHP er, hvad der kaldes et fortolket sprog. 378 00:20:23,000 --> 00:20:26,000 C blev udarbejdet, og det blev samlet i den forstand, at du starter 379 00:20:26,000 --> 00:20:29,000 med kildekode, køre det igennem Dunk, som er en compiler, 380 00:20:29,000 --> 00:20:33,000 og til sidst efter nogle antallet af trin, du får objekt kode, 0'er og 1'ere. 381 00:20:33,000 --> 00:20:36,000 PHP og Python og Ruby og Pearl m.fl. 382 00:20:36,000 --> 00:20:39,000 er forskellige typer af sprog, som du ikke udarbejder dem. 383 00:20:39,000 --> 00:20:42,000 Du behøver ikke gå fra kildekode til 0'er og 1'ere. 384 00:20:42,000 --> 00:20:45,000 Du skal bare køre kildekoden, og du kører kildekoden 385 00:20:45,000 --> 00:20:49,000 ved at skrive i en sædvanlig tekstfil, der ender på. php i denne sag 386 00:20:49,000 --> 00:20:53,000 i stedet for. c, og hvad programmet gør på din computer 387 00:20:53,000 --> 00:20:57,000 er det bogstaveligt talt fortolker din kode linje for linje for linje. 388 00:20:57,000 --> 00:21:00,000 >> Med andre ord, skriver snarere end et program og køre programmet 389 00:21:00,000 --> 00:21:04,000 direkte du i stedet skrive et program med en fil der ender på. php. 390 00:21:04,000 --> 00:21:09,000 Så kan du køre en egentlig program, der hedder php.exe, hvis du er på Windows, 391 00:21:09,000 --> 00:21:12,000 eller bare PHP, hvis du er på Mac OS eller Linux, 392 00:21:12,000 --> 00:21:17,000 og du giver som input til PHP-programmet din egen kildekode, 393 00:21:17,000 --> 00:21:20,000 og dets formål i livet er at læse din kode top til bund, venstre mod højre, 394 00:21:20,000 --> 00:21:23,000 og gøre, hvad du har fortalt det til at gøre. 395 00:21:23,000 --> 00:21:25,000 >> Lad os se hvad dette vil betyde syntaktisk. 396 00:21:25,000 --> 00:21:27,000 I PHP har vi betingelser. 397 00:21:27,000 --> 00:21:29,000 Denne slide er identisk med hvad du så tilbage i uge 1 398 00:21:29,000 --> 00:21:33,000 fordi syntaktisk forhold, IFS og ellers IFs og helst i PHP 399 00:21:33,000 --> 00:21:35,000 ser nøjagtig sådan ud. 400 00:21:35,000 --> 00:21:38,000 Når det kommer til boolske udtryk de kommer til at se ud præcis som dette. 401 00:21:38,000 --> 00:21:43,000 Når det kommer til AND ting sammen som Booleans det kommer til at se ud præcis som dette. 402 00:21:43,000 --> 00:21:46,000 Skifter ser det samme, og du får den ekstra fordel i PHP 403 00:21:46,000 --> 00:21:51,000 der skifter i C kunne kun tænde en char eller en int. 404 00:21:51,000 --> 00:21:53,000 Du kunne ikke tænde for en streng værdi. 405 00:21:53,000 --> 00:21:55,000 I PHP kan du faktisk få et udtryk 406 00:21:55,000 --> 00:21:58,000 det er en variabel, hvis indhold er en streng, 407 00:21:58,000 --> 00:22:01,000 og du kan faktisk gøre streng sammenligning i den virkelige intuitiv måde, 408 00:22:01,000 --> 00:22:06,000 ikke pointer sammenligning, for at afgøre, om at gøre sagen i eller j eller noget andet. 409 00:22:06,000 --> 00:22:09,000 Vi vil se, at potentielt inden længe. 410 00:22:09,000 --> 00:22:11,000 >> Løkker for vidunderligt er de samme. 411 00:22:11,000 --> 00:22:15,000 For sløjfer har en initialisering, en tilstand, og nogle antallet af opdateringer. 412 00:22:15,000 --> 00:22:18,000 Mens sløjfer findes også i PHP. 413 00:22:18,000 --> 00:22:21,000 Gør mens løkker findes også i PHP, 414 00:22:21,000 --> 00:22:26,000 og arrays eksisterer i PHP, men her er hvor syntaksen begynder at få lidt anderledes, 415 00:22:26,000 --> 00:22:29,000 men koncepterne er de samme, og begreberne virkelig er de samme 416 00:22:29,000 --> 00:22:32,000 som de var i uge 0 med Scratch. 417 00:22:32,000 --> 00:22:34,000 Først og fremmest er det $ tegn. 418 00:22:34,000 --> 00:22:37,000 Det var et design beslutning i PHP hvorved enhver variabel 419 00:22:37,000 --> 00:22:41,000 i PHP ved design starter med $ tegn. 420 00:22:41,000 --> 00:22:46,000 Der er ikke mere X, Y, Z. Det er nu $ X, $ Y, $ Z bare fordi. 421 00:22:46,000 --> 00:22:49,000 Det er noget at holde i tankerne, og nu på højre side 422 00:22:49,000 --> 00:22:52,000 Dette ligner et array, 423 00:22:52,000 --> 00:22:54,000 men vi bruger firkantede parenteser her. 424 00:22:54,000 --> 00:22:57,000 I PHP og i JavaScript, vi som vil i sidste ende se, 425 00:22:57,000 --> 00:23:01,000 at erklære et array du åbne plads beslag og lukket firkantet beslag, 426 00:23:01,000 --> 00:23:04,000 og så har du en kommasepareret liste over værdier, hvad enten int'er 427 00:23:04,000 --> 00:23:09,000 eller strenge eller specialtegn, hvad du vil, inden for dette udtryk dér. 428 00:23:09,000 --> 00:23:11,000 >> Nu vidste hvordan vi gør noget som dette i C? 429 00:23:11,000 --> 00:23:16,000 Hvad var syntaksen for statisk at erklære en række kendte numre? 430 00:23:16,000 --> 00:23:19,000 Det var krøllede parenteser, så lille forskel her, men i både PHP 431 00:23:19,000 --> 00:23:22,000 og i sidste ende JavaScript det bare bruger kantede parenteser, så virkelig 432 00:23:22,000 --> 00:23:25,000 det eneste interessante detalje her er det $ tegn for variabelnavnet 433 00:23:25,000 --> 00:23:28,000 og også de firkantede parenteser, og der er en nysgerrig ting 434 00:23:28,000 --> 00:23:32,000 der er blevet udeladt, og på venstre side af tegnet =. 435 00:23:32,000 --> 00:23:36,000 Hvad mangler at vi har krav i flere uger nu? Yeah. 436 00:23:36,000 --> 00:23:38,000 [Uhørlig student svar] 437 00:23:38,000 --> 00:23:41,000 Størrelsen, så der er ingen omtale af størrelsen af ​​matrixen. 438 00:23:41,000 --> 00:23:45,000 Helt ærligt, er der ingen omtale af firkantede parenteser på venstre side 439 00:23:45,000 --> 00:23:47,000 af tegnet =, og hvad der ellers mangler linjen? 440 00:23:47,000 --> 00:23:49,000 Ja. >> [Uhørlig student svar] 441 00:23:49,000 --> 00:23:52,000 Den type, så hvad er interessant især om PHP 442 00:23:52,000 --> 00:23:56,000 er, at det ikke er en stærkt skrevet sprog som C er 443 00:23:56,000 --> 00:23:58,000 og det er stærkt skrevet i den forstand, at du skal sige char, 444 00:23:58,000 --> 00:24:00,000 du må sige int, skal du sige float. 445 00:24:00,000 --> 00:24:03,000 >> Når som helst du ønsker en variabel, som du er nødt til at fortælle Dunk hvad dens type er. 446 00:24:03,000 --> 00:24:05,000 PHP er lidt lazier. 447 00:24:05,000 --> 00:24:08,000 Det er løst skrevet i den forstand, at 448 00:24:08,000 --> 00:24:11,000 du kan have flåd og specialtegn og strygere 449 00:24:11,000 --> 00:24:14,000 og int'er og så videre, men sproget selv 450 00:24:14,000 --> 00:24:17,000 ikke rigtig ligeglad med, hvad du lægger inde i en variabel. 451 00:24:17,000 --> 00:24:20,000 Du behøver ikke at oplyse det på forhånd, hvad datatype 452 00:24:20,000 --> 00:24:22,000 går i en variabel. 453 00:24:22,000 --> 00:24:24,000 Det er helt op til dig, så det er rart 454 00:24:24,000 --> 00:24:27,000 i, at du ikke behøver at bekymre sig så meget om data skrive 455 00:24:27,000 --> 00:24:29,000 og bekymrende, hvad dine argumenter er, og så videre. 456 00:24:29,000 --> 00:24:32,000 Dette betyder også sidste ende funktioner i PHP vil være i stand til at vende tilbage 457 00:24:32,000 --> 00:24:36,000 enten en int meste af tiden, og måske en gang imellem 458 00:24:36,000 --> 00:24:40,000 de vil returnere en bool, en boolean false, for eksempel, til at betyde, at noget gik galt. 459 00:24:40,000 --> 00:24:44,000 Det giver os nogle upsides, men det vil også gøre os slags ved design 460 00:24:44,000 --> 00:24:47,000 lidt lazier når det kommer til data typebestemmelse. 461 00:24:47,000 --> 00:24:50,000 >> Hvad er der ellers at holde sig for øje her? 462 00:24:50,000 --> 00:24:54,000 Variabler ser helt lide det, så $ s = "hej, verden." 463 00:24:54,000 --> 00:24:57,000 Det er måske udledes af det foregående eksempel, 464 00:24:57,000 --> 00:24:59,000 og vi har en anden type løkke. 465 00:24:59,000 --> 00:25:02,000 Denne ene vil vi faktisk se en gang imellem, da det er ganske handy, 466 00:25:02,000 --> 00:25:04,000 en foreach konstruktion. 467 00:25:04,000 --> 00:25:11,000 I dette tilfælde tager foreach løkke inde i sine parenteser 3 ord typisk, 468 00:25:11,000 --> 00:25:16,000 $ Noget først, hvilket er, hvad opstilling vil du gentage over medlemmerne af, 469 00:25:16,000 --> 00:25:19,000 så bogstaveligt søgeordet som, og så endelig 470 00:25:19,000 --> 00:25:21,000 anden variabel navn, som du får til at vælge. 471 00:25:21,000 --> 00:25:23,000 Det kan være foo, bar, eller element, 472 00:25:23,000 --> 00:25:26,000 og hvad denne konstruktion gør 473 00:25:26,000 --> 00:25:29,000 er, hvis det $ array indeholder 10 elementer 474 00:25:29,000 --> 00:25:34,000 på hver iteration af dette array-ked, på hver iteration af denne løkke 475 00:25:34,000 --> 00:25:37,000 den variable kaldes element vil blive opdateret 476 00:25:37,000 --> 00:25:40,000 at være det første element i arrayet, så det andet element i arrayet, 477 00:25:40,000 --> 00:25:44,000 så det tredje element i array, hvorved behovet 478 00:25:44,000 --> 00:25:46,000 at gøre det lidt irriterende firkantet beslag notation og 479 00:25:46,000 --> 00:25:49,000 $ I med henblik på at indeksere i et array. 480 00:25:49,000 --> 00:25:53,000 PHP gør alt dette arbejde for dig og på hver iteration 481 00:25:53,000 --> 00:25:55,000 bare hænder du den næste element fra arrayet 482 00:25:55,000 --> 00:26:01,000 uden at du behøver at vide om eller bekymre sig om dens numeriske indeks placering. 483 00:26:01,000 --> 00:26:04,000 >> Og så endelig, for nu, er der en anden funktion i PHP 484 00:26:04,000 --> 00:26:08,000 der kommer til at være enormt nyttige, især når vi begynder programmering på internettet, 485 00:26:08,000 --> 00:26:10,000 og det er kendt som et associativt array. 486 00:26:10,000 --> 00:26:13,000 De arrays, som vi kender hidtil som på 20 sekunder siden 487 00:26:13,000 --> 00:26:17,000 og for de sidste 8 uger er numerisk indekseret arrays, 488 00:26:17,000 --> 00:26:20,000 slags traditionelle arrays hvor indeksene er int'er, 489 00:26:20,000 --> 00:26:23,000 0, 1, 2, hele vejen på op. 490 00:26:23,000 --> 00:26:25,000 Associative arrays er meget mere kraftfuld. 491 00:26:25,000 --> 00:26:28,000 De tillader dig at have vilkårlige taster, 492 00:26:28,000 --> 00:26:31,000 vilkårlige indeks og vilkårlige værdier. 493 00:26:31,000 --> 00:26:34,000 Hvorimod i en traditionel opstilling, det er 0, 1, 2, 494 00:26:34,000 --> 00:26:37,000 i et associativt array du kan have et indeks 495 00:26:37,000 --> 00:26:41,000 eller en nøgle Foo hvis værdi er bar. 496 00:26:41,000 --> 00:26:46,000 Du kan derefter have en anden nøgle, hvis navn er baz og hvis værdi er qux. 497 00:26:46,000 --> 00:26:49,000 >> Igen dumme datalogistuderende generiske variabelnavne her, 498 00:26:49,000 --> 00:26:55,000 men pointen er, at dette array ikke har beslag 0 eller beslag 1. 499 00:26:55,000 --> 00:26:59,000 Det er i stedet nødt til konsollen foo og beslag baz. 500 00:26:59,000 --> 00:27:03,000 Dette er en meget mere alsidig i at vi vil være i stand til at knytte 501 00:27:03,000 --> 00:27:07,000 ord med andre ord, nøgler med værdier helt vilkårligt, 502 00:27:07,000 --> 00:27:12,000 og vi vil være i stand til at få disse værdier tilbage i konstant tid 503 00:27:12,000 --> 00:27:14,000 fordi under hætten hvad et associativt array 504 00:27:14,000 --> 00:27:16,000 virkelig er en hash tabel. 505 00:27:16,000 --> 00:27:20,000 Husk på, at en hash tabel giver dig mulighed for at sætte nogle input 506 00:27:20,000 --> 00:27:25,000 gerne sættes i ord, David, hvis du vil indsætte David til en slags ordbog, 507 00:27:25,000 --> 00:27:27,000 og derefter får du tilbage nogle værdi typisk. 508 00:27:27,000 --> 00:27:29,000 I tilfælde af speller, sandt eller falsk. 509 00:27:29,000 --> 00:27:33,000 David eller hvad ord er i eller ikke er i ordbogen. 510 00:27:33,000 --> 00:27:36,000 Et associativt array er egentlig bare en hash tabel, 511 00:27:36,000 --> 00:27:38,000 men det er en meget mere brugervenlig inkarnation af det. 512 00:27:38,000 --> 00:27:41,000 Som vi vil se, det vil give os mulighed for at gøre nogle ting 513 00:27:41,000 --> 00:27:43,000 meget, meget let. 514 00:27:43,000 --> 00:27:45,000 >> Lad os tage et kig på nogle grundlæggende PHP 515 00:27:45,000 --> 00:27:47,000 eksempler og se, hvad vi kan gøre med dette sprog. 516 00:27:47,000 --> 00:27:51,000 Lad mig gå videre og åbne op i vores kildebibliotek i dag 517 00:27:51,000 --> 00:27:54,000 en fil kaldet hello1.php. 518 00:27:54,000 --> 00:27:57,000 Denne fil er mere kommentar end det er konkrete kode 519 00:27:57,000 --> 00:28:00,000 så lad mig rent faktisk at fjerne alle kommentarer fra filen 520 00:28:00,000 --> 00:28:05,000 og nuværende for dig måske den enkleste PHP-programmet lige her. 521 00:28:05,000 --> 00:28:07,000 5 linjer, og nogle af dem er hvide rum, 522 00:28:07,000 --> 00:28:09,000 så mærke til nogle af de vigtigste forskelle her. 523 00:28:09,000 --> 00:28:12,000 Filen hedder hello1.php. 524 00:28:12,000 --> 00:28:16,000 Den allerførste linje, er dog 00:28:18,000 Tilsvarende i ånden til HTML, 526 00:28:18,000 --> 00:28:21,000 denne række tegn fortæller computeren 527 00:28:21,000 --> 00:28:25,000 "Hey, computer, her kommer et program, som vi er i i PHP." 528 00:28:25,000 --> 00:28:28,000 Det gør sikker på, det er ikke forvirret, at det er nogle andre sprog. 529 00:28:28,000 --> 00:28:30,000 Linje 2 er et interessant hvide rum. 530 00:28:30,000 --> 00:28:32,000 Linje 3 er vores gamle ven printf, 531 00:28:32,000 --> 00:28:34,000 denne gang i forbindelse med PHP. 532 00:28:34,000 --> 00:28:37,000 PHP har sin egen version af printf som opfører sig nøjagtig det samme, 533 00:28:37,000 --> 00:28:39,000 så dette er bare at udskrive "Hello, world." 534 00:28:39,000 --> 00:28:46,000 Og så denne modsatte tag her,?> Betyder, at er det for min PHP kode. 535 00:28:46,000 --> 00:28:48,000 >> Lad os se, hvordan du køre dette. 536 00:28:48,000 --> 00:28:50,000 Jeg har tænkt mig at gå tilbage til min terminal vindue her. 537 00:28:50,000 --> 00:28:52,000 Jeg har tænkt mig at gå ind i mit PHP bibliotek. 538 00:28:52,000 --> 00:28:56,000 Bemærk, at vi har en hel masse filer, den første hvoraf den ene er hello.php. 539 00:28:56,000 --> 00:29:01,000 Lad mig gå videre og køre dette, hello1.php, skal du indtaste. 540 00:29:01,000 --> 00:29:03,000 Tilladelse nægtet. Okay. 541 00:29:03,000 --> 00:29:06,000 Hvordan har vi faste ting som dette i fortiden? 542 00:29:06,000 --> 00:29:08,000 Hvad er det? >> [Uhørlig student svar] 543 00:29:08,000 --> 00:29:11,000 Vi har brug for læse og skrive, men lad mig gøre ls-l. 544 00:29:11,000 --> 00:29:14,000 Husk dette noget kryptiske udgang, hvorved hello1 545 00:29:14,000 --> 00:29:17,000 ser ud til at kunne læses og skrives af mig 546 00:29:17,000 --> 00:29:19,000 men kan læses af alle andre. 547 00:29:19,000 --> 00:29:22,000 Det viser sig, dette er faktisk ikke et skridt i den rigtige retning. 548 00:29:22,000 --> 00:29:25,000 Forskellen, igen med et fortolket sprog 549 00:29:25,000 --> 00:29:27,000 er du ikke køre programmet direkte. 550 00:29:27,000 --> 00:29:30,000 Du i stedet køre en tolk og aflevere det koden 551 00:29:30,000 --> 00:29:33,000 at du har skrevet, så den kan fortolke det linie for linie. 552 00:29:33,000 --> 00:29:36,000 I dette tilfælde jeg tolken eller programmet faktisk ønsker at køre 553 00:29:36,000 --> 00:29:38,000 er bogstaveligt talt kaldes PHP. 554 00:29:38,000 --> 00:29:41,000 >> Et eller andet sted på denne harddisk af apparatet er der et program 555 00:29:41,000 --> 00:29:45,000 en anden skrev kaldet PHP, eller på Windows php.exe. 556 00:29:45,000 --> 00:29:48,000 Hvad jeg har tænkt mig at gøre her, er jeg har tænkt mig at rent faktisk at køre PHP 557 00:29:48,000 --> 00:29:51,000 men giver det som et kommandolinjeparameter den kode, jeg skrev, 558 00:29:51,000 --> 00:29:54,000 og så vil jeg zoome ud og tryk enter. 559 00:29:54,000 --> 00:29:58,000 Det kører mit program for mig, top til bund, venstre mod højre. 560 00:29:58,000 --> 00:30:01,000 Lad mig gå videre og åbne op for en lille varians af dette. 561 00:30:01,000 --> 00:30:05,000 I hello2.php varsel, at dette også 562 00:30:05,000 --> 00:30:08,000 er for det meste kommentarer, så lad mig slippe af med dem, som en distraktion, 563 00:30:08,000 --> 00:30:13,000 og hvad der er klart anderledes nu om denne fil? 564 00:30:13,000 --> 00:30:15,000 Der er denne nye linje, lidt kryptisk øverst. 565 00:30:15,000 --> 00:30:20,000 I linje 1 er det #! / Bin / php. 566 00:30:20,000 --> 00:30:24,000 Bin er en konvention om Linux og Mac OS til binære filer, 567 00:30:24,000 --> 00:30:27,000 så / bin betyder det er en mappe, der indeholder en masse binære filer 568 00:30:27,000 --> 00:30:29,000 der er programmeret, hvoraf den ene er PHP. 569 00:30:29,000 --> 00:30:32,000 The #! har tilnavnet molevitten, 570 00:30:32,000 --> 00:30:35,000 som er den hurtig måde at sige det, og hvad det betyder 571 00:30:35,000 --> 00:30:40,000 er, at når du kører dette program nu er der en antydning i toppen af ​​filen 572 00:30:40,000 --> 00:30:44,000 der fortæller computeren, hvad tolken til at bruge. 573 00:30:44,000 --> 00:30:47,000 >> Det bliver lidt irriterende, hvis du var nødt til at fortælle dine brugere og dine kunder 574 00:30:47,000 --> 00:30:50,000 "Hey, vi skrev dette program kaldet hello1.php." 575 00:30:50,000 --> 00:30:54,000 Alt du skal gøre er evigt køre PHP og derefter navnet på dette program. 576 00:30:54,000 --> 00:30:58,000 Helt ærligt, det ville bare være pænere at køre hello1.php, 577 00:30:58,000 --> 00:31:00,000 og ja, kan vi, hvis vi gør følgende. 578 00:31:00,000 --> 00:31:05,000 Lad mig gå videre og gøre ls-l, og meddelelse i hello2 det er stadig bare læse skrive 579 00:31:05,000 --> 00:31:10,000 og derefter læse læse, så jeg kan endnu ikke gøre dette, hello2.php. 580 00:31:10,000 --> 00:31:15,000 Men vi indført denne nogensinde så kortvarigt sidste gang, kommandoen chmod. 581 00:31:15,000 --> 00:31:20,000 Hvis jeg gør chmod a + x, hvilket betyder alle plus gennemførelsesskrivelsen, 582 00:31:20,000 --> 00:31:26,000 og derefter hello2.php og derefter gøre ls-l igen mærke til hvad der er ændret. 583 00:31:26,000 --> 00:31:29,000 Den ene er Linux viser mig filnavnet i grønt for at formidle det budskab 584 00:31:29,000 --> 00:31:32,000 at det er eksekverbar, men endnu vigtigere, på den venstre side 585 00:31:32,000 --> 00:31:36,000 bemærke, at bit repræsenterer x for eksekverbar nu er blevet indstillet. 586 00:31:36,000 --> 00:31:42,000 Hvad dette betyder nu, er jeg kan køre ./hello2.php som sædvanlig, 587 00:31:42,000 --> 00:31:45,000 tryk enter, og på grund af molevitten på toppen af ​​filen 588 00:31:45,000 --> 00:31:48,000 det er en antydning, igen, til Linux, der siger 589 00:31:48,000 --> 00:31:51,000 bruge denne tolk til at køre denne fil. 590 00:31:51,000 --> 00:31:54,000 Må ikke bekymre dig om at tvinge brugeren til rent faktisk at skrive det. 591 00:31:54,000 --> 00:31:57,000 >> Og hvad der er rart nu er det er lidt irrelevant til mine kunder eller mine venner 592 00:31:57,000 --> 00:32:01,000 hvilket sprog jeg skrev dette program i, så jeg kan gå videre med mv 593 00:32:01,000 --> 00:32:04,000 og omdøbe denne ting til hello2, for eksempel. 594 00:32:04,000 --> 00:32:07,000 Og nu, hvis jeg gør ./hello2 595 00:32:07,000 --> 00:32:10,000 og zoome ud mit program fortsætter med at køre. 596 00:32:10,000 --> 00:32:13,000 Disse filtypenavne er en menneskelig konvention, som er nødvendig 597 00:32:13,000 --> 00:32:15,000 for noget som Dunk og Make hvem lede efter dem. 598 00:32:15,000 --> 00:32:18,000 Men for PHP, kunne jeg kalde denne fil udvidelse hvad jeg vil. 599 00:32:18,000 --> 00:32:22,000 Jeg kunne snyde verden til at tro, at jeg er virkelig god til Ruby, 600 00:32:22,000 --> 00:32:25,000 og jeg kunne skrive hello2.rb og derefter køre dette, 601 00:32:25,000 --> 00:32:28,000 og voila, nu har jeg det Ruby version, som er en komplet løgn. 602 00:32:28,000 --> 00:32:30,000 Men filtypenavne er meningsløse 603 00:32:30,000 --> 00:32:35,000 hvis filen er eksekverbar, og har denne særlige antydning øverst i filen. 604 00:32:35,000 --> 00:32:38,000 >> Nu, som en sidebemærkning, lad mig vise dig hurtigt version 3, 605 00:32:38,000 --> 00:32:40,000 der er en slags nyttige trick til at vide. 606 00:32:40,000 --> 00:32:45,000 I hello3 Jeg gjorde noget lidt forkert 607 00:32:45,000 --> 00:32:47,000 at jeg vil opdatere kildekoden online. 608 00:32:47,000 --> 00:32:50,000 I version 3 er det viser sig, at på de fleste Linux-computere 609 00:32:50,000 --> 00:32:53,000 der er et program kaldet env for miljø, 610 00:32:53,000 --> 00:32:56,000 og hvad du kan gøre her er, hvis du har ingen idé om hvor PHP 611 00:32:56,000 --> 00:33:00,000 er installeret på den lokale harddisk, fordi faktisk det kunne variere baseret på computeren 612 00:33:00,000 --> 00:33:03,000 at nogen bruger, env bare siger kører env, 613 00:33:03,000 --> 00:33:07,000 der er på de fleste systemer, og finde ud af hvor PHP er. 614 00:33:07,000 --> 00:33:11,000 Bare en fælles trick, så du ikke behøver at bekymre sig om at finde ud af, hvor et program er. 615 00:33:11,000 --> 00:33:14,000 Men hvis du ligeglad med at finde ud af, hvor et program er, og du ikke har plejet hidtil 616 00:33:14,000 --> 00:33:16,000 du kan bruge hvilken kommando. 617 00:33:16,000 --> 00:33:19,000 >> Lad mig zoome ud og type, som php, 618 00:33:19,000 --> 00:33:23,000 og bemærk det fortæller mig det er faktisk i usr / bin / php. 619 00:33:23,000 --> 00:33:25,000 Det er lidt af en løgn. Det er også i bin. 620 00:33:25,000 --> 00:33:27,000 Det er bare at vise mig den første hit. 621 00:33:27,000 --> 00:33:31,000 Hvis du nogensinde spekuleret over, hvor Dunk er, hvilken Dunk, det er i usr / bin / klang, 622 00:33:31,000 --> 00:33:34,000 som gør, usr / bin / gøre, og hvad det betyder er al denne tid 623 00:33:34,000 --> 00:33:38,000 De kunne have været at skrive usr / bin / klang ind for at køre Dunk, 624 00:33:38,000 --> 00:33:41,000 men det er lidt besværligt at gøre det, så nogle mapper 625 00:33:41,000 --> 00:33:44,000 ligesom usr / bin og bin antages at være defaults 626 00:33:44,000 --> 00:33:50,000 så computeren ved at kigge i dem for dig. 627 00:33:50,000 --> 00:33:53,000 Eventuelle spørgsmål om at skrive en super, super simpelt Hello World program 628 00:33:53,000 --> 00:33:55,000 i PHP, og derefter kører det? 629 00:33:55,000 --> 00:33:59,000 Fordi vi nu vil begynde at indføre mere overbevisende syntaks. 630 00:33:59,000 --> 00:34:01,000 Okay, here we go. 631 00:34:01,000 --> 00:34:03,000 Disse programmer vi har set faktisk alle af dem før. 632 00:34:03,000 --> 00:34:07,000 >> Hvis jeg åbner op, for eksempel, lad os gøre beer1.php, 633 00:34:07,000 --> 00:34:09,000 vi vil ikke gå igennem flere versioner af dette, men hvad jeg gjorde 634 00:34:09,000 --> 00:34:13,000 blev jeg satte mig ned og hældte det eller konverteret 635 00:34:13,000 --> 00:34:15,000 min C-kode til PHP-kode her. 636 00:34:15,000 --> 00:34:18,000 Det meste af den øverste del af filen er kommentarer her. 637 00:34:18,000 --> 00:34:20,000 Det viser sig, der er en ny funktion vi har brug kaldet readline. 638 00:34:20,000 --> 00:34:23,000 GetString, tilbagekaldelse, fra uge 0 og fremefter var en CS50 ting. 639 00:34:23,000 --> 00:34:27,000 PHP kommer med sin egen brugervenlige funktion kaldet readline 640 00:34:27,000 --> 00:34:30,000 der tager 1 argument, som angiver prompt 641 00:34:30,000 --> 00:34:33,000 som du ønsker at vise til brugeren, og hvilke readline gør 642 00:34:33,000 --> 00:34:35,000 er den returnerer uanset brugeren i. 643 00:34:35,000 --> 00:34:39,000 I dette tilfælde, jeg erklære en variabel kaldet $ n. 644 00:34:39,000 --> 00:34:42,000 Jeg lagring i det returværdien af ​​readline 645 00:34:42,000 --> 00:34:44,000 efter at spørge brugeren med denne streng. 646 00:34:44,000 --> 00:34:47,000 Bare for at bakke op, for at køre denne ting, lad mig gå videre 647 00:34:47,000 --> 00:34:50,000 og køre php beer1.php. 648 00:34:50,000 --> 00:34:53,000 Hvor mange flasker vil der være? Lad os bare gøre 2 denne gang. 649 00:34:53,000 --> 00:34:55,000 Enter. Det er alt. 650 00:34:55,000 --> 00:34:59,000 >> Programmet er funktionelt identisk med den C-version fra uger siden. 651 00:34:59,000 --> 00:35:01,000 Men syntaktisk lad os se, hvad der er anderledes. 652 00:35:01,000 --> 00:35:05,000 Efter jeg får en int fra brugeren meddelelse om, at jeg gør noget fejlkontrol, 653 00:35:05,000 --> 00:35:08,000 og hvis n er mindre end 1 jeg sagde op, og jeg udskrive 654 00:35:08,000 --> 00:35:11,000 en ked besked til brugeren og afslut med 1. 655 00:35:11,000 --> 00:35:13,000 Også dette er en lidt anderledes. 656 00:35:13,000 --> 00:35:16,000  I C hvad gjorde vi? I C vi returneres 1. 657 00:35:16,000 --> 00:35:20,000 I PHP du afslutter med 1, som ærligt talt er jeg tænke lidt mere intuitiv 658 00:35:20,000 --> 00:35:22,000 fordi du bogstaveligt talt er at afslutte programmet. 659 00:35:22,000 --> 00:35:25,000 Okay, og derefter ned her den irriterende sang er identisk syntaktisk 660 00:35:25,000 --> 00:35:29,000 undtagen for den variable, så her nede i linje 24 og fremefter 661 00:35:29,000 --> 00:35:31,000 mærke min for-løkke er næsten den samme, 662 00:35:31,000 --> 00:35:34,000 men jeg har $ foran i og n, 663 00:35:34,000 --> 00:35:37,000 og hvad der mangler også linje 26, som vi har haft i det forløbne 664 00:35:37,000 --> 00:35:39,000 når han angiver en variabel i? 665 00:35:39,000 --> 00:35:41,000 Der er ingen type. 666 00:35:41,000 --> 00:35:43,000 Det er forkert i PHP til at sige int. 667 00:35:43,000 --> 00:35:45,000 Du skal blot behøver ikke at gøre det. 668 00:35:45,000 --> 00:35:48,000 Computeren, tolken PHP er smart nok til at indse 669 00:35:48,000 --> 00:35:51,000 at hvis du sætter et nummer i $ jeg vil behandle det 670 00:35:51,000 --> 00:35:53,000 som et tal for dig. 671 00:35:53,000 --> 00:35:57,000 Og så hernede vi tilslutte $ i, $ i, $ i - 1. 672 00:35:57,000 --> 00:36:00,000 Alt dette er det samme, og derefter ned her, vi laver en "Wow, det er irriterende" printf 673 00:36:00,000 --> 00:36:02,000 og derefter afslutte (0). 674 00:36:02,000 --> 00:36:05,000 >> Igen takeaway her er, at selv om vi kommer til at tilbringe forholdsvis 675 00:36:05,000 --> 00:36:09,000 lidt tid på PHP, i hvert fald i forhold til hvad vi gjorde på C, 676 00:36:09,000 --> 00:36:12,000 det er næsten det samme, og så hvad vi vil gøre i dag og i næste uge 677 00:36:12,000 --> 00:36:14,000 og videre er fokus virkelig på nogle af de nye ideer. 678 00:36:14,000 --> 00:36:17,000 Bare for at se, at en anden ting er at oversætte over fra C, 679 00:36:17,000 --> 00:36:20,000 dette var et super simpelt program, vi gjorde i uge 1 680 00:36:20,000 --> 00:36:22,000 eller 2 som kubik en værdi. 681 00:36:22,000 --> 00:36:25,000 Men hvad var interessant på det tidspunkt om dette program er, at det 682 00:36:25,000 --> 00:36:28,000 introducerede begrebet en brugerdefineret skriftlig funktion, som vi selv skrev. 683 00:36:28,000 --> 00:36:31,000 Syntaksen i PHP er næsten den samme. 684 00:36:31,000 --> 00:36:33,000 Her er mit program op øverst. 685 00:36:33,000 --> 00:36:35,000 Bemærk igen fraværende er enhver forestilling om main. 686 00:36:35,000 --> 00:36:39,000 Jeg begynder at skrive kode, og det er, hvad der kommer til at blive henrettet af tolk. 687 00:36:39,000 --> 00:36:42,000 Jeg udskrive x er nu 2, formentlig. 688 00:36:42,000 --> 00:36:44,000 Så jeg hævder Cubing ... 689 00:36:44,000 --> 00:36:47,000 Så jeg kalde terningen funktion og passere i $ x 690 00:36:47,000 --> 00:36:50,000 og tildele returværdien til $ x. 691 00:36:50,000 --> 00:36:53,000 Så jeg hævder, at det er cubed, og så siger jeg det, som forhåbentlig 692 00:36:53,000 --> 00:36:55,000 vil sige x er nu 8. 693 00:36:55,000 --> 00:36:59,000 Syntaksen for funktionen i PHP er nogensinde så lidt anderledes. 694 00:36:59,000 --> 00:37:01,000 Igen mangler, er returtype. 695 00:37:01,000 --> 00:37:05,000 Igen mangler er returtype og også mangler, er hvad anden type? 696 00:37:05,000 --> 00:37:07,000 [Uhørlig student svar] 697 00:37:07,000 --> 00:37:10,000 Nå, okay, det er godt. Lad os vende tilbage til om et øjeblik. 698 00:37:10,000 --> 00:37:12,000 >> Vi har ikke for eksempel her int. 699 00:37:12,000 --> 00:37:15,000 Vi ikke, for eksempel int har her fordi, igen, i PHP 700 00:37:15,000 --> 00:37:18,000 du simpelthen ikke behøver at og ikke bør gøre det, 701 00:37:18,000 --> 00:37:20,000 men snarere der er denne nye søgeord kaldet funktion. 702 00:37:20,000 --> 00:37:23,000 I PHP er det næsten lidt klarere, fordi når du ønsker en funktion 703 00:37:23,000 --> 00:37:26,000 du bogstaveligt talt sige funktion, du giver det et navn og derefter en kommasepareret liste 704 00:37:26,000 --> 00:37:28,000 hvis nogen af ​​sine argumenter. 705 00:37:28,000 --> 00:37:32,000 Ingen grund til at sige ugyldig eller noget lignende, og derefter vende tilbage er den samme, 706 00:37:32,000 --> 00:37:35,000 $ A * $ a * $ en. 707 00:37:35,000 --> 00:37:38,000 Der mangler også? Sammy påpegede dette her. 708 00:37:38,000 --> 00:37:43,000 Øverst i filen fuldstændigt fraværende i PHP også er en prototype. 709 00:37:43,000 --> 00:37:45,000 Også dette er tilsigtet. 710 00:37:45,000 --> 00:37:48,000 Sprog og tolke som PHP er klogere end C nogensinde var 711 00:37:48,000 --> 00:37:50,000 i compilers som Dunk. 712 00:37:50,000 --> 00:37:53,000 >> Husk på, at Dunk, hvis du ikke fortælle det, terning eksisterer, 713 00:37:53,000 --> 00:37:56,000 hvis du ikke fortælle det, at printf eksisterer som med en prototype 714 00:37:56,000 --> 00:38:00,000 eller med en # include, godt, var det kommer til at råbe på dig og ikke engang kompilere din kode. 715 00:38:00,000 --> 00:38:03,000 PHP og mere moderne sprog er meget klogere, når det kommer til dette. 716 00:38:03,000 --> 00:38:07,000 De vil tage det på sig at læse gennem alle din kode 717 00:38:07,000 --> 00:38:11,000 og derefter yell på du kun, hvis den finder terning ingen steder. 718 00:38:11,000 --> 00:38:15,000 Det betyder ikke noget, hvis terningen er i bunden eller toppen eller endda i nogle separat fil. 719 00:38:15,000 --> 00:38:18,000 PHP og lignende sprog er nu smart nok til at se fremad 720 00:38:18,000 --> 00:38:26,000 ved alt før anse dig for at have lavet en fejl. 721 00:38:26,000 --> 00:38:28,000 Hvor står vi så? 722 00:38:28,000 --> 00:38:32,000 >> Lad os gøre et sidste eksempel her under forhold, 723 00:38:32,000 --> 00:38:35,000 og hvis jeg åbner conditions2.php varsel for 724 00:38:35,000 --> 00:38:37,000 syntaks her er næsten den samme. 725 00:38:37,000 --> 00:38:40,000 Jeg bruger readline stedet for GetString, men denne linie er den samme som før, 726 00:38:40,000 --> 00:38:42,000 "Jeg vil gerne et heltal venligst." 727 00:38:42,000 --> 00:38:45,000 Jeg har derefter en hvis betingelse, en else if, og derefter en anden, 728 00:38:45,000 --> 00:38:48,000 men funktionelt dette program er også identisk med det, vi gjorde uger siden, 729 00:38:48,000 --> 00:38:51,000 så hvis jeg kører denne ting, php af betingelser2, 730 00:38:51,000 --> 00:38:54,000 og jeg giver det et nummer som 23 - 731 00:38:54,000 --> 00:38:57,000 Jeg plukket et positivt tal. Hvis jeg giver det -1 jeg plukket et negativt tal. 732 00:38:57,000 --> 00:39:00,000 Hvis jeg giver det 0 jeg faktisk plukket 0. 733 00:39:00,000 --> 00:39:02,000 Så hvem bekymrer sig om alt dette? 734 00:39:02,000 --> 00:39:06,000 Tja, en af ​​de sjove slags øvelser her 735 00:39:06,000 --> 00:39:10,000 for mig i det mindste var at gå tilbage og se, hvor hurtigt jeg kunne gennemføre Pset 5, 736 00:39:10,000 --> 00:39:12,000 den stavefejl Pset. 737 00:39:12,000 --> 00:39:15,000 Husk på, at der var denne fil kaldet speller.c, 738 00:39:15,000 --> 00:39:17,000 og der var en fil kaldet dictionary.c. 739 00:39:17,000 --> 00:39:20,000 Hvad jeg gjorde, var jeg slags brugte et par minutter, og jeg omdannede C-kode 740 00:39:20,000 --> 00:39:23,000 til PHP-kode, og vi vil ikke bruge meget tid på speller 741 00:39:23,000 --> 00:39:26,000 fordi ligesom i Pset 5 du ikke virkelig har brug for 742 00:39:26,000 --> 00:39:29,000 bruger meget tid på speller selv, fordi din opmærksomhed var på ordbog. 743 00:39:29,000 --> 00:39:32,000 >> Det er nok at sige, at hvis du læser igennem speller, 744 00:39:32,000 --> 00:39:35,000 denne fil her, det er temmelig meget svarende til C-kode 745 00:39:35,000 --> 00:39:37,000 vi gav dig for Pset 5. 746 00:39:37,000 --> 00:39:39,000 Jeg har lige tilføjet nogle $ steder. 747 00:39:39,000 --> 00:39:43,000 Jeg har ændret visse funktionskoder navne, hvis de ikke eksisterede i PHP. 748 00:39:43,000 --> 00:39:45,000 Der er en ekstra ting her, preg_match, 749 00:39:45,000 --> 00:39:48,000 som er lidt mere avanceret måde at gøre noget, men vi vil komme tilbage til at i sidste ende. 750 00:39:48,000 --> 00:39:51,000 Men kort sagt, er speller næsten identiske, og hvis man ser på den allernederst 751 00:39:51,000 --> 00:39:54,000 hvad det i sidste ende spytter ud, er det her, 752 00:39:54,000 --> 00:39:57,000 ord stavet forkert, ord i ordbogen, ord i teksten. 753 00:39:57,000 --> 00:40:00,000 Okay, så hvad er interessant nu, er følgende. 754 00:40:00,000 --> 00:40:05,000 På toppen af ​​min fil jeg kræver dictionary.php. 755 00:40:05,000 --> 00:40:09,000 Ligesom C har # include PHP har en speciel funktion kaldet kræve 756 00:40:09,000 --> 00:40:14,000 at stort set gør de samme ting, kræver en fil kaldet dictionary.php. 757 00:40:14,000 --> 00:40:18,000 Hvordan kan jeg gå om gennemførelsen Pset 5? 758 00:40:18,000 --> 00:40:21,000 Lad mig gå videre og åbne en fil her. 759 00:40:21,000 --> 00:40:24,000 Lad mig tage et lille henvisning her. 760 00:40:24,000 --> 00:40:29,000 Og lad mig oprette en ny fil, og begynde at kalde dette dictionary.php. 761 00:40:29,000 --> 00:40:31,000 Lad mig sige det i en anden mappe, så vi kan gøre det live. 762 00:40:31,000 --> 00:40:33,000 Og nu vil jeg zoome ind 763 00:40:33,000 --> 00:40:37,000 Jeg har tænkt mig at starte min PHP fil med åben beslag php lukket beslag. 764 00:40:37,000 --> 00:40:40,000 Og så herinde der var et par funktioner jeg nødvendige for at gennemføre for Pset 5, 765 00:40:40,000 --> 00:40:42,000 så lad mig begynde at gennemføre nogle af dem, 766 00:40:42,000 --> 00:40:47,000 så funktionen check, som måtte tage et ord i som et argument. 767 00:40:47,000 --> 00:40:49,000 Vi vil gøre det og komme tilbage til det om et øjeblik. 768 00:40:49,000 --> 00:40:53,000 >> Der var funktion belastning, som tog i hvad som argument? 769 00:40:53,000 --> 00:40:56,000 Dictionary, så den fil, jeg rent faktisk ønskede at indlæse. 770 00:40:56,000 --> 00:41:00,000 Der var funktionen størrelse, som ikke tog nogen argumenter 771 00:41:00,000 --> 00:41:04,000 og der var funktion-hvad var den anden? 772 00:41:04,000 --> 00:41:06,000 Unload, som ikke tog nogen argumenter enten. 773 00:41:06,000 --> 00:41:10,000 Disse er de 4 funktioner, som jeg vil være nødvendigt at nu gennemføre i PHP, 774 00:41:10,000 --> 00:41:13,000 og hvad jeg har tænkt mig at gøre, er at gå videre og gøre det. 775 00:41:13,000 --> 00:41:16,000 En masse af jer brugte en hash tabel i Pset 5, 776 00:41:16,000 --> 00:41:21,000 så lad mig gå videre og oprette en hash tabel i PHP. 777 00:41:21,000 --> 00:41:23,000 Udført. 778 00:41:23,000 --> 00:41:25,000 Det giver mig en hash tabel. Tja, hvorfor? 779 00:41:25,000 --> 00:41:30,000 Den ene er variabel kaldet $ bord, bare for at fremmane tanken om en hash tabel. 780 00:41:30,000 --> 00:41:34,000 De kantede parenteser, dog huske, repræsenterer hvad? 781 00:41:34,000 --> 00:41:37,000 Et array, men i PHP arrays behøver ikke at være numerisk indekseret. 782 00:41:37,000 --> 00:41:41,000 De kan også være associative arrays, 783 00:41:41,000 --> 00:41:44,000 hvilket betyder, at du kan have vilkårlige nøgler og værdier. 784 00:41:44,000 --> 00:41:49,000 >> Meget gerne i Pset 5, de af jer, der gjorde hash tabellen implementeringer 785 00:41:49,000 --> 00:41:53,000 du sandsynligvis indsat ordet og derefter indsat den i en kæde af sammenkædede lister, 786 00:41:53,000 --> 00:41:56,000 eller du gemt værdien af ​​sand eller andet sted, eller noget i den retning. 787 00:41:56,000 --> 00:41:59,000 Du eller anden måde huskede det faktum, at ordet var der. 788 00:41:59,000 --> 00:42:01,000 For nu, er der vil være min hash tabel, 789 00:42:01,000 --> 00:42:06,000 og så nu at gå om at gennemføre check funktion 790 00:42:06,000 --> 00:42:09,000 Jeg bare nødt til at se indersiden af ​​denne hash tabel 791 00:42:09,000 --> 00:42:11,000 og se om et ord er der. 792 00:42:11,000 --> 00:42:15,000 Hvad jeg har tænkt mig at gøre, er jeg har tænkt mig at sige, hvis- 793 00:42:15,000 --> 00:42:20,000 lad os sige isset, som er en PHP funktion, der bogstaveligt betyder bare er nøglen sæt, 794 00:42:20,000 --> 00:42:24,000 så isset ($ tabel [$ word], 795 00:42:24,000 --> 00:42:29,000 og i så fald returnere sandt. 796 00:42:29,000 --> 00:42:32,000 Det er det. Det er Pset 5 i PHP. 797 00:42:32,000 --> 00:42:34,000 Tja, i retfærdighed,. Ok 798 00:42:34,000 --> 00:42:37,000 Else returnere false, så det er der ikke. 799 00:42:37,000 --> 00:42:39,000 Hvad der virkelig foregår her? 800 00:42:39,000 --> 00:42:42,000 Tja, hvis tabel-eller hash tabel her mere generelt- 801 00:42:42,000 --> 00:42:46,000 er et associativt array, der betyder, at du kan indeksere ind i det 802 00:42:46,000 --> 00:42:50,000 med et ord som "Ordet", og du er nødt til at komme tilbage en vis værdi. 803 00:42:50,000 --> 00:42:52,000 >> Vi er sådan at få et skridt foran os selv. 804 00:42:52,000 --> 00:42:56,000 Det ville være lidt rart, hvis vi rent faktisk indlæst filen først, 805 00:42:56,000 --> 00:42:58,000 så belastningen er ikke helt så simpelt, men lad mig gå videre og pisk op 806 00:42:58,000 --> 00:43:00,000  en virkelig hurtig implementering af belastning. 807 00:43:00,000 --> 00:43:07,000 Lad mig gå videre og sige ord får fil ordbog. 808 00:43:07,000 --> 00:43:10,000 Den fil-funktionen i PHP åbner en fil 809 00:43:10,000 --> 00:43:12,000 og vender tilbage til dig en vifte af alle de ord i denne fil, 810 00:43:12,000 --> 00:43:14,000 bare hænder dem til dig. 811 00:43:14,000 --> 00:43:16,000 Det var en stor smerte også, var det ikke? 812 00:43:16,000 --> 00:43:21,000 Nu foreach, dette er vores nye konstruktion, foreach ($ ord som $ word). 813 00:43:21,000 --> 00:43:25,000 Denne sløjfe vil begynde iteration over array ord 814 00:43:25,000 --> 00:43:30,000 og tildele $ ordet variablen hvert ord i filen 815 00:43:30,000 --> 00:43:32,000 fra den første til den anden til den tredje til den fjerde hele vejen 816 00:43:32,000 --> 00:43:35,000 så jeg ikke behøver at gøre det irriterende [i] notation og lignende. 817 00:43:35,000 --> 00:43:38,000 Og hvad jeg simpelthen tænkt sig at gøre for hvert af disse ord 818 00:43:38,000 --> 00:43:43,000 er gemme det i min tabel ved indeksering i tabel 819 00:43:43,000 --> 00:43:47,000 og derefter gøre sandt, fordi at huske 820 00:43:47,000 --> 00:43:50,000 at et ord er i min ordbog alt jeg virkelig nødt til at gøre 821 00:43:50,000 --> 00:43:55,000 er slags vende en smule og sige dette ord i min hash tabel er der, sandt. 822 00:43:55,000 --> 00:43:58,000 Og hvis det ikke er der, jeg har ikke til eksplicit sætte falske, 823 00:43:58,000 --> 00:44:01,000 ellers ville jeg nødt til at sætte falske for alle mulige ord i universet. 824 00:44:01,000 --> 00:44:05,000 >> Det er tilstrækkeligt for mig bare at sætte en indeksværdi 825 00:44:05,000 --> 00:44:09,000 til sand hvis et ord er faktisk i mit hash tabel. 826 00:44:09,000 --> 00:44:12,000 Nu, jeg skære et par hjørner her, at jeg vil vinke mine hænder på for nu, 827 00:44:12,000 --> 00:44:15,000 men nu belastningen funktion er gjort. 828 00:44:15,000 --> 00:44:18,000 Jeg indlæse alle de ord fra filen ind i et array. 829 00:44:18,000 --> 00:44:21,000 I gentage over denne matrix, og for hvert ord i sættet 830 00:44:21,000 --> 00:44:24,000 Jeg sætter det ind i min hash tabel med 1 linje kode. 831 00:44:24,000 --> 00:44:26,000 Det er sjovt. Du ved, hvordan vi kan gennemføre størrelse nu? 832 00:44:26,000 --> 00:44:28,000 Nå, størrelse er altid temmelig let, i retfærdighed. 833 00:44:28,000 --> 00:44:32,000 Her kan vi bare returnere optælling af bordet. 834 00:44:32,000 --> 00:44:34,000 Det er ret nemt også tælle antallet af ting i tabellen. 835 00:44:34,000 --> 00:44:36,000 Det er faktisk sådan ikke den mest effektive. 836 00:44:36,000 --> 00:44:39,000 Jeg burde nok have en variabel kaldet størrelse, så vi kan gøre det 837 00:44:39,000 --> 00:44:41,000 i konstant tid, at men er temmelig let. 838 00:44:41,000 --> 00:44:45,000 Åh, og derefter losse, hvis vi virkelig ønsker at være anal her 839 00:44:45,000 --> 00:44:47,000 vi kan sige det er hvordan du losse noget. 840 00:44:47,000 --> 00:44:49,000 Du skal bare indstille den variable svarende til et tomt array, 841 00:44:49,000 --> 00:44:51,000 og det bliver fjernet alt, hvad der var der. 842 00:44:51,000 --> 00:44:53,000 Ingen grund til at ringe gratis. 843 00:44:53,000 --> 00:44:56,000 >> Igen, jeg har skåret nogle hjørner, og jeg undskylder for tildeling problem sæt 5 844 00:44:56,000 --> 00:45:00,000 måske i C, men hvis vi nu gå videre og køre dette, 845 00:45:00,000 --> 00:45:02,000 Jeg har tænkt mig at rent faktisk at køre den version, jeg skrev på forhånd 846 00:45:02,000 --> 00:45:05,000 bare så jeg ikke foretage nogen syntaktiske fejl overhovedet. 847 00:45:05,000 --> 00:45:08,000 Lad mig gå videre og køre stavekontrol. Brugen er den samme. 848 00:45:08,000 --> 00:45:12,000 Her er en ordbog fil, som netop indeholder ordet foo. 849 00:45:12,000 --> 00:45:15,000 Her er en tekstfil, der bare indeholder foo bar. 850 00:45:15,000 --> 00:45:19,000 Lad os stavekontrol dette, så speller, ved hjælp af denne ordbog fil på denne tekstfil. 851 00:45:19,000 --> 00:45:21,000 Der er en forkert stavede ord, bar, og voila. 852 00:45:21,000 --> 00:45:23,000 Udført med Pset 5. 853 00:45:23,000 --> 00:45:30,000 Lad os tage en 5-minutters pause her, og vi vil komme tilbage og mere på PHP. 854 00:45:30,000 --> 00:45:32,000 Okay, vi er tilbage. 855 00:45:32,000 --> 00:45:34,000 Lad os gøre-hade mig for et stykke tid. 856 00:45:34,000 --> 00:45:37,000 Lad os nu rent faktisk se, om det ikke var en positiv 857 00:45:37,000 --> 00:45:39,000 faktisk gennemførelse af denne ting i PHP. 858 00:45:39,000 --> 00:45:43,000 Ydet, det tog 45 sekunder at gennemføre. 859 00:45:43,000 --> 00:45:45,000 >> Men lad os gå videre nu og køre tingene. 860 00:45:45,000 --> 00:45:49,000 Lad mig gå videre og køre en C-udgave 861 00:45:49,000 --> 00:45:52,000 af speller, og vi vil køre det på en af ​​de største filer, 862 00:45:52,000 --> 00:45:54,000 som er King James Bible. 863 00:45:54,000 --> 00:45:57,000 Og det her er in-lad os gå ind i vores C folder, 864 00:45:57,000 --> 00:46:01,000 speller på King James 5th. 865 00:46:01,000 --> 00:46:03,000 En masse forkert stavede ord. 866 00:46:03,000 --> 00:46:06,000 Okay, så det er outputtet du sandsynligvis fået selvom tiderne er lidt anderledes, 867 00:46:06,000 --> 00:46:09,000 hvis du fik alt fungerer korrekt, og så tiden i alt til stavekontrol 868 00:46:09,000 --> 00:46:13,000 King James Bible var 0,38 sekunder, så temmelig godt med, at gennemførelsen. 869 00:46:13,000 --> 00:46:16,000 Lad mig nu gå ind i PHP version, som vi lige har skrevet. 870 00:46:16,000 --> 00:46:18,000 Lad mig køre speller på King James. 871 00:46:18,000 --> 00:46:21,000 Whoops, ignorere denne fejl. Jeg er i den forkerte mappe. 872 00:46:21,000 --> 00:46:24,000 Speller på King James 5th. 873 00:46:46,000 --> 00:46:48,000 Næsten færdig. 874 00:46:48,000 --> 00:46:51,000 >> Okay, vil den snu observatør indse der var mere end 3 sekunder der. 875 00:46:51,000 --> 00:46:54,000 Det er den sande køretid. 876 00:46:54,000 --> 00:46:58,000 Det viser sig, at det tager tid at spytte masser af tekst ud 877 00:46:58,000 --> 00:47:00,000 på grund af buffer problemer, men lang historie kort, 878 00:47:00,000 --> 00:47:04,000 der var 3,15 sekund af maskinens, CPU-tid, 879 00:47:04,000 --> 00:47:07,000 versus hvad var det for et øjeblik siden? 880 00:47:07,000 --> 00:47:09,000 Ligesom 0,3. 881 00:47:09,000 --> 00:47:11,000 Jeg mener, det er en størrelsesorden langsommere, så hvor er det 882 00:47:11,000 --> 00:47:14,000 latterlige afmatning kommer fra? 883 00:47:14,000 --> 00:47:17,000 Tja, som det har været tilfældet med de fleste ethvert design beslutning vi har lavet 884 00:47:17,000 --> 00:47:21,000 i klassen i løbet af de sidste 9 uger er der næsten altid denne afvejning. 885 00:47:21,000 --> 00:47:24,000 Sommetider mellem bare rum, nogle gange mellem rum og tid 886 00:47:24,000 --> 00:47:27,000 rum, tid og udviklingsindsats, og faktisk her, selv om 887 00:47:27,000 --> 00:47:31,000 vi gemt en enorm mængde af tid, måske potentielt 10-20-30 timer 888 00:47:31,000 --> 00:47:34,000 af udvikling tid at gennemføre stavekontrollen 889 00:47:34,000 --> 00:47:36,000 ved piskning det op i blot 45 sekunder med dette sprog 890 00:47:36,000 --> 00:47:40,000 den pris, vi betaler, er, at det er en størrelsesorden langsommere som et resultat, 891 00:47:40,000 --> 00:47:43,000 og dette er normalt tilfældet med de fleste helst fortolket sprog, 892 00:47:43,000 --> 00:47:46,000 PHP, Python, Ruby, Pearl eller andre, hvorved 893 00:47:46,000 --> 00:47:49,000 hvis du kommer til at køre det gennem en tolk og få den læst din kode 894 00:47:49,000 --> 00:47:52,000 linje for linje, top til bund, venstre mod højre, 895 00:47:52,000 --> 00:47:55,000 at mellemmand kommer til at tage lidt tid for sig selv, 896 00:47:55,000 --> 00:47:59,000 og hvad du følte her i de 3 sekunder i modsætning til .3 sekunder 897 00:47:59,000 --> 00:48:02,000 er det faktum, at der er denne mellemmand, der har til bogstaveligt fortolke vores kode 898 00:48:02,000 --> 00:48:05,000 linje for linje, og Gud forbyde, hvis du er inde i en løkke 899 00:48:05,000 --> 00:48:08,000 med en enorm fil, der indeholder hundredtusinder af ord. 900 00:48:08,000 --> 00:48:11,000 >> Denne hovedhøjde kommer til at tilføje op og tilføje op og tilføje op og tilføje op. 901 00:48:11,000 --> 00:48:16,000 For et værktøj som dette er det nok ikke det bedste sprog at bruge til at gennemføre 902 00:48:16,000 --> 00:48:20,000 en stavekontrol hvis umiddelbarhed er af interesse for dine brugere og til dig. 903 00:48:20,000 --> 00:48:23,000 Men den luksus, vi har i et øjeblik er, hvis du 904 00:48:23,000 --> 00:48:27,000 bruge et sprog som PHP eller en masse fortolkede sprog 905 00:48:27,000 --> 00:48:30,000 i forbindelse med internettet, for den sags skyld har du fordelen 906 00:48:30,000 --> 00:48:34,000 at internettet er en meget langsommere end de fleste computere. 907 00:48:34,000 --> 00:48:38,000 Du har en GHz CPU i computeren, 2 GHz, måske endda mere i disse dage. 908 00:48:38,000 --> 00:48:41,000 Men virkeligheden er på internettet er der en stor mængde af latency 909 00:48:41,000 --> 00:48:45,000 hvorved en browser til at tale med en server, selvom vi oplevede i sidste uge 910 00:48:45,000 --> 00:48:47,000 at det er temmelig hurtigt, halvt et millisekund eller deromkring, 911 00:48:47,000 --> 00:48:51,000 det også kommer op, og hvis du henter ting som et billede 912 00:48:51,000 --> 00:48:54,000 eller en Facebook-billede eller få onlinemeddelelser over Facebook snak, 913 00:48:54,000 --> 00:48:57,000 Gchat eller lignende, alle disse returtider 914 00:48:57,000 --> 00:49:00,000 mellem browseren og serveren begynder at tilføje op, 915 00:49:00,000 --> 00:49:03,000 som gør netop din valg af sprog i mange tilfælde 916 00:49:03,000 --> 00:49:07,000 ikke alle, at det er relevant, så du har det fint med en lidt langsommere sprog 917 00:49:07,000 --> 00:49:10,000 som PHP eller Python eller Ruby 918 00:49:10,000 --> 00:49:13,000 men hvor der er enorme upsides til dig og dine kolleger 919 00:49:13,000 --> 00:49:17,000 og dine venner, fordi du kan gennemføre tingene så, så meget hurtigere. 920 00:49:17,000 --> 00:49:20,000 Og desuden, du har langt mindre risiko for visse sikkerhedshuller. 921 00:49:20,000 --> 00:49:22,000 Der er ingen pejlemærker i PHP. 922 00:49:22,000 --> 00:49:25,000 Der er ingen SEG fejl, som du nemt kan fremkalde 923 00:49:25,000 --> 00:49:27,000 på samme måde, som du kunne i C. 924 00:49:27,000 --> 00:49:29,000 Med C er du super tæt på hardware. 925 00:49:29,000 --> 00:49:33,000 Med PHP og lignende sprog, du er en slags højere niveau, så at sige, 926 00:49:33,000 --> 00:49:37,000 med en masse forsvar mellem dig og hvad der rent faktisk sker 927 00:49:37,000 --> 00:49:39,000 inde i maskinen, og det er bare en afvejning. 928 00:49:39,000 --> 00:49:42,000 >> Vi har fået til det punkt at have disse mere moderne, højt niveau sprog 929 00:49:42,000 --> 00:49:47,000 som PHP grund af erfaringerne i sprog som PHP i C. 930 00:49:47,000 --> 00:49:50,000 Men hvis du ikke forstår hvad der er foregået på under hætten al denne tid 931 00:49:50,000 --> 00:49:53,000 du kan bestemt ikke træffe de rigtige beslutninger vedrørende design, 932 00:49:53,000 --> 00:49:56,000 og i hvert fald når det kommer til at arbejde på et sted som Facebook eller Google 933 00:49:56,000 --> 00:49:59,000 eller nogen af ​​disse steder, der i stigende grad spiller med store datasæt 934 00:49:59,000 --> 00:50:01,000 selvom du gå tilbage og gøre premed og arbejder med nogle MD 935 00:50:01,000 --> 00:50:04,000 på nogle store datasæt inddragelse af patienter og læger 936 00:50:04,000 --> 00:50:08,000 og lignende ved hjælp af de rette værktøjer er enormt overbevisende 937 00:50:08,000 --> 00:50:11,000 fordi ellers din analyse af nogle datasæt kan tage sekunder, 938 00:50:11,000 --> 00:50:14,000 eller det kan bogstaveligt talt tage timer. 939 00:50:14,000 --> 00:50:17,000 Dette er blot ét eksempel, ikke at frustrere dig med hvor meget større indsats 940 00:50:17,000 --> 00:50:21,000 det var i C, men for at hjælpe dig forstå, at når du gennemfører noget i C 941 00:50:21,000 --> 00:50:24,000 du virkelig forstår, eller i teorien, forstår virkelig 942 00:50:24,000 --> 00:50:28,000 hvordan alting er eller bør arbejde, og du har næsten fuld kontrol 943 00:50:28,000 --> 00:50:31,000 over, hvad der foregår under kølerhjelmen, med og disse højere niveau sprog 944 00:50:31,000 --> 00:50:34,000 du er nødt til at opgive mere kontrol til de mennesker, der opfandt dem 945 00:50:34,000 --> 00:50:37,000 og er underlagt mere til deres design beslutninger end din. 946 00:50:37,000 --> 00:50:41,000 Men hvis vi tager for givet, at udførelsen 947 00:50:41,000 --> 00:50:44,000 er ikke helt så vigtigt på nettet på grund af disse andre spørgsmål, 948 00:50:44,000 --> 00:50:47,000 bare netværkshastigheder er lidt langsommere end CPU hastigheder alligevel, 949 00:50:47,000 --> 00:50:50,000 så vi kan sortere i råd til at bruge en lidt langsommere sprog 950 00:50:50,000 --> 00:50:55,000 hvis upsides er vi kan udvikle ting 10 gange hurtigere eller mere. 951 00:50:55,000 --> 00:50:57,000 >> Lad os se, hvordan vi kan begynde at bruge dette. 952 00:50:57,000 --> 00:51:00,000 Lad mig gå ind i en mappe 953 00:51:00,000 --> 00:51:03,000 blandt nutidens eksempler kaldet frosh.ims, 954 00:51:03,000 --> 00:51:06,000 og dette blev faktisk personligt motiveret af det faktum, at det allerførste 955 00:51:06,000 --> 00:51:10,000 Jeg skrev til Web år siden efter at have taget CS50 og CS51 956 00:51:10,000 --> 00:51:14,000 var en hjemmeside for Frosh IMS-programmet, freshman intramurale sport, 957 00:51:14,000 --> 00:51:16,000 som på det tidspunkt var nok år siden, at på tidspunktet 958 00:51:16,000 --> 00:51:19,000 Der var ingen hjemmeside for programmet, selv om der var en web, 959 00:51:19,000 --> 00:51:22,000 og i stedet var der en Proctor i Wigglesworth hvorved hvis du ønskede 960 00:51:22,000 --> 00:51:26,000 at tilmelde volleyball eller fodbold eller hvad du ville udfylde et stykke papir. 961 00:51:26,000 --> 00:51:28,000 Du ville derefter gå over gården. 962 00:51:28,000 --> 00:51:31,000 Du vil derefter banke på deres dør og slide i deres dør eller hånd til Proctor 963 00:51:31,000 --> 00:51:34,000 et stykke papir med dit navn på det, uanset om du ønsker at være en holdkaptajn, 964 00:51:34,000 --> 00:51:37,000 hvad sport du ønskede at gøre, og hvad dorm du var i. 965 00:51:37,000 --> 00:51:39,000 Det var en slags en gammel skole måde at gøre tingene på, og dette var en førsteklasses 966 00:51:39,000 --> 00:51:41,000 mulighed for at automatisere en masse af denne proces. 967 00:51:41,000 --> 00:51:43,000 Du skal blot gå til hjemmesiden. Du skriver noget i. 968 00:51:43,000 --> 00:51:46,000 Du får en e-mail bekræftelse, og bom, er du færdig. 969 00:51:46,000 --> 00:51:49,000 >> Det var det allerførste, jeg gjorde, omend i et sprog kaldet Pearl, 970 00:51:49,000 --> 00:51:52,000 men det er relativt nemt at gøre i PHP, og det er en slags repræsentativ 971 00:51:52,000 --> 00:51:55,000 af de problemer, du kan begynde at løse, når du kan udtrykke dig selv 972 00:51:55,000 --> 00:51:58,000 programmatisk og behøver ikke at stole på ting som Google-websteder 973 00:51:58,000 --> 00:52:01,000 eller Excel eller værktøjer, der er udleveret til dig. 974 00:52:01,000 --> 00:52:03,000 Du fyre har nu mulighed for at gøre ting som dette. 975 00:52:03,000 --> 00:52:06,000 Dette er en super grimme version af en formular, 976 00:52:06,000 --> 00:52:09,000 men lad os bare bruge det til begyndelsen af ​​samtalen, hvor dette er 977 00:52:09,000 --> 00:52:12,000 omtrent, hvad den form lignede år siden for os 978 00:52:12,000 --> 00:52:14,000 at sætte folk på nettet for at tilmelde dig Frosh infrastrukturforvaltere. 979 00:52:14,000 --> 00:52:18,000 Vi bad om et navn, et afkrydsningsfelt til, hvorvidt de ønskede at være kaptajn, 980 00:52:18,000 --> 00:52:21,000 mand eller kvinde, og hvad så dorm de var i, 981 00:52:21,000 --> 00:52:23,000 og så ville de sende denne formular. 982 00:52:23,000 --> 00:52:27,000 Lad os først se under kølerhjelmen på HTML, der repræsenterer denne webside. 983 00:52:27,000 --> 00:52:31,000 Lad mig gå ind i froshims0, 984 00:52:31,000 --> 00:52:35,000 og som en sidebemærkning, for Pset 7 jeg tager for givet 985 00:52:35,000 --> 00:52:37,000 de mapper og mapper, som jeg sætte ting i. 986 00:52:37,000 --> 00:52:40,000 Vi vil lede dig gennem præcis, hvor ting skal gå i apparatet, 987 00:52:40,000 --> 00:52:43,000 som mod-kommandoer, du er nødt til at køre, så du skal ikke bekymre dig om alle de 988 00:52:43,000 --> 00:52:46,000 dumme detaljer synkronisering fra get-go her. 989 00:52:46,000 --> 00:52:49,000 >> Okay, her er froshims0.php. 990 00:52:49,000 --> 00:52:52,000 Lad mig rulle ned, og hvad der er nysgerrig her, 991 00:52:52,000 --> 00:52:56,000 Dette er en PHP-fil, men hvad der er inde i det, klart? 992 00:52:56,000 --> 00:52:59,000 Det er en hel masse HTML, og faktisk, PHP sin oprindelse 993 00:52:59,000 --> 00:53:02,000 virkelig var for at være en web-centreret sprog. 994 00:53:02,000 --> 00:53:04,000 For et øjeblik siden vi har brugt det til at gennemføre øl eksempel, 995 00:53:04,000 --> 00:53:07,000 de betingelser, fx den hello eksempel, og det er fint. 996 00:53:07,000 --> 00:53:11,000 Du kan bruge PHP som et scriptsprog 997 00:53:11,000 --> 00:53:15,000 hvor et script er egentlig bare den nomenklatur, givet til en hurtig og beskidt program 998 00:53:15,000 --> 00:53:19,000 eller noget, som du skriver i en scripted eller mere generelt et fortolket sprog. 999 00:53:19,000 --> 00:53:22,000 PHP er super nyttigt for det, fordi du har set, hvor hurtigt 1000 00:53:22,000 --> 00:53:24,000 relativt vi kan piske op programmer i PHP. 1001 00:53:24,000 --> 00:53:27,000 Men det var virkelig designet til at blive brugt til internettet, 1002 00:53:27,000 --> 00:53:31,000 og designet til nettet i den forstand, at opsigelsesvarsel op her i toppen af ​​filen 1003 00:53:31,000 --> 00:53:34,000 Jeg begynder med 00:53:38,000 Så jeg har en masse ubrugelige tildelte kommentarer, men da jeg lukker PHP mode. 1005 00:53:38,000 --> 00:53:41,000 Men da jeg falde ind i HTML-tilstand. 1006 00:53:41,000 --> 00:53:45,000 >> Hvad er interessant ved PHP er, selvom filen ender på. Php 1007 00:53:45,000 --> 00:53:48,000 det er generelt beregnet til at blive blandet sammen med HTML, 1008 00:53:48,000 --> 00:53:50,000 nogle PHP-kode, nogle HTML. 1009 00:53:50,000 --> 00:53:53,000 Og vi vil se til sidst, at vi kan begynde at drille dem fra hinanden 1010 00:53:53,000 --> 00:53:56,000 og holde vores HTML adskilt fra vores PHP helt, 1011 00:53:56,000 --> 00:53:59,000 men oprindelsen af ​​PHP virkelig skulle give dig denne fleksibilitet, 1012 00:53:59,000 --> 00:54:02,000 at hvis du vil nogle HTML bare skrive det, og det vil være 1013 00:54:02,000 --> 00:54:04,000 spytte ud identisk med browseren. 1014 00:54:04,000 --> 00:54:07,000 Men hvis du har brug for nogle programmerings teknik, 1015 00:54:07,000 --> 00:54:12,000 nogle programmeringskode, kan du også sætte det ind i samme nøjagtige fil, som vi snart vil se. 1016 00:54:12,000 --> 00:54:14,000 Her er min HTML. 1017 00:54:14,000 --> 00:54:16,000 Jeg har en titel af dette for Frosh infrastrukturforvaltere. 1018 00:54:16,000 --> 00:54:20,000 Jeg har en krop tag, der har fået nogle CSS på det at centrere alt i midten, 1019 00:54:20,000 --> 00:54:23,000 og derefter ned her jeg har en form, der tilsyneladende vil blive forelagt 1020 00:54:23,000 --> 00:54:27,000 til en ny fil kaldet register0.php, så vi vil se, at om et øjeblik. 1021 00:54:27,000 --> 00:54:31,000 Det er ved hjælp af en metode kaldet post, som vi vil vende tilbage til så godt. 1022 00:54:31,000 --> 00:54:34,000 Så jeg har en vis form indgange, en kaldet navn, hvis type er tekst, 1023 00:54:34,000 --> 00:54:37,000 en, hvis navn er kaptajn, hvis type er afkrydsningsfelt, 1024 00:54:37,000 --> 00:54:40,000 og dette har vi ikke set det før, men det gør præcis hvad den siger. 1025 00:54:40,000 --> 00:54:42,000 Du vil få et afkrydsningsfelt i stedet for en tekstboks. 1026 00:54:42,000 --> 00:54:46,000 Hernede har du en radio knap, som er en af ​​de cirkulære knapper 1027 00:54:46,000 --> 00:54:48,000 at du enten kan vælge denne ene eller det ene. 1028 00:54:48,000 --> 00:54:52,000 >> Bemærk at det er bevidst, at jeg gav begge radioknapper navn køn. 1029 00:54:52,000 --> 00:54:55,000 Dette er, hvordan du får gensidig udelukkelse, hvor du skal klikke 1030 00:54:55,000 --> 00:54:58,000 enten den ene eller den der, og ved at klikke på den anden 1031 00:54:58,000 --> 00:55:01,000 det unchecks den anden, så du er nødt til at give dem samme navn 1032 00:55:01,000 --> 00:55:03,000 hvis du vil have dem til at være gensidigt udelukker sådan. 1033 00:55:03,000 --> 00:55:07,000 Og så for dorm, tror jeg ikke, vi har set det endnu, men det er en udvalgt menu, en drop-down menu. 1034 00:55:07,000 --> 00:55:09,000 Mærkaten for det er valgt. 1035 00:55:09,000 --> 00:55:11,000 Du kan derefter give drop-down menuen et navn, 1036 00:55:11,000 --> 00:55:13,000 og så har du en hel bunke af disse muligheder. 1037 00:55:13,000 --> 00:55:16,000 Den første, bare for æstetik, er en tom streng. 1038 00:55:16,000 --> 00:55:20,000 Jeg ville bare drop down at være tom som standard, 1039 00:55:20,000 --> 00:55:22,000 og så er der Apley, Canaday, Grays, og så videre. 1040 00:55:22,000 --> 00:55:24,000 Og bemærk dikotomi her. 1041 00:55:24,000 --> 00:55:27,000 Muligheden i drop down har en værdi, 1042 00:55:27,000 --> 00:55:30,000 men så det har en menneske-kaldenavn, som i dette eksempel 1043 00:55:30,000 --> 00:55:33,000 er identisk, men hvis vi virkelig ønskede at være anal vi kunne have 1044 00:55:33,000 --> 00:55:36,000 værdien af ​​denne drop down bare være den korte version, 1045 00:55:36,000 --> 00:55:39,000 Grays, men vi virkelig kunne sige Grays Hall at det menneskelige faktisk ser, 1046 00:55:39,000 --> 00:55:43,000 men det er ikke alt, interessant, så jeg bare holdt det simpelt og gjorde dem identiske. 1047 00:55:43,000 --> 00:55:46,000 Derefter ned i bunden har vi en submit knap 1048 00:55:46,000 --> 00:55:49,000 som vi har set før, men bemærker jeg lige gav det et andet ord. 1049 00:55:49,000 --> 00:55:53,000 I stedet for CS50 søgning gav jeg mærket "Registrer". 1050 00:55:53,000 --> 00:55:56,000 >> Slutresultatet er denne webside her, og igen, 1051 00:55:56,000 --> 00:56:00,000 Hvor kommer dette bliver forelagt? 1052 00:56:00,000 --> 00:56:04,000 Det bliver sendt til nogle fil, værdien af ​​aktionen attribut, 1053 00:56:04,000 --> 00:56:07,000 som var register0.php. 1054 00:56:07,000 --> 00:56:09,000 Lad os se, hvad der faktisk sker her. 1055 00:56:09,000 --> 00:56:13,000 Lad mig gå videre og udfylde denne formular, siger David, 1056 00:56:13,000 --> 00:56:16,000 mand, Matthews, og så vil jeg sige registrere. 1057 00:56:16,000 --> 00:56:18,000 Lad mig zoome ud og klik registrere. 1058 00:56:18,000 --> 00:56:22,000 Okay, så slags ubrugelig, men lad os se, hvad der rent faktisk sker. 1059 00:56:22,000 --> 00:56:26,000 Bemærk, at webadressen er ændret til at være register0.php. 1060 00:56:26,000 --> 00:56:34,000 Hvad er mærkeligt fraværende fra webadressen, selv om, selv om vi lige har sendt en formular? 1061 00:56:34,000 --> 00:56:37,000 [Uhørlig student svar] 1062 00:56:37,000 --> 00:56:39,000 Okay, det er bare Chrome er brugervenlig disse dage. 1063 00:56:39,000 --> 00:56:42,000 Det er faktisk dér. De bare skjule det for at spare plads. 1064 00:56:42,000 --> 00:56:44,000 Men god tanke, god tanke. 1065 00:56:44,000 --> 00:56:46,000 Mod den anden ende af URL'en, selv om er hvad mangler? Yeah. 1066 00:56:46,000 --> 00:56:48,000 [Student] søgestrengen. 1067 00:56:48,000 --> 00:56:51,000 Søgestrengen, så husker fra vores simpel Google-søgning eksempler. 1068 00:56:51,000 --> 00:56:54,000 Så snart jeg klikker på send-knappen URL'en 1069 00:56:54,000 --> 00:57:00,000 tog mig til Google, men så var der? q = datalogi eller hvad jeg havde skrevet i. 1070 00:57:00,000 --> 00:57:04,000 Det er fordi vi brugte get-metoden med søgningen eksempel. 1071 00:57:04,000 --> 00:57:06,000 >> Denne gang vi bruger hvilken metode i stedet? 1072 00:57:06,000 --> 00:57:10,000 Sende, og en af ​​de umiddelbare sondringer 1073 00:57:10,000 --> 00:57:14,000 mellem GET og POST er, at stillingen ikke sætte brugerens input i webadressen. 1074 00:57:14,000 --> 00:57:16,000 Det skjuler det. Det stadig sender den. 1075 00:57:16,000 --> 00:57:19,000 Faktisk har vi hvad ser i browseren her, som vi vil afsløre om et øjeblik 1076 00:57:19,000 --> 00:57:22,000 ved at se på register0, bliver jeg bare at se indholdet 1077 00:57:22,000 --> 00:57:25,000 af arrayet, der blev indgivet fra browseren til serveren. 1078 00:57:25,000 --> 00:57:29,000 Men URL'en ikke har en?, Ikke har nogen nøgleord 1079 00:57:29,000 --> 00:57:31,000 eller værdier i det, og hvorfor er det? 1080 00:57:31,000 --> 00:57:35,000 Nå, post giver dig mulighed for stadig indsende data fra formularen til en server, 1081 00:57:35,000 --> 00:57:38,000 men det gør ikke sætte det i webadressen, så hvad slags oplysninger er post 1082 00:57:38,000 --> 00:57:41,000 særligt egnet til måske, når du beder brugeren om at 1083 00:57:41,000 --> 00:57:44,000 indtaste input til en formular? 1084 00:57:44,000 --> 00:57:48,000 Noget som en adgangskode, noget i retning af hvad ellers? 1085 00:57:48,000 --> 00:57:50,000 Kreditkortnumre. 1086 00:57:50,000 --> 00:57:53,000 Alt, hvad der er mildt følsom du sandsynligvis ikke ønsker at ende op i URL'en 1087 00:57:53,000 --> 00:57:56,000 om ikke andet fordi det betyder, at din roommate eller et familiemedlem kan bare trold igennem 1088 00:57:56,000 --> 00:57:59,000 din internet historie og derefter bogstaveligt talt se dine adgangskoder, 1089 00:57:59,000 --> 00:58:02,000 bogstaveligt se dine kreditkortnumre, fordi de fleste browsere 1090 00:58:02,000 --> 00:58:05,000 Husk i historien, uanset webadresser, du har været på, 1091 00:58:05,000 --> 00:58:09,000 så hvis blot fordi det ville være en dårlig idé. 1092 00:58:09,000 --> 00:58:11,000 Brug indlæg huder, at detaljer fra brugeren. 1093 00:58:11,000 --> 00:58:14,000 >> Også, hvordan kan du uploade et billede til Facebook? 1094 00:58:14,000 --> 00:58:17,000 Nå, de kun 2 mekanismer, du virkelig kan bruge, 1095 00:58:17,000 --> 00:58:21,000 selvom der er et par andre mere mystiske dem, er at komme og skrive. 1096 00:58:21,000 --> 00:58:26,000 Hvordan kan du muligvis uploade et foto via en URL? 1097 00:58:26,000 --> 00:58:28,000 Du kan faktisk gøre det. 1098 00:58:28,000 --> 00:58:30,000 Du kan tage en JPEG-eller bitmap eller GIF, og du kan repræsentere det i hexadecimal 1099 00:58:30,000 --> 00:58:32,000 eller noget, der hedder basis 64. 1100 00:58:32,000 --> 00:58:35,000 I stedet for basen 16 du bruger basen 64, som i det væsentlige ligner 1101 00:58:35,000 --> 00:58:38,000 ASCII-tegn, og du kan faktisk uploade et billede via en URL 1102 00:58:38,000 --> 00:58:41,000 efter et spørgsmålstegn, men der er generelt størrelsesgrænser. 1103 00:58:41,000 --> 00:58:44,000 De fleste browsere tvinger webadresser til at være ikke mere end 1.000 tegn, 1104 00:58:44,000 --> 00:58:47,000 måske 2.000 tegn eller lignende, så du kan ikke uploade 1105 00:58:47,000 --> 00:58:50,000 en 10 MB Facebook foto. 1106 00:58:50,000 --> 00:58:54,000 For at du bruger indlæg så godt, så for nu får sætter parametrene i webadressen, 1107 00:58:54,000 --> 00:58:57,000 hvilket er rart og nyttige nogle gange, men for noget følsom eller store 1108 00:58:57,000 --> 00:58:59,000 stillingen er vejen at gå. 1109 00:58:59,000 --> 00:59:02,000 Hvad er register0 egentlig laver her? 1110 00:59:02,000 --> 00:59:05,000 Tja, hvis jeg åbner register0 meddelelse om, at dette er en super simpel side, 1111 00:59:05,000 --> 00:59:09,000 men det er viser det faktum, at jeg kan samarbejde blande sig, for bedre eller værre, 1112 00:59:09,000 --> 00:59:12,000 HTML med PHP. 1113 00:59:12,000 --> 00:59:15,000 Hele denne fil, med undtagelse af de kommentarer i toppen, er HTML 1114 00:59:15,000 --> 00:59:19,000 bortset fra denne fyr her. 1115 00:59:19,000 --> 00:59:22,000 >> Bemærk i midten af ​​min PHP kode, 1116 00:59:22,000 --> 00:59:26,000 i midten af ​​min HTML, har jeg slags midlertidigt 1117 00:59:26,000 --> 00:59:28,000 indtastet PHP mode. 1118 00:59:28,000 --> 00:59:31,000 Jeg ringer en speciel funktion kaldet print r. 1119 00:59:31,000 --> 00:59:34,000 Det betyder udskrive rekursiv, og hvad det gør, er det rekursivt udskrives 1120 00:59:34,000 --> 00:59:38,000 uanset variabel, du afleverer den, semikolon, frakørsel PHP mode. 1121 00:59:38,000 --> 00:59:40,000 Og før tag giver dig pre-formateret tekst, 1122 00:59:40,000 --> 00:59:43,000 mono space tekst, så hver plads du faktisk se det. 1123 00:59:43,000 --> 00:59:46,000 Det forsvinder ikke. Hvad er post? 1124 00:59:46,000 --> 00:59:48,000 Nå, hvad er interessant og overbevisende om PHP 1125 00:59:48,000 --> 00:59:52,000 er, at når du sender en formular ved hjælp GET eller POST 1126 00:59:52,000 --> 00:59:56,000 noget, der er forelagt til dig af en browser 1127 00:59:56,000 --> 01:00:00,000 PHP selv finder ud af, hvad de centrale værdi par er, 1128 01:00:00,000 --> 01:00:02,000 tal ud, hvis der er lighedstegn, figurer ud af, om der er et spørgsmålstegn. 1129 01:00:02,000 --> 01:00:07,000 Det gør alt det hårde arbejde for dig, og så er det hænder du et associativt array 1130 01:00:07,000 --> 01:00:10,000 indeholder alt, hvad brugeren har indtastet i formularen. 1131 01:00:10,000 --> 01:00:12,000 Nå, hvad gjorde felter denne formular have? 1132 01:00:12,000 --> 01:00:14,000 >> Det havde fire felter. 1133 01:00:14,000 --> 01:00:16,000 Den ene var et tekstfelt kaldet navn. 1134 01:00:16,000 --> 01:00:18,000 Den ene var et flueben kaldet kaptajn. 1135 01:00:18,000 --> 01:00:22,000 Den ene var en radio knap kaldet køn, 1136 01:00:22,000 --> 01:00:24,000 og en var en drop-down menu der hedder dorm, 1137 01:00:24,000 --> 01:00:27,000 så mærke til, når jeg udskriver rekursivt 1138 01:00:27,000 --> 01:00:29,000 indholdet af denne særlige variabel. 1139 01:00:29,000 --> 01:00:34,000 Dette er en særlig global variabel kaldet bogstaveligt $ _POST i alle hætter. 1140 01:00:34,000 --> 01:00:39,000 Dette er en speciel global variabel som PHP bare skaber for dig 1141 01:00:39,000 --> 01:00:42,000 og hænder til dig, så du kan få adgang til alt 1142 01:00:42,000 --> 01:00:45,000 der blev fremlagt via en formular af en bruger. 1143 01:00:45,000 --> 01:00:48,000 Og ved at ringe print r på det, ville du ikke gøre det på en normal anvendelse. 1144 01:00:48,000 --> 01:00:50,000 Vi gør dette for at se indersiden af ​​denne variabel, 1145 01:00:50,000 --> 01:00:53,000 og hvad er inde i det, ja, 4 taster, 1146 01:00:53,000 --> 01:00:56,000 4 http parametre, så at sige, 1147 01:00:56,000 --> 01:00:59,000 navn, kaptajn, køn, dorm, og derefter de værdier, som brugeren 1148 01:00:59,000 --> 01:01:01,000 skrives med en enkelt undtagelse. 1149 01:01:01,000 --> 01:01:03,000 Jeg gjorde type D-A-V-I-D. 1150 01:01:03,000 --> 01:01:05,000 Jeg tjekkede kassen, men for mandlige, som tilsyneladende forelagt en værdi 1151 01:01:05,000 --> 01:01:07,000 af bare m for at være kortfattet. 1152 01:01:07,000 --> 01:01:10,000 >> Da jeg valgte Matthews det er den værdi, der blev valgt, 1153 01:01:10,000 --> 01:01:12,000 og dette er en lidt dum, men det er konventionen. 1154 01:01:12,000 --> 01:01:17,000 Når jeg kontrolleret boksen, en værdi på om, "på", blev fremlagt for afkrydsningsfeltet. 1155 01:01:17,000 --> 01:01:21,000 Hvis jeg ikke havde tjekket det, ville ingen værdi er blevet sendt overhovedet. 1156 01:01:21,000 --> 01:01:26,000 Dette er bare at give os et indblik i, hvad der er inde i denne særlige global variabel, 1157 01:01:26,000 --> 01:01:29,000 og det er så specielt, at det kaldes en super global variabel. 1158 01:01:29,000 --> 01:01:33,000 Den findes overalt for dig i din kode, så du kan faktisk få adgang til det. 1159 01:01:33,000 --> 01:01:36,000 Det er ikke så overbevisende, så lad os faktisk bruge super global 1160 01:01:36,000 --> 01:01:38,000 og faktisk forsøge at registrere nogen. 1161 01:01:38,000 --> 01:01:41,000 I froshims1 Jeg har tænkt mig at lave en ændring. 1162 01:01:41,000 --> 01:01:44,000 Jeg skifter handlingen til at være register1.php, 1163 01:01:44,000 --> 01:01:46,000 og jeg gør en anden ting. 1164 01:01:46,000 --> 01:01:48,000 Jeg var lidt flov over kvaliteten af ​​min webside der. 1165 01:01:48,000 --> 01:01:52,000 Det er temmelig hæslige, ærligt, så viser det sig 1166 01:01:52,000 --> 01:01:56,000 som du kan bruge meget nemt på nettet 1167 01:01:56,000 --> 01:01:59,000 andre folks JavaScript-kode, andre folks CSS 1168 01:01:59,000 --> 01:02:02,000 at de har skrevet og åbne kilder og stilles til rådighed som et bibliotek, 1169 01:02:02,000 --> 01:02:06,000 så at sige, og for eksempel jeg her jeg bruger en frit tilgængelig bibliotek, 1170 01:02:06,000 --> 01:02:08,000 en flok kode, som en anden skrev. 1171 01:02:08,000 --> 01:02:11,000 >> Twitter sket at skrive denne kode, og det hedder bootstrap bibliotek, 1172 01:02:11,000 --> 01:02:15,000 og det er bare en flok CSS style sheets, en flok. css filer 1173 01:02:15,000 --> 01:02:19,000 at en anden skrev og regnede ud, hvordan at få alt nice og temmelig 1174 01:02:19,000 --> 01:02:22,000 så folk som os kan bekymre lidt mindre om æstetik og fokusere meget mere 1175 01:02:22,000 --> 01:02:24,000 på logik og selve programmeringen. 1176 01:02:24,000 --> 01:02:30,000 Ved at sammenkæde det med det tag, som er den samme tag jeg brugte huske styles3.css tidligere, 1177 01:02:30,000 --> 01:02:34,000 Jeg har nu adgang til en fil, der hedder bootstrap.min.css. 1178 01:02:34,000 --> 01:02:37,000 Min bare betyder, at de har minified det, og de har fået fjernet al det hvide rum og så videre 1179 01:02:37,000 --> 01:02:40,000 bare for at sikre de ikke sende mig flere byte end jeg egentlig har brug for. 1180 01:02:40,000 --> 01:02:45,000 Men i der er en hel bunke af CSS, så hvis jeg nu åbne op version 1 af Frosh infrastrukturforvaltere 1181 01:02:45,000 --> 01:02:49,000 bemærke, at min fil er absolut pænere. 1182 01:02:49,000 --> 01:02:54,000 Nu er det stadig bare sort og hvid, men bemærke, at ved blot at bruge deres stil ark 1183 01:02:54,000 --> 01:02:58,000 og bruge bestemte funktioner i det på min form er det ikke fantastisk, 1184 01:02:58,000 --> 01:03:01,000 men det er absolut renere end det var før, og projektoren ikke gør det retfærdighed. 1185 01:03:01,000 --> 01:03:05,000 Der er små grå linjer omkring knapperne og omkring tekstfeltet lige her, 1186 01:03:05,000 --> 01:03:07,000 men det er absolut renere end det var før. 1187 01:03:07,000 --> 01:03:09,000 >> Nu, i retfærdighed, jeg er nødt til at ændre min markup en smule. 1188 01:03:09,000 --> 01:03:12,000 Dette er version 1, og læg mærke til, at jeg har brugt et par nye tags, 1189 01:03:12,000 --> 01:03:17,000 og ærligt, jeg havde ingen idé om, hvordan du gør dette, indtil jeg læste dokumentationen 1190 01:03:17,000 --> 01:03:20,000 for Twitters bootstrap bibliotek, og de fortalte mig, hvis du ønsker at bruge vores bibliotek 1191 01:03:20,000 --> 01:03:23,000 bruge en fieldset element inde i din form, 1192 01:03:23,000 --> 01:03:27,000 sætte det ord, du ønsker at vise ved siden af ​​et felt inde i en etiket tag, 1193 01:03:27,000 --> 01:03:30,000 så giv dit input et navn, ligesom før, 1194 01:03:30,000 --> 01:03:34,000 og dernæst for afkrydsningsfeltet, ikke kun du pakke den ind i en etiket element, 1195 01:03:34,000 --> 01:03:36,000 du bruger noget, der hedder en klasse, så vi har ikke set det før, 1196 01:03:36,000 --> 01:03:39,000 men du vil se dette i et af Pset 7 s shorts. 1197 01:03:39,000 --> 01:03:43,000 En klasse i CSS lader dig gøre noget meget lig den ID, 1198 01:03:43,000 --> 01:03:46,000 men før da vi havde et id med symbolet # 1199 01:03:46,000 --> 01:03:48,000 Det var for én og kun én element. 1200 01:03:48,000 --> 01:03:51,000 Hvad er rart om en klasse, er, at flere elementer kan have den samme klasse 1201 01:03:51,000 --> 01:03:54,000 eller den samme CSS stuff anvendt i den. 1202 01:03:54,000 --> 01:03:57,000 >> Men igen, der er mere på dem på kort, og resten af ​​dette blot kopiere og indsætte 1203 01:03:57,000 --> 01:04:00,000 fra deres dokumentation, hvor jeg har tilføjet en etiket her og der. 1204 01:04:00,000 --> 01:04:03,000 Og i slutningen, fordi jeg har inkluderet link tag øverst, 1205 01:04:03,000 --> 01:04:06,000 alt ser pænere automatisk 1206 01:04:06,000 --> 01:04:10,000 ved blot at have markeret op min side på en måde, 1207 01:04:10,000 --> 01:04:12,000 Twitter forventet, og der er så mange forskellige måder 1208 01:04:12,000 --> 01:04:14,000 at gøre dette, og det er faktisk meget passende. 1209 01:04:14,000 --> 01:04:17,000 På dette tidspunkt i semestret, som du vil se i Pset 7 s spec 1210 01:04:17,000 --> 01:04:20,000 Googling rundt, læse op på biblioteker, ved hjælp af andre folks CSS 1211 01:04:20,000 --> 01:04:23,000 og JavaScript til at løse accessoriske problemer 1212 01:04:23,000 --> 01:04:26,000 på problemet indstillede sig selv er bestemt fremmes, og er den måde 1213 01:04:26,000 --> 01:04:29,000 Web er bygget i disse dage, ved at stå på andres skuldre 1214 01:04:29,000 --> 01:04:32,000 så du virkelig kan fokusere på de nye og interessante problemstillinger. 1215 01:04:32,000 --> 01:04:34,000 Men lad os nu fokusere på, igen, logikken. 1216 01:04:34,000 --> 01:04:38,000 >> Det var en hurtig omvej på æstetik bare for at vise dig i hvilken retning du kan gå. 1217 01:04:38,000 --> 01:04:40,000 Jeg har tænkt mig at vende tilbage til den grimmere én for nu bare fordi 1218 01:04:40,000 --> 01:04:44,000 der er ingen distraktioner med Twitter stuff, og lad mig gå videre og åbne op 1219 01:04:44,000 --> 01:04:51,000 froshims2, som igen adskiller sig kun i den sag, register2.php, 1220 01:04:51,000 --> 01:04:55,000 og lad os tage et kig på, hvad effekten er her. 1221 01:04:55,000 --> 01:04:57,000 Lad mig gå videre og skrive i David. 1222 01:04:57,000 --> 01:04:59,000 Jeg vil ikke være kaptajn denne gang. 1223 01:04:59,000 --> 01:05:01,000 Jeg vil sige han, Matthews, register. 1224 01:05:01,000 --> 01:05:05,000 Fandens. Okay, det er en skrue op på min side. 1225 01:05:05,000 --> 01:05:07,000 Stand by. 1226 01:05:07,000 --> 01:05:17,000 Register2, linie 22, hvis tom eller-undskyld. 1227 01:05:17,000 --> 01:05:19,000 Lad os genindlæse. 1228 01:05:19,000 --> 01:05:22,000 Okay, ved at indsende denne formular hvad skete der lige? 1229 01:05:22,000 --> 01:05:25,000 Jeg har skrevet i David, kontrolleret mand, klikkede Matthews, register. 1230 01:05:25,000 --> 01:05:27,000 Du er registreret. (Nå, ikke rigtig.) 1231 01:05:27,000 --> 01:05:32,000 Dette er helt klart et skridt videre end blot at udskrive indholdet af nogle variable, 1232 01:05:32,000 --> 01:05:34,000 men hvad denne fil egentlig gør? 1233 01:05:34,000 --> 01:05:37,000 I register2.php 1234 01:05:37,000 --> 01:05:40,000 bemærke, at jeg har nogle nye kode. 1235 01:05:40,000 --> 01:05:44,000 Inde i min krop tag jeg har hovedsagelig en hvis ellers konstruere, 1236 01:05:44,000 --> 01:05:47,000 men fordi jeg sammenblanding dette med nogle HTML 1237 01:05:47,000 --> 01:05:51,000 Jeg er nødt til at gå ind og ud PHP mode frem og tilbage, så lad os se, hvad jeg laver. 1238 01:05:51,000 --> 01:05:55,000 >> I den første linje her jeg siger, hvis det er tilfældet 1239 01:05:55,000 --> 01:06:00,000 at stillingen super global er tom for nøglen af ​​navn, 1240 01:06:00,000 --> 01:06:04,000 så med andre ord, hvis brugeren ikke gav mig en værdi for navn i form, 1241 01:06:04,000 --> 01:06:07,000 derefter tom vil returnere sand, fordi værdien er tom. 1242 01:06:07,000 --> 01:06:11,000 Or-mærke de lodrette bjælker-hvis køn er tom 1243 01:06:11,000 --> 01:06:15,000 indersiden af ​​denne særlige super global, som igen repræsenterer indholdet af form, 1244 01:06:15,000 --> 01:06:19,000 eller dorm er tom, så jeg har tænkt mig at gå videre og råbe på brugeren. 1245 01:06:19,000 --> 01:06:22,000 Hvordan? Nå, bemærker jeg har tænkt mig at sige, at du skal give dit navn, køn og dorm. 1246 01:06:22,000 --> 01:06:24,000 Lad os faktisk fremkalde den fejl. 1247 01:06:24,000 --> 01:06:27,000 Lad mig gå tilbage til min form. Lad mig genindlæse at slette den. 1248 01:06:27,000 --> 01:06:30,000 Og jeg vil bare give dem David, og de behøver ikke at vide, hvor jeg bor. 1249 01:06:30,000 --> 01:06:33,000 Register. Tilsyneladende jeg behøver at fortælle dem, hvor jeg bor. 1250 01:06:33,000 --> 01:06:35,000 Du skal oplyse dit navn, køn og dorm. Gå tilbage. 1251 01:06:35,000 --> 01:06:39,000 >> Og jeg kunne klikke for at gå tilbage til den form, men hvorfor så det? 1252 01:06:39,000 --> 01:06:43,000 Tja, i dette tilfælde navn var ikke tom, men køn var, og dorm var, 1253 01:06:43,000 --> 01:06:47,000 så denne hele udtrykket evalueres til sand, og selvom syntaksen er lidt nyt, 1254 01:06:47,000 --> 01:06:51,000 igen, vi går ind i PHP mode, velkendt hvis udsagn, 1255 01:06:51,000 --> 01:06:54,000 men den nye del her er netop denne kolon, og jeg havde skruet op ved at udelade en parentes 1256 01:06:54,000 --> 01:06:57,000 ved et uheld, varsel, men tyktarmen, og det betyder 1257 01:06:57,000 --> 01:07:00,000 selvom vi afslutter PHP mode alt 1258 01:07:00,000 --> 01:07:03,000 der følger bør spytte ud ordret til browseren 1259 01:07:03,000 --> 01:07:07,000 indtil du ser en anden blok, som vi gør her, 1260 01:07:07,000 --> 01:07:10,000 i hvilket tilfælde du skal i stedet spytte dette ud 1261 01:07:10,000 --> 01:07:13,000 indtil du ser endif, så nogle lidt ny syntaks 1262 01:07:13,000 --> 01:07:16,000 som giver mig mulighed for at skifte mellem HTML og PHP. 1263 01:07:16,000 --> 01:07:19,000 Vi kan rydde op i sidste ende, men for nu, 1264 01:07:19,000 --> 01:07:22,000 det er lidt af en overbevisende måde fejlkontrol formularen. 1265 01:07:22,000 --> 01:07:25,000 >> Nu siger jeg, at du ikke rigtig registreret, fordi vi naturligvis har gjort noget, men de data, 1266 01:07:25,000 --> 01:07:28,000 så lad os faktisk forsøge at gøre noget cool. 1267 01:07:28,000 --> 01:07:33,000 I froshims3 den eneste forskel er jeg har tænkt mig at underkaste sig register3, 1268 01:07:33,000 --> 01:07:35,000 så HTML er den samme. 1269 01:07:35,000 --> 01:07:38,000 I register3 bemærke dette. 1270 01:07:38,000 --> 01:07:40,000 Denne ene er en slags sexet. 1271 01:07:40,000 --> 01:07:44,000 Øverst jeg bruger et krav erklæring, så det er ligesom # include. 1272 01:07:44,000 --> 01:07:46,000 Denne gang er det ikke stdio.h eller sådan noget. 1273 01:07:46,000 --> 01:07:50,000 Det er en PHP bibliotek, og denne ene kaldes PHPMailer. 1274 01:07:50,000 --> 01:07:53,000 Hvordan vidste jeg at inkludere netop denne streng i anførselstegn? 1275 01:07:53,000 --> 01:07:56,000 Jeg læste det i dokumentationen, så når de fortalte mig sætte dette øverst på filen 1276 01:07:56,000 --> 01:08:00,000 hvis du ønsker at bruge en speciel bibliotek kaldet PHPMailer der gør hvad det siger. 1277 01:08:00,000 --> 01:08:03,000 Det giver dig mulighed for at sende e-mail via PHP. 1278 01:08:03,000 --> 01:08:05,000 Lad os nu rulle ned yderligere. 1279 01:08:05,000 --> 01:08:08,000 >> Meddelelse at begynde jeg i PHP mode hele denne tid, 1280 01:08:08,000 --> 01:08:11,000 så nu mærke til hernede efter import biblioteket, 1281 01:08:11,000 --> 01:08:13,000  så at sige, jeg laver nogle sanity checks. 1282 01:08:13,000 --> 01:08:16,000 Hvis det er tilfældet, at navnet ikke er tom 1283 01:08:16,000 --> 01:08:19,000 og køn er ikke tom-mærke til de udråbstegn- 1284 01:08:19,000 --> 01:08:24,000 og dorm er ikke tom, så brugeren har logisk udfyldt formularen, i hvert fald nok. 1285 01:08:24,000 --> 01:08:28,000 Jeg er ligeglad med, om de er kaptajn eller ej. Jeg skal bare have deres navn, køn og dorm. 1286 01:08:28,000 --> 01:08:31,000 Hvis de har udfyldt dem ud, så ingen af ​​disse felter er tomme 1287 01:08:31,000 --> 01:08:33,000 dette er lidt ny syntaks. 1288 01:08:33,000 --> 01:08:36,000 PHP, som en sidebemærkning, er et objektorienteret programmeringssprog 1289 01:08:36,000 --> 01:08:39,000 som nogle af jer måske husker fra APCS eller lignende. 1290 01:08:39,000 --> 01:08:42,000 For nu, hvis uvant bare vide, at for at bruge dette bibliotek 1291 01:08:42,000 --> 01:08:45,000 du er nødt til at skrive en linje kode som denne bruger et nyt søgeord, 1292 01:08:45,000 --> 01:08:47,000 bogstaveligt talt et nyt søgeord kaldet ny. 1293 01:08:47,000 --> 01:08:50,000 Men ud over det, har vi nogle velkendte syntaks. 1294 01:08:50,000 --> 01:08:54,000 Det er en pil operatør, hvilket svarer til, hvad vi brugt til struct i forbindelse med pointere. 1295 01:08:54,000 --> 01:08:57,000 For i dag PHP ikke har pegepinde, 1296 01:08:57,000 --> 01:09:01,000 men ved for nu at indersiden af ​​post variable 1297 01:09:01,000 --> 01:09:05,000 er i det væsentlige sådan en pegepind til et fagbibliotek 1298 01:09:05,000 --> 01:09:08,000 at en anden skrev, og hvis jeg ønsker at få adgang til specifikke funktioner 1299 01:09:08,000 --> 01:09:12,000 indersiden af ​​det bibliotek jeg, ligesom i C, skal du bruge pil operatør, 1300 01:09:12,000 --> 01:09:14,000 selv om disse ikke faktisk pegepinde. 1301 01:09:14,000 --> 01:09:16,000 Det er lidt PHP egen version deraf. 1302 01:09:16,000 --> 01:09:20,000 Det betyder, gå ind på biblioteket og kalder IsSMTP funktion. 1303 01:09:20,000 --> 01:09:23,000 SMTP, tilbagekaldelse, fra vores Warriors of the Net henviser til e-mail, 1304 01:09:23,000 --> 01:09:28,000 og det betyder bare bruge en e-mail-server til denne Frosh IM registrering. 1305 01:09:28,000 --> 01:09:30,000 >> Hvilken host ønsker jeg at bruge? 1306 01:09:30,000 --> 01:09:34,000 Tja, Harvard, hvis du Google rundt, har en e-mail-server kaldet smtp.fas.harvard.edu. 1307 01:09:34,000 --> 01:09:37,000 Hvis du spiller sammen derhjemme, eller du bor på en Comcast netværk 1308 01:09:37,000 --> 01:09:40,000 det kunne være noget i retning af smtp.comcast.net. 1309 01:09:40,000 --> 01:09:43,000 Det helt afhænger af, hvor du bor og hvem din ISP er. 1310 01:09:43,000 --> 01:09:47,000 Efter at jeg har tænkt mig at indstille min fra adresse vilkårligt at være jharvard@cs50.net. 1311 01:09:47,000 --> 01:09:52,000 Jeg derefter gå til at indstille at tage for at være jharvard@cs50.net. 1312 01:09:52,000 --> 01:09:55,000 Den eneste måde, jeg vidste, at disse funktioner blev kaldt SetFrom og AddAddress 1313 01:09:55,000 --> 01:09:57,000 er, igen, jeg læse dokumentationen. 1314 01:09:57,000 --> 01:09:59,000 Dette er ikke slags magisk kendt af alle programmører. 1315 01:09:59,000 --> 01:10:02,000 Så jeg sat et emne til "registrering." 1316 01:10:02,000 --> 01:10:07,000 Og nu denne linie er lidt grimt, fordi det betyder prik operatør betyder i PHP? 1317 01:10:07,000 --> 01:10:09,000 Alle kender? 1318 01:10:09,000 --> 01:10:11,000 Sammenkæde. 1319 01:10:11,000 --> 01:10:14,000 I C er det en smerte i nakken til at sammenkæde 2 strenge sammen. 1320 01:10:14,000 --> 01:10:17,000 Du er nødt til at beskæftige sig med malloc eller realloc eller hele denne ting 1321 01:10:17,000 --> 01:10:20,000 bare for at forlænge en streng. 1322 01:10:20,000 --> 01:10:22,000 I PHP, i JavaScript og andre sprog 1323 01:10:22,000 --> 01:10:24,000 du kan normalt gøre dette med en enkelt karakter. 1324 01:10:24,000 --> 01:10:28,000 I dette tilfælde betyder dot tage denne streng her 1325 01:10:28,000 --> 01:10:30,000 og tilføje til det denne streng. 1326 01:10:30,000 --> 01:10:32,000 >> Åh, og ved den måde, føje til det denne streng, 1327 01:10:32,000 --> 01:10:34,000 der sker for at være en variabel inde i det super global. 1328 01:10:34,000 --> 01:10:37,000 Så tilføje til det en ny linje, så alle disse prikker blot betyder 1329 01:10:37,000 --> 01:10:39,000 holde gør en større og større og større streng, 1330 01:10:39,000 --> 01:10:43,000 og du behøver ikke at bekymre sig overhovedet om malloc eller lignende i et sprog som denne, 1331 01:10:43,000 --> 01:10:46,000 og der er andre måder at gøre dette, men dette er en af ​​de hurtigste 1332 01:10:46,000 --> 01:10:48,000 måder at lægge det ud. 1333 01:10:48,000 --> 01:10:50,000 Hvad er dette gør? 1334 01:10:50,000 --> 01:10:55,000 Det skaber en e-mail organ, der kommer til at sige Navn: Captain: Køn: Dorm: 1335 01:10:55,000 --> 01:10:58,000 alle på separate linjer, og derefter endelig 1336 01:10:58,000 --> 01:11:00,000 én linje kode, og jeg har tænkt mig at ignorere dette for nu. 1337 01:11:00,000 --> 01:11:02,000 Hvis == falsk bare betyder, at hvis noget gik galt, 1338 01:11:02,000 --> 01:11:04,000 men magien opstår her. 1339 01:11:04,000 --> 01:11:08,000 Mail Send betyder Send denne e-mail. 1340 01:11:08,000 --> 01:11:10,000 Lad os se hvad nettoresultatet er. 1341 01:11:10,000 --> 01:11:13,000 I bunden af ​​filen, mærke det vil sige, at du er registreret rigtigt 1342 01:11:13,000 --> 01:11:15,000 hvis jeg får så langt. 1343 01:11:15,000 --> 01:11:18,000 Men hvis brugeren skruer op, bemærke, at vi startede denne 1344 01:11:18,000 --> 01:11:21,000 hvis betingelse op her, hvis det ikke er tomme og ikke tomme 1345 01:11:21,000 --> 01:11:24,000 og ikke tømme vi sende mailen. 1346 01:11:24,000 --> 01:11:27,000 Ellers vil vi sende denne linje kode, 1347 01:11:27,000 --> 01:11:30,000 som vil have den virkning, som du vil se i Pset 7, for at omdirigere brugeren 1348 01:11:30,000 --> 01:11:35,000 tilbage til hvor de kom, froshims3.php. 1349 01:11:35,000 --> 01:11:38,000 >> Krydsede fingre, ellers det vil være den mest skuffende demo i dag. 1350 01:11:38,000 --> 01:11:40,000 Her går vi. 1351 01:11:40,000 --> 01:11:42,000 Lad mig åbne min e-mail indbakke for jharvard i Gmail. 1352 01:11:42,000 --> 01:11:44,000 Ingen e-mail lige nu. Ok. 1353 01:11:44,000 --> 01:11:53,000 Lad mig nu åbne froshims3, som er den tredje og sidste eksempel vil vi se på her. 1354 01:11:53,000 --> 01:11:55,000 Okay, here we go. 1355 01:11:55,000 --> 01:12:00,000 Nate, han vil være kaptajn, mandlige, fra, siger, Apley. 1356 01:12:00,000 --> 01:12:04,000 Register. Okay, du er registreret rigtigt. 1357 01:12:04,000 --> 01:12:07,000 Nu, hvis jeg ruller over til min e-mail, åh, min Gud. 1358 01:12:07,000 --> 01:12:09,000 Jeg har netop dynamisk sendt en e-mail på internettet. 1359 01:12:09,000 --> 01:12:11,000 >> Lad os overlade til notatet. 1360 01:12:11,000 --> 01:12:16,000 En video er forestående for foredraget vi forpasset. Se dig næste uge. 1361 01:12:16,000 --> 01:12:18,000 [CS50.TV]