1 00:00:00,000 --> 00:00:02,150 >> [Seminario] [Kohana: Un leggero PHP quadro] 2 00:00:02,150 --> 00:00:04,000 [Brandon Liu] [Harvard University] 3 00:00:04,000 --> 00:00:07,270 [Questo è CS50.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> Ciao a tutti. Il mio nome è Brandon. 5 00:00:09,130 --> 00:00:11,000 Sono una junior qui al college fare scienza del computer, e oggi stiamo andando a parlare 6 00:00:11,000 --> 00:00:14,460 Kohana, che è un framework di sviluppo web PHP. 7 00:00:14,460 --> 00:00:17,260 Oggi sarà un seminario di codifica in tempo reale, 8 00:00:17,260 --> 00:00:21,000 così ho praticamente intenzione di spendere 5-10 minuti spiegando cosa Kohana è, 9 00:00:21,000 --> 00:00:25,000 e poi ho letteralmente andando a costruire un super semplice blog 10 00:00:25,000 --> 00:00:28,570 per voi proprio qui letteralmente da zero. 11 00:00:28,570 --> 00:00:32,229 Stiamo andando a scaricare il codice dal sito Kohana, 12 00:00:32,229 --> 00:00:35,000 e stiamo per iniziare a costruire un blog, e spero che saremo molto istruttivo, 13 00:00:35,000 --> 00:00:37,000 perché vedrete forse magari farò qualche errore, 14 00:00:37,000 --> 00:00:39,000 e vedrete me recuperare da loro, 15 00:00:39,000 --> 00:00:42,040 o vedrai il mio processo di pensiero, come ho costruito attraverso questo blog, 16 00:00:42,040 --> 00:00:44,000 e nel frattempo, avrete anche familiarità con il framework stesso. 17 00:00:44,000 --> 00:00:48,000 Speriamo che sarà un esercizio molto istruttivo. 18 00:00:48,000 --> 00:00:51,370 >> In primo luogo, che cosa è esattamente un quadro? 19 00:00:51,370 --> 00:00:54,000 Se hai preso CS50 finora, non avete davvero lavorato con qualsiasi 20 00:00:54,000 --> 00:00:56,000 quadri ancora, e la cosa è questa. 21 00:00:56,000 --> 00:01:00,000 Probabilmente avete fatto uno sviluppo web pset già, 22 00:01:00,000 --> 00:01:03,000 e diciamo che si continua a costruire siti web e mantenere costruzione di siti web. 23 00:01:03,000 --> 00:01:05,000 Inizierete a notare un paio di cose. 24 00:01:05,000 --> 00:01:07,000 La prima cosa che noterete è che probabilmente stai facendo le stesse cose 25 00:01:07,000 --> 00:01:09,150 più e più volte per tutto il tempo, 26 00:01:09,150 --> 00:01:13,000 cose come la pulizia dei dati di input utente, 27 00:01:13,000 --> 00:01:17,250 cose come organizzare i file in un certo modo. 28 00:01:17,250 --> 00:01:19,000 L'altra cosa che si nota è anche probabile che il codice 29 00:01:19,000 --> 00:01:21,000 può iniziare a diventare molto, molto disordinato, 30 00:01:21,000 --> 00:01:24,000 e si può lasciare disordinato e solo avere un momento molto difficile mantenerla, 31 00:01:24,000 --> 00:01:26,000 o si può iniziare a strutturare il codice e renderlo modulare 32 00:01:26,000 --> 00:01:28,510 in certi modi per renderlo più gestibile. 33 00:01:28,510 --> 00:01:31,020 >> Questo è dove framework web fondamentalmente è venuto dentro 34 00:01:31,020 --> 00:01:33,680 Queste persone che avevano costruito un sacco di siti web, hanno detto, 35 00:01:33,680 --> 00:01:35,820 "Non abbiamo bisogno di rifare questo ogni volta che costruiamo un sito web." 36 00:01:35,820 --> 00:01:39,050 "Perché non facciamo appena un pacchetto che fa tutte queste cose per voi 37 00:01:39,050 --> 00:01:41,250 ogni volta che si desidera costruire un sito web? " 38 00:01:41,250 --> 00:01:43,030 E in modo che quando si effettua un nuovo sito web, 39 00:01:43,030 --> 00:01:45,880 basta concentrarsi su ciò che esattamente questo particolare sito web è di circa. 40 00:01:45,880 --> 00:01:48,630 Non è necessario ripetere tutte le varie configurazione 41 00:01:48,630 --> 00:01:53,070 e la separazione di codice e codice riscrittura 42 00:01:53,070 --> 00:01:56,180 che spesso si devono fare quando si sta facendo siti web. 43 00:01:56,180 --> 00:01:59,410 L'idea è che un framework consente di scrivere un codice di livello superiore 44 00:01:59,410 --> 00:02:01,030 senza doversi preoccupare dei dettagli di livello inferiore. 45 00:02:01,030 --> 00:02:03,670 Un dettaglio di livello inferiore potrebbe essere qualcosa di simile 46 00:02:03,670 --> 00:02:07,250 si occupano di pulizia dei dati di input dell'utente. 47 00:02:07,250 --> 00:02:09,320 Questo è qualcosa che non si dovrebbe davvero bisogno di preoccuparsi. 48 00:02:09,320 --> 00:02:12,370 Si dovrebbe concentrarsi su ciò che il vostro ripartizione web è in realtà circa. 49 00:02:12,370 --> 00:02:14,790 Si elimina un sacco di codice standard. 50 00:02:14,790 --> 00:02:16,640 Si tratta di una architettura per il progetto. 51 00:02:16,640 --> 00:02:18,680 >> Il più popolare sarebbe Model-View-Controller, 52 00:02:18,680 --> 00:02:20,380 che ho intenzione di parlare in un secondo. 53 00:02:20,380 --> 00:02:22,790 E un sacco di volte questi quadri incarnano una serie di procedure, 54 00:02:22,790 --> 00:02:25,750 regole e best practice per l'uso 55 00:02:25,750 --> 00:02:28,190 in modo che quando si adotta il framework web 56 00:02:28,190 --> 00:02:30,050 è necessario scrivere il codice in un certo modo, 57 00:02:30,050 --> 00:02:32,430 ed è in generale un concordato insieme di principi 58 00:02:32,430 --> 00:02:34,290 da parte della comunità che è generalmente accettato di essere 59 00:02:34,290 --> 00:02:36,230 un buon modo di scrivere codice. 60 00:02:36,230 --> 00:02:38,260 Si rende il codice più gestibile, più usabile, 61 00:02:38,260 --> 00:02:40,030 così via e così via. 62 00:02:40,030 --> 00:02:42,740 E infine, la cosa che voglio sottolineare in merito a quadri 63 00:02:42,740 --> 00:02:45,980 contro librerie è questa idea di inversione del controllo, e la cosa è questa. 64 00:02:45,980 --> 00:02:48,430 La differenza tra una biblioteca e un quadro è che con una libreria 65 00:02:48,430 --> 00:02:51,990 si sta ancora scrivendo il programma principale, 66 00:02:51,990 --> 00:02:54,460 e sei una sorta di invocare la biblioteca 67 00:02:54,460 --> 00:02:56,810 e invitando la biblioteca di fare qualcosa per voi. 68 00:02:56,810 --> 00:02:58,180 La differenza tra una biblioteca e di un quadro 69 00:02:58,180 --> 00:03:01,620 è che il quadro inizia con il controllo, 70 00:03:01,620 --> 00:03:03,260 e invoca il codice, 71 00:03:03,260 --> 00:03:06,190 così si può pensare ad esso come - questo è il motivo per cui si chiama un quadro - 72 00:03:06,190 --> 00:03:09,700 Il framework fornisce questo telaio e la struttura per il codice, 73 00:03:09,700 --> 00:03:11,320 e riempire i buchi, 74 00:03:11,320 --> 00:03:13,990 e questo diventerà più evidente in un secondo 75 00:03:13,990 --> 00:03:16,670 quando si vede di iniziare a scrivere codice nel contesto del quadro. 76 00:03:16,670 --> 00:03:19,130 Vedrai che sto colmando le lacune, 77 00:03:19,130 --> 00:03:22,450 e il quadro è una specie di controllo di tutte le parti in movimento, 78 00:03:22,450 --> 00:03:27,420 e devo mettere i pezzi al posto giusto. 79 00:03:27,420 --> 00:03:29,360 >> Oggi andremo a parlare di Kohana, 80 00:03:29,360 --> 00:03:31,610 che è uno dei tanti framework PHP. 81 00:03:31,610 --> 00:03:34,550 Ci sono framework web, e ci sono quelli praticamente in ogni singola lingua, 82 00:03:34,550 --> 00:03:38,330 e sto raccogliendo Kohana perché Kohana è senza dubbio 83 00:03:38,330 --> 00:03:43,250 e generalmente riconosciuto come il framework PHP più facile da prendere. 84 00:03:43,250 --> 00:03:45,940 E 'più leggeri. 85 00:03:45,940 --> 00:03:48,470 Ci sono altre là fuori che vengono con molte, molte altre caratteristiche, 86 00:03:48,470 --> 00:03:51,590 ma tendono ad essere più difficili da prendere. 87 00:03:51,590 --> 00:03:54,920 E, infine, Kohana utilizza l'architettura MVC. 88 00:03:54,920 --> 00:03:57,780 E 'abbastanza leggero da poter letteralmente costruire un progetto 89 00:03:57,780 --> 00:03:59,620 proprio qui, proprio davanti ai vostri occhi, e si può tranquillamente 90 00:03:59,620 --> 00:04:02,780 seguire abbastanza facilmente. 91 00:04:02,780 --> 00:04:04,420 >> Qual è l'architettura MVC? 92 00:04:04,420 --> 00:04:06,540 Si distingue per il Model-View-Controller, 93 00:04:06,540 --> 00:04:09,560 e forse se ci pensate il codice che hai scritto finora 94 00:04:09,560 --> 00:04:11,280 per alcuni dei vostri pset sviluppo web 95 00:04:11,280 --> 00:04:14,710 si può essere in grado di vedere alcune di queste, ma di solito quando si inizia a scrivere 96 00:04:14,710 --> 00:04:16,500 una applicazione web più complesse, 97 00:04:16,500 --> 00:04:21,209 la divisione tra questi 3 segmenti diventa sempre più evidente. 98 00:04:21,209 --> 00:04:26,740 Ho messo il MVC qui come una specie di pila, 99 00:04:26,740 --> 00:04:29,920 e spesso si sente parlare di pile nello sviluppo web, 100 00:04:29,920 --> 00:04:33,760 e questo è quello di illustrare l'idea che 101 00:04:33,760 --> 00:04:37,510 ogni strato, ogni componente cerca veramente di comunicare solo 102 00:04:37,510 --> 00:04:40,750 tra 2 altre componenti. 103 00:04:40,750 --> 00:04:44,550 Qualcuno accede al sito web come un client o un browser. 104 00:04:44,550 --> 00:04:48,870 Essi interagiscono con il programma attraverso il codice della vista. 105 00:04:48,870 --> 00:04:50,500 Il codice vista interagisce con il controller. 106 00:04:50,500 --> 00:04:52,400 Il controllore interagisce con il modello, 107 00:04:52,400 --> 00:04:55,090 e il modello interagisce con il database SQL. 108 00:04:55,090 --> 00:04:59,670 E non c'è salto tra se si scrive il codice corretto. 109 00:04:59,670 --> 00:05:01,670 >> Che cosa fanno queste cose fanno? 110 00:05:01,670 --> 00:05:06,020 Il modello è essenzialmente la parte di codice che si occupa con i propri dati. 111 00:05:06,020 --> 00:05:09,100 Tutto ciò che riguarda il database, con gli oggetti che vengono archiviati, 112 00:05:09,100 --> 00:05:11,280 o il recupero di tali oggetti nel database, 113 00:05:11,280 --> 00:05:13,450 Questo è tutto gestito dal modello. 114 00:05:13,450 --> 00:05:15,290 Forse avete oggetti del database. 115 00:05:15,290 --> 00:05:17,700 Stiamo andando a creare un modello che ha a che fare con i messaggi, 116 00:05:17,700 --> 00:05:19,760 quindi un post può avere alcuni attributi ad esso. 117 00:05:19,760 --> 00:05:23,900 Si può avere funzioni intorno memorizzare tali posti o il recupero di messaggi 118 00:05:23,900 --> 00:05:26,270 o filtrando i messaggi e così via e così via, 119 00:05:26,270 --> 00:05:28,880 e questo è tutto il codice che è gestita dal modello. 120 00:05:28,880 --> 00:05:31,780 Il controller è una sorta di logica applicativa, 121 00:05:31,780 --> 00:05:37,910 e un sacco di cose diverse può andare nella logica dell'applicazione. 122 00:05:37,910 --> 00:05:39,790 Se stai parlando di una API diversa, 123 00:05:39,790 --> 00:05:42,310 che può essere dove hai a che fare con la logica dell'applicazione. 124 00:05:42,310 --> 00:05:47,990 Se stai cercando di avere di portare a dati provenienti da più modelli diversi 125 00:05:47,990 --> 00:05:51,540 e devono combinarli in qualche modo, che spesso può essere gestita dal controllore. 126 00:05:51,540 --> 00:05:53,820 Ad esempio, su Facebook, se amico di qualcuno, 127 00:05:53,820 --> 00:05:58,500 allora forse quell'atto di stabilire quel rapporto 128 00:05:58,500 --> 00:06:00,490 può essere fatta dal controllore. 129 00:06:00,490 --> 00:06:04,350 >> E, infine, la vista è il codice che sta generando quello che si vede attualmente. 130 00:06:04,350 --> 00:06:07,410 Un sacco di volte penso che nei pset CS50 131 00:06:07,410 --> 00:06:10,050 in realtà non incoraggiano voi ragazzi a separare queste tre cose. 132 00:06:10,050 --> 00:06:12,430 Probabilmente dovrete questo grande, file lungo dove in cima 133 00:06:12,430 --> 00:06:15,130 fate qualche query SQL e magari fare un po 'di elaborazione 134 00:06:15,130 --> 00:06:17,020 sui dati è stato richiamato dal database, 135 00:06:17,020 --> 00:06:19,370 e poi avete tutti i vostri HTML nella parte inferiore. 136 00:06:19,370 --> 00:06:22,840 E si potrebbe scoprire che quando si creano sempre più pagine 137 00:06:22,840 --> 00:06:25,790 che si sta andando ad avere un codice ripetizione, e anche, 138 00:06:25,790 --> 00:06:29,600 la cosa è il file diventa veramente grande e lungo 139 00:06:29,600 --> 00:06:32,370 e diventa ingombrante da gestire. 140 00:06:32,370 --> 00:06:34,500 Il motivo per cui MVC è così ben considerato 141 00:06:34,500 --> 00:06:36,120 è per una serie di motivi. 142 00:06:36,120 --> 00:06:38,110 La prima cosa è una cosa chiamata separazione degli interessi 143 00:06:38,110 --> 00:06:40,370 che è l'idea che quando si ha - 144 00:06:40,370 --> 00:06:43,520 idealmente 1 pezzo di codice dovrebbe fare 1 cosa e di farlo davvero bene, 145 00:06:43,520 --> 00:06:47,210 e non si deve combinare pezzi di codice che fanno cose diverse. 146 00:06:47,210 --> 00:06:49,230 Ad esempio, visualizzare il codice e il codice del modello, 147 00:06:49,230 --> 00:06:51,040 non hanno in realtà essere correlati. 148 00:06:51,040 --> 00:06:53,290 Essi non devono essere nelle stesse file, in modo che quando si può, li separare 149 00:06:53,290 --> 00:06:55,300 quindi è facile da mantenere. 150 00:06:55,300 --> 00:06:57,130 >> L'altra cosa è il riutilizzo del codice. 151 00:06:57,130 --> 00:06:59,770 Potreste trovarvi a scrivere la stessa query SQL o fare 152 00:06:59,770 --> 00:07:03,060 query simili che potrebbero essere ricavati in 1 funzione, 153 00:07:03,060 --> 00:07:05,440 e questa è l'idea dietro modelli e controllori, 154 00:07:05,440 --> 00:07:09,690 averlo in una funzione separata che è possibile riutilizzare in luoghi diversi nel progetto. 155 00:07:09,690 --> 00:07:12,420 E, infine, che è legato ad essiccamento codice, 156 00:07:12,420 --> 00:07:14,700 o non ripetere se stessi, non si deve ripetere se stessi. 157 00:07:14,700 --> 00:07:18,090 Questo è molto comprensibile in sviluppo. 158 00:07:18,090 --> 00:07:20,110 Ogni volta che si può, non si vuole ripetere se stessi, perché se ti ripeti, 159 00:07:20,760 --> 00:07:23,400  è molto più costoso da mantenere. 160 00:07:23,400 --> 00:07:26,040 Se si desidera cambiare 1 cosa, devi cambiare ovunque, 161 00:07:26,040 --> 00:07:30,230 e che porta a bug, ed è orribile. 162 00:07:30,230 --> 00:07:32,010 Va bene >>. 163 00:07:32,010 --> 00:07:37,270 Tutte le domande finora circa Kohana a tutti? 164 00:07:37,270 --> 00:07:39,200 Grande. 165 00:07:39,200 --> 00:07:42,300 Ora stiamo andando a tuffarsi nella sessione di codifica in tempo reale, 166 00:07:42,300 --> 00:07:48,050 e speriamo che tutto vada bene. 167 00:07:57,200 --> 00:08:00,050 Ho intenzione di costruire fondamentalmente questo sito 168 00:08:00,050 --> 00:08:03,910 su uno dei miei server remoti, e in questo modo voi ragazzi può anche 169 00:08:03,910 --> 00:08:06,310 consultare il sito Web e accedere al sito web, 170 00:08:06,310 --> 00:08:10,990 e anche l'ambiente è meglio configurata della mia macchina remota, 171 00:08:10,990 --> 00:08:14,580 perché è in esecuzione Linux invece di OS X. 172 00:08:14,580 --> 00:08:16,260 Stiamo letteralmente sta per iniziare. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 Io vado a scaricare il codice dal sito. 175 00:08:21,350 --> 00:08:24,610 Io vado a copiare l'indirizzo del link, 176 00:08:24,610 --> 00:08:29,770 andare al mio server, scaricare, 177 00:08:29,770 --> 00:08:33,000 e sto andando per estrarlo. 178 00:08:38,330 --> 00:08:45,710 >> [Studente] Qual è la cosa più grande è possibile rendere il testo? 179 00:08:45,710 --> 00:08:47,330 [Brandon Liu] E 'meglio? 180 00:08:47,330 --> 00:08:50,070 [Studente] È che fattibile? >> [Brandon Liu] Sì, va bene. 181 00:08:50,070 --> 00:08:54,500 Ho scaricato un file ZIP e decompresso che in una directory chiamata Kohana, 182 00:08:54,500 --> 00:08:58,820 e noi andremo a rinominare che CS50-Kohana, 183 00:08:58,820 --> 00:09:01,140 e andiamo dentro 184 00:09:01,140 --> 00:09:03,610 Impressionante. 185 00:09:03,610 --> 00:09:06,870 Qui si vede un gruppo di file diversi. 186 00:09:06,870 --> 00:09:10,140 La maggior parte di voi può ignorare - Ne siamo non andare a passare attraverso ogni singolo file che è qui 187 00:09:10,140 --> 00:09:13,130 a causa dei nostri vincoli di tempo, 188 00:09:13,130 --> 00:09:16,310 ma in genere quando si installa Kohana, la prima cosa che fai 189 00:09:16,310 --> 00:09:23,210 è andare nella directory, 190 00:09:23,210 --> 00:09:26,050 e ti fondamentalmente fare alcuni test ambientali e quant'altro 191 00:09:26,050 --> 00:09:28,640 per assicurarsi che l'ambiente sia correttamente impostato per eseguire Kohana 192 00:09:28,640 --> 00:09:31,450 e assicurarsi che tutto va bene. 193 00:09:31,450 --> 00:09:35,510 Potete vedere la maggior parte delle cose passate, ma in genere si esegue sempre in questo 1 problema 194 00:09:35,510 --> 00:09:38,180 dove si lamenta che alcune directory non è scrivibile, 195 00:09:38,180 --> 00:09:40,410 e questo a causa di alcune autorizzazioni. 196 00:09:40,410 --> 00:09:43,080 Non so quanto voi avete imparato a conoscere i permessi dei file in CS50, 197 00:09:43,080 --> 00:09:47,920 ma se lo fai lo sviluppo del web, si sta andando a correre in questa edizione molto. 198 00:09:47,920 --> 00:09:58,340 Ho intenzione di renderlo scrivibile 199 00:09:58,340 --> 00:10:03,390 e penso di avere anche - ce ne andiamo. 200 00:10:03,390 --> 00:10:07,040 >> Bene, ora è possibile vedere tutto passato, 201 00:10:07,040 --> 00:10:10,000 e ora vi dirà di rinominare il file install.php. 202 00:10:10,000 --> 00:10:15,630 Ho intenzione di spostare il file install.php a installed.php, 203 00:10:15,630 --> 00:10:19,610 e ora se mi rinfresco, 204 00:10:19,610 --> 00:10:22,810 mi dà qualche errore, e questo è dove il debugging entra in gioco 205 00:10:22,810 --> 00:10:25,610 Questo è dove si può vedere cosa sta realmente succederà. 206 00:10:25,610 --> 00:10:28,460 Il fatto è che, per impostazione predefinita, Kohana presuppone che 207 00:10:28,460 --> 00:10:31,480 il progetto è nella directory principale del proprio dominio, 208 00:10:31,480 --> 00:10:35,920 quindi è in attesa di essere a demo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 Dobbiamo dire è che in realtà in una sottocartella. 210 00:10:37,540 --> 00:10:39,820 E 'in una sottocartella denominata CS50 Kohana. 211 00:10:39,820 --> 00:10:42,640 La cosa è, è fraintendendo CS50-Kohana 212 00:10:42,640 --> 00:10:45,680 come qualcos'altro, che spiegherò a voi in un secondo. 213 00:10:45,680 --> 00:10:49,910 Ma devo dire che è qualcosa che c'è da aspettarselo. 214 00:10:49,910 --> 00:10:53,700 Quello che andremo a fare è che stiamo per andare in questa cartella denominata bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 che è la cartella di configurazione in cui un sacco di cose diverse sono istituiti. 216 00:10:59,260 --> 00:11:01,570 Apro che fino. 217 00:11:01,570 --> 00:11:09,790 Allora forse una delle prime cose che farò è cambiare il fuso orario. 218 00:11:09,790 --> 00:11:13,910 >> E poi vediamo. 219 00:11:13,910 --> 00:11:15,180 Aha! Proprio qui. 220 00:11:15,180 --> 00:11:18,690 Ci sono un sacco di diversi detti di configurazione qui, 221 00:11:18,690 --> 00:11:21,700 ma quello che sto cercando è questa cosa chiamata URL di base, 222 00:11:21,700 --> 00:11:24,570 e di default ho capito impostato Kohana, 223 00:11:24,570 --> 00:11:29,020 ma ho intenzione di cambiare la situazione a CS50-Kohana, 224 00:11:29,020 --> 00:11:32,880 e penso che dovrebbe risolvere il problema. 225 00:11:32,880 --> 00:11:34,150 Sì, ideale. 226 00:11:34,150 --> 00:11:39,530 Per impostazione predefinita, per vedere che sta lavorando, dice, "Ciao Mondo". 227 00:11:39,530 --> 00:11:42,930 Dove che provengono da? Come siamo arrivati ​​a Ciao Mondo? 228 00:11:42,930 --> 00:11:47,640 Dove esattamente è il codice che in realtà ha scritto che? 229 00:11:47,640 --> 00:11:50,240 Per capire questo, io presento questo concetto chiamato routing. 230 00:11:50,240 --> 00:11:52,590 Praticamente tutti i framework web hanno il concetto chiamato routing, 231 00:11:52,590 --> 00:11:57,230 che è la parte del software che mappa una certa URL 232 00:11:57,230 --> 00:12:01,550 a un certo pezzo di codice all'interno del tuo quadro. 233 00:12:01,550 --> 00:12:07,510 Ad esempio, se avete qualche indirizzo e si va a qualche URL come foo.com / blog / tutte 234 00:12:07,510 --> 00:12:11,170 allora ciò che il quadro sta per fare - o almeno quello che Kohana sta per fare - 235 00:12:11,170 --> 00:12:15,540 si sta andando a trovare una classe denominata regolatore blog, 236 00:12:15,540 --> 00:12:18,720 e sta andando per eseguire la funzione denominata azione tutti. 237 00:12:18,720 --> 00:12:20,160 So che sto parlando di classe e funzioni, 238 00:12:20,160 --> 00:12:23,860 e so che voi ragazzi non hanno coperto classi e funzioni 239 00:12:23,860 --> 00:12:26,470 in ancora CS50, ma per ora, 240 00:12:26,470 --> 00:12:29,800 si può pensare di classi come solo un gruppo di funzioni, 241 00:12:29,800 --> 00:12:32,900 un modo per raggruppare funzioni insieme. 242 00:12:32,900 --> 00:12:37,690 Questo è davvero tutto quello che dovete sapere. 243 00:12:37,690 --> 00:12:43,120 >> Ora, se guardiamo la nostra struttura di cartelle, 244 00:12:43,120 --> 00:12:47,110 all'interno della cartella dell'applicazione c'è un'altra cartella chiamata classi, 245 00:12:47,110 --> 00:12:49,200 e le altre cartelle sono chiamati Controller e Model. 246 00:12:49,200 --> 00:12:52,530 Se si guarda all'interno della cartella Controller, 247 00:12:52,530 --> 00:12:56,330 vediamo che c'è un file chiamato Welcome, 248 00:12:56,330 --> 00:13:00,370 e si può vedere qui è una classe denominata controller Benvenuti, 249 00:13:00,370 --> 00:13:02,340 e vi è una funzione denominata Action Index, 250 00:13:02,340 --> 00:13:06,360 e ciò che fa è imposta il corpo della vostra risposta a Ciao mondo. 251 00:13:06,360 --> 00:13:08,730 Ecco dove viene scritto il codice. 252 00:13:08,730 --> 00:13:11,610 L'altra domanda è, beh, non è andato a 253 00:13:11,610 --> 00:13:13,680 blah, blah, blah, / welcome / index. 254 00:13:13,680 --> 00:13:16,250 Come ho fatto a finire qui? 255 00:13:16,250 --> 00:13:20,410 Beh, questo è semplicemente perché 256 00:13:20,410 --> 00:13:22,410 qui nella parte inferiore del nostro file di bootstrap 257 00:13:22,410 --> 00:13:24,550 dove abbiamo impostato le nostre rotte 258 00:13:24,550 --> 00:13:26,570 si può vedere che si misero alcuni valori di default per te. 259 00:13:26,570 --> 00:13:28,990 Il controller di default è benvenuto. L'azione di default è Index. 260 00:13:28,990 --> 00:13:31,600 Ecco perché quando abbiamo messo nulla in là è andato automaticamente al controller di benvenuto 261 00:13:31,600 --> 00:13:33,940 e l'azione index. 262 00:13:33,940 --> 00:13:37,460 >> Tutto ha senso fino ad ora? 263 00:13:37,460 --> 00:13:40,850 Ora, si può fare di più che andare al controller 264 00:13:40,850 --> 00:13:43,670 e un'azione specifica. 265 00:13:43,670 --> 00:13:48,480 È anche possibile passare i parametri al controller. 266 00:13:48,480 --> 00:13:56,390 A titolo di esempio, 267 00:13:56,390 --> 00:14:04,070 Ho intenzione di aggiungere un'altra azione di questo controller visualizzare. 268 00:14:04,070 --> 00:14:09,130 Chiamiamo questa azione Echo, perché sta andando per dirvi quello che dà, 269 00:14:09,130 --> 00:14:17,510 e così ho praticamente andando a prendere 270 00:14:17,510 --> 00:14:20,960 un parametro che sta per essere inviato attraverso di me al programma di routing, 271 00:14:20,960 --> 00:14:24,440 e come potete vedere qui, 272 00:14:24,440 --> 00:14:28,440 questa linea qui, si può vedere che 273 00:14:28,440 --> 00:14:31,270 questo significa fondamentalmente hai controllore, e si ha un /, 274 00:14:31,270 --> 00:14:33,480 e si dispone l'azione, e si dispone di un altro /, 275 00:14:33,480 --> 00:14:39,140 e che sta per essere parametri, e perché abbiamo questo nome ID 276 00:14:39,140 --> 00:14:42,450 tra parentesi angolari, che significa che stiamo nominando questo parametro ID. 277 00:14:42,450 --> 00:14:45,490 Più tardi, nel mio codice di controllo se voglio afferrare una presa di tale parametro, 278 00:14:45,490 --> 00:14:51,790 Posso usare il codice che ho scritto, trovare il parametro denominato ID. 279 00:14:51,790 --> 00:14:59,290 Questo è quello che ho fatto qui, e ho intenzione di tornare e dire, 280 00:14:59,290 --> 00:15:07,090 "Lei ha detto" che. 281 00:15:07,090 --> 00:15:10,760 E così ora, se vado al nostro sito web, 282 00:15:10,760 --> 00:15:19,550 Vado a cs50-kohana/welcome/echo/Helloooo-- 283 00:15:19,550 --> 00:15:21,420 oh, che è di destra. 284 00:15:21,420 --> 00:15:23,930 C'è 1 punto ho lasciato fuori. 285 00:15:23,930 --> 00:15:27,020 Questo è parte dell'idea codifica vivo. 286 00:15:27,020 --> 00:15:36,100 >> Qui è 1 cosa. Vediamo. 287 00:15:36,100 --> 00:15:38,870 Quindi normalmente di default con un sacco di queste applicazioni web 288 00:15:38,870 --> 00:15:42,820 è necessario includere questa cosa index.php nell'URL, 289 00:15:42,820 --> 00:15:46,410 perché l'idea è index.php è una sorta di punto di ingresso 290 00:15:46,410 --> 00:15:48,250 della vostra applicazione, ma, naturalmente, 291 00:15:48,250 --> 00:15:50,110 che è una sorta di fastidioso avere. 292 00:15:50,110 --> 00:15:53,790 Se non si desidera avere index.php appaiono nel vostro URL, 293 00:15:53,790 --> 00:15:56,080 e praticamente tutti i web framework out of the box 294 00:15:56,080 --> 00:15:58,440 ha questo problema index.php, 295 00:15:58,440 --> 00:16:03,370 e quindi bisogna prendere alcune misure per essere in grado di rimuovere tale. 296 00:16:03,370 --> 00:16:07,540 E così in questo caso, 297 00:16:07,540 --> 00:16:11,450 quello che andremo a fare è che andremo a utilizzare un file chiamato. htaccess, 298 00:16:11,450 --> 00:16:13,900 e questo è qualcosa che è specifico per il server web Apache, 299 00:16:13,900 --> 00:16:16,290 e può fare cose come riscrittura degli URL 300 00:16:16,290 --> 00:16:19,350 e reindirizzare gli URL e così via e così via, 301 00:16:19,350 --> 00:16:24,280 e Kohana è abbastanza bello per fornire un file di modello. htaccess che possiamo usare. 302 00:16:24,280 --> 00:16:28,300 >> Come potete vedere, c'è un file chiamato example.htaccess, 303 00:16:28,300 --> 00:16:33,410 e stiamo andando a copiare quello a. htaccess. 304 00:16:33,410 --> 00:16:36,950 Ho intenzione di aprire questo e modificarlo, 305 00:16:36,950 --> 00:16:40,840 e fondamentalmente fa un sacco di cose diverse. 306 00:16:40,840 --> 00:16:45,320 La linea tasto si consiglia di guardare è proprio qui. 307 00:16:45,320 --> 00:16:49,840 L'idea è che questa imposta una regola che dice, 308 00:16:49,840 --> 00:16:56,400 "Va bene, qualunque cosa si digita, anteporre index.php a questo." 309 00:16:56,400 --> 00:16:58,710 Si può vedere che. 310 00:16:58,710 --> 00:17:00,370 L'. * Sta per nulla, corrisponde nulla, 311 00:17:00,370 --> 00:17:03,300 e poi la seconda parte è index.php / $ 0, 312 00:17:03,300 --> 00:17:07,410 e $ 0 si riferisce a tutto ciò che è stato abbinato in precedenza. 313 00:17:07,410 --> 00:17:09,500 Ritiene che senso? 314 00:17:09,500 --> 00:17:12,190 Ma la cosa veramente fondamentale che voglio cambiare è cambiare questa base riscrittura, 315 00:17:12,190 --> 00:17:14,300 che è la base URL. 316 00:17:14,300 --> 00:17:17,780 E 'sorta di presuppone dove si sta lavorando da. 317 00:17:17,780 --> 00:17:22,560 Ho intenzione di aggiungere CS50 Kohana a ciò, 318 00:17:22,560 --> 00:17:26,530 e così adesso se mi tolgo la index.php, 319 00:17:26,530 --> 00:17:32,110 dovrebbe funzionare, e ho intenzione di aggiungere alcuni numeri 320 00:17:32,110 --> 00:17:36,380 per mostrare che davvero ha funzionato. 321 00:17:36,380 --> 00:17:38,130 Suona bene. 322 00:17:38,130 --> 00:17:40,260 >> Tutte le domande finora? 323 00:17:40,260 --> 00:17:42,300 [Studente] Come ha fatto sapere di fare il 123? 324 00:17:42,300 --> 00:17:44,120 È che un argomento? 325 00:17:44,120 --> 00:17:46,560 Esattamente. Si può pensare ad esso come un argomento. 326 00:17:46,560 --> 00:17:52,410 Ma la cosa strana, però, è che il modo in cui Kohana fa 327 00:17:52,410 --> 00:17:54,910 è che non lo fanno esattamente come un argomento. 328 00:17:54,910 --> 00:17:56,930 Si deve afferrare come questo. 329 00:17:56,930 --> 00:18:01,030 Si deve afferrare l'oggetto di richiesta e chiedere il parametro che viene denominato ID, 330 00:18:01,030 --> 00:18:03,240 e che ID nome deriva da quel file di bootstrap 331 00:18:03,240 --> 00:18:06,990 che ho mostrato in precedenza, e l'ID nome era in quelle parentesi angolari, 332 00:18:06,990 --> 00:18:11,580 ed è così che si afferra tali parametri. 333 00:18:11,580 --> 00:18:14,010 Impressionante. 334 00:18:14,010 --> 00:18:17,550 Tutte le altre domande? 335 00:18:17,550 --> 00:18:20,500 Come ho detto, i controller, che gestiscono la logica dell'applicazione, 336 00:18:20,500 --> 00:18:22,980 così che è 1 caso dove si può vedere that - 337 00:18:22,980 --> 00:18:24,830 è molto semplice, ma è ancora la logica dell'applicazione, 338 00:18:24,830 --> 00:18:27,980 l'idea di afferrare il parametro e creare una nuova stringa 339 00:18:27,980 --> 00:18:31,920 che dice: "Hai detto bla", e poi sputare che a te. 340 00:18:31,920 --> 00:18:34,030 E in generale quello che fai è creare diversi controllori. 341 00:18:34,030 --> 00:18:36,450 Si crea controller separati per le diverse parti del tuo sito web. 342 00:18:36,450 --> 00:18:38,160 >> Oggi stiamo andando a fare un sito web molto semplice, 343 00:18:38,160 --> 00:18:40,420 e sta andando ad essere un blog molto semplice. 344 00:18:40,420 --> 00:18:43,780 Stiamo andando a fare un nuovo controller solo per i post in un blog. 345 00:18:43,780 --> 00:18:47,060 Ma poi se dovessi aggiungere anche commenti al post sul blog, 346 00:18:47,060 --> 00:18:50,140 poi avrei probabilmente vuole fare un nuovo controller per tali osservazioni. 347 00:18:50,140 --> 00:18:53,380 Se volessi aggiungere utenti, probabilmente aggiungere un nuovo controller per gli utenti, 348 00:18:53,380 --> 00:18:57,000 e, in generale, l'idea è che ogni volta che avete un nuovo modello, 349 00:18:57,000 --> 00:18:59,630 un nuovo oggetto dati che si sta trattando, 350 00:18:59,630 --> 00:19:02,970 si dispone di un unico controllore per l'oggetto di dati. 351 00:19:02,970 --> 00:19:04,370 Oggi stiamo solo andando a lavorare con 1 oggetto dati, 352 00:19:04,370 --> 00:19:06,250 e che sta per essere posti, 353 00:19:06,250 --> 00:19:08,710 e inoltre si può pensare di oggetti dati in quanto corrispondente alle tabelle. 354 00:19:08,710 --> 00:19:12,160 Generalmente ogni tabella corrisponde ad 1 tipo di oggetto dati, 355 00:19:12,160 --> 00:19:15,160 quindi la tabella palo avrà 1 modello postale, 356 00:19:15,160 --> 00:19:18,230 che avrà 1 regolatore posto corrispondente a quella, 357 00:19:18,230 --> 00:19:22,190 e lo stesso per i commenti, lo stesso per gli utenti, e così via e così via. 358 00:19:22,190 --> 00:19:24,070 E questa è una regola generale. 359 00:19:24,070 --> 00:19:27,460 Ci stanno per essere casi particolari in cui si potrebbe differire da quella, 360 00:19:27,460 --> 00:19:29,300 ma il 90% del tempo che è quello che si sta andando a fare, 361 00:19:29,300 --> 00:19:32,810 e io vi mostrerò che è quello che stiamo andando a fare oggi. 362 00:19:32,810 --> 00:19:35,490 1 altro concetto prima di tuffarci di nuovo nel codice, 363 00:19:35,490 --> 00:19:37,710 questa idea di oggetto di mapping relazionale. 364 00:19:37,710 --> 00:19:41,200 >> Voi ragazzi avete già fatto un sviluppo web pset, 365 00:19:41,200 --> 00:19:43,820 e avete visto che si effettua una query SQL, 366 00:19:43,820 --> 00:19:46,510 e qualunque cosa ritorna a sei righe. 367 00:19:46,510 --> 00:19:50,040 È possibile ottenere queste righe, ed è indice di loro da qualche nome, 368 00:19:50,040 --> 00:19:55,480 il nome della colonna e la tabella, 369 00:19:55,480 --> 00:19:57,630 ed è così che si lavora con esso, 370 00:19:57,630 --> 00:19:59,290 e può essere un po 'ingombrante. 371 00:19:59,290 --> 00:20:01,810 Ma, inoltre, se avete rapporti all'interno del database, 372 00:20:01,810 --> 00:20:05,280 come per esempio se ho commenti e post, 373 00:20:05,280 --> 00:20:11,240 allora forse voglio prendere il posto genitore di un commento. 374 00:20:11,240 --> 00:20:14,350 Se io uso solo le righe in SQL, quindi tutto quello che posso ottenere è l'ID 375 00:20:14,350 --> 00:20:19,310 del post genitore e non il posto vero e proprio. 376 00:20:19,310 --> 00:20:21,680 Ma quando siamo codifica, ciò che realmente vogliamo è effettivamente afferrare 377 00:20:21,680 --> 00:20:23,550  il genitore post stesso a volte. 378 00:20:23,550 --> 00:20:25,730 Quali oggetto di mapping relazionale fa è 379 00:20:25,730 --> 00:20:29,480 prende i risultati della query di database 380 00:20:29,480 --> 00:20:32,420 e lo mette in oggetti per voi, che sono molto più bello di lavorare con 381 00:20:32,420 --> 00:20:34,770 di matrici semplici e righe. 382 00:20:34,770 --> 00:20:37,550 >> Per esempio, ora quando ho un commento, forse, 383 00:20:37,550 --> 00:20:40,900 e voglio prendere il suo posto genitore, 384 00:20:40,900 --> 00:20:43,440 e io magari commentare freccia posta, 385 00:20:43,440 --> 00:20:45,230 allora sarà effettivamente darmi l'oggetto postale 386 00:20:45,230 --> 00:20:47,940 corrispondente al posto genitore reale, non solo alcuni ID, 387 00:20:47,940 --> 00:20:52,210 che avrei altrimenti utilizzare e fare un'altra query SQL per afferrare il palo, 388 00:20:52,210 --> 00:20:57,430 che è ingombrante e inutile. 389 00:20:57,430 --> 00:21:01,840 E inoltre, mappando tutte queste righe di dati in oggetti, 390 00:21:01,840 --> 00:21:03,760 è anche possibile allegare più funzioni agli oggetti, 391 00:21:03,760 --> 00:21:09,700 così per esempio, ho parlato di come le classi sono essenzialmente gruppi di funzioni. 392 00:21:09,700 --> 00:21:11,620 Si può pensare così. 393 00:21:11,620 --> 00:21:15,290 Per esempio, forse ho questo oggetto postale, 394 00:21:15,290 --> 00:21:17,830 e magari mi piacerebbe avere una sorta di funzione collegato ad esso 395 00:21:17,830 --> 00:21:20,300 che in fondo mi dice che è stato postato di recente? 396 00:21:20,300 --> 00:21:23,570 Era pubblicato entro l'ultima settimana, vero o falso? 397 00:21:23,570 --> 00:21:27,320 E questa è una funzione che posso attaccare su tale oggetto, 398 00:21:27,320 --> 00:21:31,300 ed è davvero comodo avere nello stesso luogo, 399 00:21:31,300 --> 00:21:33,820 e ci sono una miriade di diverse funzioni è possibile creare 400 00:21:33,820 --> 00:21:37,990 per questi oggetti, ed è davvero bello essere in grado di collegarlo a una classe, 401 00:21:37,990 --> 00:21:41,700 ad un oggetto, mentre se hai appena avuto le righe provenienti dal database, 402 00:21:41,700 --> 00:21:43,790 allora non si può davvero attaccare qualsiasi funzionalità a questo. 403 00:21:43,790 --> 00:21:47,850 E 'letteralmente solo dati. 404 00:21:47,850 --> 00:21:50,550 Tutte le domande che a tutti? 405 00:21:50,550 --> 00:21:52,710 ORM sono lo sviluppo web molto comune, 406 00:21:52,710 --> 00:21:56,330 e ci sono un sacco di diversi tipi di ORM, 407 00:21:56,330 --> 00:21:58,450 e Kohana ha il suo ORM. 408 00:21:58,450 --> 00:22:05,050 E 'molto semplice, ma si otterrà un assaggio di quello che sembra. 409 00:22:05,050 --> 00:22:08,780 >> Creiamo un modello per i nostri blog, 410 00:22:08,780 --> 00:22:12,350 e la prima cosa che ovviamente dobbiamo fare è creare una tabella effettiva 411 00:22:12,350 --> 00:22:16,680 all'interno del nostro database per memorizzare effettivamente i nostri dati per tali posti. 412 00:22:16,680 --> 00:22:19,260 La prima cosa che ho intenzione di fare è andare a phpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 Avete ragazzi usato phpMyAdmin prima? 414 00:22:21,410 --> 00:22:23,400 Ok, fantastico, così voi ragazzi sanno già di cosa si tratta, 415 00:22:23,400 --> 00:22:32,200 e ho intenzione di creare una nuova tabella denominata Kohana Messaggi, 416 00:22:32,200 --> 00:22:37,820 e che sta per essere veramente semplice. 417 00:22:37,820 --> 00:22:40,190 Dovrò accedere nuovamente dentro 418 00:23:02,620 --> 00:23:04,640 Tutto quello che andremo a fare oggi è di avere un autore e un corpo, 419 00:23:04,640 --> 00:23:11,930 basta mantenere le cose semplici. 420 00:23:11,930 --> 00:23:15,620 Ho intenzione di creare quel tavolo, 421 00:23:15,620 --> 00:23:19,620 e ora non ci resta che un tavolo che rappresenta i nostri post 422 00:23:19,620 --> 00:23:23,370 con 2 campi per il nostro autore e il nostro corpo. 423 00:23:23,370 --> 00:23:26,290 L'altra cosa che sto per fare ora è 424 00:23:26,290 --> 00:23:29,820 configurare la mia applicazione web in modo che sa come connettersi al database, 425 00:23:29,820 --> 00:23:31,950 e questo, ancora una volta, è una cosa che dovrete fare con tutte le applicazioni web. 426 00:23:31,950 --> 00:23:34,790 Devi dire il nome utente e la password 427 00:23:34,790 --> 00:23:36,990 e il nome del database e così via e così via 428 00:23:36,990 --> 00:23:40,000 per capire come collegare effettivamente al database. 429 00:23:40,000 --> 00:23:58,710 >> In Kohana, abbiamo qualcosa chiamato un modulo di database, 430 00:23:58,710 --> 00:24:02,690 e nella cartella di configurazione abbiamo questa cartella chiamata database, 431 00:24:02,690 --> 00:24:07,330 e come potete vedere, ci sono un sacco di impostazioni è necessario impostare qui 432 00:24:07,330 --> 00:24:09,860 per dirgli che cosa è il nome utente e la password 433 00:24:09,860 --> 00:24:13,110 per il database in modo che possa effettivamente connettersi ad esso. 434 00:24:13,110 --> 00:24:15,010 E siccome io non voglio che voi ragazzi di conoscere realtà 435 00:24:15,010 --> 00:24:17,190 il nome utente e la password del mio database, 436 00:24:17,190 --> 00:24:23,840 Ho un file dove ho già impostato il tutto, e ho intenzione di copiare e incollare sopra. 437 00:24:33,080 --> 00:24:36,870 Impressionante. 438 00:24:36,870 --> 00:24:39,880 Ok. Penso che tutta la configurazione che devo fare, 439 00:24:39,880 --> 00:24:41,070 ma vediamo. 440 00:24:41,070 --> 00:24:43,720 Noi continueremo a lavorare in essa, e se qualcosa si blocca, 441 00:24:43,720 --> 00:24:47,490 poi ci sistemeremo. 442 00:24:47,490 --> 00:24:51,830 Ora, che cosa ho intenzione di fare è che ho intenzione di creare un nuovo controller. 443 00:24:51,830 --> 00:24:53,190 O addirittura, mi dispiace. 444 00:24:53,190 --> 00:24:55,080 Prima devo creare un nuovo modello. 445 00:24:55,080 --> 00:25:01,620 Creerò un nuovo modello chiamato post.php, 446 00:25:01,620 --> 00:25:12,440 e quello che andremo a fare è che stiamo andando a chiamarlo classe Model_Post. 447 00:25:12,440 --> 00:25:15,390 Get Some evidenziazione della sintassi su, 448 00:25:15,390 --> 00:25:19,750 e così quando dico, "si estende ORM", che è fondamentalmente 449 00:25:19,750 --> 00:25:21,210 una programmazione più orientato agli oggetti, 450 00:25:21,210 --> 00:25:23,340 che purtroppo voi ragazzi non hanno ancora imparato a CS50, 451 00:25:23,340 --> 00:25:25,290 ma è abbastanza facile da raccogliere. 452 00:25:25,290 --> 00:25:27,950 Mi dà tutte queste funzionalità in più che viene in questo pacchetto ORM, 453 00:25:27,950 --> 00:25:31,120 e quindi ho un sacco di funzioni extra e quant'altro libero, 454 00:25:31,120 --> 00:25:34,810 che vedrete un po 'di in un secondo. 455 00:25:34,810 --> 00:25:37,670 >> In questo momento in realtà tutto quello che devo fare è creare questa classe. 456 00:25:37,670 --> 00:25:39,160 Non ho nemmeno bisogno di fare qualsiasi funzione o nulla, 457 00:25:39,160 --> 00:25:41,770 ma ho creato una classe che rappresenta la tabella, 458 00:25:41,770 --> 00:25:44,140 e perché ho esteso questa classe ORM, 459 00:25:44,140 --> 00:25:51,080 Posso avere un sacco di cose gratuitamente, quindi per ora non devi impostare qualcosa di più alto. 460 00:25:51,080 --> 00:25:53,530 E ora che cosa ho intenzione di fare è che ho intenzione di creare un nuovo controller, 461 00:25:53,530 --> 00:25:58,480 che ho intenzione di nominare blog.php, 462 00:25:58,480 --> 00:26:04,350 e ho intenzione di copiare il controller di benvenuto 463 00:26:04,350 --> 00:26:11,950 così non devo riscrivere alcune cose, 464 00:26:11,950 --> 00:26:20,720 e ora devo rinominare questo. 465 00:26:20,720 --> 00:26:24,710 Ora, che cosa ho intenzione di fare per testare per assicurarsi che tutto sta lavorando, 466 00:26:24,710 --> 00:26:27,820 Io vado a prendere il primo post dal mio database 467 00:26:27,820 --> 00:26:32,680 e stampare il corpo del messaggio sullo schermo. 468 00:26:32,680 --> 00:26:37,920 Per fare che cosa ho intenzione di fare prima è ho intenzione di salvare i posti 469 00:26:37,920 --> 00:26:48,770 a una variabile così quello che andremo a fare è - 470 00:26:48,770 --> 00:26:52,090 in Kohana ciò che si fa è quello di afferrare l'oggetto postale 471 00:26:52,090 --> 00:26:55,380 È un po 'ingombrante, ma devi fare questa cosa chiamata ORM :: fabbrica, 472 00:26:55,380 --> 00:26:57,750 e poi si passa il nome del modello che si desidera, 473 00:26:57,750 --> 00:27:00,490 e restituisce l'oggetto ORM che rappresenta quel modello. 474 00:27:00,490 --> 00:27:04,860 E poi, come ho detto, quando estendiamo l'oggetto ORM, 475 00:27:04,860 --> 00:27:07,320 otteniamo tutti questi metodi gratis, quindi, ad esempio, 476 00:27:07,320 --> 00:27:09,200 otteniamo questa nuova funzione chiamata "trova tutti" 477 00:27:09,200 --> 00:27:12,160 che restituisce automaticamente ogni singolo post nel database, 478 00:27:12,160 --> 00:27:14,850 che è piuttosto comodo. 479 00:27:14,850 --> 00:27:17,480 >> E ora nel corpo ho intenzione di tornare 480 00:27:17,480 --> 00:27:24,860 il primo post e restituisce il suo corpo. 481 00:27:24,860 --> 00:27:27,930 E, naturalmente, ho bisogno di creare un post, 482 00:27:27,930 --> 00:27:31,880 quindi cerchiamo di inserire un nuovo post. 483 00:27:31,880 --> 00:27:37,870 Io dico: "Brandon, il mio primo post." 484 00:27:37,870 --> 00:27:40,010 Impressionante. 485 00:27:40,010 --> 00:27:45,910 E ora stiamo per andare a blog 486 00:27:45,910 --> 00:27:50,960 e se tutto funziona bene - oh, questo è di nuovo qualche altra cosa di autorizzazione del file muto. 487 00:27:50,960 --> 00:27:56,090 Aspetta 1 secondo. È una specie di assurdo. 488 00:28:06,700 --> 00:28:08,490 Ci andiamo. Ok. 489 00:28:08,490 --> 00:28:10,040 Ho risolto quel problema di permessi. 490 00:28:10,040 --> 00:28:12,040 Si stava cercando di creare alcuni file e alcune di log, 491 00:28:12,040 --> 00:28:15,400 e le autorizzazioni, ancora una volta, non sono stati impostati correttamente, così ho reso 492 00:28:15,400 --> 00:28:18,320 così quei file sono stati scrivibile ed eseguibile 493 00:28:18,320 --> 00:28:21,090 in modo che possa effettivamente accedere alle cose. 494 00:28:21,090 --> 00:28:24,220 Ora mi sta dando un altro detto eccezione ", classe ORM non trovata", 495 00:28:24,220 --> 00:28:26,960 e questo perché ho dimenticato un altro passo. 496 00:28:26,960 --> 00:28:37,010 Questo è troppo male. 497 00:28:37,010 --> 00:28:40,270 Nel file cartella di avvio, ci sono questi moduli qui, 498 00:28:40,270 --> 00:28:42,480 che è possibile scegliere di attivare o disattivare. 499 00:28:42,480 --> 00:28:44,340 Si tratta di una serie di caratteristiche differenti che è possibile scegliere di utilizzare 500 00:28:44,340 --> 00:28:46,180 entro Kohana, che è una sorta di piacevole. 501 00:28:46,180 --> 00:28:49,090 >> Ad esempio, hanno un modulo di autenticazione 502 00:28:49,090 --> 00:28:51,170 che è possibile utilizzare per l'autenticazione degli utenti. 503 00:28:51,170 --> 00:28:53,390 Hanno un modulo di caching, se si desidera implementare 504 00:28:53,390 --> 00:28:57,870 una sorta di cache back-end per rendere il lavoro applicazione più veloce e quant'altro. 505 00:28:57,870 --> 00:29:02,140 Abbiamo bisogno di attivare il database e il modulo ORM, 506 00:29:02,140 --> 00:29:04,280 perché come ho detto, stiamo usando il database, ovviamente, 507 00:29:04,280 --> 00:29:08,200 e abbiamo anche bisogno di attivare il modulo ORM, 508 00:29:08,200 --> 00:29:12,220 perché ci piacerebbe avere funzionalità extra, che è bello avere. 509 00:29:12,220 --> 00:29:14,240 Tutto quello che devo fare è togliere il commento quei 2 linee, 510 00:29:14,240 --> 00:29:18,760 e ora se mi rinfresco, mi ha dato un altro errore. 511 00:29:18,760 --> 00:29:22,100 Dice, "Class Model_Post non trovata". 512 00:29:22,100 --> 00:29:30,210 Ora, questo è un buon problema da avere. 513 00:29:30,210 --> 00:29:37,660 Vediamo. 514 00:29:37,660 --> 00:29:42,200 Renderlo pubblico. 515 00:29:42,200 --> 00:29:46,450 No. Aspetta. 516 00:30:11,610 --> 00:30:13,160 Oh, cara. 517 00:30:13,160 --> 00:30:18,590 Non so perché non è in grado di trovare questo. 518 00:30:18,590 --> 00:30:21,030 Questo è davvero strano. 519 00:30:21,030 --> 00:30:23,820 Ho questa classe qui. 520 00:30:23,820 --> 00:30:28,650 Credo che avrei potuto - oh. 521 00:30:28,650 --> 00:30:32,010 Io sono così stupido. Ho dimenticato di aggiungere un tag PHP. 522 00:30:32,010 --> 00:30:34,670 Ecco perché. 523 00:30:34,670 --> 00:30:41,260 Ora devo disfare che 1 cambiamento che ho appena fatto. 524 00:30:41,260 --> 00:30:44,270 Va bene >>. Ci andiamo. 525 00:30:44,270 --> 00:30:47,500 E 'stato davvero stupido. Non ho avuto un tag PHP di apertura. 526 00:30:47,500 --> 00:30:49,900 Ma come potete vedere, ora sta funzionando correttamente, giusto? 527 00:30:49,900 --> 00:30:51,240 Abbiamo 1 posto. 528 00:30:51,240 --> 00:30:54,730 Abbiamo preso il primo post, e ora abbiamo stampato il suo corpo. 529 00:30:54,730 --> 00:30:58,010 Grande. Fantastico. 530 00:30:58,010 --> 00:31:01,470 Tutte le domande finora? 531 00:31:01,470 --> 00:31:04,100 No? Tutte le domande? 532 00:31:04,100 --> 00:31:08,340 Ok, quindi abbiamo creato il modello di posta, molto semplice, 533 00:31:08,340 --> 00:31:10,930 e abbiamo intenzione di aggiungere alcune funzioni in seguito. 534 00:31:10,930 --> 00:31:13,600 Possiamo aggiungere validazione e filtraggio. 535 00:31:13,600 --> 00:31:15,650 Convalide sono una delle cose 536 00:31:15,650 --> 00:31:18,150 che i quadri di risolvere per davvero, davvero bene, 537 00:31:18,150 --> 00:31:21,310 e non credo che voi ragazzi dovevano fare questo per il vostro pset CS50, 538 00:31:21,310 --> 00:31:24,000 ma se lo fai lo sviluppo del web per il progetto finale, 539 00:31:24,000 --> 00:31:26,280 si sta probabilmente andando a voler fare una sorta di validazione, 540 00:31:26,280 --> 00:31:28,290 come non avere nomi utente vuoti, 541 00:31:28,290 --> 00:31:31,950 forse con una password con almeno una certa lunghezza, cose del genere. 542 00:31:31,950 --> 00:31:34,750 Ed è davvero difficile attuazione di queste cose da noi stessi, 543 00:31:34,750 --> 00:31:37,390 e praticamente ogni singolo framework web che fa per voi 544 00:31:37,390 --> 00:31:41,140 e ti permette di farlo in un modo molto pulito. 545 00:31:41,140 --> 00:31:44,340 E il modello è dove generalmente esprimere queste regole di convalida, 546 00:31:44,340 --> 00:31:48,790 perché è la convalida se un modello è valido o meno. 547 00:31:48,790 --> 00:31:51,350 >> Ma per ora, stiamo andando a mettere che solo più tardi, 548 00:31:51,350 --> 00:31:53,520 e per ora stiamo andando a lavorare su un'altra parte, 549 00:31:53,520 --> 00:31:55,400 e stiamo andando a cercare di fare una nuova vista 550 00:31:55,400 --> 00:31:59,580 che elenca tutti i posti. 551 00:31:59,580 --> 00:32:02,490 I passi necessari per fare una nuova azione messa in vendita di tutti i posti 552 00:32:02,490 --> 00:32:04,810 è quello di afferrare un elenco di tutti i post 553 00:32:04,810 --> 00:32:11,990 e quindi rendere la lista di tutti i post tramite una vista. 554 00:32:11,990 --> 00:32:16,420 Proprio qui, per fortuna, abbiamo già afferrato tutti i messaggi 555 00:32:16,420 --> 00:32:20,310 Utilizzando questo prima linea, la trova tutta la funzione, 556 00:32:20,310 --> 00:32:22,520 e adesso che stiamo andando a fare è finora 557 00:32:22,520 --> 00:32:25,350 Sto installando direttamente il corpo della risposta 558 00:32:25,350 --> 00:32:29,090 passando la stringa, ma ora voglio utilizzare una visualizzazione, 559 00:32:29,090 --> 00:32:31,870 e la differenza tra una vista e fare solo questo 560 00:32:31,870 --> 00:32:35,330 è in vista posso avere una bella, grande template HTML, 561 00:32:35,330 --> 00:32:37,710 e quello che posso fare è farlo passare alcune variabili 562 00:32:37,710 --> 00:32:42,200 e poi hanno la vista popolare automaticamente il relativo modello 563 00:32:42,200 --> 00:32:44,690 l'utilizzo di tali variabili. 564 00:32:44,690 --> 00:32:50,780 Quello che farò è creerò una nuova vista, 565 00:32:50,780 --> 00:32:55,940 e io ti nomino la vista qualcosa come "blog / index" 566 00:32:55,940 --> 00:33:08,480 e ho intenzione di legare in fondo questo - oh, che cosa sto scrivendo? 567 00:33:08,480 --> 00:33:12,910 Il mio cervello è altrove. 568 00:33:12,910 --> 00:33:16,600 Ho intenzione di legare i posti variabili alla vista, 569 00:33:16,600 --> 00:33:19,950 in modo che modo la vista ha accesso a questa variabile posta. 570 00:33:19,950 --> 00:33:26,140 >> E così ora ho bisogno di creare questo punto di vista, 571 00:33:26,140 --> 00:33:28,500 ecco abbiamo questa cartella chiamata "Visite" 572 00:33:28,500 --> 00:33:32,150 e in primo luogo, ho intenzione di creare una nuova cartella sotto quella denominata "Blog". 573 00:33:32,150 --> 00:33:35,810 Questo è bello. In questo modo possiamo avere una bella gerarchia per le nostre opinioni. 574 00:33:35,810 --> 00:33:43,910 E poi ho intenzione di creare un altro file in là chiamato "index.php". 575 00:33:43,910 --> 00:33:45,780 Impressionante. 576 00:33:45,780 --> 00:33:52,930 In realtà, diamo loro sia qui. 577 00:33:52,930 --> 00:33:56,760 Fare un file di vista è probabilmente la parte più semplice di tutto questo, 578 00:33:56,760 --> 00:33:59,090 e queste sono cose che probabilmente siete già familiarità con. 579 00:33:59,090 --> 00:34:01,240 Stiamo andando a fare qualcosa di veramente semplice, 580 00:34:01,240 --> 00:34:05,360 inizia dicendo: "La mia lista dei post del blog." 581 00:34:05,360 --> 00:34:14,860 Allora possiamo passare attraverso, 582 00:34:14,860 --> 00:34:17,920 e possiamo scorrere la matrice post, 583 00:34:17,920 --> 00:34:21,760 afferrare ogni singolo post e dire qualcosa di simile - 584 00:34:21,760 --> 00:34:25,290 magari aggiungere una riga 585 00:34:25,290 --> 00:34:42,460 e poi stampare l'autore e il corpo. 586 00:34:42,460 --> 00:34:44,480 Che ha senso fino ad ora? 587 00:34:44,480 --> 00:34:50,870 E vediamo se funziona. 588 00:34:50,870 --> 00:34:53,489 Non è successo niente. 589 00:34:53,489 --> 00:34:55,090 Mi chiedo perché. 590 00:34:55,090 --> 00:34:58,760 Oh, ho perso 1 punto. Molto sciocco di me. 591 00:34:58,760 --> 00:35:01,640 Ho creato una vista, ma non ho impostato la vista come la risposta, 592 00:35:01,640 --> 00:35:03,190 quindi bisogna fare di più 1 cosa. 593 00:35:03,190 --> 00:35:12,610 Devi fare "questo corpo di risposta" e impostarlo per essere vista. 594 00:35:12,610 --> 00:35:14,760 Ci andiamo. 595 00:35:14,760 --> 00:35:17,200 Noi abbiamo la nostra voce, e poi abbiamo un post, 596 00:35:17,200 --> 00:35:20,500 e solo per i calci, inseriamo un altro post 597 00:35:20,500 --> 00:35:23,390 così possiamo vedere una lista. 598 00:35:31,800 --> 00:35:36,650 E inserire questi 2 posti, 599 00:35:36,650 --> 00:35:39,500 e ora se mi aggiorna la pagina, 600 00:35:39,500 --> 00:35:42,060 vediamo tutti questi posti qua. 601 00:35:42,060 --> 00:35:44,250 >> Il che ha senso fino ad ora? 602 00:35:44,250 --> 00:35:46,400 Sì, una domanda? Oh, okay. 603 00:35:46,400 --> 00:35:51,440 Come potete vedere, siamo stati in grado di separare tutti questi codici out 604 00:35:51,440 --> 00:35:53,920 in diverse sezioni, e poi si può vedere che è più chiaro con il codice della vista. 605 00:35:53,920 --> 00:35:57,810 Questo file qui che rappresenta la visualizzazione, 606 00:35:57,810 --> 00:36:01,220 si preoccupa solo di rappresentazione dei dati, la visualizzazione dei dati. 607 00:36:01,220 --> 00:36:04,310 Esso viene passato qualche tipo di dati, e tutto ciò che fa è solo mostrare a voi. 608 00:36:04,310 --> 00:36:07,660 In tutte le altre parti del codice, non dovrete preoccuparvi di nulla di tutto ciò, 609 00:36:07,660 --> 00:36:10,480 e allo stesso modo, il codice vista non si deve preoccupare nulla 610 00:36:10,480 --> 00:36:13,390 come accedere al database e così via e così via, 611 00:36:13,390 --> 00:36:19,950 che è veramente buono e rende il codice molto più gestibile. 612 00:36:19,950 --> 00:36:23,390 Come ho detto, vista, sono dinamica che 613 00:36:23,390 --> 00:36:27,080 è 1 file, ma genererebbe diversi punti di vista 614 00:36:27,080 --> 00:36:29,940 in base alle variabili che effettivamente passano, 615 00:36:29,940 --> 00:36:32,370 e, inoltre, vi sono molte diverse funzioni di supporto 616 00:36:32,370 --> 00:36:34,230 che è possibile utilizzare per aiutare a scrivere il codice più velocemente, 617 00:36:34,230 --> 00:36:36,320 che vi mostrerò in appena un secondo. 618 00:36:36,320 --> 00:36:38,050 Già. 619 00:36:38,050 --> 00:36:42,490 >> [Studente] Quindi, $ 0 è un controller, giusto? 620 00:36:42,490 --> 00:36:44,000 Questa seconda cosa. 621 00:36:44,000 --> 00:36:46,090 La domanda è: è $ 0 un controllore? 622 00:36:46,090 --> 00:36:48,610 0 $ è una variabile che ho creato proprio qui. 623 00:36:48,610 --> 00:36:51,320 Ho creato una vista prima. Ho assegnato a qualche variabile. 624 00:36:51,320 --> 00:36:54,960 Poi ho passato in questa funzione, impostare come il corpo della risposta. 625 00:36:54,960 --> 00:36:57,260 Ritiene che senso? 626 00:36:57,260 --> 00:37:02,200 [Studente] Così è la vista :: fabbrica, è vista come una classe 627 00:37:02,200 --> 00:37:06,610 o un [incomprensibile] funzione factory biblioteca? 628 00:37:06,610 --> 00:37:10,640 La domanda riguarda la funzione di visualizzazione :: fabbrica, 629 00:37:10,640 --> 00:37:14,020 e in fondo questo è un po 'più di programmazione orientata agli oggetti essenzialmente. 630 00:37:14,020 --> 00:37:18,000 Vista è la classe di visualizzazione, e ha un metodo chiamato "Factory", 631 00:37:18,000 --> 00:37:24,170 e questo è un modo per afferrare l'oggetto che viene chiamato "blog / index." 632 00:37:24,170 --> 00:37:27,140 E questo è un po 'più orientato agli oggetti roba programmazione 633 00:37:27,140 --> 00:37:33,010 che io non ho intenzione di andare in qui troppo. 634 00:37:33,010 --> 00:37:36,400 Ora, ovviamente, vogliamo creare nuovi posti, 635 00:37:36,400 --> 00:37:38,790 ma non vogliamo avere a che fare attraverso un database, 636 00:37:38,790 --> 00:37:41,280 così stiamo andando a creare una nuova azione per la creazione di un nuovo post, 637 00:37:41,280 --> 00:37:43,050 e c'è un sacco di cose che dobbiamo fare. 638 00:37:43,050 --> 00:37:45,910 >> La prima cosa che andremo a fare - cerchiamo di affrontare queste cose una per una. 639 00:37:45,910 --> 00:37:48,320 La prima cosa che faremo è che abbiamo avuto modo di creare un modulo 640 00:37:48,320 --> 00:37:54,460 per inserire un nuovo post, 641 00:37:54,460 --> 00:37:57,360 ma ho anche intenzione di aggiungere una nuova azione prima, 642 00:37:57,360 --> 00:38:01,050 quindi l'aggiunta di una nuova azione è semplice come 643 00:38:01,050 --> 00:38:03,490 l'aggiunta di una nuova funzione con il controller, 644 00:38:03,490 --> 00:38:13,710 e per ora ho intenzione di fare qualcosa di molto semplice, 645 00:38:13,710 --> 00:38:20,850 basta afferrare questo punto di vista e post-it, basta visualizzarlo per te. 646 00:38:20,850 --> 00:38:26,220 E poi ora ho intenzione di creare un nuovo file di visualizzazione, 647 00:38:26,220 --> 00:38:33,690 e ho intenzione di iniziare a scrivere alcune cose. 648 00:38:33,690 --> 00:38:36,540 Il bello di Kohana è che essi forniscono un sacco di diverse funzioni di supporto 649 00:38:36,540 --> 00:38:38,790 per voi a scrivere il codice vista più facilmente, 650 00:38:38,790 --> 00:38:41,970 e 1 di quelle funzioni di supporto o moduli di supporto 651 00:38:41,970 --> 00:38:45,860 è intorno a scrivere forme. 652 00:38:45,860 --> 00:38:49,460 Per scrivere moduli, non ho davvero scrivere direttamente codice HTML me stesso. 653 00:38:49,460 --> 00:38:51,100 Voi ragazzi avete scritto form HTML. 654 00:38:51,100 --> 00:38:54,850 Sapete come può essere molto, molto doloroso e ingombrante per scrivere forme. 655 00:38:54,850 --> 00:38:59,970 Non è divertente, per fortuna, 656 00:38:59,970 --> 00:39:04,860 possiamo fondamentalmente scrivere un form utilizzando Kohana di 657 00:39:04,860 --> 00:39:11,190 formare funzioni di supporto per farlo per noi. 658 00:39:11,190 --> 00:39:17,340 Stiamo per avere fondamentalmente campi per ogni singola cosa che abbiamo, 659 00:39:17,340 --> 00:39:23,160 così uno per gli autori e uno per i corpi. 660 00:39:23,160 --> 00:39:27,090 Stiamo per avere una etichetta, e stiamo andando ad avere un ingresso. 661 00:39:37,450 --> 00:39:41,360 >> E poi finalmente, stiamo per avere una presentazione. 662 00:39:49,350 --> 00:39:52,230 E come potete vedere, questo è molto più pulito di scrivere 663 00:39:52,230 --> 00:39:58,150 di tutto ciò che HTML disordinato, che è una specie di piacevole. 664 00:39:58,150 --> 00:40:00,930 Certo, ci sono altri framework web che hanno ancora più pulito di quello, 665 00:40:00,930 --> 00:40:04,440 ma almeno questo è meglio che scrivere il codice HTML da soli. 666 00:40:09,400 --> 00:40:11,130 Impressionante, quindi questo è ciò che si vede. 667 00:40:11,130 --> 00:40:13,530 Questo è il tipo di disordinato, 668 00:40:13,530 --> 00:40:19,720 così ho intenzione di aggiungere una interruzione di linea lì 669 00:40:19,720 --> 00:40:21,180 a fare quello sguardo un po 'più bello. 670 00:40:21,180 --> 00:40:23,330 Beh, certo, sembra ancora molto, molto male, ma siamo solo focalizzata 671 00:40:23,330 --> 00:40:26,050 sulla funzionalità per ora e non sull'estetica. 672 00:40:26,050 --> 00:40:28,010 Non c'è tempo per fare tutto. 673 00:40:28,010 --> 00:40:30,600 E come potete vedere, ora abbiamo una forma eccellente di base, 674 00:40:30,600 --> 00:40:32,080 che è una specie di piacevole. 675 00:40:32,080 --> 00:40:36,730 Questo codice direi che è più pulita di cercare di scrivere un HTML formare se stessi, 676 00:40:36,730 --> 00:40:40,290 così che è bello. 677 00:40:40,290 --> 00:40:42,030 Quali sono le prospettive? 678 00:40:42,030 --> 00:40:49,260 Ora abbiamo bisogno di fare le cose con l'azione. 679 00:40:49,260 --> 00:40:51,240 Normalmente, quando si scrive moduli HTML, 680 00:40:51,240 --> 00:40:54,070 devi dirgli dove sta andando a presentare il modulo. 681 00:40:54,070 --> 00:40:56,050 Per impostazione predefinita, nella maggior parte dei framework web, 682 00:40:56,050 --> 00:40:58,200 sottopone alla stessa identica URL, quindi la cosa è, 683 00:40:58,200 --> 00:41:01,310 se si invia una richiesta GET / blog / nuovo, 684 00:41:01,310 --> 00:41:03,240 dovrebbe visualizzare il modulo, 685 00:41:03,240 --> 00:41:06,810 ma se si invia una richiesta POST a / blog / nuovo con i dati, 686 00:41:06,810 --> 00:41:10,000 esso dovrebbe effettivamente provare a salvare quel post 687 00:41:10,000 --> 00:41:13,300 e fare qualcosa con esso. 688 00:41:20,630 --> 00:41:22,180 >> Quello che andremo a fare è 689 00:41:22,180 --> 00:41:25,320 praticamente tutto quello che dobbiamo fare per verificare se si tratta di una richiesta POST o una richiesta GET 690 00:41:25,320 --> 00:41:29,350 è quello di verificare quali sono le variabili postali è possibile impostare. 691 00:41:29,350 --> 00:41:34,560 E se la variabile post è impostata, quindi andremo a cercare di creare un nuovo post. 692 00:41:34,560 --> 00:41:38,440 Ancora una volta, dobbiamo solo fare questo, 693 00:41:38,440 --> 00:41:41,090 e che crea un nuovo post, e stiamo letteralmente andando a 694 00:41:41,090 --> 00:41:51,150 impostare i campi come questo, 695 00:41:51,150 --> 00:41:55,640 e poi andremo a salvarlo. 696 00:41:55,640 --> 00:41:59,200 E poi ho intenzione di reindirizzare 697 00:41:59,200 --> 00:42:07,660 alla pagina indice in modo che possano vedere la nostra lista di posti di nuovo. 698 00:42:07,660 --> 00:42:09,620 Proviamo questo. 699 00:42:09,620 --> 00:42:15,160 Dirò, "Brandon" 700 00:42:15,160 --> 00:42:18,140 e quindi inviare il post, e se tutto va bene, 701 00:42:18,140 --> 00:42:21,390 come potete vedere, mi ha reindirizzato alla pagina di indice, 702 00:42:21,390 --> 00:42:24,140 e se scorrere fino alla fine, abbiamo un post appena inserito. 703 00:42:24,140 --> 00:42:26,430 Yay! 704 00:42:26,430 --> 00:42:28,430 Gia ', questione. 705 00:42:28,430 --> 00:42:31,760 >> [Studente] Che cosa se tu avessi inserito esattamente la stessa cosa 706 00:42:31,760 --> 00:42:33,380 immesso prima? 707 00:42:33,380 --> 00:42:36,950 Ha controllare per essere sicuri di non aver duplicato 708 00:42:36,950 --> 00:42:38,810 la stessa presentazione? 709 00:42:38,810 --> 00:42:41,660 Essere di default, no, perché di default - 710 00:42:41,660 --> 00:42:46,470 scusate, la questione è se si entra negli stessi dati esatti in forma 711 00:42:46,470 --> 00:42:50,180 e sostengono che, sarà permetterà di inserire un oggetto duplicato, 712 00:42:50,180 --> 00:42:52,550 un duplicato voce, in sostanza? 713 00:42:52,550 --> 00:42:54,070 In questo momento, sì, vi permetterà di farlo, 714 00:42:54,070 --> 00:42:58,860 perché nel database è perfettamente valida avere righe completamente duplicate, 715 00:42:58,860 --> 00:43:02,260 ma se questo è un problema, allora si può aggiungere validazioni, per esempio, 716 00:43:02,260 --> 00:43:06,430 fare in modo che, se questo è esattamente lo stesso come qualcosa che già esiste, 717 00:43:06,430 --> 00:43:08,720 poi dire che si tratta di un oggetto non valido, 718 00:43:08,720 --> 00:43:11,200 e poi si può anche specificare il messaggio di errore 719 00:43:11,200 --> 00:43:14,390 e dire: "non valido perché questo già esiste", o qualcosa di simile. 720 00:43:14,390 --> 00:43:22,420 Ma in questo caso, potrei semplicemente creare qualcosa duplicato. 721 00:43:22,420 --> 00:43:26,010 Ora proviamo e aggiungere alcune convalide. 722 00:43:26,010 --> 00:43:30,400 Il problema di questo momento è che 723 00:43:30,400 --> 00:43:34,220 Potrei letteralmente inviare un post completamente vuoto. 724 00:43:34,220 --> 00:43:37,500 Posso fare clic su questo pulsante destro del momento, e ci andiamo. 725 00:43:37,500 --> 00:43:40,290 Non si può davvero vedere, ma questa linea supplementare qui 726 00:43:40,290 --> 00:43:43,830 indica che ho letteralmente ho un nuovo post. 727 00:43:43,830 --> 00:43:46,050 E 'solo un autore bianco e un corpo vuoto, 728 00:43:46,050 --> 00:43:48,630 e noi non vogliamo permettere alle persone di farlo. 729 00:43:48,630 --> 00:43:52,550 Qui è dove entra in gioco la convalida 730 00:43:52,550 --> 00:43:57,540 >> Posso andare al mio oggetto del modello, 731 00:43:57,540 --> 00:43:59,530 e ora posso aggiungere una nuova funzione che specifica 732 00:43:59,530 --> 00:44:02,000 quali regole di convalida dovrei aggiungere a questo modello 733 00:44:02,000 --> 00:44:06,840 per assicurarsi che sia valido o specificare che cosa significa essere un messaggio validi? 734 00:44:06,840 --> 00:44:10,210 E voglio dire che è solo un post valida se sia l'autore e il corpo 735 00:44:10,210 --> 00:44:15,150 non sono vuote, e questo è come si fa in Kohana. 736 00:44:15,150 --> 00:44:18,750 Si crea una nuova funzione chiamata "Regole" 737 00:44:18,750 --> 00:44:20,210 e poi che, fondamentalmente, torna un array associativo 738 00:44:20,210 --> 00:44:24,230 che definisce le regole di convalida per questo oggetto. 739 00:44:24,230 --> 00:44:27,530 Stiamo per restituire la matrice, e poi quello che andremo a fare è 740 00:44:27,530 --> 00:44:32,820 dire "autore", si va a un array, 741 00:44:32,820 --> 00:44:37,720 che va a un altro array chiamato "non vuota". 742 00:44:37,720 --> 00:44:41,480 E poi ho intenzione di dire "corpo". 743 00:44:50,980 --> 00:44:54,120 Okay, e la sintassi per questo e la struttura di questo 744 00:44:54,120 --> 00:44:56,530 può sembrare un po 'ingombrante e un po' complicato. 745 00:44:56,530 --> 00:44:59,330 Se leggete la documentazione, è abbastanza semplice da capire, 746 00:44:59,330 --> 00:45:02,500 Ma in sostanza questo è ciò che devi fare per specificare 747 00:45:02,500 --> 00:45:04,130 alcune regole di convalida, e ci sono un sacco di regole diverse 748 00:45:04,130 --> 00:45:06,810 che Kohana vi darà gratuitamente, come è possibile aggiungere regole a dire 749 00:45:06,810 --> 00:45:08,410 deve essere almeno tale lunghezza. 750 00:45:08,410 --> 00:45:11,800 Forse deve essere numerico. Forse deve essere alfanumerica. 751 00:45:11,800 --> 00:45:14,410 Forse deve essere al massimo questa lunghezza, così via e così via. 752 00:45:14,410 --> 00:45:17,730 Ci sono un sacco di regole diverse che Kohana prevede per voi, 753 00:45:17,730 --> 00:45:19,610 e si può andare sul loro sito web, consultare la documentazione, 754 00:45:19,610 --> 00:45:23,150 e si possono vedere tutte le cose diverse che si possono fare. 755 00:45:23,150 --> 00:45:25,650 >> Ma questo è tutto quello che devo fare, 756 00:45:25,650 --> 00:45:30,490 e ora vediamo cosa succede 757 00:45:30,490 --> 00:45:34,060 se presento un post vuoto. 758 00:45:34,060 --> 00:45:36,960 Cosa succederà? Oh, no, ottengo un errore. 759 00:45:36,960 --> 00:45:39,440 Ottengo un'eccezione di convalida. 760 00:45:39,440 --> 00:45:41,070 Beh, è ​​buono. 761 00:45:41,070 --> 00:45:43,200 Mi ha detto che il mio modello è valido, 762 00:45:43,200 --> 00:45:45,780 ma io non voglio visualizzare un'eccezione 763 00:45:45,780 --> 00:45:48,720 ai miei utenti quando cercano di presentare qualcosa di valido, giusto? 764 00:45:48,720 --> 00:45:51,560 Voglio dare loro una sorta di messaggio di errore amichevole 765 00:45:51,560 --> 00:45:53,610 quando qualcosa va storto. 766 00:45:53,610 --> 00:46:01,830 Quello che andremo a fare è che andremo a 767 00:46:01,830 --> 00:46:04,490 avvolgere tutto in un ciclo try catch. 768 00:46:04,490 --> 00:46:06,750 In realtà, credo che questo sia anche qualcosa che non hai ancora imparato 769 00:46:06,750 --> 00:46:10,820 in CS50, perché C, il linguaggio di programmazione C, 770 00:46:10,820 --> 00:46:14,000 non ha eccezioni, ma quasi ogni altra lingua 771 00:46:14,000 --> 00:46:16,700 ha eccezioni, così davvero, davvero brevemente, 772 00:46:16,700 --> 00:46:19,430 un'eccezione è qualcosa che un pezzo di codice può 773 00:46:19,430 --> 00:46:21,430 un'eccezione quando qualcosa va storto, 774 00:46:21,430 --> 00:46:23,410 ma poi forse qualche altro pezzo di codice più in alto 775 00:46:23,410 --> 00:46:25,810 può prendere tale eccezione e fare qualcosa con esso. 776 00:46:25,810 --> 00:46:27,710 >> Ad esempio, in questo caso, 777 00:46:27,710 --> 00:46:29,940 il pezzo di codice che sta cercando di salvare un modello, 778 00:46:29,940 --> 00:46:33,170 convalida del modello, e se dice: "Okay, questo modello è valido" 779 00:46:33,170 --> 00:46:36,150 sta andando un'eccezione, e questo è una specie di equivalente a 780 00:46:36,150 --> 00:46:39,870 in C si potrebbe restituire un -1 o qualcosa di simile. 781 00:46:39,870 --> 00:46:42,320 E poi, per me, questa funzione, il mio codice 782 00:46:42,320 --> 00:46:46,310 ad un livello superiore, posso provare e prendere tale eccezione 783 00:46:46,310 --> 00:46:49,330 e in fondo dico: "Va bene, se prendo l'eccezione, cosa devo fare?" 784 00:46:49,330 --> 00:46:51,570 Oppure potrei scegliere di non prendere quel eccezione e lasciare che qualcuno più in alto 785 00:46:51,570 --> 00:46:54,400 intercettare l'eccezione, o se nessuno la prende, 786 00:46:54,400 --> 00:46:56,820 quindi l'intero programma si blocca e dice: 787 00:46:56,820 --> 00:46:59,170 "Qualcosa è andato storto, e non ho potuto gestire." 788 00:46:59,170 --> 00:47:04,490 >> Ma quello che facciamo è avvolgere un pezzo di codice in un blocco try, 789 00:47:04,490 --> 00:47:09,030 e poi si aggiunge anche qualcosa chiamato un blocco catch, 790 00:47:09,030 --> 00:47:17,300 che è il tipo di codice che cercherà di intercettare le eccezioni che possono verificarsi. 791 00:47:17,300 --> 00:47:20,430 E così, se prendo questa particolare eccezione 792 00:47:20,430 --> 00:47:23,110 o eccezione invalidazione, allora che cosa ho intenzione di fare è 793 00:47:23,110 --> 00:47:31,210 Ho intenzione di impostare gli errori - Penso che sia come lo faccio - 794 00:47:31,210 --> 00:47:35,370 e ho intenzione di impostare gli errori di qualche oggetto. 795 00:47:35,370 --> 00:47:40,920 E allora che cosa ho intenzione di fare è se colpisce questa eccezione, 796 00:47:40,920 --> 00:47:43,090 non sta andando per reindirizzare, e se non reindirizza, 797 00:47:43,090 --> 00:47:46,160 che sta per uscire dal caso blog 798 00:47:46,160 --> 00:47:49,920 e ha colpito questo blog / nuovo, che si voglio voglio fare. 799 00:47:49,920 --> 00:47:53,190 Se c'è un errore, allora voglio tornare al modulo 800 00:47:53,190 --> 00:47:55,100 e visualizzare tali errori. 801 00:47:55,100 --> 00:48:00,780 Ora quello che voglio fare è che voglio passare quegli errori 802 00:48:00,780 --> 00:48:07,010 alla vista. 803 00:48:07,010 --> 00:48:10,360 Ok, penso di avere la vista proprio qui, 804 00:48:10,360 --> 00:48:14,660 e fondamentalmente voglio visualizzare tali errori se esistono. 805 00:48:14,660 --> 00:48:19,740 Prima di scrivere il codice HTML per questo, sto andando davvero in fretta 806 00:48:19,740 --> 00:48:21,720 mostrare ciò che la struttura di questi errori sguardi variabili come, 807 00:48:21,720 --> 00:48:23,080 e questa è una buona pratica in generale. 808 00:48:23,080 --> 00:48:25,070 Un sacco di volte si ottiene qualcosa da qualche metodo, 809 00:48:25,070 --> 00:48:27,250 qualche funzione nell'ambito web, 810 00:48:27,250 --> 00:48:29,410 e tu non sai cosa la variabile sembra, 811 00:48:29,410 --> 00:48:31,210 quindi non si sa come lavorare con esso. 812 00:48:31,210 --> 00:48:37,790 Ho intenzione di utilizzare un metodo di stampa r per stamparlo in fondo. 813 00:48:37,790 --> 00:48:41,100 >> E come potete vedere, mi dice che è una matrice socio, 814 00:48:41,100 --> 00:48:44,880 e si dispone di una chiave, autore, punti a questa stringa, 815 00:48:44,880 --> 00:48:47,050 l'autore non deve essere vuoto, e un altro tasto, il corpo, 816 00:48:47,050 --> 00:48:49,680 punti per un'altra stringa, il corpo non deve essere vuoto. 817 00:48:49,680 --> 00:48:52,130 Mi piace, va bene, fresco. 818 00:48:52,130 --> 00:48:56,230 Allora posso scorrere la matrice e stampare ogni singolo messaggio. 819 00:48:56,230 --> 00:49:02,150 E 'fondamentalmente come un array associativo con un gruppo di messaggi. 820 00:49:02,150 --> 00:49:13,500 Quello che ho intenzione di fare è "se errori" 821 00:49:13,500 --> 00:49:17,140 e ho intenzione di creare una lista non ordinata, 822 00:49:17,140 --> 00:49:20,860 e ho intenzione di scorrere tutti gli errori. 823 00:49:33,730 --> 00:49:38,710 E questo, e ora ho intenzione di provare a inviare di nuovo, 824 00:49:38,710 --> 00:49:41,200 e vediamo cosa otteniamo. 825 00:49:41,200 --> 00:49:45,370 Ora abbiamo questa bella lista di errori, 826 00:49:45,370 --> 00:49:48,630 e questo è ancora piuttosto brutto, ma questo ovviamente può essere formattato aspetto gradevole, 827 00:49:48,630 --> 00:49:51,620 ma l'idea di base è solo in poche linee di codice, 828 00:49:51,620 --> 00:49:53,720 siamo stati in grado di validare il nostro modello, 829 00:49:53,720 --> 00:49:56,510 fare in modo che alcuni campi non erano vuoti, 830 00:49:56,510 --> 00:49:59,740 e se qualcosa è andato storto, per poi tornare una sorta di messaggio di errore 831 00:49:59,740 --> 00:50:01,760 Ho potuto quindi presentare di nuovo per l'utente. 832 00:50:01,760 --> 00:50:03,910 È inoltre possibile personalizzare la vostra convalida 833 00:50:03,910 --> 00:50:07,590 in modo che si può effettivamente avere un messaggio di errore 834 00:50:07,590 --> 00:50:09,620 che è più specifica per l'applicazione o qualcosa di simile. 835 00:50:09,620 --> 00:50:14,600 Tutto ciò che è generalmente personalizzabile. 836 00:50:14,600 --> 00:50:17,150 >> Purtroppo, siamo a corto di tempo, 837 00:50:17,150 --> 00:50:20,040 così ho intenzione di dover tagliare la sessione di codifica diretta qui. 838 00:50:20,040 --> 00:50:22,980 Ci sono un sacco di altre caratteristiche che voglio dimostrare per voi 839 00:50:22,980 --> 00:50:25,650 in questo esempio. 840 00:50:25,650 --> 00:50:27,620 Ad esempio, è possibile aggiungere modelli per il tuo sito, 841 00:50:27,620 --> 00:50:31,110 così forse c'è qualche sorta di codice HTML che si desidera applicare 842 00:50:31,110 --> 00:50:35,190 ad ogni singola pagina del sito, e invece di incollare che 843 00:50:35,190 --> 00:50:40,630 in ogni singolo file vista che hai, che ovviamente sarebbe una cattiva pratica, 844 00:50:40,630 --> 00:50:43,020 si può sostanzialmente definire questi modelli, 845 00:50:43,020 --> 00:50:46,660 e poi nel controller dico: "Va bene, sto usando questo modello." 846 00:50:46,660 --> 00:50:50,130 "Sono tutte le mie opinioni utilizzare questo modello." 847 00:50:50,130 --> 00:50:52,470 E l'ultima cosa che voglio dimostrare a voi pure 848 00:50:52,470 --> 00:50:57,800 che non abbiamo tempo per è cross-site scripting, 849 00:50:57,800 --> 00:51:01,430 e in fondo penso che voi ragazzi avete probabilmente visto in CS50 - 850 00:51:01,430 --> 00:51:03,770 Penso che David Malan probabilmente ha parlato di come di solito si può iniettare 851 00:51:03,770 --> 00:51:08,040 Il codice JavaScript in - hai parlato di questo? 852 00:51:08,040 --> 00:51:10,220 Forse? Forse no? 853 00:51:10,220 --> 00:51:12,670 >> Ma un sacco di volte che si può iniettare codice JavaScript malevolo 854 00:51:12,670 --> 00:51:15,630 nella banca dati di qualcuno, e se non sfuggono che correttamente, 855 00:51:15,630 --> 00:51:18,280 poi quando presentano i dati di nuovo per l'utente, 856 00:51:18,280 --> 00:51:21,310 allora può eseguire una sorta di codice JavaScript casuale non si vuole che accada, 857 00:51:21,310 --> 00:51:23,050 e stavo per dimostrare come si farebbe che entro Kohana. 858 00:51:23,050 --> 00:51:25,380 In realtà è molto, molto facile. 859 00:51:25,380 --> 00:51:31,920 Potrei farlo adesso in 2 secondi, letteralmente. 860 00:51:31,920 --> 00:51:34,560 Tutto quello che dovete fare è fondamentalmente avvolgere queste cose 861 00:51:34,560 --> 00:51:46,920 in questa cosa chiamata entità HTML. 862 00:51:46,920 --> 00:51:51,180 E che fuggire automaticamente tutti i caratteri correttamente 863 00:51:51,180 --> 00:51:54,730 e assicuratevi di non avere questo problema. 864 00:51:54,730 --> 00:51:57,220 [Studente] Lei digitato il primo test in modo errato. 865 00:51:57,220 --> 00:52:01,030 [Brandon Liu] Oh, oops. 866 00:52:01,030 --> 00:52:06,420 >> Ok, questo è tutto quello che dovevo condividere con voi oggi. 867 00:52:06,420 --> 00:52:09,930 Queste diapositive stanno per essere pubblicato, ma questi sono generalmente 868 00:52:09,930 --> 00:52:13,900 le uniche risorse si dovrebbe realmente bisogno per iniziare con Kohana. 869 00:52:13,900 --> 00:52:16,770 Si può andare al sito. Hanno una guida d'uso, e hanno anche una API esploratore. 870 00:52:16,770 --> 00:52:20,630 Siamo in grado di esplorare tutte le diverse funzioni e funzioni di supporto che hanno per voi. 871 00:52:20,630 --> 00:52:22,070 Generalmente hanno sufficienti informazioni sul sito 872 00:52:22,070 --> 00:52:25,310 che è possibile utilizzare per iniziare e andare avanti con Kohana. 873 00:52:25,310 --> 00:52:30,840 Non ci sono molti tutorial, credo, per Kohana, al di fuori di 874 00:52:30,840 --> 00:52:33,880 quello che hanno sul sito qui, quindi questa è probabilmente la scelta migliore. 875 00:52:33,880 --> 00:52:35,600 Ma se si vuole andare con il framework web 876 00:52:35,600 --> 00:52:37,120 e non si vuole avere a raccogliere una nuova lingua, 877 00:52:37,120 --> 00:52:39,780 e si desidera qualcosa che è relativamente leggero e ha una curva di apprendimento facile, 878 00:52:39,780 --> 00:52:41,570 Consiglierei assolutamente Kohana. 879 00:52:41,570 --> 00:52:44,040 Questa è probabilmente la migliore offerta per questo. 880 00:52:44,040 --> 00:52:46,830 La cosa divertente, però, è se stessimo usando Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 avremmo potuto replicare quello che abbiamo appena fatto 882 00:52:48,550 --> 00:52:51,430 e probabilmente più in meno di tre minuti. 883 00:52:51,430 --> 00:52:54,710 Non è uno scherzo, ma imparare Ruby on Rails richiede molto più tempo 884 00:52:54,710 --> 00:52:56,780 quello che ci vuole per imparare Kohana. 885 00:52:56,780 --> 00:52:58,840 E 'fondamentalmente la vostra scelta su ciò che si vuole scegliere di imparare, 886 00:52:58,840 --> 00:53:01,260 ma se si vuole ottenere rapidamente operativi, 887 00:53:01,260 --> 00:53:03,870 Kohana è sicuramente una scelta molto buona. 888 00:53:03,870 --> 00:53:06,730 >> Tutte le ultime domande prima finiamo? Sì. 889 00:53:06,730 --> 00:53:08,020 [Studente] Come possiamo integrare il 890 00:53:08,020 --> 00:53:13,120 in un quadro CSS come si stava utilizzando quando stavi insegnando? 891 00:53:13,120 --> 00:53:16,700 La domanda è: come potremmo integrare il quadro con un CSS? 892 00:53:16,700 --> 00:53:18,740 Quello che probabilmente avremmo fatto è probabilmente avremmo includere 893 00:53:18,740 --> 00:53:21,090 una nuova cartella in cui vorremmo scaricare tutti i nostri file CSS, 894 00:53:21,090 --> 00:53:23,010 e poi avremmo anche aggiungere un nuovo modello. 895 00:53:23,010 --> 00:53:26,090 Nel modello che avevamo includiamo i file CSS 896 00:53:26,090 --> 00:53:28,410 per assicurarsi che stanno riferimento a ogni singola pagina, 897 00:53:28,410 --> 00:53:32,220 e poi quando in realtà sta scrivendo HTML, 898 00:53:32,220 --> 00:53:34,010 basta aggiungere classi e quant'altro appropriati, 899 00:53:34,010 --> 00:53:36,100 e, per esempio, quando si utilizza qualcosa come la forma 900 00:53:36,100 --> 00:53:40,710 funzione di supporto, è possibile aggiungere più parametri in seguito 901 00:53:40,710 --> 00:53:42,830 per specificare quali classi si desidera essere collegato a varie cose 902 00:53:42,830 --> 00:53:47,820 in modo che potessero stile correttamente, e questo è in fondo come si dovrebbe andare. 903 00:53:47,820 --> 00:53:50,100 >> Altre domande? 904 00:53:50,100 --> 00:53:52,090 Impressionante. 905 00:53:52,090 --> 00:53:58,540 Grazie per il vostro tempo, e vi ringrazio per essere venuti. 906 00:53:58,540 --> 00:54:05,170 Non avevo intenzione di aggiungere molto altro, 907 00:54:05,170 --> 00:54:08,560 ma 1 cosa veramente breve è che non abbiamo un collegamento 908 00:54:08,560 --> 00:54:12,590 alla forma. 909 00:54:12,590 --> 00:54:14,310 Veramente stupido. 910 00:54:14,310 --> 00:54:20,110 Aggiungiamo a - in realtà nella vista, blog, indice, 911 00:54:20,110 --> 00:54:23,890 diamo davvero aggiungere rapidamente un collegamento che va alla nuova pagina, 912 00:54:23,890 --> 00:54:26,770 la pagina in cui possiamo inserire un nuovo post. 913 00:54:26,770 --> 00:54:29,950 Stiamo andando a fare questo. 914 00:54:29,950 --> 00:54:34,020 Il bello è che c'è tutto questo gruppo di funzioni helper HTML 915 00:54:34,020 --> 00:54:37,090 che fare diverse cose per voi, in modo già visto le entità 916 00:54:37,090 --> 00:54:41,980 funzionare qui, ma hanno anche una funzione chiamata "anchor" 917 00:54:41,980 --> 00:54:45,400 che è possibile digitare in blog / nuovo 918 00:54:45,400 --> 00:54:49,550 e dire: "Apri un nuovo blog." 919 00:54:49,550 --> 00:54:51,850 E sarebbe creare quel link per te, 920 00:54:51,850 --> 00:54:54,120 e questo sembra davvero banale da fare, ma questo è bello, 921 00:54:54,120 --> 00:54:58,720 perché supponiamo che si sta spostando il vostro sito web da 1 dominio ad un altro. 922 00:54:58,720 --> 00:55:01,390 E se hai appena scritto le URL da soli, 923 00:55:01,390 --> 00:55:04,350 allora si dovrebbe cambiare tutti gli URL. 924 00:55:04,350 --> 00:55:06,850 O forse si è spostato dal 1 sottocartella ad un'altra sottocartella. 925 00:55:06,850 --> 00:55:08,790 Si dovrebbe cambiare tutte le URL da soli, 926 00:55:08,790 --> 00:55:12,180 e che non è divertente. 927 00:55:12,180 --> 00:55:14,510 È possibile utilizzare questa ancora qui, 928 00:55:14,510 --> 00:55:18,950 e si può cambiare il dominio o il prefisso sottocartella 929 00:55:18,950 --> 00:55:20,640 nel file di configurazione una volta, 930 00:55:20,640 --> 00:55:22,980 e allora sarà diffusa che ovunque, e questo è, di nuovo, 931 00:55:22,980 --> 00:55:26,930 un grande esempio di non ripetere se stessi, asciugare il codice fuori. 932 00:55:26,930 --> 00:55:30,370 Ovunque si sta ripetendo te stesso, cercare ed estrarre in una sorta di file di configurazione 933 00:55:30,370 --> 00:55:34,160 o ad una funzione diversa e farlo gestire per voi. 934 00:55:34,160 --> 00:55:42,930 >> E l'ultima cosa che volevo mostrare era 935 00:55:42,930 --> 00:55:50,250 supponiamo siamo tornati in questo post, e avevo composto alcuni davvero lungo saggio, 936 00:55:50,250 --> 00:55:52,670 ma ho dimenticato di includere il mio autore. 937 00:55:52,670 --> 00:55:55,210 Ora, quando clicco su "Invia Messaggio" 938 00:55:55,210 --> 00:55:57,270 Ho appena perso tutto. 939 00:55:57,270 --> 00:56:00,000 No! Davvero triste. 940 00:56:00,000 --> 00:56:03,870 Così come si fa a trattare con questo? 941 00:56:03,870 --> 00:56:06,070 Questo è quello che facciamo. 942 00:56:06,070 --> 00:56:09,340 Quello che facciamo è qui per queste funzioni di ingresso e area di testo, 943 00:56:09,340 --> 00:56:12,700 se si include un secondo parametro, allora il valore di tale secondo parametro 944 00:56:12,700 --> 00:56:16,620 sta per essere quello che il campo sta per essere inizialmente popolata con. 945 00:56:16,620 --> 00:56:23,570 Quello che potremmo fare è nel nostro regolatore blog, 946 00:56:23,570 --> 00:56:25,360 potremmo associare un'altra variabile. 947 00:56:25,360 --> 00:56:27,050 Chiamatela "valori" forse. 948 00:56:27,050 --> 00:56:30,620 E passare nella matrice postale, letteralmente. 949 00:56:30,620 --> 00:56:32,620 Questo significa che se la convalida non è riuscita, 950 00:56:32,620 --> 00:56:36,570 passare a me la matrice post che ho presentato dalla ultima richiesta, 951 00:56:36,570 --> 00:56:38,420 e in questo modo posso utilizzare i valori dalla mia ultima presentazione 952 00:56:38,420 --> 00:56:44,540 per ripopolare i campi. 953 00:56:44,540 --> 00:56:49,600 Ora posso fare qualcosa come valori autore 954 00:56:49,600 --> 00:56:55,180 e valori del corpo, e in questo modo ora se faccio alcune cose a caso 955 00:56:55,180 --> 00:57:01,490 e fare clic su "Invia Messaggio", quindi rimane lì. 956 00:57:01,490 --> 00:57:03,830 Ma stiamo andando a correre in un altro problema. 957 00:57:03,830 --> 00:57:07,670 Che funziona, ma se vado alla pagina la prima volta, 958 00:57:07,670 --> 00:57:09,720 sta andando in crash, e questo perché la prima volta 959 00:57:09,720 --> 00:57:13,730 andiamo alla pagina, questa variabile messaggio non è stato ancora definito. 960 00:57:13,730 --> 00:57:18,170 E 'nullo. Non esiste. 961 00:57:18,170 --> 00:57:21,630 >> E quello che vogliamo dire è che se questa chiave esiste, 962 00:57:21,630 --> 00:57:27,750 poi restituire il valore di questa matrice, 963 00:57:27,750 --> 00:57:30,450 ma se la chiave non esiste, allora restituire una stringa vuota. 964 00:57:30,450 --> 00:57:32,150 Questa è la funzionalità che vogliamo qui. 965 00:57:32,150 --> 00:57:34,690 Vogliamo verificare se la chiave esiste prima di tentare di accedere alla matrice, 966 00:57:34,690 --> 00:57:36,580 e per fortuna, 967 00:57:36,580 --> 00:57:38,570 Kohana ci dà anche una funzione di supporto per questo. 968 00:57:38,570 --> 00:57:41,040 Hanno tutta questa serie di funzioni 969 00:57:41,040 --> 00:57:43,660 sotto il nome di ARR, abbreviazione di array, 970 00:57:43,660 --> 00:57:45,800 e hanno 1 funzione chiamata "get", 971 00:57:45,800 --> 00:57:48,690 e si può passare nella matrice, 972 00:57:48,690 --> 00:57:50,740 e si può passare il nome della chiave. 973 00:57:50,740 --> 00:57:54,330 Poi fondamentalmente quello che farà è sarà cercare di ottenere quella chiave, 974 00:57:54,330 --> 00:57:56,470 ma se tale chiave non esiste nella matrice, 975 00:57:56,470 --> 00:58:00,900 poi tornerà in bianco, o possiamo anche specificare un valore predefinito, credo, 976 00:58:00,900 --> 00:58:03,500 che è bello. 977 00:58:09,740 --> 00:58:13,150 Ora, se noi facciamo la stessa cosa di nuovo, 978 00:58:13,150 --> 00:58:15,970 poi si vede ora funziona la prima volta, 979 00:58:15,970 --> 00:58:18,080 e ancora, se si digita in alcune cose a caso 980 00:58:18,080 --> 00:58:23,210 e cercare di presentare, poi rimane lì. 981 00:58:23,210 --> 00:58:31,640 >> E credo che posso anche mostrare come aggiungere un modello molto velocemente. 982 00:58:31,640 --> 00:58:36,140 Che cosa possiamo fare prima è che possiamo aggiungere una nuova visualizzazione denominata "template.php" 983 00:58:36,140 --> 00:58:38,890 all'interno della cartella Views, 984 00:58:38,890 --> 00:58:44,730 e che cosa ho intenzione di fare è che ho intenzione di stampare qualcosa chiamato "contenuto", 985 00:58:44,730 --> 00:58:49,130 che sta per essere la mia pagina principale. 986 00:58:49,130 --> 00:58:51,380 E forse in fondo ho intenzione di aggiungere, per esempio, 987 00:58:51,380 --> 00:58:53,340 copyright. 988 00:58:53,340 --> 00:58:56,150 [Incomprensibile questione studente] 989 00:58:56,150 --> 00:58:58,050 [Brandon Liu] Forse questo è un ottimo modello di base che voglio usare. 990 00:58:58,050 --> 00:59:02,840 Voglio avere una cartella con il mio copyright su ogni singola pagina, 991 00:59:02,840 --> 00:59:05,560 e adesso che ho intenzione di fare nel mio controller 992 00:59:05,560 --> 00:59:07,740 è ora invece di dire, "si estende Controller" 993 00:59:07,740 --> 00:59:11,870 Sto per dire, "si estende Controller_Template" 994 00:59:11,870 --> 00:59:15,890 e ora invece di dire, "corpo di risposta è uguale a questo punto di vista," 995 00:59:15,890 --> 00:59:24,110 Sto per dire "questo contenuto è template -" 996 00:59:24,110 --> 00:59:27,690 e credo - posso mettere un segno di uguale? 997 00:59:27,690 --> 00:59:32,710 Ho dimenticato. Sì, ho pensato così. 998 00:59:32,710 --> 00:59:37,710 E ora ho impostato la variabile contenuto uguale la vista. 999 00:59:37,710 --> 00:59:40,960 Posso fare lo stesso qui. 1000 00:59:49,620 --> 00:59:57,170 E ora, se rinfresco, si può vedere ora questo copyright è aggiunto là, 1001 00:59:57,170 --> 01:00:00,350 e basta fare alcuni post a caso, 1002 01:00:00,350 --> 01:00:06,760 e poi, di nuovo, si dovrebbe vedere che il copyright è in fondo alla pagina. 1003 01:00:06,760 --> 01:00:10,730 >> Grande. Questo è tutto quello che volevo mostrarvi ragazzi. 1004 01:00:10,730 --> 01:00:14,970 [Applausi] 1005 01:00:14,970 --> 01:00:18,950 Tutte le domande? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]