1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Settimana 8] 2 00:00:02,000 --> 00:00:04,000 [David J Malan] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Questo è CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,000 >> Bentornato. 5 00:00:09,000 --> 00:00:11,000 Questo è CS50, e questo è l'inizio di 8 settimane. 6 00:00:11,000 --> 00:00:14,000 Un paio di opportunità di questa settimana, 7 00:00:14,000 --> 00:00:17,000 tra i quali questo discorso qui, in cui il cibo viene servito. 8 00:00:17,000 --> 00:00:20,000 Per maggiori informazioni consultare le diapositive che sono online. 9 00:00:20,000 --> 00:00:24,000 E anche un altro evento questa settimana dal nostro Thomas Carriero. 10 00:00:24,000 --> 00:00:27,000 E 'uno dei compagni di CS50 ex testa di insegnamento, che è ora a Dropbox, 11 00:00:27,000 --> 00:00:29,000 e lui è il ragazzo che ci ha collegato con la sai una cosa, 12 00:00:29,000 --> 00:00:36,000 quindi se si vuole di più che la testa i loro discorsi di questo pomeriggio per Dropbox e altro ancora. 13 00:00:36,000 --> 00:00:38,000 CS50 pranzo è questo Venerdì. 14 00:00:38,000 --> 00:00:41,000 Sei unirsi a noi, se si è in grado, 1:15, come al solito, a Fire and Ice. 15 00:00:41,000 --> 00:00:45,000 >> E ora ci immergiamo in qualcosa chiamato Seminari. 16 00:00:45,000 --> 00:00:49,000 I nostri Seminari CS50, richiamo, sono queste classi opzionali guidati dai compagni di insegnamento 17 00:00:49,000 --> 00:00:51,000 e assistenti del corso e gli amici del corso, 18 00:00:51,000 --> 00:00:55,000 gente da un gruppo di campus chiamato ABCD, che è un gruppo di 19 00:00:55,000 --> 00:00:58,000 tecnofili nel campus, così come un gruppo chiamato HCS, 20 00:00:58,000 --> 00:01:02,000 Society di Harvard computer, gli studenti universitari che sono ugualmente interessati al calcolo. 21 00:01:02,000 --> 00:01:08,000 Roster di quest'anno di seminari comprende seminari su Android e iOS e JavaScript 22 00:01:08,000 --> 00:01:13,000 e PHP, Unix, Vim, e molto altro, in modo da rendersi conto che questi seminari sono in arrivo. 23 00:01:13,000 --> 00:01:16,000 Se vuoi RSVP per nessuno di loro testa a tale URL lì. 24 00:01:16,000 --> 00:01:20,000 Noi poi pubblicare sul sito web del corso i tempi ei luoghi, una volta che sono finalizzati. 25 00:01:20,000 --> 00:01:26,000 Ma vale la pena sapere c'è cinque anni di seminari precedenti disponibili online, 26 00:01:26,000 --> 00:01:29,000 molti dei quali sono ancora molto attuale in termini di tecnologie che potrebbero 27 00:01:29,000 --> 00:01:36,000 vuole giocare con per i vostri progetti finali, quindi andate lì per alcuni video disponibili della stessa. 28 00:01:36,000 --> 00:01:39,000 >> CSS, quelli di voi che hanno familiarità con i CSS già, 29 00:01:39,000 --> 00:01:42,000 ciò che è in poche parole? 30 00:01:42,000 --> 00:01:45,000 Cosa sono i CSS? 31 00:01:45,000 --> 00:01:48,000 E 'fogli di stile CSS, e che cosa vuol dire? 32 00:01:48,000 --> 00:01:53,000 Che cosa fare per noi, i CSS? 33 00:01:53,000 --> 00:01:57,000 Va bene, facciamo scaldare con un più facile, HTML, HyperText Markup Language. 34 00:01:57,000 --> 00:02:01,000 Che cosa fare per noi? 35 00:02:01,000 --> 00:02:04,000 Proprio nessuno? 36 00:02:04,000 --> 00:02:07,000 Sta diventando davvero imbarazzante queste domande. 37 00:02:07,000 --> 00:02:11,000 HTML, HyperText Markup Language. 38 00:02:11,000 --> 00:02:14,000 Sì? No? 39 00:02:14,000 --> 00:02:17,000 [Risposta degli studenti incomprensibile] 40 00:02:17,000 --> 00:02:20,000 Ok, bene, ci permette di contrassegnare il testo da visualizzare in un browser web. 41 00:02:20,000 --> 00:02:22,000 Non è un linguaggio di programmazione. 42 00:02:22,000 --> 00:02:25,000 E 'davvero un linguaggio di markup, il che significa che indica al browser come visualizzare 43 00:02:25,000 --> 00:02:28,000 informazioni, in modo il più semplice incarnazione di questo, come abbiamo visto 44 00:02:28,000 --> 00:02:32,000 è qualcosa di super semplice come boldfacing, aprire staffa b parentesi chiusa, dice 45 00:02:32,000 --> 00:02:36,000 fanno di questo testo in grassetto, e che in realtà è solo uno dei tanti modi 46 00:02:36,000 --> 00:02:39,000 in cui possiamo farlo, e in effetti, in questi giorni un approccio migliore 47 00:02:39,000 --> 00:02:42,000 alla stilizzazione tua pagina web, rendendo le cose in grassetto e corsivo 48 00:02:42,000 --> 00:02:47,000 e centrati e giustificati e simili, non avviene tramite i tag HTML da solo 49 00:02:47,000 --> 00:02:51,000 ma piuttosto con una tecnica chiamata CSS, fogli di stile CSS. 50 00:02:51,000 --> 00:02:53,000 Questo è un linguaggio a sé stante. 51 00:02:53,000 --> 00:02:55,000 E anche questo non è un linguaggio di programmazione ma- 52 00:02:55,000 --> 00:02:58,000 tutti, questo è Dan, che mantiene con noi oggi. 53 00:02:58,000 --> 00:03:01,000 Alcune difficoltà tecniche. Non è un problema. 54 00:03:01,000 --> 00:03:04,000 >> CSS permette di stilizzare una pagina 55 00:03:04,000 --> 00:03:07,000 impostando quelli che vengono chiamati proprietà, quindi diamo un'occhiata a questo 56 00:03:07,000 --> 00:03:09,000 attraverso alcuni esempi di base. 57 00:03:09,000 --> 00:03:12,000 Lasciami andare nell'apparecchio oggi. 58 00:03:12,000 --> 00:03:15,000 Ho l'8 directory dei sorgenti Lunedi qui dentro, 59 00:03:15,000 --> 00:03:18,000 e ho intenzione di andare in una directory denominata CSS dove abbiamo un sacco 60 00:03:18,000 --> 00:03:21,000 di file in attesa per noi qui, 61 00:03:21,000 --> 00:03:27,000 e in questa cartella abbiamo, per esempio, search0.html dall'ultima volta. 62 00:03:27,000 --> 00:03:31,000 Ora, ricordo con search0 abbiamo lasciato su questa nota 63 00:03:31,000 --> 00:03:35,000 ordina di implementare Google o in realtà solo il front-end di una settimana fa, 64 00:03:35,000 --> 00:03:38,000 e notare che abbiamo avuto alcuni nuovi tag lì. 65 00:03:38,000 --> 00:03:41,000 Avevamo h1 per un grande titolo in grassetto, 66 00:03:41,000 --> 00:03:45,000 forma, che ci ha permesso di avere in realtà un modulo HTML per l'input dell'utente. 67 00:03:45,000 --> 00:03:48,000 Azione, qual era il significato di un attributo action 68 00:03:48,000 --> 00:03:52,000 nel tag form HTML? 69 00:03:52,000 --> 00:03:58,000 Qual era il significato di questo, l'azione? 70 00:03:58,000 --> 00:04:00,000 Ho appena farò questo oggi. 71 00:04:00,000 --> 00:04:03,000 L'azione è la destinazione in cui il modulo sta per essere presentata. 72 00:04:03,000 --> 00:04:07,000 Il fatto che l'azione che dice = "google.com / search" 73 00:04:07,000 --> 00:04:10,000 significa che quando l'utente fa clic sul pulsante di invio o l'equivalente 74 00:04:10,000 --> 00:04:14,000 qualunque forma campi che compilato stanno per essere inviati al nostro server non 75 00:04:14,000 --> 00:04:17,000 o la nostra macchina, ma piuttosto a quello specifico URL di Google. 76 00:04:17,000 --> 00:04:19,000 E il metodo che sta per usare si chiama get, 77 00:04:19,000 --> 00:04:25,000 e ottenere, per ora, è solo una tecnica per il passaggio di informazioni lungo su un server web 78 00:04:25,000 --> 00:04:29,000 attraverso l'URL, quindi diamo un rapido sguardo indietro a come funziona. 79 00:04:29,000 --> 00:04:31,000 >> Si noti che c'è un ingresso il cui nome è q 80 00:04:31,000 --> 00:04:35,000 cui tipo è testo e poi un secondo ingresso di tipo presentare 81 00:04:35,000 --> 00:04:39,000 il cui valore è CS50 Ricerca, e in effetti, se ci apriamo il file qui, 82 00:04:39,000 --> 00:04:42,000 search0.html, è una forma super semplice, 83 00:04:42,000 --> 00:04:45,000 e se cerco qualcosa come la scienza del computer 84 00:04:45,000 --> 00:04:50,000 e quindi premere Invio o fare clic su Cerca CS50 85 00:04:50,000 --> 00:04:53,000 notare che ciò che accade è al di là di arrivare a Google 86 00:04:53,000 --> 00:04:56,000 Ho specificamente finito in questo URL nella parte superiore, 87 00:04:56,000 --> 00:05:01,000 google.com / search? q = + computer scienza, 88 00:05:01,000 --> 00:05:04,000 e l'informatica è, ovviamente, quello che ho digitato trovi 89 00:05:04,000 --> 00:05:06,000 Il + significa solo che lì era un carattere di spazio, 90 00:05:06,000 --> 00:05:10,000 ed è fatta dal browser solo per assicurarsi che non ci sia 91 00:05:10,000 --> 00:05:13,000 confusione e lo spazio bianco l'URL effettivo. 92 00:05:13,000 --> 00:05:15,000 E poi q, naturalmente, è il nome del parametro. 93 00:05:15,000 --> 00:05:20,000 Non abbiamo visto il modo in cui, il programmatore, può effettivamente accedere q ancora. 94 00:05:20,000 --> 00:05:23,000 Possiamo supporre che Google sa cosa fare con questo qui, 95 00:05:23,000 --> 00:05:25,000 ma ci arriveremo a tempo debito oggi. 96 00:05:25,000 --> 00:05:30,000 >> Ma fammi dare un'occhiata invece al search1.html, 97 00:05:30,000 --> 00:05:34,000 che sembra un po 'diverso, perché ho deciso che questa forma qui era solo un po' zoppo. 98 00:05:34,000 --> 00:05:36,000 Voglio dire, e 'in alto a sinistra. 99 00:05:36,000 --> 00:05:40,000 Non c'è davvero nessun estetica ad essa, e quindi voglio stilizzare questo 100 00:05:40,000 --> 00:05:43,000 un po 'più simile a Google, la cui homepage, richiamo, 101 00:05:43,000 --> 00:05:47,000 anche se non si potrebbe fare che spesso, si presenta così oggi il giorno di Halloween. 102 00:05:47,000 --> 00:05:53,000 Se invece aprire la versione 1 di questo file, 1.html ricerca, l'ho centrato. 103 00:05:53,000 --> 00:05:57,000 , Ancora abbastanza brutto, ma almeno ora ho iniziato a controllare l'estetica di questa pagina 104 00:05:57,000 --> 00:06:00,000 non solo la marcatura su stessa. 105 00:06:00,000 --> 00:06:04,000 Diamo un'occhiata a ricerca 1, e non c'è davvero solo una differenza qui, 106 00:06:04,000 --> 00:06:06,000 che potrebbe saltare fuori di te, o forse no, 107 00:06:06,000 --> 00:06:11,000 ma qual è la linea di una o frammento di differenza? 108 00:06:11,000 --> 00:06:14,000 >> C'è questo attributo di stile, così si scopre che in HTML 109 00:06:14,000 --> 00:06:19,000 maggior parte degli elementi, la maggior parte dei tag può avere un attributo di stile su di loro, 110 00:06:19,000 --> 00:06:23,000 e all'interno di tale attributo stile è una stringa tra virgolette, 111 00:06:23,000 --> 00:06:26,000 e che la stringa tra virgolette è CSS. 112 00:06:26,000 --> 00:06:29,000 Si può mettere foglio di stile CSS in là 113 00:06:29,000 --> 00:06:32,000 specificando come un nome di proprietà 114 00:06:32,000 --> 00:06:34,000 seguito da due punti seguito da un valore. 115 00:06:34,000 --> 00:06:37,000 Questa è una specie di una decisione di design infelice alcuni anni fa 116 00:06:37,000 --> 00:06:40,000 che i CSS è un linguaggio a sé stante, 117 00:06:40,000 --> 00:06:43,000 ma sintatticamente è molto diverso da HTML. 118 00:06:43,000 --> 00:06:46,000 In questo caso, si vede che all'interno della mia pagina web, che è scritto in HTML, 119 00:06:46,000 --> 00:06:51,000 Ho CSS all'interno di queste citazioni, e la convenzione per i CSS 120 00:06:51,000 --> 00:06:55,000 è che si dispone di quello che si chiama una proprietà seguito da, ancora una volta, i due punti, 121 00:06:55,000 --> 00:06:58,000 seguito dal valore di tale proprietà, quindi non c'è alcun segno di uguale. 122 00:06:58,000 --> 00:07:00,000 Non ci sono citazioni supplementari. 123 00:07:00,000 --> 00:07:03,000 E 'solo questa coppia di valori separati due punti chiave, 124 00:07:03,000 --> 00:07:05,000 riga di testo e fa esattamente quello che dice. 125 00:07:05,000 --> 00:07:09,000 Si allinea il testo nel corpo della pagina, che è davvero il coraggio della pagina, 126 00:07:09,000 --> 00:07:11,000 nel centro. 127 00:07:11,000 --> 00:07:13,000 >> Ok, il risultato finale poi, per essere chiari, è questo. 128 00:07:13,000 --> 00:07:17,000 Non tutto ciò che più sexy, ma almeno è centrato e un po 'più come il vero Google. 129 00:07:17,000 --> 00:07:21,000 Ma cosa succede se io invece aprire versione 2 di questo 130 00:07:21,000 --> 00:07:25,000 e segnalare qui un nuovo tag del tutto? 131 00:07:25,000 --> 00:07:30,000 Ora, nella testa della mia pagina, che in precedenza aveva solo il tag 132 00:07:30,000 --> 00:07:32,000 in tutti gli esempi precedenti? 133 00:07:32,000 --> 00:07:34,000 E 'appena avuto questo, il titolo. 134 00:07:34,000 --> 00:07:38,000 Un momento fa, il tag head si presentava così. 135 00:07:38,000 --> 00:07:40,000 Ora invece ha un interno stile tag di esso, 136 00:07:40,000 --> 00:07:44,000 e anche questo, mi scuso, sembra sintatticamente molto diverso da HTML, 137 00:07:44,000 --> 00:07:47,000 ma ci si abitua ad esso, per cui all'interno del tag di stile 138 00:07:47,000 --> 00:07:50,000 Ora posso scomporre quello che era un momento fa 139 00:07:50,000 --> 00:07:54,000 un attributo, l'attributo di stile, e può mettere in cima della mia pagina. 140 00:07:54,000 --> 00:07:56,000 >> Perché? 141 00:07:56,000 --> 00:08:00,000 Bene, questo è un passo verso la pulizia le cose, proprio come nella scrittura di codice C 142 00:08:00,000 --> 00:08:04,000 noi a volte scrivere funzioni per scomporre funzionalità comuni. 143 00:08:04,000 --> 00:08:07,000 E 'solo un po' più pulito per iniziare factoring fuori cose come l'estetica 144 00:08:07,000 --> 00:08:11,000 ad una posizione centrale, piuttosto che avere tutto intersperse tutto il codice HTML. 145 00:08:11,000 --> 00:08:14,000 Questo fa anche quello che dice, anche se c'è un po 'di nuova sintassi. 146 00:08:14,000 --> 00:08:19,000 Questo qui è un selettore, e il corpo significa semplicemente selezionare l'elemento del corpo 147 00:08:19,000 --> 00:08:21,000 e applicare le seguenti proprietà ad esso. 148 00:08:21,000 --> 00:08:23,000 Beh, la proprietà è esattamente la stessa. 149 00:08:23,000 --> 00:08:25,000 Per buona misura ho aggiunto un punto e virgola alla fine, 150 00:08:25,000 --> 00:08:29,000 che tende ad essere convention, e ho avvolto questa intera proprietà 151 00:08:29,000 --> 00:08:33,000 tra parentesi graffe, perché ho potuto effettivamente avere cose diverse qui. 152 00:08:33,000 --> 00:08:39,000 Potevo dire qualcosa come il colore: blu; 153 00:08:39,000 --> 00:08:42,000 >> Ora, anche questo non sarà un passo verso qualcosa di tutto ciò che più bello, 154 00:08:42,000 --> 00:08:47,000 ma se io ora tornare alla versione 2 che ho almeno ora fatto il corpo di mio 155 00:08:47,000 --> 00:08:49,000 pagina di testo tutto blu. 156 00:08:49,000 --> 00:08:51,000 Il pulsante rimane lo stesso, perché questo è un ingresso. Non è puro testo. 157 00:08:51,000 --> 00:08:56,000 Ma tutto il resto che è un testo, come CS50 ricerca in alto, è fatto in blu. 158 00:08:56,000 --> 00:09:01,000 Anche in questo caso, tutto quello che abbiamo fatto oggi è rimuovere dal tag body, avviso, 159 00:09:01,000 --> 00:09:04,000 l'attributo di stile, e abbiamo presi fuori qui. 160 00:09:04,000 --> 00:09:08,000 Questo non è un miglioramento enorme, ma se prendiamo un passo avanti 161 00:09:08,000 --> 00:09:10,000 notare ciò che possiamo fare in questa terza versione qui. 162 00:09:10,000 --> 00:09:14,000 >> In search3.html la pagina web è quasi identica 163 00:09:14,000 --> 00:09:17,000 salvo quanto nuovo tag adesso? 164 00:09:17,000 --> 00:09:20,000 Link, quindi questo non è molto giustamente chiamato 165 00:09:20,000 --> 00:09:24,000 perché non si sta collegando, nel senso di un collegamento ipertestuale cliccabile. 166 00:09:24,000 --> 00:09:28,000 Piuttosto, tu sei una sorta di fare l'equivalente di # include in C 167 00:09:28,000 --> 00:09:31,000 per cui il tag link con un attributo href 168 00:09:31,000 --> 00:09:34,000 e un attributo rel dice andare avanti 169 00:09:34,000 --> 00:09:39,000 e copia incolla il contenuto di un file chiamato search3.css proprio qui, in sostanza. 170 00:09:39,000 --> 00:09:42,000 Non riesco però a farlo, ma questo è lo spirito di esso. 171 00:09:42,000 --> 00:09:45,000 Dice va aperto il file, search3.css, 172 00:09:45,000 --> 00:09:49,000 e trattarla come se l'utente avesse digitato proprio qui nella testa della pagina 173 00:09:49,000 --> 00:09:51,000 proprio come ho fatto nell'esempio precedente. 174 00:09:51,000 --> 00:09:54,000 Search3.css, nel frattempo, è piuttosto semplice. 175 00:09:54,000 --> 00:09:58,000 E 'davvero contiene esattamente quello che è stato un momento fa 176 00:09:58,000 --> 00:10:03,000 nel tag stile, ma ho presi fuori qui per un proprio file. 177 00:10:03,000 --> 00:10:07,000 >> Anche se non abbiamo trascorso molto tempo a tutti in HTML o programmazione web 178 00:10:07,000 --> 00:10:11,000 solo intuitivamente qual è la motivazione, forse, per lo scorporo 179 00:10:11,000 --> 00:10:14,000 questo piccolo frammento anche di CSS in un proprio file 180 00:10:14,000 --> 00:10:19,000 e poi anche con questo tag link qui? 181 00:10:19,000 --> 00:10:21,000 [Risposta degli studenti incomprensibile] 182 00:10:21,000 --> 00:10:25,000 Ok, è più facile da leggere, nel senso che hai il tuo CSS in un file CSS. 183 00:10:25,000 --> 00:10:28,000 Tu hai il tuo HTML nel file HTML, quindi è più leggibile in questo senso. 184 00:10:28,000 --> 00:10:30,000 Che altro potrebbe essere interessante? Gia '. 185 00:10:30,000 --> 00:10:32,000 [Risposta degli studenti incomprensibile] 186 00:10:32,000 --> 00:10:35,000 Gia ', in modo da poter includere molte volte, quindi in questo momento stiamo facendo questi 187 00:10:35,000 --> 00:10:38,000 esempi di base con i file singoli, ma supponiamo che in realtà si sta facendo 188 00:10:38,000 --> 00:10:42,000 un sito web vero e proprio, come si vuole per pset 7 o il progetto finale, forse, 189 00:10:42,000 --> 00:10:45,000 e si desidera avere più pagine Web, come è certamente comune 190 00:10:45,000 --> 00:10:48,000 il Web attuale largo, e sarebbe tipo di lame 191 00:10:48,000 --> 00:10:52,000 di dover copiare e incollare lo stesso colore blu 192 00:10:52,000 --> 00:10:56,000 e lo stesso testo allineato centro in ogni una di quelle pagine. 193 00:10:56,000 --> 00:10:59,000 Piuttosto ha più senso di scomporre, proprio come abbiamo fatto in C 194 00:10:59,000 --> 00:11:02,000 con il file. h, metterlo in un posto centrale, 195 00:11:02,000 --> 00:11:06,000 in questo caso search3.css, e quindi consentire qualsiasi tipo di file 196 00:11:06,000 --> 00:11:11,000 nel tuo sito web per includere effettivamente quel file per mezzo di questo tag qui a riga 16. 197 00:11:11,000 --> 00:11:14,000 Come è il caso tipico, abbiamo iniziato con la versione 0, che tipo di lavori 198 00:11:14,000 --> 00:11:18,000 ma non è necessariamente il migliore, e ad ogni passo, 199 00:11:18,000 --> 00:11:21,000 ricerca 1, ricerca 2, e ora la ricerca 3 abbiamo preso questi piccoli passi 200 00:11:21,000 --> 00:11:26,000 verso disegni che sono un po 'più pulito e sono più preparatoria 201 00:11:26,000 --> 00:11:30,000 per le pagine più complesse che si potrebbe fare lungo la strada. 202 00:11:30,000 --> 00:11:33,000 >> Vorrei aprire un ultimo esempio qui solo per mostrare 203 00:11:33,000 --> 00:11:36,000 una pagina ancora più stilizzato, ma prima diamo un'occhiata al codice HTML. 204 00:11:36,000 --> 00:11:41,000 Questo è search4.html, e notare che strutturalmente è quasi la stessa cosa 205 00:11:41,000 --> 00:11:44,000 tranne per l'introduzione di un nuovo tag, div. 206 00:11:44,000 --> 00:11:48,000 Div è un tag che introduce una divisione della pagina. 207 00:11:48,000 --> 00:11:51,000 Si può pensare a questo come un rettangolo invisibile. 208 00:11:51,000 --> 00:11:54,000 E 'una sorta di creare una fascia di zona nella pagina web 209 00:11:54,000 --> 00:11:56,000 che è possibile stilizzare tutto in una volta. 210 00:11:56,000 --> 00:11:58,000 Quello che ho fatto qui è la seguente. 211 00:11:58,000 --> 00:12:01,000 All'interno del mio tag body, che è stato lì tutto il tempo, 212 00:12:01,000 --> 00:12:05,000 Sto dicendo di creare una divisione della pagina qui tramite linee 45 a 47, 213 00:12:05,000 --> 00:12:09,000 e che significa essenzialmente faccio un rettangolo invisibile lungo la parte superiore della pagina. 214 00:12:09,000 --> 00:12:14,000 Allora dammi un secondo rettangolo, anche se invisibile, al di sotto, 215 00:12:14,000 --> 00:12:16,000 e ad identificare il contenuto nome, e poi infine, 216 00:12:16,000 --> 00:12:19,000 darmi una terza divisione della pagina in basso 217 00:12:19,000 --> 00:12:21,000 chiamato ID. 218 00:12:21,000 --> 00:12:23,000 Staremo a vedere per questo che ho fatto in un attimo, 219 00:12:23,000 --> 00:12:26,000 ma concettualmente ho una divisione colpo di testa. 220 00:12:26,000 --> 00:12:30,000 Ho una divisione dei contenuti, e ho una divisione piè di pagina 221 00:12:30,000 --> 00:12:32,000 anche se questi sono solo nel markup. 222 00:12:32,000 --> 00:12:35,000 L'utente non è andare a vedere 3 rettangoli, 223 00:12:35,000 --> 00:12:37,000 ma una sorta di strutturalmente c'è dietro le quinte 224 00:12:37,000 --> 00:12:39,000 sono effettivamente presenti. 225 00:12:39,000 --> 00:12:41,000 >> Ora, chi se ne frega? Perché effettivamente fare questo? 226 00:12:41,000 --> 00:12:43,000 Tutto il resto della pagina è la stessa che abbiamo visto prima. 227 00:12:43,000 --> 00:12:47,000 Ecco la mia forma. Ecco il mio ingresso, il mio ingresso, l'interruzione di riga e così via. 228 00:12:47,000 --> 00:12:50,000 Ecco un'immagine, però, così vedremo dove questo è venuto da solo in un momento. 229 00:12:50,000 --> 00:12:52,000 Ecco un piè di pagina, che è nuovo, solo perché ho voluto introdurre 230 00:12:52,000 --> 00:12:54,000 contenuti ancora un po 'qui. 231 00:12:54,000 --> 00:12:58,000 Se scorrere verso l'alto notare che l'ID di questo div è intestazione. 232 00:12:58,000 --> 00:13:02,000 L'ID di questo div è il contenuto, e l'ID di questo è piè di pagina. 233 00:13:02,000 --> 00:13:05,000 E come suggerisce il nome, quando si dispone di un attributo ID 234 00:13:05,000 --> 00:13:09,000 in HTML, per definizione, deve identificare in modo univoco 235 00:13:09,000 --> 00:13:12,000 uno degli elementi, uno dei tag nella pagina. 236 00:13:12,000 --> 00:13:16,000 L'onere è completamente a voi di ricordare che si dispone di un ID header già. 237 00:13:16,000 --> 00:13:19,000 Si dispone di un piè di pagina. Si dispone di un ID di contenuto già. 238 00:13:19,000 --> 00:13:22,000 Il computer non ha intenzione di capire che cosa è un ID a disposizione per voi, 239 00:13:22,000 --> 00:13:27,000 così si potrebbe accidentalmente dare 2 tag di intestazione di un ID, 240 00:13:27,000 --> 00:13:29,000 e che sarebbe solo sbagliato. 241 00:13:29,000 --> 00:13:31,000 >> Dovete tenere a mente ciò che avete creato, 242 00:13:31,000 --> 00:13:34,000 ma una volta che hai fatto notare ciò che possiamo fare qui. 243 00:13:34,000 --> 00:13:38,000 Ora posso specificare nel mio stile di tag nella parte superiore 244 00:13:38,000 --> 00:13:41,000 o, equivalentemente, nel mio file CSS, se stavo ancora usando questa versione, 245 00:13:41,000 --> 00:13:46,000 Posso dire # header, e che cosa significa è che qualunque tag 246 00:13:46,000 --> 00:13:49,000 in questa pagina ha un ID di intestazione 247 00:13:49,000 --> 00:13:53,000 e #, solo per convenzione umana, rappresenta l'ID. 248 00:13:53,000 --> 00:13:56,000 Il segno diesis o cancelletto rappresenta l'ID. 249 00:13:56,000 --> 00:13:58,000 Intestazione è il nome che ho dato. 250 00:13:58,000 --> 00:14:01,000 Questo significa applicare questa proprietà CSS 251 00:14:01,000 --> 00:14:04,000 a qualsiasi tag di questa pagina porta un ID di intestazione. 252 00:14:04,000 --> 00:14:06,000 Stessa cosa qui. 253 00:14:06,000 --> 00:14:09,000 Applicare questa proprietà, che sembra essere lo stesso, a qualsiasi elemento 254 00:14:09,000 --> 00:14:11,000 il cui ID è il contenuto, e poi qui 255 00:14:11,000 --> 00:14:14,000 notato che ho avuto un po 'piu' complicata, piè di pagina. 256 00:14:14,000 --> 00:14:18,000 Qualsiasi elemento il cui ID è piè di pagina, di cui non ci può essere una sola per definizione, 257 00:14:18,000 --> 00:14:21,000 andare avanti e fare le sue dimensioni carattere più piccolo, 258 00:14:21,000 --> 00:14:24,000 il suo peso di carattere grassetto, il suo margine di 20 pixel. 259 00:14:24,000 --> 00:14:26,000 >> Che cosa vuol dire? 260 00:14:26,000 --> 00:14:28,000 E 'solo un margine in alto, in basso, e la sinistra e la destra. 261 00:14:28,000 --> 00:14:31,000 Questo significa darmi un margine di 20 pixel invisibile intorno ad esso 262 00:14:31,000 --> 00:14:35,000 solo per spingere tutto il resto lontano da un po ', come si potrebbe fare in Word, 263 00:14:35,000 --> 00:14:37,000 Microsoft Word o Pages o simili. 264 00:14:37,000 --> 00:14:39,000 E poi il testo Allinea al centro. 265 00:14:39,000 --> 00:14:43,000 Vediamo il risultato finale, e poi ce ne andiamo indietro fino al frammento restante uno dei CSS lì. 266 00:14:43,000 --> 00:14:48,000 Questa è la versione 4, l'ultimo per gli esempi di ricerca, ed è molto, molto sexy. 267 00:14:48,000 --> 00:14:54,000 Ora, in tutta onestà, io su Google "generatore di caratteri google logo." 268 00:14:54,000 --> 00:14:58,000 E questo mi ha permesso di creare un GIF, un formato immagine, che sembra che non ci. 269 00:14:58,000 --> 00:15:00,000 In realtà, si può fare anche questo. 270 00:15:00,000 --> 00:15:03,000 Abbiamo "google logo font generatore." 271 00:15:03,000 --> 00:15:05,000 >> Vediamo se siamo in grado di fare questo. 272 00:15:05,000 --> 00:15:07,000 Va bene, penso che questo è il sito che ho usato. 273 00:15:07,000 --> 00:15:11,000 Possiamo dire Ec 10, per esempio, e farli propri. 274 00:15:11,000 --> 00:15:13,000 Si può giocare con questo tutto il giorno e quindi fare clic destro su di esso 275 00:15:13,000 --> 00:15:16,000 e quindi scaricare l'attuale GIF, che è tutto ciò che ho fatto. 276 00:15:16,000 --> 00:15:19,000 E in effetti, è per questo che nel mio HTML, ricordare, qui 277 00:15:19,000 --> 00:15:22,000 Ho avuto un tag di immagine, che abbiamo visto brevemente la settimana scorsa 278 00:15:22,000 --> 00:15:24,000 la cui fonte è logo.gif. 279 00:15:24,000 --> 00:15:28,000 E che ancora una volta è stata la motivazione per avere questo attributo alt, 280 00:15:28,000 --> 00:15:31,000 questo attributo alternativa? 281 00:15:31,000 --> 00:15:33,000 Gia '. 282 00:15:33,000 --> 00:15:35,000 [Risposta degli studenti incomprensibile] 283 00:15:35,000 --> 00:15:37,000 Bene, quindi 2 motivi in ​​realtà, se il browser non può tirare l'immagine 284 00:15:37,000 --> 00:15:40,000 perché si dispone di una connessione di rete lenta o se l'immagine è danneggiata 285 00:15:40,000 --> 00:15:44,000 o qualcosa del genere che almeno l'essere umano può vedere "CS50 ricerca" 286 00:15:44,000 --> 00:15:46,000 e poi anche per ragioni di accessibilità. 287 00:15:46,000 --> 00:15:48,000 Se si dispone di un utente che è cieco e sta usando uno screen reader 288 00:15:48,000 --> 00:15:50,000 e quindi, ovviamente, non è possibile vedere le immagini possono almeno 289 00:15:50,000 --> 00:15:52,000 ascoltare il testo se il computer si parla di loro. 290 00:15:52,000 --> 00:15:56,000 >> In generale, questo è più pratica quando si tratta di l'accessibilità delle pagine 291 00:15:56,000 --> 00:16:00,000 modo che gli utenti, anche in questa situazione può sentire o vedere, per così dire, 292 00:16:00,000 --> 00:16:03,000 che cosa è che è sulla vostra pagina. 293 00:16:03,000 --> 00:16:05,000 C'è un'altra cosa che ho fatto qui 294 00:16:05,000 --> 00:16:09,000 che è un po 'interessante, e vedremo di più su questo problema nel set 7 295 00:16:09,000 --> 00:16:12,000 attraverso uno dei cortometraggi guidati da uno dei compagni di insegnamento. 296 00:16:12,000 --> 00:16:15,000 Ma # contenuto si riferisce al tag 297 00:16:15,000 --> 00:16:20,000 il cui ID è contenuto, ma poi c'è un carattere di spazio, e poi c'è la parola d'ingresso. 298 00:16:20,000 --> 00:16:25,000 Beh, la cosa interessante di CSS è che si può 299 00:16:25,000 --> 00:16:29,000 fare riferimento a variabili in una sorta di pagina gerarchicamente, 300 00:16:29,000 --> 00:16:33,000 e ciò che questo frammento di mezzi CSS è trovare il tag 301 00:16:33,000 --> 00:16:37,000 il cui ID è contenuto, e quindi applicare le seguenti proprietà 302 00:16:37,000 --> 00:16:42,000 per tutti i tag di input che sono discendenti di contenuto, 303 00:16:42,000 --> 00:16:44,000 cioè che sono rientrati all'interno di esso. 304 00:16:44,000 --> 00:16:48,000 Rientro, di nuovo, è importante solo al computer, non umano, 305 00:16:48,000 --> 00:16:51,000 ma per convenzione si trattino le cose come si va più a fondo di una pagina, 306 00:16:51,000 --> 00:16:54,000 quindi questo significa applicare un margine di 5 pixel per ogni elemento di input 307 00:16:54,000 --> 00:16:57,000 che da qualche parte dentro di o nidificata all'interno di 308 00:16:57,000 --> 00:16:59,000  l'elemento il cui ID è contenuto. 309 00:16:59,000 --> 00:17:01,000 >> Chi fa che si applicano a? 310 00:17:01,000 --> 00:17:03,000 Beh, ci sono in realtà solo questi 2 ragazzi qui. 311 00:17:03,000 --> 00:17:05,000 Si noti che all'interno del modulo non c'è 2 ingressi, 312 00:17:05,000 --> 00:17:07,000 come c'è stato per tutti questi esempi. 313 00:17:07,000 --> 00:17:11,000 Ma si noti che questi 2 ingressi capita di essere nidificato all'interno, 314 00:17:11,000 --> 00:17:13,000 anche se un po 'in profondità, un doppio strato di rientro, 315 00:17:13,000 --> 00:17:16,000 all'interno del tag il cui ID è contenuto. 316 00:17:16,000 --> 00:17:18,000 Che cosa significa? 317 00:17:18,000 --> 00:17:21,000 Se andiamo al browser qui si può vedere anche di poco- 318 00:17:21,000 --> 00:17:23,000 vorrei ingrandire-che ci sia un po 'di imbottitura tra il pulsante 319 00:17:23,000 --> 00:17:25,000 e tra il campo di testo. 320 00:17:25,000 --> 00:17:27,000 >> Vorrei temporaneamente spegnerlo. 321 00:17:27,000 --> 00:17:30,000 Lasciami andare fino al mio CSS, e lasciami andare avanti e basta 322 00:17:30,000 --> 00:17:34,000 modificare tale margine da 5 pixel a 0 pixel. 323 00:17:34,000 --> 00:17:37,000 Lasciami andare avanti allora e salvare il file, torna al motore di ricerca 324 00:17:37,000 --> 00:17:40,000 e ricaricare, e guardare il centro della pagina. 325 00:17:40,000 --> 00:17:43,000 Tutto ciò che ha compresso insieme, e quando l'ho montata su questo esempio 326 00:17:43,000 --> 00:17:46,000 Ho pensato che sembrava stupido con il campo di testo e poi il pulsante immediatamente al di sotto. 327 00:17:46,000 --> 00:17:50,000 Volevo pad un po ', così ho introdotto margini. 328 00:17:50,000 --> 00:17:55,000 Quello che non farà in conferenza è passare attraverso la diverse decine 329 00:17:55,000 --> 00:17:58,000 Proprietà CSS che esistono perché, ancora una volta, ci sono cose come la dimensione dei caratteri, 330 00:17:58,000 --> 00:18:02,000 spessore del carattere, margini, testo allineare e una dozzina di altre poche, 331 00:18:02,000 --> 00:18:06,000 e ti rimanda al problema posto da 7 a vari tutorial on-line 332 00:18:06,000 --> 00:18:08,000 e riferimenti che consentono di recuperare queste cose. 333 00:18:08,000 --> 00:18:10,000 Ma ciò che è veramente importante alla fine della giornata 334 00:18:10,000 --> 00:18:12,000 >> è capire come queste cose vengono applicati. 335 00:18:12,000 --> 00:18:15,000 Anche in questo caso, se abbiamo l'interno tag di stile, di cui 336 00:18:15,000 --> 00:18:19,000 può andare i selettori, il tipo di identificatori che specificano 337 00:18:19,000 --> 00:18:21,000 a cui si desidera applicare queste proprietà, 338 00:18:21,000 --> 00:18:24,000 e poi si mettono le proprietà come coppia valore-chiave 339 00:18:24,000 --> 00:18:28,000 separate da due punti e poi si è conclusa con un punto e virgola, 340 00:18:28,000 --> 00:18:32,000 oppure è possibile rippare e convertire qualsiasi che fuori e metterlo in un file CSS separato 341 00:18:32,000 --> 00:18:35,000 a se stessa. 342 00:18:35,000 --> 00:18:39,000 Va bene, tutte le domande sui concetti 343 00:18:39,000 --> 00:18:41,000 o il quadro generale dei CSS? 344 00:18:41,000 --> 00:18:43,000 Potrai vedere ancora una volta di più in pset 7, 345 00:18:43,000 --> 00:18:47,000 ma continueremo, in linea di abbastanza semplice. 346 00:18:47,000 --> 00:18:49,000 No? Bene. 347 00:18:49,000 --> 00:18:51,000 E 'tempo di un linguaggio di programmazione vero e proprio, 348 00:18:51,000 --> 00:18:54,000 e torneremo a un po 'di CSS nella forma di un esempio. 349 00:18:54,000 --> 00:18:58,000 PHP è in realtà un linguaggio meravigliosamente accessibile 350 00:18:58,000 --> 00:19:02,000 nel senso che è sintatticamente quasi equivalente a C. 351 00:19:02,000 --> 00:19:06,000 In altre parole, se si conosce C, si sa per il PHP maggior parte, 352 00:19:06,000 --> 00:19:08,000 almeno sintatticamente, anche se ci sono alcune nuove funzionalità 353 00:19:08,000 --> 00:19:10,000 e alcuni nuovi concetti che dovremo guardare. 354 00:19:10,000 --> 00:19:13,000 >> Ma per la maggior parte, ora che abbiamo transizione da C a PHP 355 00:19:13,000 --> 00:19:16,000 la maggior parte del nuovo materiale è davvero nella foto grande, 356 00:19:16,000 --> 00:19:19,000 come si utilizza un linguaggio per la programmazione sul web rispetto a 357 00:19:19,000 --> 00:19:23,000 alla riga di comando o in un lampeggiante prompt come abbiamo fatto finora. 358 00:19:23,000 --> 00:19:27,000 Per avere un riferimento, in particolare con pset 7 e poi il progetto definitivo, 359 00:19:27,000 --> 00:19:31,000 si avvalgono di questo URL qui se vuoi leggere su le formalità di PHP. 360 00:19:31,000 --> 00:19:34,000 In realtà è come un libro di testo online gratuito in modo efficace, 361 00:19:34,000 --> 00:19:37,000 e potrai anche scoprire che ciò che è veramente bella di PHP 362 00:19:37,000 --> 00:19:41,000 è che ci sono centinaia di funzioni che vengono con esso, 363 00:19:41,000 --> 00:19:44,000 mentre in C non ha necessariamente avere accesso a 364 00:19:44,000 --> 00:19:47,000 più funzioni di erano nella libreria matematica, il CS50 biblioteca. 365 00:19:47,000 --> 00:19:51,000 In PHP e un sacco di lingue moderne, Python e Ruby in mezzo a loro, 366 00:19:51,000 --> 00:19:54,000 si ottiene così l'accesso a molte funzioni di più, il che significa che si arriva a scrivere 367 00:19:54,000 --> 00:19:57,000 molto meno codice, perché si può salire sulle spalle di altre persone 368 00:19:57,000 --> 00:19:59,000 che hanno già scritto alcune cose per voi. 369 00:19:59,000 --> 00:20:03,000 >> Facciamo un giro veloce della sintassi di PHP e poi scrivere qualche esempio. 370 00:20:03,000 --> 00:20:06,000 Il bello di PHP prima di tutto 371 00:20:06,000 --> 00:20:08,000 è non c'è alcuna funzione principale. 372 00:20:08,000 --> 00:20:10,000 Se si desidera scrivere un programma in PHP basta iniziare a scrivere codice, 373 00:20:10,000 --> 00:20:12,000 e non si deve preoccupare principale. 374 00:20:12,000 --> 00:20:14,000 Non c'è int. Non c'è ritorno. 375 00:20:14,000 --> 00:20:17,000 Non c'è, argv argc quello che serve quando si scrive il programma. 376 00:20:17,000 --> 00:20:20,000 Piuttosto si può solo iniziare a scrivere codice, e questo è in parte 377 00:20:20,000 --> 00:20:23,000 perché PHP è quello che è chiamato un linguaggio interpretato. 378 00:20:23,000 --> 00:20:26,000 C è stato compilato, ed è stato compilato, nel senso che si avvia 379 00:20:26,000 --> 00:20:29,000 con il codice sorgente, si esegue attraverso Clang, che è un compilatore, 380 00:20:29,000 --> 00:20:33,000 e, infine, dopo un certo numero di passaggi si ottiene il codice oggetto, 0 e 1. 381 00:20:33,000 --> 00:20:36,000 PHP e Python e Ruby e Perla e altri 382 00:20:36,000 --> 00:20:39,000 sono diversi tipi di lingue che non li compila. 383 00:20:39,000 --> 00:20:42,000 Non si va da codice sorgente a 0 e 1. 384 00:20:42,000 --> 00:20:45,000 Basta eseguire il codice sorgente, e si esegue il codice sorgente 385 00:20:45,000 --> 00:20:49,000 scrivendo in un file di testo normale, che termina in. php in questo caso 386 00:20:49,000 --> 00:20:53,000 invece di. c, e cosa fa il programma sul vostro computer 387 00:20:53,000 --> 00:20:57,000 si interpreta letteralmente il codice riga per riga per riga. 388 00:20:57,000 --> 00:21:00,000 >> In altre parole, piuttosto che scrivere un programma ed eseguire il programma 389 00:21:00,000 --> 00:21:04,000 direttamente a voi invece che scrivere un programma con un file con estensione. php. 390 00:21:04,000 --> 00:21:09,000 Poi si esegue un programma vero e proprio chiamato php.exe, se siete su Windows, 391 00:21:09,000 --> 00:21:12,000 PHP o semplicemente se siete su Mac OS o Linux, 392 00:21:12,000 --> 00:21:17,000 e di fornire come input al programma PHP il codice sorgente propria, 393 00:21:17,000 --> 00:21:20,000 e il suo scopo nella vita è quello di leggere il codice in alto verso il basso, da sinistra a destra, 394 00:21:20,000 --> 00:21:23,000 e non quello che hai detto di fare. 395 00:21:23,000 --> 00:21:25,000 >> Vediamo cosa sta a significare sintatticamente. 396 00:21:25,000 --> 00:21:27,000 In PHP ci sono le condizioni. 397 00:21:27,000 --> 00:21:29,000 Questa diapositiva è identico a quello che avete visto indietro in settimana 1 398 00:21:29,000 --> 00:21:33,000 perché sintatticamente condizioni, se e se e gli altri e la penale in PHP 399 00:21:33,000 --> 00:21:35,000 esattamente come questo. 400 00:21:35,000 --> 00:21:38,000 Quando si tratta di espressioni booleane che stanno andando a guardare esattamente come questo. 401 00:21:38,000 --> 00:21:43,000 Quando si tratta di Anding cose insieme come booleana sta andando a guardare esattamente come questo. 402 00:21:43,000 --> 00:21:46,000 Passa lo stesso aspetto, e si ottiene l'ulteriore vantaggio in PHP 403 00:21:46,000 --> 00:21:51,000 che gli interruttori in C non poteva che accendere un char o int. 404 00:21:51,000 --> 00:21:53,000 Non si poteva accendere un valore di stringa. 405 00:21:53,000 --> 00:21:55,000 In PHP si può effettivamente avere un'espressione 406 00:21:55,000 --> 00:21:58,000 che è una variabile il cui contenuto è una stringa, 407 00:21:58,000 --> 00:22:01,000 e si può effettivamente fare il confronto tra stringhe in modo reale intuitivo, 408 00:22:01,000 --> 00:22:06,000 non confronto puntatore, al fine di decidere se fare caso i o j o qualcosa d'altro. 409 00:22:06,000 --> 00:22:09,000 Vedremo che potenzialmente non molto. 410 00:22:09,000 --> 00:22:11,000 >> Loops troppo meravigliosamente sono gli stessi. 411 00:22:11,000 --> 00:22:15,000 Per avere un loop di inizializzazione, una condizione, e un certo numero di aggiornamenti. 412 00:22:15,000 --> 00:22:18,000 Mentre cicli esistono anche in PHP. 413 00:22:18,000 --> 00:22:21,000 Sei cicli while esistono anche in PHP, 414 00:22:21,000 --> 00:22:26,000 e gli array esistono in PHP, ma è qui che inizia la sintassi per ottenere un po 'diverso, 415 00:22:26,000 --> 00:22:29,000 ma i concetti sono gli stessi, ed i concetti sono veramente gli stessi 416 00:22:29,000 --> 00:22:32,000 come lo erano in 0 Settimana con Scratch. 417 00:22:32,000 --> 00:22:34,000 In primo luogo è il simbolo $. 418 00:22:34,000 --> 00:22:37,000 Questa è stata una decisione di progettazione in PHP in cui ogni variabile 419 00:22:37,000 --> 00:22:41,000 in PHP di progettazione inizia con $ segno. 420 00:22:41,000 --> 00:22:46,000 C'è di più senza X, Y, Z. E 'ora $ X, $ Y, Z $ solo perché. 421 00:22:46,000 --> 00:22:49,000 E 'una cosa da tenere a mente, e ora sul lato destro 422 00:22:49,000 --> 00:22:52,000 questo è simile a una matrice, 423 00:22:52,000 --> 00:22:54,000 ma stiamo utilizzando le parentesi quadre qui. 424 00:22:54,000 --> 00:22:57,000 In PHP e in JavaScript, come vedremo finalmente vedere, 425 00:22:57,000 --> 00:23:01,000 per dichiarare un array si aprono parentesi quadra e chiusa parentesi quadra, 426 00:23:01,000 --> 00:23:04,000 e poi si dispone di un elenco separato da virgole di valori, sia interi 427 00:23:04,000 --> 00:23:09,000 o stringhe o caratteri, tutto quello che vuoi, all'interno di quella espressione lì. 428 00:23:09,000 --> 00:23:11,000 >> Ora, come abbiamo fatto qualcosa di simile in C? 429 00:23:11,000 --> 00:23:16,000 Qual è stata la sintassi per dichiarare staticamente una matrice di numeri conosciute? 430 00:23:16,000 --> 00:23:19,000 E 'stato tra parentesi graffe, così piccola differenza qui, ma in entrambi PHP 431 00:23:19,000 --> 00:23:22,000 e alla fine JavaScript usa solo tra parentesi quadre, in modo davvero 432 00:23:22,000 --> 00:23:25,000 l'unico dettaglio interessante è il simbolo $ per il nome della variabile 433 00:23:25,000 --> 00:23:28,000 e anche le parentesi quadre, e c'è una cosa curiosa 434 00:23:28,000 --> 00:23:32,000 che è stato omesso e sulla sinistra del segno =. 435 00:23:32,000 --> 00:23:36,000 Ciò che manca che stiamo richiedendo da settimane? Gia '. 436 00:23:36,000 --> 00:23:38,000 [Risposta degli studenti incomprensibile] 437 00:23:38,000 --> 00:23:41,000 La dimensione, quindi non c'è alcuna menzione della dimensione della matrice. 438 00:23:41,000 --> 00:23:45,000 Francamente, non c'è alcuna menzione di parentesi quadre sul lato sinistro 439 00:23:45,000 --> 00:23:47,000 del segno =, e che altro non è presente nella linea? 440 00:23:47,000 --> 00:23:49,000 Si '. >> [Risposta degli studenti incomprensibile] 441 00:23:49,000 --> 00:23:52,000 Il tipo, per cui ciò che è interessante, in particolare, su PHP 442 00:23:52,000 --> 00:23:56,000 è che non è un linguaggio fortemente tipizzato come è C, 443 00:23:56,000 --> 00:23:58,000 e che è fortemente tipizzati, nel senso che si deve dire char, 444 00:23:58,000 --> 00:24:00,000 devi dire int, float devi dire. 445 00:24:00,000 --> 00:24:03,000 >> Ogni volta che si desidera una variabile si deve dire Clang qual è il suo tipo è. 446 00:24:03,000 --> 00:24:05,000 PHP è un po 'pigri. 447 00:24:05,000 --> 00:24:08,000 E 'debolmente tipizzato nel senso che 448 00:24:08,000 --> 00:24:11,000 si può avere carri e caratteri e le stringhe 449 00:24:11,000 --> 00:24:14,000 e int e così via, ma la stessa lingua 450 00:24:14,000 --> 00:24:17,000 in realtà non importa ciò che si mette all'interno di una variabile. 451 00:24:17,000 --> 00:24:20,000 Non c'è bisogno di informare in anticipo il tipo di dati 452 00:24:20,000 --> 00:24:22,000 sta andando in una variabile. 453 00:24:22,000 --> 00:24:24,000 E 'interamente a voi, quindi questo è bello 454 00:24:24,000 --> 00:24:27,000 nel senso che non ci si deve preoccupare tanto di dati digitando 455 00:24:27,000 --> 00:24:29,000 e preoccupante ciò che i tuoi argomenti sono e così via. 456 00:24:29,000 --> 00:24:32,000 Questo significa anche, infine, le funzioni in PHP saranno in grado di tornare 457 00:24:32,000 --> 00:24:36,000 sia un maggior int del tempo, e forse tanto 458 00:24:36,000 --> 00:24:40,000 faranno restituire un bool, un valore booleano falso, ad esempio, per significare che qualcosa è andato storto. 459 00:24:40,000 --> 00:24:44,000 Questo ci dà alcuni aspetti positivi, ma anche ci renderà sorta di base alla progettazione 460 00:24:44,000 --> 00:24:47,000 un po 'più pigri quando si tratta di digitazione dei dati. 461 00:24:47,000 --> 00:24:50,000 >> Che altro c'è da tenere a mente? 462 00:24:50,000 --> 00:24:54,000 Variabili sembrano abbastanza come questo, quindi $ s = "ciao, mondo". 463 00:24:54,000 --> 00:24:57,000 Questo è forse desumibile dall'esempio precedente, 464 00:24:57,000 --> 00:24:59,000 e abbiamo un altro tipo di ciclo. 465 00:24:59,000 --> 00:25:02,000 Questo quello che troveremo a vedere di tanto in tanto dal momento che è molto utile, 466 00:25:02,000 --> 00:25:04,000 un costrutto foreach. 467 00:25:04,000 --> 00:25:11,000 In questo caso, il ciclo foreach porta all'interno delle sue parentesi 3 parole tipicamente, 468 00:25:11,000 --> 00:25:16,000 $ Qualcosa prima, che è quello di matrice vuoi scorrere i membri di, 469 00:25:16,000 --> 00:25:19,000 poi letteralmente la parola chiave come, e poi, infine, 470 00:25:19,000 --> 00:25:21,000 un altro nome di variabile che si arriva a scegliere. 471 00:25:21,000 --> 00:25:23,000 Può essere foo, bar, o elemento, 472 00:25:23,000 --> 00:25:26,000 e ciò che questo costrutto fa 473 00:25:26,000 --> 00:25:29,000 è se l'array $ contiene 10 elementi 474 00:25:29,000 --> 00:25:34,000 ad ogni iterazione di questa matrice-dispiace, ad ogni iterazione di questo ciclo 475 00:25:34,000 --> 00:25:37,000 l'elemento variabile chiamata sta per essere aggiornato 476 00:25:37,000 --> 00:25:40,000 di essere il primo elemento della matrice, quindi il secondo elemento nella matrice, 477 00:25:40,000 --> 00:25:44,000 poi il terzo elemento della matrice, ovviando così alla necessità 478 00:25:44,000 --> 00:25:46,000 per fare la notazione un po 'fastidioso parentesi quadra e 479 00:25:46,000 --> 00:25:49,000 $ I, al fine di indice in un array. 480 00:25:49,000 --> 00:25:53,000 PHP fa tutto il lavoro per voi e per ogni iterazione 481 00:25:53,000 --> 00:25:55,000 passa per te l'elemento successivo dalla matrice 482 00:25:55,000 --> 00:26:01,000 senza dover conoscere o preoccupate per il suo posizione di indice numerico. 483 00:26:01,000 --> 00:26:04,000 >> E poi, infine, per il momento, c'è un altra caratteristica di PHP 484 00:26:04,000 --> 00:26:08,000 che sta per essere estremamente utile, soprattutto quando si inizia la programmazione sul web, 485 00:26:08,000 --> 00:26:10,000 e che è conosciuto come un array associativo. 486 00:26:10,000 --> 00:26:13,000 Gli array che conosciamo finora in 20 secondi fa 487 00:26:13,000 --> 00:26:17,000 e per le ultime 8 settimane sono numericamente array indicizzati, 488 00:26:17,000 --> 00:26:20,000 sorta di array tradizionali in cui gli indici sono interi, 489 00:26:20,000 --> 00:26:23,000 0, 1, 2, tutto il senso in su. 490 00:26:23,000 --> 00:26:25,000 Gli array associativi sono molto più potente. 491 00:26:25,000 --> 00:26:28,000 Essi consentono di avere chiavi arbitrarie, 492 00:26:28,000 --> 00:26:31,000 indici arbitrari e valori arbitrari. 493 00:26:31,000 --> 00:26:34,000 Mentre in un array tradizionale è 0, 1, 2, 494 00:26:34,000 --> 00:26:37,000 in un array associativo è possibile avere un indice 495 00:26:37,000 --> 00:26:41,000 o una chiave di foo il cui valore è il bar. 496 00:26:41,000 --> 00:26:46,000 È quindi possibile avere un altro tasto che si chiama Baz e il cui valore è Qux. 497 00:26:46,000 --> 00:26:49,000 >> Anche in questo caso, stupidi informatica denominazioni generiche variabili qui, 498 00:26:49,000 --> 00:26:55,000 ma il punto è che l'array non ha supporto 0 o staffa 1. 499 00:26:55,000 --> 00:26:59,000 E 'invece avrà foo staffa e la staffa baz. 500 00:26:59,000 --> 00:27:03,000 Questo è molto più versatile che ci sta andando ad essere in grado di associare 501 00:27:03,000 --> 00:27:07,000 parole con altre parole, le chiavi con valori completamente arbitrariamente, 502 00:27:07,000 --> 00:27:12,000 e ci sta andando ad essere in grado di ottenere quei valori indietro nel tempo costante 503 00:27:12,000 --> 00:27:14,000 perché sotto la cappa ciò che un array associativo 504 00:27:14,000 --> 00:27:16,000 in realtà è una tabella hash. 505 00:27:16,000 --> 00:27:20,000 Ricordiamo che una tabella di hash consente di mettere in alcuni input 506 00:27:20,000 --> 00:27:25,000 come nella parola di David, se si desidera inserire David in una sorta di dizionario, 507 00:27:25,000 --> 00:27:27,000 e poi si torna un po 'di valore in genere. 508 00:27:27,000 --> 00:27:29,000 Nel caso di correttore ortografico, vero o falso. 509 00:27:29,000 --> 00:27:33,000 David o qualunque parola è o non è presente nel dizionario. 510 00:27:33,000 --> 00:27:36,000 Un array associativo è in realtà solo una tabella di hash, 511 00:27:36,000 --> 00:27:38,000 ma è un'incarnazione molto più user friendly di esso. 512 00:27:38,000 --> 00:27:41,000 Come vedremo, sta andando per permetterci di fare alcune cose 513 00:27:41,000 --> 00:27:43,000 molto, molto facilmente. 514 00:27:43,000 --> 00:27:45,000 >> Diamo uno sguardo ad alcune di base di PHP 515 00:27:45,000 --> 00:27:47,000 esempi e vedere cosa si può fare con questa lingua. 516 00:27:47,000 --> 00:27:51,000 Lasciatemi andare avanti e aprire nella nostra directory di origine di oggi 517 00:27:51,000 --> 00:27:54,000 un file chiamato hello1.php. 518 00:27:54,000 --> 00:27:57,000 Questo file è più un commento di quello che è il codice vero e proprio, 519 00:27:57,000 --> 00:28:00,000 per cui vorrei effettivamente rimuovere tutti i commenti dal file 520 00:28:00,000 --> 00:28:05,000 e presenti a voi forse il più semplice programma PHP proprio qui. 521 00:28:05,000 --> 00:28:07,000 5 righe, e alcuni di questi sono spazi vuoti, 522 00:28:07,000 --> 00:28:09,000 così notare alcune differenze fondamentali qui. 523 00:28:09,000 --> 00:28:12,000 Il file è denominato hello1.php. 524 00:28:12,000 --> 00:28:16,000 La prima riga, però, è 00:28:18,000 Simile nello spirito di HTML, 526 00:28:18,000 --> 00:28:21,000 sequenza di caratteri che indica al computer 527 00:28:21,000 --> 00:28:25,000 "Ehi, computer, ecco un programma che siamo in in PHP." 528 00:28:25,000 --> 00:28:28,000 Si fa in modo che non è confuso che si tratta di qualche altra lingua. 529 00:28:28,000 --> 00:28:30,000 La linea 2 è uno spazio interessante bianco. 530 00:28:30,000 --> 00:28:32,000 La linea 3 è il nostro vecchio amico printf, 531 00:28:32,000 --> 00:28:34,000 questa volta nel contesto di PHP. 532 00:28:34,000 --> 00:28:37,000 PHP ha la sua versione di printf che si comporta esattamente lo stesso, 533 00:28:37,000 --> 00:28:39,000 quindi questo è solo andare a stampare "ciao, mondo". 534 00:28:39,000 --> 00:28:46,000 E poi, di fronte a questo tag qui,>, significa che è per il mio codice PHP. 535 00:28:46,000 --> 00:28:48,000 >> Vediamo come eseguire questo. 536 00:28:48,000 --> 00:28:50,000 Ho intenzione di tornare alla mia finestra di terminale qui. 537 00:28:50,000 --> 00:28:52,000 Ho intenzione di andare nella mia cartella di PHP. 538 00:28:52,000 --> 00:28:56,000 Si noti che abbiamo un intero gruppo di file, il primo dei quali è hello.php. 539 00:28:56,000 --> 00:29:01,000 Lasciami andare avanti ed eseguire questo, hello1.php, immettere. 540 00:29:01,000 --> 00:29:03,000 Autorizzazione negata. Va bene. 541 00:29:03,000 --> 00:29:06,000 Come abbiamo risolto le cose come in passato? 542 00:29:06,000 --> 00:29:08,000 Che cosa? >> [Risposta degli studenti incomprensibile] 543 00:29:08,000 --> 00:29:11,000 Abbiamo bisogno di leggere e scrivere, ma mi permetta di fare ls-l. 544 00:29:11,000 --> 00:29:14,000 Ricordate questa uscita un po 'criptico per cui Hello1 545 00:29:14,000 --> 00:29:17,000 sembra essere leggibile e scrivibile da me 546 00:29:17,000 --> 00:29:19,000 ma leggibile da tutti gli altri. 547 00:29:19,000 --> 00:29:22,000 E 'venuto fuori questo in realtà non è un passo nella giusta direzione. 548 00:29:22,000 --> 00:29:25,000 La differenza, ancora una volta, con un linguaggio interpretato 549 00:29:25,000 --> 00:29:27,000 è non si esegue direttamente il programma. 550 00:29:27,000 --> 00:29:30,000 È invece eseguire un interprete e consegnarla il codice 551 00:29:30,000 --> 00:29:33,000 che hai scritto in modo che possa interpretare riga per riga. 552 00:29:33,000 --> 00:29:36,000 In questo caso, l'interprete o il programma che in realtà desidera eseguire 553 00:29:36,000 --> 00:29:38,000 è letteralmente chiamato PHP. 554 00:29:38,000 --> 00:29:41,000 >> Da qualche parte su questo disco rigido della macchina c'è un programma 555 00:29:41,000 --> 00:29:45,000 qualcun altro ha scritto chiamato PHP, o su Windows php.exe. 556 00:29:45,000 --> 00:29:48,000 Che cosa ho intenzione di fare è ho intenzione di eseguire effettivamente PHP 557 00:29:48,000 --> 00:29:51,000 ma dare come argomento della riga di comando il codice che ho scritto, 558 00:29:51,000 --> 00:29:54,000 e poi me ne diminuire e premi invio. 559 00:29:54,000 --> 00:29:58,000 Funziona il mio programma per me, dall'alto in basso, da sinistra a destra. 560 00:29:58,000 --> 00:30:01,000 Lasciatemi andare avanti e aprire una piccola differenza di questo. 561 00:30:01,000 --> 00:30:05,000 In nota hello2.php che anche questo 562 00:30:05,000 --> 00:30:08,000 è per lo più commenti, così mi permetta di sbarazzarsi di quelle come una distrazione, 563 00:30:08,000 --> 00:30:13,000 e ciò che è chiaramente diverso, ora su questo file? 564 00:30:13,000 --> 00:30:15,000 C'è questa nuova linea, un po 'criptico in alto. 565 00:30:15,000 --> 00:30:20,000 In linea 1 è #! / Bin / php. 566 00:30:20,000 --> 00:30:24,000 Bin è una convenzione su Linux e Mac OS per i binari, 567 00:30:24,000 --> 00:30:27,000 così / bin significa che questo è una cartella contenente una serie di binari 568 00:30:27,000 --> 00:30:29,000 che è programmato, uno dei quali è PHP. 569 00:30:29,000 --> 00:30:32,000 Il #! è soprannominato baracca, 570 00:30:32,000 --> 00:30:35,000 che è il modo rapido di dirlo, e che cosa questo significa 571 00:30:35,000 --> 00:30:40,000 è che quando si esegue questo programma ora c'è un accenno nella parte superiore del file 572 00:30:40,000 --> 00:30:44,000 che dice al computer cosa interprete da usare. 573 00:30:44,000 --> 00:30:47,000 >> Si diventa un po 'fastidioso se si dovesse dire ai tuoi utenti e dei vostri clienti 574 00:30:47,000 --> 00:30:50,000 "Ehi, abbiamo scritto questo programma chiamato hello1.php." 575 00:30:50,000 --> 00:30:54,000 Tutto quello che dovete fare è eseguire il programma PHP per sempre e quindi il nome di questo programma. 576 00:30:54,000 --> 00:30:58,000 Francamente, sarebbe solo più bello da eseguire hello1.php, 577 00:30:58,000 --> 00:31:00,000 e in effetti, ci sarebbe la possibilità effettuare le seguenti operazioni. 578 00:31:00,000 --> 00:31:05,000 Lasciatemi andare avanti e fare ls-l, e avviso nella hello2 è ancora appena letto scrittura 579 00:31:05,000 --> 00:31:10,000 e poi leggere leggere, quindi non posso ancora farlo, hello2.php. 580 00:31:10,000 --> 00:31:15,000 Ma abbiamo introdotto questo mai così brevemente l'ultima volta, il comando chmod. 581 00:31:15,000 --> 00:31:20,000 Se faccio chmod a + x, il che significa che tutte le più eseguibilità, 582 00:31:20,000 --> 00:31:26,000 e poi hello2.php e poi fare ls-l di nuovo notare che cosa è cambiato. 583 00:31:26,000 --> 00:31:29,000 Uno, Linux mi sta mostrando il nome del file in verde per trasmettere l'idea 584 00:31:29,000 --> 00:31:32,000 che sia eseguibile, ma soprattutto, sul lato sinistro 585 00:31:32,000 --> 00:31:36,000 notare che il bit che rappresenta x per file eseguibile è stato impostato. 586 00:31:36,000 --> 00:31:42,000 Che cosa questo significa è che ora è possibile eseguire ./hello2.php come al solito, 587 00:31:42,000 --> 00:31:45,000 premi invio, e per la baracca in cima del file 588 00:31:45,000 --> 00:31:48,000 questo è un suggerimento, ancora una volta, a Linux che dice 589 00:31:48,000 --> 00:31:51,000 utilizzare questo interprete per eseguire il file. 590 00:31:51,000 --> 00:31:54,000 Non preoccuparti per costringere l'utente a digitare in realtà. 591 00:31:54,000 --> 00:31:57,000 >> E ciò che è bello è ora è una specie di irrilevante ai miei clienti o amici 592 00:31:57,000 --> 00:32:01,000 che lingua ho scritto questo programma, in modo da poter andare avanti con mv 593 00:32:01,000 --> 00:32:04,000 e rinominare questa cosa hello2, per esempio. 594 00:32:04,000 --> 00:32:07,000 E ora se lo faccio ./hello2 595 00:32:07,000 --> 00:32:10,000 e diminuire il mio programma continua a funzionare. 596 00:32:10,000 --> 00:32:13,000 Queste estensioni di file sono una convenzione umana che è necessario 597 00:32:13,000 --> 00:32:15,000 per qualcosa come Clang e Fai che cercano per loro. 598 00:32:15,000 --> 00:32:18,000 Ma per PHP, avrei potuto chiamarlo in qualsiasi estensione di file che voglio. 599 00:32:18,000 --> 00:32:22,000 Ho potuto ingannare il mondo a pensare che io sono veramente bravo a Ruby, 600 00:32:22,000 --> 00:32:25,000 e ho potuto scrivere hello2.rb e quindi eseguire questo, 601 00:32:25,000 --> 00:32:28,000 e voilà, ora ho la versione di Ruby, che è una bugia completa. 602 00:32:28,000 --> 00:32:30,000 Ma le estensioni dei file sono privi di significato 603 00:32:30,000 --> 00:32:35,000 se il file è eseguibile e ha questo suggerimento speciale nella parte superiore del file. 604 00:32:35,000 --> 00:32:38,000 >> Ora, da parte, lascia che ti mostri velocemente versione 3, 605 00:32:38,000 --> 00:32:40,000 che è una sorta di trucco utile conoscere. 606 00:32:40,000 --> 00:32:45,000 In hello3 Ho fatto qualcosa di leggermente sbagliato 607 00:32:45,000 --> 00:32:47,000 che io aggiornare online il codice sorgente. 608 00:32:47,000 --> 00:32:50,000 Nella versione 3 si scopre che la maggior parte dei computer Linux 609 00:32:50,000 --> 00:32:53,000 c'è un programma chiamato env per l'ambiente, 610 00:32:53,000 --> 00:32:56,000 e cosa si può fare qui è se non avete idea di dove PHP 611 00:32:56,000 --> 00:33:00,000 è installato sul disco rigido locale, perché in effetti potrebbe variare in base al computer 612 00:33:00,000 --> 00:33:03,000 che qualcuno sta usando, env dice basta eseguire env, 613 00:33:03,000 --> 00:33:07,000 che si trova sulla maggior parte dei sistemi, e capire dove PHP è. 614 00:33:07,000 --> 00:33:11,000 Solo un trucco comune in modo da non dovete preoccuparvi di scoprire dove un programma è. 615 00:33:11,000 --> 00:33:14,000 Ma se ti interessa per scoprire dove il programma è e non si è curato finora 616 00:33:14,000 --> 00:33:16,000 è possibile utilizzare il comando which. 617 00:33:16,000 --> 00:33:19,000 >> Vorrei diminuire ed il tipo php, 618 00:33:19,000 --> 00:33:23,000 e notare mi dice che in realtà è in usr / bin / php. 619 00:33:23,000 --> 00:33:25,000 E 'una specie di bugia. E 'anche in bin. 620 00:33:25,000 --> 00:33:27,000 E 'solo che mi mostra il primo colpo. 621 00:33:27,000 --> 00:33:31,000 Se siete mai chiesti dove è Clang, che Clang, che è in usr / bin / clang, 622 00:33:31,000 --> 00:33:34,000 che fanno, usr / bin / make, e che cosa significa tutto questo tempo 623 00:33:34,000 --> 00:33:38,000 si sarebbe potuto digitare usr / bin / clang INVIO per eseguire Clang, 624 00:33:38,000 --> 00:33:41,000 ma è una specie di noioso per farlo, per cui alcune cartelle 625 00:33:41,000 --> 00:33:44,000 come usr / bin e bin sono assunti come valori predefiniti 626 00:33:44,000 --> 00:33:50,000 in modo che il computer sa a cercare in loro per voi. 627 00:33:50,000 --> 00:33:53,000 Hai domande sulla scrittura di un super, super semplice programma Ciao Mondo 628 00:33:53,000 --> 00:33:55,000 in PHP e poi in esecuzione? 629 00:33:55,000 --> 00:33:59,000 Perché ora inizieremo a introdurre sintassi più convincente. 630 00:33:59,000 --> 00:34:01,000 Va bene, ci siamo. 631 00:34:01,000 --> 00:34:03,000 Questi programmi che abbiamo visto, in realtà tutti prima. 632 00:34:03,000 --> 00:34:07,000 >> Se mi apro, per esempio, facciamo beer1.php, 633 00:34:07,000 --> 00:34:09,000 non passerà attraverso diverse versioni di questo, ma quello che ho fatto 634 00:34:09,000 --> 00:34:13,000 stavo seduto e la versò o convertiti 635 00:34:13,000 --> 00:34:15,000 il mio codice C al codice PHP qui. 636 00:34:15,000 --> 00:34:18,000 La maggior parte della parte superiore del file è osservazioni qui. 637 00:34:18,000 --> 00:34:20,000 Sembra che vi è una nuova funzione abbiamo bisogno chiamato readline. 638 00:34:20,000 --> 00:34:23,000 GetString, richiamo, dalla Settimana 0 in poi era una cosa CS50. 639 00:34:23,000 --> 00:34:27,000 PHP viene fornito con il proprio user-friendly funzione chiamata readline 640 00:34:27,000 --> 00:34:30,000 che prende 1 argomento che specifica il prompt 641 00:34:30,000 --> 00:34:33,000 che si desidera visualizzare per l'utente, e che cosa fa readline 642 00:34:33,000 --> 00:34:35,000 si restituisce tutto ciò che l'utente digita poll 643 00:34:35,000 --> 00:34:39,000 In questo caso, mi dichiara una variabile denominata $ n. 644 00:34:39,000 --> 00:34:42,000 Sono memorizzare in essa il valore di ritorno di readline 645 00:34:42,000 --> 00:34:44,000 dopo aver chiesto l'utente con questa stringa. 646 00:34:44,000 --> 00:34:47,000 Basta eseguire il backup, per l'esecuzione in realtà questa cosa, lasciami andare avanti 647 00:34:47,000 --> 00:34:50,000 ed eseguire beer1.php php. 648 00:34:50,000 --> 00:34:53,000 Quante bottiglie ci saranno? Diciamo solo fare 2 questa volta. 649 00:34:53,000 --> 00:34:55,000 Invio. Questo è tutto. 650 00:34:55,000 --> 00:34:59,000 >> Il programma è funzionalmente identico alla versione C di settimane fa. 651 00:34:59,000 --> 00:35:01,000 Ma sintatticamente vediamo cosa c'è di diverso. 652 00:35:01,000 --> 00:35:05,000 Dopo ho un int dalla comunicazione dell'utente che sto facendo un po 'di controllo degli errori, 653 00:35:05,000 --> 00:35:08,000 e se n è minore di 1 ho smesso e ho stampare 654 00:35:08,000 --> 00:35:11,000 un messaggio mi dispiace per l'utente e uscire con 1. 655 00:35:11,000 --> 00:35:13,000 Anche questo è un po 'diverso. 656 00:35:13,000 --> 00:35:16,000  In C quello che abbiamo fatto? In C siamo tornati 1. 657 00:35:16,000 --> 00:35:20,000 In PHP si esce con 1, che francamente credo sia un po 'più intuitivo 658 00:35:20,000 --> 00:35:22,000 perché si sta letteralmente uscire dal programma. 659 00:35:22,000 --> 00:35:25,000 Va bene, e poi qui la canzone fastidiosa è sintatticamente identico 660 00:35:25,000 --> 00:35:29,000 fatta eccezione per la variabile, in modo da qui alla riga 24 in poi 661 00:35:29,000 --> 00:35:31,000 notare che il mio ciclo for è quasi la stessa, 662 00:35:31,000 --> 00:35:34,000 ma ho $ di fronte i e n, 663 00:35:34,000 --> 00:35:37,000 e ciò che è inoltre, non linea 26 che abbiamo avuto in passato 664 00:35:37,000 --> 00:35:39,000 quando si dichiara una variabile i? 665 00:35:39,000 --> 00:35:41,000 Non c'è nessun tipo. 666 00:35:41,000 --> 00:35:43,000 Non è corretto in PHP per dire int. 667 00:35:43,000 --> 00:35:45,000 Semplicemente non c'è bisogno di farlo. 668 00:35:45,000 --> 00:35:48,000 Il computer, l'interprete PHP è abbastanza intelligente per capire 669 00:35:48,000 --> 00:35:51,000 che se si mette un numero in $ mi verrà trattato 670 00:35:51,000 --> 00:35:53,000 come un numero per voi. 671 00:35:53,000 --> 00:35:57,000 E poi qui ci collegare $ i, $ i, $ i - 1. 672 00:35:57,000 --> 00:36:00,000 Tutto ciò è lo stesso, e poi qui facciamo un "Wow, questo è fastidioso" printf 673 00:36:00,000 --> 00:36:02,000 e poi l'uscita (0). 674 00:36:02,000 --> 00:36:05,000 >> Anche in questo caso, l'asporto è che, anche se stiamo andando a spendere relativamente 675 00:36:05,000 --> 00:36:09,000 po 'di tempo su PHP, sicuramente rispetto a quello che abbiamo fatto in C, 676 00:36:09,000 --> 00:36:12,000 è quasi la stessa cosa, e così quello che faremo oggi e la prossima settimana 677 00:36:12,000 --> 00:36:14,000 e al di là è concentrarsi realmente su alcune delle nuove idee. 678 00:36:14,000 --> 00:36:17,000 Solo per vedere che una cosa si traduce dall'esercizio C, 679 00:36:17,000 --> 00:36:20,000 questo era un programma super semplice che abbiamo fatto in settimana 1 680 00:36:20,000 --> 00:36:22,000 o 2 che al cubo un valore. 681 00:36:22,000 --> 00:36:25,000 Ma la cosa più interessante, al momento di questo programma è che esso 682 00:36:25,000 --> 00:36:28,000 introdotto la nozione di una funzione personalizzata scritto che abbiamo scritto. 683 00:36:28,000 --> 00:36:31,000 La sintassi di PHP è quasi la stessa. 684 00:36:31,000 --> 00:36:33,000 Ecco il mio programma sulla parte superiore. 685 00:36:33,000 --> 00:36:35,000 Notare ancora assente è qualsiasi nozione di principale. 686 00:36:35,000 --> 00:36:39,000 Mi metto a scrivere il codice, e questo è quello che sta succedendo per essere eseguito dall'interprete. 687 00:36:39,000 --> 00:36:42,000 Ho stampare x ora è 2, presumibilmente. 688 00:36:42,000 --> 00:36:44,000 Poi mi sostengono cubatura ... 689 00:36:44,000 --> 00:36:47,000 Poi chiamo la funzione cubo e passare in $ x 690 00:36:47,000 --> 00:36:50,000 e assegnare il valore restituito a $ x. 691 00:36:50,000 --> 00:36:53,000 Poi io sostengo che è a cubetti, e poi lo dico, che si spera 692 00:36:53,000 --> 00:36:55,000 dirà x è ora 8. 693 00:36:55,000 --> 00:36:59,000 La sintassi per la funzione in PHP è sempre leggermente diverso. 694 00:36:59,000 --> 00:37:01,000 Anche in questo caso manca è il tipo restituito. 695 00:37:01,000 --> 00:37:05,000 Anche in questo caso manca è il tipo di ritorno e anche ciò che manca è un altro tipo? 696 00:37:05,000 --> 00:37:07,000 [Risposta degli studenti incomprensibile] 697 00:37:07,000 --> 00:37:10,000 Beh, va bene, va bene. Torniamo a quella in un secondo. 698 00:37:10,000 --> 00:37:12,000 >> Non abbiamo, per esempio, int qui. 699 00:37:12,000 --> 00:37:15,000 Noi non, per esempio, hanno int qui perché, ancora una volta, in PHP 700 00:37:15,000 --> 00:37:18,000 semplicemente non è necessario e non deve farlo, 701 00:37:18,000 --> 00:37:20,000 ma c'è questa nuova parola chiave chiamata funzione. 702 00:37:20,000 --> 00:37:23,000 In PHP è quasi un po 'più chiaro perché quando si desidera che una funzione 703 00:37:23,000 --> 00:37:26,000 letteralmente dice funzione, si dà un nome e poi un elenco separato da virgole 704 00:37:26,000 --> 00:37:28,000 se uno dei suoi argomenti. 705 00:37:28,000 --> 00:37:32,000 Non c'è bisogno di dire nulla o qualcosa di simile, e poi il ritorno è la stessa, 706 00:37:32,000 --> 00:37:35,000 $ A * $ a * $ a. 707 00:37:35,000 --> 00:37:38,000 Manca inoltre? Sammy fatto notare qui. 708 00:37:38,000 --> 00:37:43,000 Nella parte superiore del file completamente assenti in PHP è anche un prototipo. 709 00:37:43,000 --> 00:37:45,000 Anche questo è in base alla progettazione. 710 00:37:45,000 --> 00:37:48,000 Lingue e interpreti come PHP sono più intelligenti di C sia mai stato 711 00:37:48,000 --> 00:37:50,000 nei compilatori come Clang. 712 00:37:50,000 --> 00:37:53,000 >> Ricordiamo che Clang, se non l'ha detto che esiste cubo, 713 00:37:53,000 --> 00:37:56,000 se non l'hai detto che esiste printf come con un prototipo 714 00:37:56,000 --> 00:38:00,000 o con un # include, beh, che stava per urlare contro di voi e non anche compilare il codice. 715 00:38:00,000 --> 00:38:03,000 PHP e altre lingue moderne sono molto più intelligenti, quando si tratta di questo. 716 00:38:03,000 --> 00:38:07,000 Essi si incaricano di leggere tutto il codice 717 00:38:07,000 --> 00:38:11,000 e poi urlare a voi solo se lo trova da nessuna parte cubo. 718 00:38:11,000 --> 00:38:15,000 Non importa se cubo è in basso o in alto o anche in qualche file separato. 719 00:38:15,000 --> 00:38:18,000 Linguaggi PHP e simili sono ormai abbastanza intelligente per guardare avanti 720 00:38:18,000 --> 00:38:26,000 a tutto prima ritenendo che per aver fatto un errore. 721 00:38:26,000 --> 00:38:28,000 Dove ci porta? 722 00:38:28,000 --> 00:38:32,000 >> Facciamo un ultimo esempio qui in condizioni, 723 00:38:32,000 --> 00:38:35,000 e se apro preavviso conditions2.php troppo 724 00:38:35,000 --> 00:38:37,000 sintassi qui è quasi la stessa. 725 00:38:37,000 --> 00:38:40,000 Sto utilizzando readline invece di GetString, ma che la linea è la stessa di prima, 726 00:38:40,000 --> 00:38:42,000 "Mi piacerebbe un numero intero per favore." 727 00:38:42,000 --> 00:38:45,000 Poi ho una condizione if, un altro se, e poi un altro, 728 00:38:45,000 --> 00:38:48,000 ma funzionalmente questo programma è anche identico a quello che abbiamo fatto settimane fa, 729 00:38:48,000 --> 00:38:51,000 quindi se ho eseguito questa cosa, php di conditions2, 730 00:38:51,000 --> 00:38:54,000 e Ho dato un numero come 23 - 731 00:38:54,000 --> 00:38:57,000 Ho scelto un numero positivo. Se dare -1 Ho scelto un numero negativo. 732 00:38:57,000 --> 00:39:00,000 Se dare 0 infatti scelto 0. 733 00:39:00,000 --> 00:39:02,000 Quindi, chi se ne frega di tutto questo? 734 00:39:02,000 --> 00:39:06,000 Beh, uno del tipo di esercizi divertimento qui 735 00:39:06,000 --> 00:39:10,000 almeno per me è stato quello di tornare indietro e vedere quanto velocemente ho potuto implementare pset 5, 736 00:39:10,000 --> 00:39:12,000 il pset errori ortografici. 737 00:39:12,000 --> 00:39:15,000 Ricordo che c'era questo file chiamato speller.c, 738 00:39:15,000 --> 00:39:17,000 e c'era un file chiamato dictionary.c. 739 00:39:17,000 --> 00:39:20,000 Quello che ho fatto io era una sorta di passato qualche minuto e mi sono convertito il codice C 740 00:39:20,000 --> 00:39:23,000 di codice PHP, e non spendere molto tempo su speller 741 00:39:23,000 --> 00:39:26,000 perché, proprio come in pset 5 non hai realmente bisogno di 742 00:39:26,000 --> 00:39:29,000 passano molto tempo sul correttore ortografico se stesso perché l'attenzione era su dizionario. 743 00:39:29,000 --> 00:39:32,000 >> Basti dire che, se si legge con correttore ortografico, 744 00:39:32,000 --> 00:39:35,000 questo file qui, è più o meno equivalente al codice C 745 00:39:35,000 --> 00:39:37,000 vi abbiamo dato per pset 5. 746 00:39:37,000 --> 00:39:39,000 Ho appena aggiunto un po 'di $ in alcuni punti. 747 00:39:39,000 --> 00:39:43,000 Ho cambiato i nomi delle funzioni determinate, se non esistessero in PHP. 748 00:39:43,000 --> 00:39:45,000 C'è una cosa in più qui, preg_match, 749 00:39:45,000 --> 00:39:48,000 che è il modo un po 'più elaborata di fare qualcosa, ma torneremo a che alla fine. 750 00:39:48,000 --> 00:39:51,000 Ma in breve, correttore ortografico è quasi identico, e se si guarda in fondo 751 00:39:51,000 --> 00:39:54,000 quello che sputa fuori alla fine è questo qui, 752 00:39:54,000 --> 00:39:57,000 le parole errate, parole in dizionario, parole nel testo. 753 00:39:57,000 --> 00:40:00,000 Va bene, allora ciò che è interessante ora è la seguente. 754 00:40:00,000 --> 00:40:05,000 Nella parte superiore del mio file che sto richiedendo dictionary.php. 755 00:40:05,000 --> 00:40:09,000 Proprio come C è # include PHP ha una funzione speciale chiamata richiedono 756 00:40:09,000 --> 00:40:14,000 che più o meno fa la stessa cosa, richiedono un file chiamato dictionary.php. 757 00:40:14,000 --> 00:40:18,000 Come posso fare per l'attuazione pset 5? 758 00:40:18,000 --> 00:40:21,000 Lasciatemi andare avanti e aprire un file qui. 759 00:40:21,000 --> 00:40:24,000 Permettetemi di fare un po 'di riferimento qui. 760 00:40:24,000 --> 00:40:29,000 E lasciate che creare un nuovo file e avviare la chiamata a questo dictionary.php. 761 00:40:29,000 --> 00:40:31,000 Mettiamola in un'altra cartella in modo che possiamo farlo vivere. 762 00:40:31,000 --> 00:40:33,000 E ora io Immagine 763 00:40:33,000 --> 00:40:37,000 Sto per iniziare il mio file PHP con supporto php aperta chiusa parentesi. 764 00:40:37,000 --> 00:40:40,000 E poi qui ci sono alcune funzioni sono necessarie per l'attuazione di pset 5, 765 00:40:40,000 --> 00:40:42,000 così mi permetta di avviare l'attuazione di alcuni di questi, 766 00:40:42,000 --> 00:40:47,000 così controllo funzionale, che ha dovuto prendere una parola come argomento. 767 00:40:47,000 --> 00:40:49,000 Lo faremo e tornare ad essa in un momento. 768 00:40:49,000 --> 00:40:53,000 >> C'era funzione del carico, che ha avuto in quella che come argomento? 769 00:40:53,000 --> 00:40:56,000 Dizionario, in modo che il file che volevo realmente da caricare. 770 00:40:56,000 --> 00:41:00,000 C'era dimensioni funzione, che non richiede alcun argomento 771 00:41:00,000 --> 00:41:04,000 e c'era la funzione, che cosa era l'altro? 772 00:41:04,000 --> 00:41:06,000 Unload, che non richiede alcun argomento sia. 773 00:41:06,000 --> 00:41:10,000 Queste sono le 4 funzioni che avrei bisogno di attuare ora in PHP, 774 00:41:10,000 --> 00:41:13,000 e quello che ho intenzione di fare è andare avanti e farlo. 775 00:41:13,000 --> 00:41:16,000 Molti di voi utilizzato una tabella hash in pset 5, 776 00:41:16,000 --> 00:41:21,000 così mi permetta di andare avanti e creare una tabella hash in PHP. 777 00:41:21,000 --> 00:41:23,000 Fatto. 778 00:41:23,000 --> 00:41:25,000 Questo mi dà una tabella di hash. Beh, perche '? 779 00:41:25,000 --> 00:41:30,000 Uno, la variabile si chiama $ tabella, solo per evocare l'idea di una tabella di hash. 780 00:41:30,000 --> 00:41:34,000 Le parentesi quadre, però, ricordare, rappresentano ciò? 781 00:41:34,000 --> 00:41:37,000 Un array, ma in array PHP non c'è bisogno di essere indicizzato numericamente. 782 00:41:37,000 --> 00:41:41,000 Essi possono essere anche gli array associativi, 783 00:41:41,000 --> 00:41:44,000 il che significa che si può avere chiavi arbitrarie e valori. 784 00:41:44,000 --> 00:41:49,000 >> Molto simile a pset 5, quelli di voi che ha fatto implementazioni tabella hash 785 00:41:49,000 --> 00:41:53,000 probabilmente inserita la parola e poi inserito in una catena di liste collegate, 786 00:41:53,000 --> 00:41:56,000 o è stato memorizzato il valore di qualche vero o qualcosa in tal senso. 787 00:41:56,000 --> 00:41:59,000 È in qualche modo ricordare il fatto che la parola era lì. 788 00:41:59,000 --> 00:42:01,000 Per ora, che sta per essere la mia tabella di hash, 789 00:42:01,000 --> 00:42:06,000 e così ora fare per attuare la funzione di controllo 790 00:42:06,000 --> 00:42:09,000 Ho solo bisogno di guardare dentro di detta tabella di hash 791 00:42:09,000 --> 00:42:11,000 e vedere se una parola è lì. 792 00:42:11,000 --> 00:42:15,000 Che cosa ho intenzione di fare è che sto per dire se- 793 00:42:15,000 --> 00:42:20,000 diciamo isset, che è una funzione PHP che letteralmente significa semplicemente che è il set di chiavi, 794 00:42:20,000 --> 00:42:24,000 così isset ($ table [$ parola], 795 00:42:24,000 --> 00:42:29,000 e in tal caso restituire true. 796 00:42:29,000 --> 00:42:32,000 Tutto qui. Questo è pset 5 in PHP. 797 00:42:32,000 --> 00:42:34,000 Beh, in tutta onestà, va bene. 798 00:42:34,000 --> 00:42:37,000 Else return false, in modo che non ci sia. 799 00:42:37,000 --> 00:42:39,000 Che cosa sta realmente succedendo? 800 00:42:39,000 --> 00:42:42,000 Beh, se la tabella di tabella o hash qui più in generale- 801 00:42:42,000 --> 00:42:46,000 è un array associativo che significa che è in grado di indicizzare in esso 802 00:42:46,000 --> 00:42:50,000 con una parola come "parola", e si deve tornare un certo valore. 803 00:42:50,000 --> 00:42:52,000 >> Siamo un po 'sempre un passo avanti a noi stessi. 804 00:42:52,000 --> 00:42:56,000 Sarebbe sorta di bello se effettivamente caricato il primo file, 805 00:42:56,000 --> 00:42:58,000 così carico non è così semplice, ma vorrei andare avanti e montare 806 00:42:58,000 --> 00:43:00,000  una implementazione molto veloce del carico. 807 00:43:00,000 --> 00:43:07,000 Lasciatemi andare avanti e dire parole ottiene dizionario file. 808 00:43:07,000 --> 00:43:10,000 La funzione di file in PHP apre un file 809 00:43:10,000 --> 00:43:12,000 e ritorna a voi una vasta gamma di tutte le parole in quel file, 810 00:43:12,000 --> 00:43:14,000 passa solo a voi. 811 00:43:14,000 --> 00:43:16,000 E 'stato un dolore troppo grande, non è vero? 812 00:43:16,000 --> 00:43:21,000 Ora foreach, questo è il nostro nuovo costrutto, foreach ($ parole da $ parola). 813 00:43:21,000 --> 00:43:25,000 Questo ciclo sta per iniziare l'iterazione sulle parole di matrice 814 00:43:25,000 --> 00:43:30,000 e assegnare alla variabile $ parola ogni parola nel file 815 00:43:30,000 --> 00:43:32,000 dal primo al secondo al terzo al quarto fino 816 00:43:32,000 --> 00:43:35,000 quindi non c'è bisogno di fare il fastidioso [i] notazione e simili. 817 00:43:35,000 --> 00:43:38,000 E quello che sto semplicemente andando a fare per ognuna di queste parole 818 00:43:38,000 --> 00:43:43,000 è conservarlo nella mia tabella per l'indicizzazione nella tabella 819 00:43:43,000 --> 00:43:47,000 e poi facendo vero perché da ricordare 820 00:43:47,000 --> 00:43:50,000 che una parola è nel mio dizionario tutto quello che veramente hanno a che fare 821 00:43:50,000 --> 00:43:55,000 è una specie di girare un po 'e dire questa parola nella mia tabella di hash è lì, vero. 822 00:43:55,000 --> 00:43:58,000 E se non c'è, non c'è bisogno di mettere esplicitamente false, 823 00:43:58,000 --> 00:44:01,000 altrimenti avrei dovuto mettere false per tutte le parole possibili nell'universo. 824 00:44:01,000 --> 00:44:05,000 >> E 'sufficiente per me solo per impostare un valore di indice 825 00:44:05,000 --> 00:44:09,000 true se una parola è in realtà nella mia tabella di hash. 826 00:44:09,000 --> 00:44:12,000 Ora, io sto tagliando un paio di curve qui che mi agito le mani per ora, 827 00:44:12,000 --> 00:44:15,000 ma ora la funzione di caricamento è fatto. 828 00:44:15,000 --> 00:44:18,000 A caricare tutte le parole dal file in un array. 829 00:44:18,000 --> 00:44:21,000 Ho iterazioni su tale matrice, e per ogni parola nella matrice 830 00:44:21,000 --> 00:44:24,000 L'ho presa nella mia tabella hash con 1 riga di codice. 831 00:44:24,000 --> 00:44:26,000 Questo è divertente. Sai come possiamo implementare dimensioni ora? 832 00:44:26,000 --> 00:44:28,000 Beh, la dimensione è sempre abbastanza facile, in tutta onestà. 833 00:44:28,000 --> 00:44:32,000 Qui possiamo solo fare tornare conte di tabella. 834 00:44:32,000 --> 00:44:34,000 Questo è abbastanza facile anche contare il numero di cose nella tabella. 835 00:44:34,000 --> 00:44:36,000 Questo è in realtà una specie di non più efficienti. 836 00:44:36,000 --> 00:44:39,000 Probabilmente dovrei avere una dimensione variabile chiamata in modo che possiamo fare 837 00:44:39,000 --> 00:44:41,000 in tempo costante, ma questo è abbastanza facile. 838 00:44:41,000 --> 00:44:45,000 Oh, e poi scaricare, se vogliamo davvero essere anale qui 839 00:44:45,000 --> 00:44:47,000 si può dire che è come si scarica qualcosa. 840 00:44:47,000 --> 00:44:49,000 Basta impostare la variabile pari ad un array vuoto, 841 00:44:49,000 --> 00:44:51,000 e si libera di tutto quello che c'era. 842 00:44:51,000 --> 00:44:53,000 Non c'è bisogno di chiamare gratis. 843 00:44:53,000 --> 00:44:56,000 >> Ancora una volta, ho tagliato alcune curve, e mi scuso per il set problema assegnando 5 844 00:44:56,000 --> 00:45:00,000 forse in C, ma se ora andare avanti ed eseguire questo, 845 00:45:00,000 --> 00:45:02,000 Io vado a correre in realtà la versione che ho scritto in anticipo 846 00:45:02,000 --> 00:45:05,000 solo in modo che non ho commesso errori sintattici di sorta. 847 00:45:05,000 --> 00:45:08,000 Lasciami andare avanti ed eseguire speller. L'uso è lo stesso. 848 00:45:08,000 --> 00:45:12,000 Ecco un file di dizionario che contiene solo la parola foo. 849 00:45:12,000 --> 00:45:15,000 Ecco un file di testo che contiene solo foo bar. 850 00:45:15,000 --> 00:45:19,000 Diamo il controllo ortografico questo, quindi correttore ortografico, utilizzando il file dizionario in questo file di testo. 851 00:45:19,000 --> 00:45:21,000 C'è una parola errata, bar, e voilà. 852 00:45:21,000 --> 00:45:23,000 Fatto con pset 5. 853 00:45:23,000 --> 00:45:30,000 Facciamo una pausa di 5 minuti qui, e ci torneremo e molto altro su PHP. 854 00:45:30,000 --> 00:45:32,000 Va bene, siamo tornati. 855 00:45:32,000 --> 00:45:34,000 Facciamo mi fai-odio per un po '. 856 00:45:34,000 --> 00:45:37,000 Vediamo ora realmente vedere se questo non è stato positivo 857 00:45:37,000 --> 00:45:39,000 in realtà l'applicazione del presente cosa in PHP. 858 00:45:39,000 --> 00:45:43,000 Certo, ci sono voluti 45 secondi per l'attuazione. 859 00:45:43,000 --> 00:45:45,000 >> Ma andiamo avanti ora e correre le cose. 860 00:45:45,000 --> 00:45:49,000 Lasciami andare avanti ed eseguire una versione C 861 00:45:49,000 --> 00:45:52,000 di speller, e noi lo eseguito su una delle più grandi file, 862 00:45:52,000 --> 00:45:54,000 che è la Bibbia di Re Giacomo. 863 00:45:54,000 --> 00:45:57,000 Ed è qui, in-andiamo nella nostra cartella C, 864 00:45:57,000 --> 00:46:01,000 speller su King James il 5. 865 00:46:01,000 --> 00:46:03,000 Un sacco di errori di ortografia. 866 00:46:03,000 --> 00:46:06,000 Va bene, in modo che l'output probabilmente ottenuto, anche se i tempi sono un po 'diverso, 867 00:46:06,000 --> 00:46:09,000 se hai tutto funziona correttamente, e quindi il tempo in totale per il controllo ortografico 868 00:46:09,000 --> 00:46:13,000 la Bibbia di Re Giacomo è 0,38 secondi, in modo abbastanza buono con tale implementazione. 869 00:46:13,000 --> 00:46:16,000 Ora lasciatemi andare in versione di PHP, che abbiamo appena scritto. 870 00:46:16,000 --> 00:46:18,000 Vorrei eseguire il correttore ortografico di Re Giacomo. 871 00:46:18,000 --> 00:46:21,000 Ops, ignorare questo errore. Sono nella directory sbagliata. 872 00:46:21,000 --> 00:46:24,000 Speller su King James il 5. 873 00:46:46,000 --> 00:46:48,000 Quasi fatto. 874 00:46:48,000 --> 00:46:51,000 >> Ok, l'attento osservatore si renderà conto che era più di 3 secondi lì. 875 00:46:51,000 --> 00:46:54,000 Che è il tempo di esecuzione vera. 876 00:46:54,000 --> 00:46:58,000 Si scopre che ci vuole tempo per sputare fuori un sacco di testo 877 00:46:58,000 --> 00:47:00,000 a causa di problemi di buffer, ma per farla breve, 878 00:47:00,000 --> 00:47:04,000 che era 3,15 secondi di tempo macchina, tempo di CPU, 879 00:47:04,000 --> 00:47:07,000 rispetto a quello che è stato un momento fa? 880 00:47:07,000 --> 00:47:09,000 Come 0,3. 881 00:47:09,000 --> 00:47:11,000 Voglio dire, e 'un ordine di grandezza più lento, quindi dove è che 882 00:47:11,000 --> 00:47:14,000 rallentamento ridicolo provenienti da? 883 00:47:14,000 --> 00:47:17,000 Beh, come è stato il caso con la maggior parte qualsiasi decisione di progettazione che abbiamo fatto 884 00:47:17,000 --> 00:47:21,000 nella classe nel corso degli ultimi 9 settimane non ci sono quasi sempre questo compromesso. 885 00:47:21,000 --> 00:47:24,000 A volte tra poco spazio, a volte tra spazio e tempo, 886 00:47:24,000 --> 00:47:27,000 spazio, tempo e sforzo di sviluppo, e in effetti qui, anche se 887 00:47:27,000 --> 00:47:31,000 abbiamo risparmiato una quantità enorme di tempo, forse potenzialmente 10-20-30 ore 888 00:47:31,000 --> 00:47:34,000 del tempo di sviluppo di applicazione il controllo ortografico 889 00:47:34,000 --> 00:47:36,000 da montare in su in soli 45 secondi con questa lingua 890 00:47:36,000 --> 00:47:40,000 il prezzo da pagare è che è un ordine di grandezza più lento di conseguenza, 891 00:47:40,000 --> 00:47:43,000 e questo è generalmente il caso con la maggior parte qualsiasi linguaggio interpretato, 892 00:47:43,000 --> 00:47:46,000 PHP, Python, Ruby, Pearl o altri cioè se 893 00:47:46,000 --> 00:47:49,000 se avete intenzione di eseguirlo tramite un interprete e lo hanno letto il tuo codice 894 00:47:49,000 --> 00:47:52,000 riga per riga, dall'alto in basso, da sinistra a destra, 895 00:47:52,000 --> 00:47:55,000 intermediario che sta andando a prendere un po 'di tempo a sé stante, 896 00:47:55,000 --> 00:47:59,000 e quello che sentivi qui in 3 secondi invece di 0,3 secondi 897 00:47:59,000 --> 00:48:02,000 è il fatto che non vi è questo intermediario che deve interpretare letteralmente nostro codice 898 00:48:02,000 --> 00:48:05,000 riga per riga, e Dio non voglia, se sei all'interno di un ciclo 899 00:48:05,000 --> 00:48:08,000 con un file enorme che contiene centinaia di migliaia di parole. 900 00:48:08,000 --> 00:48:11,000 >> Quella testa sta per aggiungere e aggiungere e aggiungere e aggiungere fino. 901 00:48:11,000 --> 00:48:16,000 Per uno strumento come questo non è probabilmente la migliore lingua da utilizzare per l'attuazione 902 00:48:16,000 --> 00:48:20,000 un correttore ortografico se immediatezza è di interesse per gli utenti e per voi. 903 00:48:20,000 --> 00:48:23,000 Ma il lusso che abbiamo in un momento è che se si 904 00:48:23,000 --> 00:48:27,000 usare un linguaggio come PHP o un sacco di linguaggi interpretati 905 00:48:27,000 --> 00:48:30,000 nel contesto del Web, del resto, si ha il vantaggio 906 00:48:30,000 --> 00:48:34,000 che Internet è molto più lento rispetto maggior parte dei computer. 907 00:48:34,000 --> 00:48:38,000 Hai una CPU GHz nel computer, 2 GHz, forse anche più in questi giorni. 908 00:48:38,000 --> 00:48:41,000 Ma la realtà è su internet vi è una quantità elevata di latenza 909 00:48:41,000 --> 00:48:45,000 in base al quale per un browser per parlare con un server, anche se abbiamo visto la scorsa settimana 910 00:48:45,000 --> 00:48:47,000 che questo è abbastanza veloce, mezzo millisecondo o giù di lì, 911 00:48:47,000 --> 00:48:51,000 che aggiunge troppo, e se si sta scaricando le cose come un'immagine 912 00:48:51,000 --> 00:48:54,000 o una foto su Facebook o ricevendo messaggi istantanei su Facebook chiacchiere, 913 00:48:54,000 --> 00:48:57,000 Gchat o simili, tutti questi tempi di andata e ritorno 914 00:48:57,000 --> 00:49:00,000 tra il browser e il server di avvio a sommare, 915 00:49:00,000 --> 00:49:03,000 il che rende la scelta particolare del linguaggio, in molti casi 916 00:49:03,000 --> 00:49:07,000 non tutto ciò che pertinenti, in modo che stai bene con un linguaggio leggermente più lento 917 00:49:07,000 --> 00:49:10,000 come PHP o Python o Ruby 918 00:49:10,000 --> 00:49:13,000 ma per i quali non ci sono aspetti positivi enormi a voi ed i vostri colleghi 919 00:49:13,000 --> 00:49:17,000 ei tuoi amici, perché è possibile implementare le cose così, molto più veloce. 920 00:49:17,000 --> 00:49:20,000 E per di più, si ha molto meno rischio di falle di sicurezza determinati. 921 00:49:20,000 --> 00:49:22,000 Non ci sono indicazioni in PHP. 922 00:49:22,000 --> 00:49:25,000 Non ci sono errori seg che si può facilmente indurre 923 00:49:25,000 --> 00:49:27,000 allo stesso modo si potrebbe in C. 924 00:49:27,000 --> 00:49:29,000 Con C si è super vicino all'hardware. 925 00:49:29,000 --> 00:49:33,000 Con i linguaggi PHP e simili sei specie di alto livello, per così dire, 926 00:49:33,000 --> 00:49:37,000 con un sacco di difese tra voi e quello che sta realmente accadendo 927 00:49:37,000 --> 00:49:39,000 all'interno della macchina, ed è solo un compromesso. 928 00:49:39,000 --> 00:49:42,000 >> Abbiamo arrivati ​​al punto di avere questi più moderni linguaggi di alto livello 929 00:49:42,000 --> 00:49:47,000 come PHP per le lezioni apprese in linguaggi come PHP in C. 930 00:49:47,000 --> 00:49:50,000 Ma se non si capisce cosa sta succedendo sotto il cofano per tutto questo tempo 931 00:49:50,000 --> 00:49:53,000 non si può certo prendere le giuste decisioni, 932 00:49:53,000 --> 00:49:56,000 e sicuramente quando si tratta di lavorare in un posto come Facebook o Google 933 00:49:56,000 --> 00:49:59,000 o uno di questi luoghi, che sono sempre più a giocare con grandi quantità di dati 934 00:49:59,000 --> 00:50:01,000 anche se si va indietro e si PREMED e stiamo lavorando con alcuni MD 935 00:50:01,000 --> 00:50:04,000 su alcuni dati di grandi dimensioni impostare coinvolgendo pazienti e medici 936 00:50:04,000 --> 00:50:08,000 e come usare gli strumenti giusti è estremamente interessante 937 00:50:08,000 --> 00:50:11,000 perché altrimenti la vostra analisi di un insieme di dati potrebbe richiedere secondi, 938 00:50:11,000 --> 00:50:14,000 oppure potrebbe letteralmente ore. 939 00:50:14,000 --> 00:50:17,000 Questo è solo un esempio, non vanificare voi con fatica quanto più 940 00:50:17,000 --> 00:50:21,000 era in C, ma per aiutarvi a capire che quando si fa qualcosa di implementare in C 941 00:50:21,000 --> 00:50:24,000 davvero capire, o in teoria, capisco 942 00:50:24,000 --> 00:50:28,000 come tutto ciò che è o dovrebbe essere al lavoro, e si ha il controllo quasi completo 943 00:50:28,000 --> 00:50:31,000 su ciò che sta succedendo sotto il cofano, e con questi linguaggi di livello superiore 944 00:50:31,000 --> 00:50:34,000 si deve cedere un maggiore controllo per le persone che li ha inventati 945 00:50:34,000 --> 00:50:37,000 e sono soggetti più per le loro decisioni di progettazione del tuo. 946 00:50:37,000 --> 00:50:41,000 Ma se diamo per scontato che le prestazioni 947 00:50:41,000 --> 00:50:44,000 non è così importante sul Web a causa di queste altre questioni, 948 00:50:44,000 --> 00:50:47,000 a velocità di rete sono un po 'più lento di velocità della CPU in ogni caso, 949 00:50:47,000 --> 00:50:50,000 in modo da poter ordinare di permettersi di usare un linguaggio leggermente più lento 950 00:50:50,000 --> 00:50:55,000 se gli aspetti positivi siamo in grado di sviluppare le cose 10 volte più velocemente o anche di più. 951 00:50:55,000 --> 00:50:57,000 >> Vediamo come possiamo usare questo. 952 00:50:57,000 --> 00:51:00,000 Lasciami andare in una cartella 953 00:51:00,000 --> 00:51:03,000 Tra gli esempi di oggi chiamato frosh.ims, 954 00:51:03,000 --> 00:51:06,000 e questo è stato effettivamente personalmente motivata dal fatto che la prima cosa 955 00:51:06,000 --> 00:51:10,000 Ho scritto per il Web di anni fa dopo aver preso CS50 e CS51 956 00:51:10,000 --> 00:51:14,000 era un sito web per il programma Frosh GI, sport matricola intramurali, 957 00:51:14,000 --> 00:51:16,000 che all'epoca questo era abbastanza anni fa, che al momento 958 00:51:16,000 --> 00:51:19,000 non c'era nessun sito web per il programma, anche se c'era un Web, 959 00:51:19,000 --> 00:51:22,000 e invece c'è stato un procuratore in Wigglesworth per cui se si voleva 960 00:51:22,000 --> 00:51:26,000 di registrarsi per la pallavolo o il calcio o qualsiasi altra cosa si compila un foglio di carta. 961 00:51:26,000 --> 00:51:28,000 Si potrebbe poi a piedi attraverso il cortile. 962 00:51:28,000 --> 00:51:31,000 Si potrebbe poi bussare alla loro porta e far scorrere nella loro porta a mano o al sorvegliante 963 00:51:31,000 --> 00:51:34,000 un pezzo di carta con il tuo nome su di esso, se si vuole essere un capitano della squadra, 964 00:51:34,000 --> 00:51:37,000 quale sport si voleva fare, e che cosa dormitorio eri trovi 965 00:51:37,000 --> 00:51:39,000 E 'stata una specie di modo vecchia scuola di fare le cose, e questo è stato un primo 966 00:51:39,000 --> 00:51:41,000 possibilità di automatizzare un sacco di questo processo. 967 00:51:41,000 --> 00:51:43,000 Basta andare sul sito. Si digita qualcosa trovi 968 00:51:43,000 --> 00:51:46,000 È possibile ottenere una conferma via email, e boom, il gioco è fatto. 969 00:51:46,000 --> 00:51:49,000 >> Questa è stata la prima cosa che ho fatto, anche se in un linguaggio chiamato Pearl, 970 00:51:49,000 --> 00:51:52,000 ma è relativamente facile da fare in PHP, e questo è una sorta di rappresentante 971 00:51:52,000 --> 00:51:55,000 dei problemi che si può cominciare a risolvere quando si può esprimersi 972 00:51:55,000 --> 00:51:58,000 di programmazione e non dover fare affidamento su cose come siti di Google 973 00:51:58,000 --> 00:52:01,000 o Excel o strumenti che vengono consegnati a voi. 974 00:52:01,000 --> 00:52:03,000 Voi ragazzi hanno ora la possibilità di fare le cose in questo modo. 975 00:52:03,000 --> 00:52:06,000 Questa è una versione super brutto di una forma, 976 00:52:06,000 --> 00:52:09,000 ma facciamo solo usarlo per l'inizio della conversazione in cui questo è 977 00:52:09,000 --> 00:52:12,000 grosso modo ciò che la forma sembrava anni fa per noi 978 00:52:12,000 --> 00:52:14,000 per consentire alle persone sul Web a firmare per Frosh IM. 979 00:52:14,000 --> 00:52:18,000 Abbiamo chiesto un nome, una casella di controllo per se o non volevano essere capitano, 980 00:52:18,000 --> 00:52:21,000 maschio o femmina, e allora che cosa erano in dormitorio, 981 00:52:21,000 --> 00:52:23,000 e poi avrebbe presentato questo modulo. 982 00:52:23,000 --> 00:52:27,000 Diamo una prima occhiata sotto il cofano il codice HTML che rappresenta questa pagina web. 983 00:52:27,000 --> 00:52:31,000 Lasciami andare in froshims0, 984 00:52:31,000 --> 00:52:35,000 e per inciso, per pset 7 Io sto dando per scontato 985 00:52:35,000 --> 00:52:37,000 le directory e le cartelle che sto mettendo le cose trovi 986 00:52:37,000 --> 00:52:40,000 Ti guiderà attraverso cose esattamente dove deve andare in macchina, 987 00:52:40,000 --> 00:52:43,000 quali comandi mod devi correre, quindi non preoccuparti di tutte le 988 00:52:43,000 --> 00:52:46,000 dettagli stupidi sincronizzazione in dal get-go qui. 989 00:52:46,000 --> 00:52:49,000 >> Va bene, ecco froshims0.php. 990 00:52:49,000 --> 00:52:52,000 Vorrei scorrere verso il basso, e ciò che è curioso qui, 991 00:52:52,000 --> 00:52:56,000 questo è un file PHP, ma quello che c'è dentro di essa, in modo chiaro? 992 00:52:56,000 --> 00:52:59,000 E 'un bel po' di HTML, PHP, e in effetti le sue origini 993 00:52:59,000 --> 00:53:02,000 erano davvero per essere un web-centrica lingua. 994 00:53:02,000 --> 00:53:04,000 Poco fa abbiamo usato per implementare l'esempio della birra, 995 00:53:04,000 --> 00:53:07,000 le condizioni di esempio, l'esempio ciao, e questo è bene. 996 00:53:07,000 --> 00:53:11,000 È possibile utilizzare PHP come linguaggio di scripting 997 00:53:11,000 --> 00:53:15,000 dove uno script è in realtà solo la nomenclatura data a un programma rapido e sporco 998 00:53:15,000 --> 00:53:19,000 o qualcosa che si scrive in un script o più in generale un linguaggio interpretato. 999 00:53:19,000 --> 00:53:22,000 PHP è super utile per questo, perché avete visto quanto velocemente 1000 00:53:22,000 --> 00:53:24,000 relativamente si può improvvisare programmi in PHP. 1001 00:53:24,000 --> 00:53:27,000 Ma è mai stato progettato per essere utilizzato per il Web, 1002 00:53:27,000 --> 00:53:31,000 e progettato per il Web nel senso che notare qui all'inizio del file 1003 00:53:31,000 --> 00:53:34,000 Comincio con 00:53:38,000 Poi ho un sacco di commenti inutili, concesse, ma poi chiudo la modalità PHP. 1005 00:53:38,000 --> 00:53:41,000 Ma poi cadere in modalità HTML. 1006 00:53:41,000 --> 00:53:45,000 >> La cosa interessante di PHP è anche se il file termina con. Php 1007 00:53:45,000 --> 00:53:48,000 è generalmente destinata ad essere co-mescolato con HTML, 1008 00:53:48,000 --> 00:53:50,000 un po 'di codice PHP, un po' di HTML. 1009 00:53:50,000 --> 00:53:53,000 E vedremo alla fine che si può iniziare a prendere in giro quelli a parte 1010 00:53:53,000 --> 00:53:56,000 e mantenere il nostro HTML separato dal nostro PHP del tutto, 1011 00:53:56,000 --> 00:53:59,000 ma le origini di PHP fossero davvero di darvi questa flessibilità, 1012 00:53:59,000 --> 00:54:02,000 che se si vuole un po 'di HTML basta scrivere, e che sarà 1013 00:54:02,000 --> 00:54:04,000 sputare identico al browser. 1014 00:54:04,000 --> 00:54:07,000 Ma se avete bisogno di un po 'di tecnica di programmazione, 1015 00:54:07,000 --> 00:54:12,000 un po 'di codice di programmazione, si può anche mettere nello stesso file esatto, come si vedrà presto. 1016 00:54:12,000 --> 00:54:14,000 Ecco il mio codice HTML. 1017 00:54:14,000 --> 00:54:16,000 Ho un titolo di questo per Frosh IM. 1018 00:54:16,000 --> 00:54:20,000 Ho un tag body che ha un po 'di CSS su di esso a tutto centro in mezzo, 1019 00:54:20,000 --> 00:54:23,000 e poi qui ho una forma che a quanto pare sta per essere presentato 1020 00:54:23,000 --> 00:54:27,000 in un nuovo file chiamato register0.php, quindi vedremo che in un momento. 1021 00:54:27,000 --> 00:54:31,000 Si sta utilizzando un metodo chiamato post, che torneremo a pure. 1022 00:54:31,000 --> 00:54:34,000 Poi ho qualche input di form, un nome chiamato, il cui tipo è un testo, 1023 00:54:34,000 --> 00:54:37,000 uno il cui nome è il capitano, il cui tipo è casella di controllo, 1024 00:54:37,000 --> 00:54:40,000 e questo, non lo abbiamo visto prima, ma fa esattamente quello che dice. 1025 00:54:40,000 --> 00:54:42,000 Si otterrà una casella di controllo, invece di una casella di testo. 1026 00:54:42,000 --> 00:54:46,000 Quaggiù si dispone di un pulsante di opzione, che è uno di questi pulsanti circolari 1027 00:54:46,000 --> 00:54:48,000 che si può scegliere questo o quello. 1028 00:54:48,000 --> 00:54:52,000 >> Si noti che sia intenzionale che ho dato entrambi i pulsanti di opzione il nome del genere. 1029 00:54:52,000 --> 00:54:55,000 Questo è il modo per ottenere la mutua esclusione in base al quale è necessario fare clic 1030 00:54:55,000 --> 00:54:58,000 o questo o quello, e cliccando l'altro 1031 00:54:58,000 --> 00:55:01,000 si deseleziona l'altra, in modo da dare loro lo stesso nome 1032 00:55:01,000 --> 00:55:03,000 se si vuole che escludersi a vicenda così. 1033 00:55:03,000 --> 00:55:07,000 E poi per il dormitorio, non credo che abbiamo visto ancora, ma si tratta di un menu di selezione, un menu a discesa. 1034 00:55:07,000 --> 00:55:09,000 Il tag per questo è selezionato. 1035 00:55:09,000 --> 00:55:11,000 Quindi dare il menu a discesa un nome, 1036 00:55:11,000 --> 00:55:13,000 e poi ci sono un sacco di queste opzioni. 1037 00:55:13,000 --> 00:55:16,000 Il primo, solo per l'estetica, è una stringa vuota. 1038 00:55:16,000 --> 00:55:20,000 Volevo solo il menu a discesa per essere vuota per impostazione predefinita, 1039 00:55:20,000 --> 00:55:22,000 e poi c'è Apley, Canaday, Grays, e così via. 1040 00:55:22,000 --> 00:55:24,000 E notare la dicotomia qui. 1041 00:55:24,000 --> 00:55:27,000 L'opzione nei menu a discesa è un valore, 1042 00:55:27,000 --> 00:55:30,000 ma ha un umano-friendly nome, che in questo esempio 1043 00:55:30,000 --> 00:55:33,000 è identico, ma se volevamo essere anale potremmo avere 1044 00:55:33,000 --> 00:55:36,000 il valore di questo menu a tendina essere solo la versione corta, 1045 00:55:36,000 --> 00:55:39,000 Grays, ma possiamo davvero dire Grays Sala che l'uomo vede in realtà, 1046 00:55:39,000 --> 00:55:43,000 ma non è tutto così interessante, così ho tenuto semplice e li ha resi uguali. 1047 00:55:43,000 --> 00:55:46,000 Poi giù in fondo abbiamo un pulsante di invio 1048 00:55:46,000 --> 00:55:49,000 che abbiamo visto prima, a meno di notare l'ho appena dato una parola diversa. 1049 00:55:49,000 --> 00:55:53,000 Invece di CS50 ricerca ho dato l'etichetta di "Registra". 1050 00:55:53,000 --> 00:55:56,000 >> Il risultato finale è il sito qui, e ancora una volta, 1051 00:55:56,000 --> 00:56:00,000 da dove viene questo vengono presentate? 1052 00:56:00,000 --> 00:56:04,000 Viene sottoposto a qualche file, il valore dell'attributo action, 1053 00:56:04,000 --> 00:56:07,000 che era register0.php. 1054 00:56:07,000 --> 00:56:09,000 Vediamo cosa accade in realtà qui. 1055 00:56:09,000 --> 00:56:13,000 Lasciatemi andare avanti e compilare questo modulo, per esempio David, 1056 00:56:13,000 --> 00:56:16,000 maschio, Matthews, e poi dirò registrati. 1057 00:56:16,000 --> 00:56:18,000 Vorrei diminuire e fare clic su registrati. 1058 00:56:18,000 --> 00:56:22,000 Ok, quindi praticamente inutile, ma cerchiamo di vedere cosa sta realmente succedendo. 1059 00:56:22,000 --> 00:56:26,000 Si noti che l'URL è stato modificato per essere register0.php. 1060 00:56:26,000 --> 00:56:34,000 Che cosa è curiosamente assente dal URL, però, anche se abbiamo appena presentato un modulo? 1061 00:56:34,000 --> 00:56:37,000 [Risposta degli studenti incomprensibile] 1062 00:56:37,000 --> 00:56:39,000 Ok, questo è solo l'uso Chrome essere amichevole in questi giorni. 1063 00:56:39,000 --> 00:56:42,000 Questo è effettivamente. Hanno appena lo nasconde per risparmiare spazio. 1064 00:56:42,000 --> 00:56:44,000 Ma buon pensiero, buon pensiero. 1065 00:56:44,000 --> 00:56:46,000 Verso l'altra estremità del URL, però, cosa manca? Gia '. 1066 00:56:46,000 --> 00:56:48,000 [Studente] La stringa di query. 1067 00:56:48,000 --> 00:56:51,000 La stringa di query, in modo da richiamare dai nostri semplici esempi di ricerca di Google. 1068 00:56:51,000 --> 00:56:54,000 Non appena si fa clic sul pulsante di invio dell'URL 1069 00:56:54,000 --> 00:57:00,000 mi ha portato a Google, ma poi c'è stato? q = informatica o qualsiasi altra cosa che avevo digitato trovi 1070 00:57:00,000 --> 00:57:04,000 Questo perché abbiamo utilizzato il metodo get con l'esempio di ricerca. 1071 00:57:04,000 --> 00:57:06,000 >> Questa volta stiamo utilizzando quello che invece il metodo? 1072 00:57:06,000 --> 00:57:10,000 Posta, e una delle distinzioni immediate 1073 00:57:10,000 --> 00:57:14,000 tra GET e POST è che il post non mette l'input dell'utente nell'URL. 1074 00:57:14,000 --> 00:57:16,000 Esso si nasconde. Si invia ancora. 1075 00:57:16,000 --> 00:57:19,000 In realtà, quello che stiamo vedendo nel browser qui, come ci rivelano in un momento 1076 00:57:19,000 --> 00:57:22,000 cercando in register0, è sto solo vedendo il contenuto 1077 00:57:22,000 --> 00:57:25,000 della matrice che sono stati inviati dal browser al server. 1078 00:57:25,000 --> 00:57:29,000 Ma l'URL non ha un?, Non ha parole chiave 1079 00:57:29,000 --> 00:57:31,000 o valori in esso, e perché? 1080 00:57:31,000 --> 00:57:35,000 Beh, post consente di inviare ancora i dati dal modulo su un server, 1081 00:57:35,000 --> 00:57:38,000 ma non metterlo in URL, in modo che tipo di informazioni è post 1082 00:57:38,000 --> 00:57:41,000 particolarmente indicato per forse quando si chiede all'utente di 1083 00:57:41,000 --> 00:57:44,000 immettere in ingresso ad un modulo? 1084 00:57:44,000 --> 00:57:48,000 Qualcosa di simile a una password, qualcosa di simile a ciò che altro? 1085 00:57:48,000 --> 00:57:50,000 Numeri di carte di credito. 1086 00:57:50,000 --> 00:57:53,000 Tutto ciò che è leggermente sensibile che probabilmente non si vuole finire nella URL 1087 00:57:53,000 --> 00:57:56,000 se non altro perché significa che il tuo compagno di stanza o un familiare può semplicemente troll attraverso 1088 00:57:56,000 --> 00:57:59,000 la cronologia di internet e poi letteralmente vedere le password, 1089 00:57:59,000 --> 00:58:02,000 letteralmente vedere i numeri della carta di credito perché la maggior parte dei browser 1090 00:58:02,000 --> 00:58:05,000 Ricordo nella storia qualsiasi URL che sono stato a, 1091 00:58:05,000 --> 00:58:09,000 quindi se non altro perché sarebbe una cattiva idea. 1092 00:58:09,000 --> 00:58:11,000 Utilizzando nasconde postali di dettaglio da parte dell'utente. 1093 00:58:11,000 --> 00:58:14,000 >> Inoltre, come si fa a caricare una foto su Facebook? 1094 00:58:14,000 --> 00:58:17,000 Beh, gli unici 2 meccanismi si può davvero usare, 1095 00:58:17,000 --> 00:58:21,000 anche se ci sono un paio di quelle altre più arcani, è get e post. 1096 00:58:21,000 --> 00:58:26,000 Come si fa eventualmente carica una foto tramite un URL? 1097 00:58:26,000 --> 00:58:28,000 Si può effettivamente farlo. 1098 00:58:28,000 --> 00:58:30,000 Si può prendere un file JPEG o GIF o bitmap e si può rappresentare in esadecimale 1099 00:58:30,000 --> 00:58:32,000 o qualcosa del genere chiama base 64. 1100 00:58:32,000 --> 00:58:35,000 Invece di base 16 si utilizza base 64, che si presenta essenzialmente come 1101 00:58:35,000 --> 00:58:38,000 Caratteri ASCII, e si può effettivamente carica una foto tramite un URL 1102 00:58:38,000 --> 00:58:41,000 dopo un punto di domanda, ma ci sono in genere i limiti di dimensione. 1103 00:58:41,000 --> 00:58:44,000 La maggior parte dei browser URL forza di essere non più di 1.000 caratteri, 1104 00:58:44,000 --> 00:58:47,000 forse 2.000 caratteri o simili, quindi non è possibile caricare 1105 00:58:47,000 --> 00:58:50,000 un MB 10 foto di Facebook. 1106 00:58:50,000 --> 00:58:54,000 Per questo si utilizza postale e, quindi per ora si mette i parametri nell'URL, 1107 00:58:54,000 --> 00:58:57,000 che è bello e utile a volte, ma per nulla sensibili o grandi 1108 00:58:57,000 --> 00:58:59,000 post è la strada da percorrere. 1109 00:58:59,000 --> 00:59:02,000 Cosa sta register0 effettivamente facendo qui? 1110 00:59:02,000 --> 00:59:05,000 Beh, se apro register0 notare che questa è una pagina super semplice, 1111 00:59:05,000 --> 00:59:09,000 ma è dimostrazione il fatto che io possa co-mescolarsi, nel bene e nel male, 1112 00:59:09,000 --> 00:59:12,000 HTML con PHP. 1113 00:59:12,000 --> 00:59:15,000 Questo file, eccezion fatta per i commenti in alto, sono HTML 1114 00:59:15,000 --> 00:59:19,000 tranne che per questo ragazzo qui. 1115 00:59:19,000 --> 00:59:22,000 >> Si noti nel bel mezzo del mio codice PHP, 1116 00:59:22,000 --> 00:59:26,000 nel bel mezzo del mio HTML, ho una sorta di temporanea 1117 00:59:26,000 --> 00:59:28,000 entrato in modalità PHP. 1118 00:59:28,000 --> 00:59:31,000 Sto chiamando una funzione detta stampa r. 1119 00:59:31,000 --> 00:59:34,000 Significa stampa ricorsiva, e ciò che fa è la stampa in modo ricorsivo 1120 00:59:34,000 --> 00:59:38,000 qualunque variabile si passi, punto e virgola, uscire dalla modalità PHP. 1121 00:59:38,000 --> 00:59:40,000 E il tag pre offre testo pre-formattato, 1122 00:59:40,000 --> 00:59:43,000 spazio testo mono in modo che ogni spazio che lo vedremo. 1123 00:59:43,000 --> 00:59:46,000 Esso non scompare. Che cosa è post? 1124 00:59:46,000 --> 00:59:48,000 Beh, la cosa interessante e coinvolgente su PHP 1125 00:59:48,000 --> 00:59:52,000 è che ogni volta che si invia un modulo con GET o POST 1126 00:59:52,000 --> 00:59:56,000 tutto ciò che è presentato a lei da un browser 1127 00:59:56,000 --> 01:00:00,000 PHP stesso capisce quali siano tali coppie di valori chiave sono, 1128 01:00:00,000 --> 01:00:02,000 figure fuori se non c'è segno di uguale, figure fuori se c'è un punto di domanda. 1129 01:00:02,000 --> 01:00:07,000 Si fa tutto il lavoro duro per voi, e poi si passa un array associativo 1130 01:00:07,000 --> 01:00:10,000 contenente tutto ciò che l'utente ha digitato nel modulo. 1131 01:00:10,000 --> 01:00:12,000 Beh, quali campi ha questa forma hanno? 1132 01:00:12,000 --> 01:00:14,000 >> Aveva 4 campi. 1133 01:00:14,000 --> 01:00:16,000 Uno era un campo di testo Nome. 1134 01:00:16,000 --> 01:00:18,000 Uno era una casella chiamata capitano. 1135 01:00:18,000 --> 01:00:22,000 Uno era un pulsante di chiamata genere, 1136 01:00:22,000 --> 01:00:24,000 e uno era un menu a discesa chiamato dormitorio, 1137 01:00:24,000 --> 01:00:27,000 così notare quando si stampa ricorsivamente 1138 01:00:27,000 --> 01:00:29,000 il contenuto di questa variabile speciale. 1139 01:00:29,000 --> 01:00:34,000 Questa è una variabile globale speciale chiamato letteralmente $ _POST, in tutte le protezioni. 1140 01:00:34,000 --> 01:00:39,000 Questa è una variabile speciale globale che PHP crea per te 1141 01:00:39,000 --> 01:00:42,000 e le mani a voi in modo da poter accedere a tutto 1142 01:00:42,000 --> 01:00:45,000 che è stato inviato tramite un modulo da un utente. 1143 01:00:45,000 --> 01:00:48,000 E chiamando r stampa su di esso, non sarebbe farlo in una normale applicazione. 1144 01:00:48,000 --> 01:00:50,000 Stiamo facendo questo per vedere all'interno di questa variabile, 1145 01:00:50,000 --> 01:00:53,000 e ciò che è dentro di, bene, 4 tasti, 1146 01:00:53,000 --> 01:00:56,000 4 parametri http, per così dire, 1147 01:00:56,000 --> 01:00:59,000 nome, il capitano, il sesso, dormitorio, e quindi i valori che l'utente 1148 01:00:59,000 --> 01:01:01,000 digitato con una sola eccezione. 1149 01:01:01,000 --> 01:01:03,000 Ho fatto tipo D-A-V-I-D. 1150 01:01:03,000 --> 01:01:05,000 Ho controllato la scatola, anche se, per i maschi, che a quanto pare ha presentato un valore 1151 01:01:05,000 --> 01:01:07,000 di soli m di essere conciso. 1152 01:01:07,000 --> 01:01:10,000 >> Quando ho selezionato Matthews che è il valore che e 'stato selezionato, 1153 01:01:10,000 --> 01:01:12,000 e questo è un po 'stupido, ma è la convenzione. 1154 01:01:12,000 --> 01:01:17,000 Quando ho controllato la scatola, un valore on ", a," ha presentato per la casella di controllo. 1155 01:01:17,000 --> 01:01:21,000 Se non l'avessi controllato, nessun valore sarebbe stato inviato sorta. 1156 01:01:21,000 --> 01:01:26,000 Questo è solo ci dà intuizioni in quello che c'è dentro di questa variabile globale speciale, 1157 01:01:26,000 --> 01:01:29,000 ed è così speciale che si chiama una variabile super-globale. 1158 01:01:29,000 --> 01:01:33,000 Esiste in tutto il mondo per voi entro il codice in modo che si può effettivamente accedere. 1159 01:01:33,000 --> 01:01:36,000 Questo non è che convincente, quindi cerchiamo di utilizzare effettivamente il super globale 1160 01:01:36,000 --> 01:01:38,000 e in realtà provare a registrare qualcuno. 1161 01:01:38,000 --> 01:01:41,000 In froshims1 ho intenzione di fare un cambiamento. 1162 01:01:41,000 --> 01:01:44,000 Sto cambiando il ricorso sia register1.php, 1163 01:01:44,000 --> 01:01:46,000 e sto facendo un'altra cosa. 1164 01:01:46,000 --> 01:01:48,000 Ero un po 'imbarazzato dalla qualità della mia pagina web lì. 1165 01:01:48,000 --> 01:01:52,000 E 'abbastanza orribile, onestamente, così si scopre 1166 01:01:52,000 --> 01:01:56,000 che è possibile utilizzare molto facilmente sul Web 1167 01:01:56,000 --> 01:01:59,000 JavaScript altrui codice CSS di altre persone 1168 01:01:59,000 --> 01:02:02,000 che hanno scritto e open source e rese disponibili una biblioteca, 1169 01:02:02,000 --> 01:02:06,000 per così dire, e, per esempio, qui sto usando una libreria liberamente disponibile, 1170 01:02:06,000 --> 01:02:08,000 un po 'di codice che qualcun altro ha scritto. 1171 01:02:08,000 --> 01:02:11,000 >> Twitter è successo a scrivere questo codice, e si chiama la libreria di bootstrap, 1172 01:02:11,000 --> 01:02:15,000 ed è solo un mucchio di fogli di stile CSS, un mazzo di. file css 1173 01:02:15,000 --> 01:02:19,000 che qualcun altro ha scritto e capito come ottenere tutto bello e abbastanza 1174 01:02:19,000 --> 01:02:22,000 modo che la gente come noi può preoccupare un po 'meno di estetica e concentrarsi molto di più 1175 01:02:22,000 --> 01:02:24,000 sulla logica e la programmazione vera e propria. 1176 01:02:24,000 --> 01:02:30,000 Collegando in con quel tag, che è lo stesso tag che ho usato per il ricordo styles3.css in precedenza, 1177 01:02:30,000 --> 01:02:34,000 Ora ho accesso a un file chiamato bootstrap.min.css. 1178 01:02:34,000 --> 01:02:37,000 Min significa semplicemente l'hanno minified e hanno deciso di eliminare tutto lo spazio bianco e così via 1179 01:02:37,000 --> 01:02:40,000 solo per assicurarsi che non mi mandano più byte di quanto effettivamente bisogno. 1180 01:02:40,000 --> 01:02:45,000 Ma c'è un sacco di CSS, quindi se ora aprire la versione 1 del Frosh IM 1181 01:02:45,000 --> 01:02:49,000 notare che il mio file è sicuramente più bella. 1182 01:02:49,000 --> 01:02:54,000 Ora è ancora solo in bianco e nero, a meno di notare che, usando solo il loro foglio di stile 1183 01:02:54,000 --> 01:02:58,000 e l'utilizzo di alcune funzioni di esso con il mio modulo non è sorprendente, 1184 01:02:58,000 --> 01:03:01,000 ma è sicuramente più pulito di quanto non fosse prima, e il proiettore non sta facendo giustizia. 1185 01:03:01,000 --> 01:03:05,000 Ci sono piccole linee grigie attorno ai pulsanti e in tutto il campo di testo proprio qui, 1186 01:03:05,000 --> 01:03:07,000 ma è sicuramente più pulito di quanto non fosse prima. 1187 01:03:07,000 --> 01:03:09,000 >> Ora, in tutta onestà, io ho dovuto cambiare il mio codice un po '. 1188 01:03:09,000 --> 01:03:12,000 Questa è la versione 1, e notare che ho usato alcuni tag nuovi, 1189 01:03:12,000 --> 01:03:17,000 e onestamente, non avevo idea di come fare questo fino a quando ho letto la documentazione 1190 01:03:17,000 --> 01:03:20,000 bootstrap per la biblioteca di Twitter, e mi hanno detto che se si desidera utilizzare la nostra biblioteca 1191 01:03:20,000 --> 01:03:23,000 utilizzare un elemento fieldset all'interno del modulo, 1192 01:03:23,000 --> 01:03:27,000 mettere la parola che si desidera visualizzare accanto a un campo all'interno di un tag label, 1193 01:03:27,000 --> 01:03:30,000 poi dare il tuo contributo un nome, proprio come prima, 1194 01:03:30,000 --> 01:03:34,000 e poi per la casella di controllo, non solo si avvolgerlo in un elemento label, 1195 01:03:34,000 --> 01:03:36,000 si utilizza una cosa chiamata una classe, quindi non abbiamo visto prima, 1196 01:03:36,000 --> 01:03:39,000 ma vedrete in uno dei corti di pset 7. 1197 01:03:39,000 --> 01:03:43,000 Una classe in CSS permette di fare qualcosa di molto simile alla ID, 1198 01:03:43,000 --> 01:03:46,000 ma prima, quando abbiamo avuto un ID con il simbolo # 1199 01:03:46,000 --> 01:03:48,000 che era per uno ed un solo elemento. 1200 01:03:48,000 --> 01:03:51,000 Il bello di una classe è che più elementi possono avere la stessa classe 1201 01:03:51,000 --> 01:03:54,000 o la stessa roba CSS applicato. 1202 01:03:54,000 --> 01:03:57,000 >> Ma ancora una volta, più su quelli a breve, e il resto di questo è solo copiare e incollare 1203 01:03:57,000 --> 01:04:00,000 da loro documentazione in cui ho aggiunto una etichetta qui e là. 1204 01:04:00,000 --> 01:04:03,000 E alla fine, perché ho incluso il tag link in alto, 1205 01:04:03,000 --> 01:04:06,000 tutto sembra più bello automaticamente 1206 01:04:06,000 --> 01:04:10,000 semplicemente aver segnato la mia pagina in un modo che 1207 01:04:10,000 --> 01:04:12,000 Twitter previsto, e ci sono così tanti modi diversi 1208 01:04:12,000 --> 01:04:14,000 di fare questo, e questo è davvero molto appropriato. 1209 01:04:14,000 --> 01:04:17,000 A questo punto nel semestre, come si vedrà nelle specifiche pset 7 è, 1210 01:04:17,000 --> 01:04:20,000 Googling intorno, leggendo su librerie, usando i CSS di altre persone 1211 01:04:20,000 --> 01:04:23,000 e JavaScript per risolvere i problemi ausiliari 1212 01:04:23,000 --> 01:04:26,000 al set problema si è certamente favorito ed è il modo 1213 01:04:26,000 --> 01:04:29,000 il Web è costruito in questi giorni, in piedi sulle spalle di altre persone 1214 01:04:29,000 --> 01:04:32,000 in modo che si può veramente concentrarsi sui problemi nuovi e interessanti. 1215 01:04:32,000 --> 01:04:34,000 Ma veniamo ora concentrarsi su, ancora una volta, la logica. 1216 01:04:34,000 --> 01:04:38,000 >> E 'stata una piccola deviazione di estetica solo per indicare la direzione in cui si può andare. 1217 01:04:38,000 --> 01:04:40,000 Ho intenzione di tornare al più brutta per ora solo perché 1218 01:04:40,000 --> 01:04:44,000 non ci sono distrazioni con roba Twitter, e lasciami andare avanti e aprire 1219 01:04:44,000 --> 01:04:51,000 froshims2, che, di nuovo, si differenzia solo nel register2.php azione,, 1220 01:04:51,000 --> 01:04:55,000 e diamo un'occhiata a ciò che l'effetto è qui. 1221 01:04:55,000 --> 01:04:57,000 Lasciatemi andare avanti e digitare David. 1222 01:04:57,000 --> 01:04:59,000 Non sarò il capitano questa volta. 1223 01:04:59,000 --> 01:05:01,000 Dirò maschio, Matthews, registro. 1224 01:05:01,000 --> 01:05:05,000 Dannazione. Ok, e 'una vite sulla parte mia. 1225 01:05:05,000 --> 01:05:07,000 Stand by. 1226 01:05:07,000 --> 01:05:17,000 Register2, riga 22, se vuoto o-mi dispiace. 1227 01:05:17,000 --> 01:05:19,000 Facciamo ricaricare. 1228 01:05:19,000 --> 01:05:22,000 Ok, su questo modulo cosa è successo? 1229 01:05:22,000 --> 01:05:25,000 Ho digitato in David, controllato maschio, cliccato Matthews, registro. 1230 01:05:25,000 --> 01:05:27,000 Si sono registrati. (Beh, non proprio.) 1231 01:05:27,000 --> 01:05:32,000 Questo è chiaramente un passo oltre la semplice stampare il contenuto di una variabile, 1232 01:05:32,000 --> 01:05:34,000 ma ciò che è effettivamente facendo questo file? 1233 01:05:34,000 --> 01:05:37,000 In register2.php 1234 01:05:37,000 --> 01:05:40,000 notare che ho qualche nuovo codice. 1235 01:05:40,000 --> 01:05:44,000 All'interno del mio tag body ho essenzialmente un costrutto if else, 1236 01:05:44,000 --> 01:05:47,000 ma perché io sono co-mescolanza questo con un po 'di HTML 1237 01:05:47,000 --> 01:05:51,000 Devo entrare e uscire dalla modalità PHP avanti e indietro, quindi cerchiamo di vedere quello che sto facendo. 1238 01:05:51,000 --> 01:05:55,000 >> Nella prima riga qui sto dicendo che se è il caso 1239 01:05:55,000 --> 01:06:00,000 che il posto super-globale è vuoto per la chiave del nome, 1240 01:06:00,000 --> 01:06:04,000 In altre parole, se l'utente non mi ha dato un valore per nome nella forma, 1241 01:06:04,000 --> 01:06:07,000 quindi svuotare sta per tornare vero perché il valore è vuoto. 1242 01:06:07,000 --> 01:06:11,000 Or-notare le barre verticali, se il genere è vuoto 1243 01:06:11,000 --> 01:06:15,000 all'interno di questo speciale super globale, che, di nuovo, rappresenta il contenuto del modulo, 1244 01:06:15,000 --> 01:06:19,000 o il dormitorio è vuoto, allora ho intenzione di andare avanti e urlare contro l'operatore. 1245 01:06:19,000 --> 01:06:22,000 Come? Beh, si noti che sto per dire è necessario fornire il proprio nome, il sesso, e dormitorio. 1246 01:06:22,000 --> 01:06:24,000 Facciamo effettivamente indurre questo errore. 1247 01:06:24,000 --> 01:06:27,000 Lasciatemi tornare al mio modulo. Vorrei ricaricare per cancellarlo. 1248 01:06:27,000 --> 01:06:30,000 E sto solo andando a dare loro David, e non hanno bisogno di sapere dove vivo. 1249 01:06:30,000 --> 01:06:33,000 Registrati. A quanto pare ho bisogno di dire loro dove vivo. 1250 01:06:33,000 --> 01:06:35,000 È necessario fornire il proprio nome, il sesso e il dormitorio. Torna indietro. 1251 01:06:35,000 --> 01:06:39,000 >> E potrei fare clic per tornare a quella forma, ma perché? 1252 01:06:39,000 --> 01:06:43,000 Beh, in questo caso il nome non era vuota, ma tra i sessi era, e dormitorio era, 1253 01:06:43,000 --> 01:06:47,000 così questa espressione tutta valutata a true, e anche se la sintassi è un po 'nuovo, 1254 01:06:47,000 --> 01:06:51,000 ancora una volta, si entra in modalità PHP, familiare se dichiarazione, 1255 01:06:51,000 --> 01:06:54,000 ma la parte nuova qui è proprio questo colon, e avevo fatto un casino omettendo una parentesi 1256 01:06:54,000 --> 01:06:57,000 per caso, a meno di notare i due punti, e questo significa 1257 01:06:57,000 --> 01:07:00,000 anche se stiamo uscendo tutto modalità PHP 1258 01:07:00,000 --> 01:07:03,000 che segue deve essere sputare letteralmente al browser 1259 01:07:03,000 --> 01:07:07,000 fino a vedere un blocco else, come facciamo qui, 1260 01:07:07,000 --> 01:07:10,000 nel qual caso si dovrebbe invece sputare questo fuori 1261 01:07:10,000 --> 01:07:13,000 fino a visualizzare il endif, in modo un po 'un po' nuova sintassi 1262 01:07:13,000 --> 01:07:16,000 che mi permette di passare da HTML e PHP. 1263 01:07:16,000 --> 01:07:19,000 Siamo in grado di pulire questo alla fine, ma per ora, 1264 01:07:19,000 --> 01:07:22,000 è una specie di un modo convincente di controllo degli errori del modulo. 1265 01:07:22,000 --> 01:07:25,000 >> Ora, io dico che non sei veramente registrato perché ovviamente abbiamo fatto niente, ma i dati, 1266 01:07:25,000 --> 01:07:28,000 quindi diamo effettivamente provare a fare qualcosa di fresco. 1267 01:07:28,000 --> 01:07:33,000 In froshims3 l'unica differenza è che io ho intenzione di presentare al register3, 1268 01:07:33,000 --> 01:07:35,000 così l'HTML è la stessa. 1269 01:07:35,000 --> 01:07:38,000 In register3 notare questo. 1270 01:07:38,000 --> 01:07:40,000 Questo è una specie di sexy. 1271 01:07:40,000 --> 01:07:44,000 In cima sto usando un'istruzione require, quindi questo è come # include. 1272 01:07:44,000 --> 01:07:46,000 Questa volta non è stdio.h o qualcosa di simile. 1273 01:07:46,000 --> 01:07:50,000 Si tratta di una libreria PHP, e questo si chiama PHPMailer. 1274 01:07:50,000 --> 01:07:53,000 Come facevo a sapere di includere proprio questa stringa tra virgolette? 1275 01:07:53,000 --> 01:07:56,000 L'ho letto nella documentazione, così quando mi hanno detto di mettere questo nella parte superiore del file 1276 01:07:56,000 --> 01:08:00,000 se si desidera utilizzare una libreria speciale chiamato PHPMailer che fa quello che dice. 1277 01:08:00,000 --> 01:08:03,000 Esso consente di inviare e-mail tramite PHP. 1278 01:08:03,000 --> 01:08:05,000 Ora scorrere verso il basso ulteriormente. 1279 01:08:05,000 --> 01:08:08,000 >> Avviso per cominciare sono in modalità PHP per tutto questo tempo, 1280 01:08:08,000 --> 01:08:11,000 così ora notare qui dopo l'importazione quella libreria, 1281 01:08:11,000 --> 01:08:13,000  per così dire, sto facendo alcuni controlli di integrità. 1282 01:08:13,000 --> 01:08:16,000 Se è il caso che il nome non è vuoto 1283 01:08:16,000 --> 01:08:19,000 e il sesso non è vuoto, notare i punti esclamativi- 1284 01:08:19,000 --> 01:08:24,000 dormitorio e non è vuoto, allora l'utente ha logicamente compilato il modulo, almeno abbastanza. 1285 01:08:24,000 --> 01:08:28,000 Non mi interessa se sono il capitano o no. Ho solo bisogno del loro nome, il sesso, e dormitorio. 1286 01:08:28,000 --> 01:08:31,000 Se hanno riempito quelle in modo che nessuno di questi campi sono vuoti 1287 01:08:31,000 --> 01:08:33,000 questo è un po 'nuova sintassi. 1288 01:08:33,000 --> 01:08:36,000 PHP, per inciso, è un linguaggio di programmazione orientata agli oggetti 1289 01:08:36,000 --> 01:08:39,000 che alcuni di voi ricorderanno dalla APCS o simili. 1290 01:08:39,000 --> 01:08:42,000 Per ora, se non familiare, è sufficiente sapere che per usare questa libreria 1291 01:08:42,000 --> 01:08:45,000 devi scrivere una riga di codice come questa la nuova parola chiave, 1292 01:08:45,000 --> 01:08:47,000 letteralmente una nuova parola chiave chiamata nuova. 1293 01:08:47,000 --> 01:08:50,000 Ma oltre a questo, abbiamo un po 'di sintassi familiare. 1294 01:08:50,000 --> 01:08:54,000 E 'un operatore freccia, che è simile a quello che abbiamo usato per le strutture nel contesto di puntatori. 1295 01:08:54,000 --> 01:08:57,000 Per oggi PHP non ha puntatori, 1296 01:08:57,000 --> 01:09:01,000 ma sappiamo per ora che all'interno della variabile posta 1297 01:09:01,000 --> 01:09:05,000 è essenzialmente una specie di puntatore a una raccolta speciale 1298 01:09:05,000 --> 01:09:08,000 che qualcun altro ha scritto, e se voglio accedere alle funzionalità specifiche 1299 01:09:08,000 --> 01:09:12,000 all'interno di quella biblioteca che faccio, come in C, utilizzare l'operatore freccia, 1300 01:09:12,000 --> 01:09:14,000 anche se questi non sono in realtà puntatori. 1301 01:09:14,000 --> 01:09:16,000 È una specie di versione di PHP stesso. 1302 01:09:16,000 --> 01:09:20,000 Questo significa andare in biblioteca e chiamare la funzione IsSMTP. 1303 01:09:20,000 --> 01:09:23,000 SMTP, richiamo, dai nostri Guerrieri della Rete si riferisce alla posta elettronica, 1304 01:09:23,000 --> 01:09:28,000 e questo significa che basta usare un server di e-mail per questo IM Frosh registrazione. 1305 01:09:28,000 --> 01:09:30,000 >> Che accoglienza si desidera utilizzare? 1306 01:09:30,000 --> 01:09:34,000 Beh, Harvard, se Google in giro, ha un server di posta elettronica chiamato smtp.fas.harvard.edu. 1307 01:09:34,000 --> 01:09:37,000 Se stai giocando insieme a casa o si vive in una rete Comcast 1308 01:09:37,000 --> 01:09:40,000 potrebbe essere qualcosa di simile a smtp.comcast.net. 1309 01:09:40,000 --> 01:09:43,000 Dipende tutto da dove si vive e chi è il tuo ISP è. 1310 01:09:43,000 --> 01:09:47,000 Dopo di che ho intenzione di impostare la mia dall'indirizzo arbitrariamente essere jharvard@cs50.net. 1311 01:09:47,000 --> 01:09:52,000 Ho poi andare per impostare il di affrontare per essere jharvard@cs50.net. 1312 01:09:52,000 --> 01:09:55,000 L'unico modo sapevo che queste funzioni sono state chiamate SetFrom e AddAddress 1313 01:09:55,000 --> 01:09:57,000 è, ancora una volta, ho letto la documentazione. 1314 01:09:57,000 --> 01:09:59,000 Questa non è una sorta di magicamente noto a tutti i programmatori. 1315 01:09:59,000 --> 01:10:02,000 Poi ho impostato un oggetto di "registrazione". 1316 01:10:02,000 --> 01:10:07,000 E ora questa linea è un po 'brutto perché ciò che fa l'operatore punto significa in PHP? 1317 01:10:07,000 --> 01:10:09,000 Qualcuno sa? 1318 01:10:09,000 --> 01:10:11,000 Concatenare. 1319 01:10:11,000 --> 01:10:14,000 In C si tratta di un dolore al collo per concatenare due stringhe. 1320 01:10:14,000 --> 01:10:17,000 Hai a che fare con malloc o realloc o di tutta quella roba 1321 01:10:17,000 --> 01:10:20,000 solo per estendere la lunghezza di una stringa. 1322 01:10:20,000 --> 01:10:22,000 In PHP, in JavaScript e altri linguaggi 1323 01:10:22,000 --> 01:10:24,000 di solito si può fare questo con un singolo carattere. 1324 01:10:24,000 --> 01:10:28,000 In questo caso, punto significa prendere questa stringa qui 1325 01:10:28,000 --> 01:10:30,000 e aggiungere ad essa questa stringa. 1326 01:10:30,000 --> 01:10:32,000 >> Oh, e dal modo, aggiungere ad essa questa stringa, 1327 01:10:32,000 --> 01:10:34,000 che risulta essere una variabile all'interno di quel super-globale. 1328 01:10:34,000 --> 01:10:37,000 Poi aggiungere ad essa una nuova linea, in modo che tutti questi punti significa solo 1329 01:10:37,000 --> 01:10:39,000 continuare a fare una stringa più grande e sempre più grande, 1330 01:10:39,000 --> 01:10:43,000 e non c'è bisogno di prendersi cura affatto di malloc o simili in un linguaggio come questo, 1331 01:10:43,000 --> 01:10:46,000 e ci sono altri modi per fare questo, ma questo è uno dei più veloci 1332 01:10:46,000 --> 01:10:48,000 modi per gettare fuori. 1333 01:10:48,000 --> 01:10:50,000 Cosa sta facendo questo? 1334 01:10:50,000 --> 01:10:55,000 E 'la creazione di un corpo del messaggio che sta per dire il nome: Capitano: Sesso: Dorm: 1335 01:10:55,000 --> 01:10:58,000 tutti su linee separate, e poi infine, 1336 01:10:58,000 --> 01:11:00,000 una riga di codice, e ho intenzione di ignorare questo per ora. 1337 01:11:00,000 --> 01:11:02,000 Se false == significa solo se qualcosa è andato storto, 1338 01:11:02,000 --> 01:11:04,000 ma la magia che accade qui. 1339 01:11:04,000 --> 01:11:08,000 Invio della posta significa inviare questa email. 1340 01:11:08,000 --> 01:11:10,000 Vediamo cosa il risultato netto è. 1341 01:11:10,000 --> 01:11:13,000 Nella parte inferiore del file, è andare a dire che sono registrati veramente 1342 01:11:13,000 --> 01:11:15,000 se arrivare così lontano. 1343 01:11:15,000 --> 01:11:18,000 Se, però, l'utente viti fino, si noti che abbiamo iniziato questa 1344 01:11:18,000 --> 01:11:21,000 se la condizione qui, se non è vuoto e non vuoto 1345 01:11:21,000 --> 01:11:24,000 e non svuotare inviamo la posta. 1346 01:11:24,000 --> 01:11:27,000 In caso contrario, abbiamo intenzione di inviare questa riga di codice, 1347 01:11:27,000 --> 01:11:30,000 che sta per avere l'effetto, come si vedrà in pset 7, di redirigere l'utente 1348 01:11:30,000 --> 01:11:35,000 tornare da dove sono venuti, froshims3.php. 1349 01:11:35,000 --> 01:11:38,000 >> Incrociamo le dita, altrimenti questa sarà la demo più deludente oggi. 1350 01:11:38,000 --> 01:11:40,000 Ci siamo. 1351 01:11:40,000 --> 01:11:42,000 Vorrei aprire la mia casella di posta e-mail per jharvard in Gmail. 1352 01:11:42,000 --> 01:11:44,000 Nessuna e-mail al momento. Bene. 1353 01:11:44,000 --> 01:11:53,000 Ora vorrei aprire froshims3, che è il terzo e ultimo esempio vedremo qui. 1354 01:11:53,000 --> 01:11:55,000 Ok, ci siamo. 1355 01:11:55,000 --> 01:12:00,000 Nate, lui sarà il capitano, uomo, da, diciamo, Apley. 1356 01:12:00,000 --> 01:12:04,000 Registrati. Va bene, si sono registrati veramente. 1357 01:12:04,000 --> 01:12:07,000 Ora, se ho scorrere oltre alla mia email, oh, mio ​​Dio. 1358 01:12:07,000 --> 01:12:09,000 Ho appena inviato una e-mail in modo dinamico sul web. 1359 01:12:09,000 --> 01:12:11,000 >> Lasciamo su questa nota. 1360 01:12:11,000 --> 01:12:16,000 Un video è imminente per la lezione che abbiamo perso. Ci vediamo la settimana prossima. 1361 01:12:16,000 --> 01:12:18,000 [CS50.TV]