1 00:00:00,000 --> 00:00:02,150 >> [Seminarium] [Kohana: En lätt PHP Framework] 2 00:00:02,150 --> 00:00:04,000 [Brandon Liu] [Harvard University] 3 00:00:04,000 --> 00:00:07,270 [Det här är CS50.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> Hej alla. Mitt namn är Brandon. 5 00:00:09,130 --> 00:00:11,000 Jag är en junior här på högskolan gör datavetenskap, och i dag ska vi prata om 6 00:00:11,000 --> 00:00:14,460 Kohana, vilket är en PHP ramverk webbutveckling. 7 00:00:14,460 --> 00:00:17,260 Idag kommer att bli en levande kodning seminarium, 8 00:00:17,260 --> 00:00:21,000 så jag i princip kommer att spendera 5-10 minuter att förklara vad Kohana är, 9 00:00:21,000 --> 00:00:25,000 och då jag bokstavligen ska bygga en super enkel blogg 10 00:00:25,000 --> 00:00:28,570 för dig just här bokstavligen från grunden. 11 00:00:28,570 --> 00:00:32,229 Vi ska hämta koden från Kohana hemsida, 12 00:00:32,229 --> 00:00:35,000 och vi kommer att börja bygga en blogg, och förhoppningsvis kommer att bli mycket lärorikt, 13 00:00:35,000 --> 00:00:37,000 eftersom du ser kanske kanske jag ska göra några misstag, 14 00:00:37,000 --> 00:00:39,000 och du ser mig återhämta sig från dem, 15 00:00:39,000 --> 00:00:42,040 eller du ska se min tankeprocess som jag bygger genom denna blogg, 16 00:00:42,040 --> 00:00:44,000 och under tiden får du också bekanta dig med själva ramverket. 17 00:00:44,000 --> 00:00:48,000 Förhoppningsvis ska det vara en mycket lärorik övning. 18 00:00:48,000 --> 00:00:51,370 >> Först, vad är ett ramverk? 19 00:00:51,370 --> 00:00:54,000 Om du har tagit CS50 så långt, har du inte riktigt fungerat med någon 20 00:00:54,000 --> 00:00:56,000 ramverk ännu, och saken är den här. 21 00:00:56,000 --> 00:01:00,000 Du har säkert gjort 1 webbutveckling pset redan, 22 00:01:00,000 --> 00:01:03,000 och låt oss säga att du fortsätter att bygga webbplatser och hålla bygga webbplatser. 23 00:01:03,000 --> 00:01:05,000 Du kommer att börja märka ett par saker. 24 00:01:05,000 --> 00:01:07,000 Det första du kommer att märka är att du förmodligen gör samma saker 25 00:01:07,000 --> 00:01:09,150 om och om igen hela tiden, 26 00:01:09,150 --> 00:01:13,000 saker som städning användar indata, 27 00:01:13,000 --> 00:01:17,250 saker som att organisera dina filer på ett visst sätt. 28 00:01:17,250 --> 00:01:19,000 Den andra saken du kommer också förmodligen att märka är att din kod 29 00:01:19,000 --> 00:01:21,000 kanske börjar bli väldigt, väldigt rörigt, 30 00:01:21,000 --> 00:01:24,000 och du kan lämna det rörigt och bara ha mycket svårt att upprätthålla den, 31 00:01:24,000 --> 00:01:26,000 eller så kan du börja strukturera din kod och göra den modulära 32 00:01:26,000 --> 00:01:28,510 på vissa sätt för att göra det mer utrymme för detta. 33 00:01:28,510 --> 00:01:31,020 >> Det är där webbramverk i grunden kom i. 34 00:01:31,020 --> 00:01:33,680 Dessa människor som hade byggt en hel del webbplatser, sa de, 35 00:01:33,680 --> 00:01:35,820 "Vi behöver inte göra om detta varje gång vi bygger en webbplats." 36 00:01:35,820 --> 00:01:39,050 "Varför inte bara göra ett paket som gör alla dessa saker för dig 37 00:01:39,050 --> 00:01:41,250 varje gång du vill bygga en hemsida? " 38 00:01:41,250 --> 00:01:43,030 Och så att när du gör en ny hemsida, 39 00:01:43,030 --> 00:01:45,880 du bara fokusera på exakt vad denna hemsida handlar om. 40 00:01:45,880 --> 00:01:48,630 Du behöver inte upprepa alla de olika konfiguration 41 00:01:48,630 --> 00:01:53,070 och separering av koder och skriva om kod 42 00:01:53,070 --> 00:01:56,180 att du ofta måste göra när du gör hemsidor. 43 00:01:56,180 --> 00:01:59,410 Tanken är att en ram kan du skriva en högre nivå kod 44 00:01:59,410 --> 00:02:01,030 utan att behöva oroa sig för lägre nivå detaljer. 45 00:02:01,030 --> 00:02:03,670 En lägre nivå detalj kan vara något liknande 46 00:02:03,670 --> 00:02:07,250 behandlar rengöring användarinmatade data. 47 00:02:07,250 --> 00:02:09,320 Det är något som du egentligen inte ska behöva oroa sig för. 48 00:02:09,320 --> 00:02:12,370 Du bör fokusera på vad din webbsida tilldelningen egentligen handlar om. 49 00:02:12,370 --> 00:02:14,790 Den eliminerar många av standardkoden. 50 00:02:14,790 --> 00:02:16,640 Det är en arkitektur för ditt projekt. 51 00:02:16,640 --> 00:02:18,680 >> De mest populära man skulle vara Model-View-Controller, 52 00:02:18,680 --> 00:02:20,380 som jag kommer att prata om i en sekund. 53 00:02:20,380 --> 00:02:22,790 Och många gånger dessa ramar förkroppsligar en rad förfaranden, 54 00:02:22,790 --> 00:02:25,750 regler och bästa praxis för dig att använda 55 00:02:25,750 --> 00:02:28,190 så att när du anta ramen webben 56 00:02:28,190 --> 00:02:30,050 du måste skriva din kod på ett visst sätt, 57 00:02:30,050 --> 00:02:32,430 och det är i allmänhet en överenskommen uppsättning principer 58 00:02:32,430 --> 00:02:34,290 av samhället som är allmänt accepterat att vara 59 00:02:34,290 --> 00:02:36,230 ett bra sätt att skriva kod. 60 00:02:36,230 --> 00:02:38,260 Det gör koden mer att underhålla, mer användbart, 61 00:02:38,260 --> 00:02:40,030 så vidare och så vidare. 62 00:02:40,030 --> 00:02:42,740 Och slutligen, det jag vill betona om ramar 63 00:02:42,740 --> 00:02:45,980 kontra bibliotek är denna idé om inversion av kontroll, och saken är den här. 64 00:02:45,980 --> 00:02:48,430 Skillnaden mellan ett bibliotek och en ram är att med ett bibliotek 65 00:02:48,430 --> 00:02:51,990 du fortfarande skriva huvudprogrammet, 66 00:02:51,990 --> 00:02:54,460 och du är sorts åberopa biblioteket 67 00:02:54,460 --> 00:02:56,810 och uppmanade biblioteket för att göra något för dig. 68 00:02:56,810 --> 00:02:58,180 Skillnaden mellan ett bibliotek och ett ramverk 69 00:02:58,180 --> 00:03:01,620 är att ramen börjar med kontrollen, 70 00:03:01,620 --> 00:03:03,260 och det åberopar din kod, 71 00:03:03,260 --> 00:03:06,190 så att du kan se det som - det är därför det kallas en ram - 72 00:03:06,190 --> 00:03:09,700 ramarna ger denna ram och struktur för din kod, 73 00:03:09,700 --> 00:03:11,320 och du fyller i hålen, 74 00:03:11,320 --> 00:03:13,990 och detta kommer att bli mer uppenbara i en andra 75 00:03:13,990 --> 00:03:16,670 när du ser mig börja skriva kod i samband med ramarna. 76 00:03:16,670 --> 00:03:19,130 Du ser att jag fyller i luckorna, 77 00:03:19,130 --> 00:03:22,450 och ramen är typ att styra alla rörliga bitar, 78 00:03:22,450 --> 00:03:27,420 och jag måste sätta bitarna på rätt plats. 79 00:03:27,420 --> 00:03:29,360 >> Idag ska vi prata om Kohana, 80 00:03:29,360 --> 00:03:31,610 som är en av många PHP ramar. 81 00:03:31,610 --> 00:03:34,550 Det finns webb-ramar, och det finns de i nästan varenda språk, 82 00:03:34,550 --> 00:03:38,330 och jag plockar Kohana eftersom Kohana är utan tvekan 83 00:03:38,330 --> 00:03:43,250 och allmänt erkänd som den enklaste PHP ram för att plocka upp. 84 00:03:43,250 --> 00:03:45,940 Det är den mest lätt. 85 00:03:45,940 --> 00:03:48,470 Det finns andra där ute som kommer med många, många fler funktioner, 86 00:03:48,470 --> 00:03:51,590 men de tenderar att vara svårare att plocka upp. 87 00:03:51,590 --> 00:03:54,920 Och slutligen, använder Kohana MVC arkitektur. 88 00:03:54,920 --> 00:03:57,780 Det är lätt nog att vi bokstavligen kan bygga ett projekt 89 00:03:57,780 --> 00:03:59,620 här mitt framför dina ögon, och du kan ganska mycket 90 00:03:59,620 --> 00:04:02,780 följa med ganska lätt. 91 00:04:02,780 --> 00:04:04,420 >> Vad är MVC-arkitektur? 92 00:04:04,420 --> 00:04:06,540 Det står för Model-View-Controller, 93 00:04:06,540 --> 00:04:09,560 och kanske om du tycker om den koden du har skrivit hittills 94 00:04:09,560 --> 00:04:11,280 för en del av din webbutveckling psets 95 00:04:11,280 --> 00:04:14,710 du kanske kan se en del av detta, men oftast när du börjar skriva 96 00:04:14,710 --> 00:04:16,500 en mer komplex webbapplikation, 97 00:04:16,500 --> 00:04:21,209 fördelningen mellan dessa tre segment blir mer och mer uppenbart. 98 00:04:21,209 --> 00:04:26,740 Jag lade ut MVC här typ av som en skorsten, 99 00:04:26,740 --> 00:04:29,920 och ofta du kommer att höra folk prata om travar i webbutveckling, 100 00:04:29,920 --> 00:04:33,760 och detta är för att illustrera idén att 101 00:04:33,760 --> 00:04:37,510 varje lager, varje komponent försöker verkligen att bara kommunicera 102 00:04:37,510 --> 00:04:40,750 mellan 2 andra komponenter. 103 00:04:40,750 --> 00:04:44,550 Någon besöker din webbplats som en klient eller en webbläsare. 104 00:04:44,550 --> 00:04:48,870 De interagera med ditt program genom utsikten koden. 105 00:04:48,870 --> 00:04:50,500 Utsikten koden samverkar med styrenheten. 106 00:04:50,500 --> 00:04:52,400 Regulatorn interagerar med modellen, 107 00:04:52,400 --> 00:04:55,090 och modellen interagerar med SQL-databas. 108 00:04:55,090 --> 00:04:59,670 Och det finns inget hoppande i mellan om du skriver din kod ordentligt. 109 00:04:59,670 --> 00:05:01,670 >> Vad gör dessa saker gör? 110 00:05:01,670 --> 00:05:06,020 Modellen är i huvudsak bit kod som behandlar dina data. 111 00:05:06,020 --> 00:05:09,100 Allt som handlar om din databas, med de objekt som du lagrar, 112 00:05:09,100 --> 00:05:11,280 eller hämta dessa objekt i databasen, 113 00:05:11,280 --> 00:05:13,450 det är allt hanteras av modellen. 114 00:05:13,450 --> 00:05:15,290 Kanske du har objekt i databasen. 115 00:05:15,290 --> 00:05:17,700 Vi kommer att skapa en modell som har att göra med inlägg, 116 00:05:17,700 --> 00:05:19,760 så ett inlägg kan ha vissa attribut till det. 117 00:05:19,760 --> 00:05:23,900 Du kanske har funktioner kring lagra dessa tjänster eller hämtar inlägg 118 00:05:23,900 --> 00:05:26,270 eller filtrering av inlägg och så vidare och så vidare, 119 00:05:26,270 --> 00:05:28,880 och det är all kod som är hanteras av modellen. 120 00:05:28,880 --> 00:05:31,780 Regulatorn är en slags programlogiken, 121 00:05:31,780 --> 00:05:37,910 och en massa olika saker som kan gå i programlogiken. 122 00:05:37,910 --> 00:05:39,790 Om du pratar med en annan API, 123 00:05:39,790 --> 00:05:42,310 som kan vara där du arbetar med programlogiken. 124 00:05:42,310 --> 00:05:47,990 Om du försöker få att ta in data från flera olika modeller 125 00:05:47,990 --> 00:05:51,540 och har att kombinera dem på något sätt, som ofta kan hanteras av styrenheten. 126 00:05:51,540 --> 00:05:53,820 Till exempel, på Facebook, om du vän någon, 127 00:05:53,820 --> 00:05:58,500 då kanske att agera av att fastställa att relationen 128 00:05:58,500 --> 00:06:00,490 kan utföras av styrenheten. 129 00:06:00,490 --> 00:06:04,350 >> Och slutligen, är uppfattningen den kod som har genere vad du faktiskt ser. 130 00:06:04,350 --> 00:06:07,410 Många gånger tror jag i CS50 psets 131 00:06:07,410 --> 00:06:10,050 de inte verkligen uppmuntra er att skilja dessa tre saker. 132 00:06:10,050 --> 00:06:12,430 Du kommer förmodligen att ha denna stora, långa filen där i toppen 133 00:06:12,430 --> 00:06:15,130 du göra några SQL-fråga och kanske göra en del bearbetning 134 00:06:15,130 --> 00:06:17,020 på de uppgifter du hämtas från databasen, 135 00:06:17,020 --> 00:06:19,370 och då har du alla dina HTML längst ner. 136 00:06:19,370 --> 00:06:22,840 Och du kanske upptäcker att när du skapar fler och fler sidor 137 00:06:22,840 --> 00:06:25,790 att du kommer att ha en del kod upprepning, och även, 138 00:06:25,790 --> 00:06:29,600 saken är din fil blir riktigt stora och långa 139 00:06:29,600 --> 00:06:32,370 och blir otymplig att hantera. 140 00:06:32,370 --> 00:06:34,500 Anledningen till MVC är så väl betraktas 141 00:06:34,500 --> 00:06:36,120 är för ett antal skäl. 142 00:06:36,120 --> 00:06:38,110 Det första är något som kallas separation av oro 143 00:06:38,110 --> 00:06:40,370 vilket är tanken att när du har - 144 00:06:40,370 --> 00:06:43,520 idealt 1 bit kod bör göra 1 sak och gör det riktigt bra, 145 00:06:43,520 --> 00:06:47,210 och du bör inte kombinera bitar av kod som gör disparata saker. 146 00:06:47,210 --> 00:06:49,230 Till exempel, se kod och modellkod, 147 00:06:49,230 --> 00:06:51,040 De har egentligen inte vara relaterade. 148 00:06:51,040 --> 00:06:53,290 De behöver inte vara i samma filer, så när du kan, skilja ut dem 149 00:06:53,290 --> 00:06:55,300 så det är lätt att underhålla. 150 00:06:55,300 --> 00:06:57,130 >> Den andra saken är återanvändning av kod. 151 00:06:57,130 --> 00:06:59,770 Du kan hitta dig själv att skriva samma SQL-fråga eller gör 152 00:06:59,770 --> 00:07:03,060 liknande frågor som kan abstraheras till 1-funktion, 153 00:07:03,060 --> 00:07:05,440 och det är tanken bakom modeller och styrenheter, 154 00:07:05,440 --> 00:07:09,690 att ha den i en separat funktion som du kan återanvända på olika platser i ditt projekt. 155 00:07:09,690 --> 00:07:12,420 Och slutligen, som är knuten till att torka din kod, 156 00:07:12,420 --> 00:07:14,700 eller inte upprepa dig själv, inte upprepa dig själv. 157 00:07:14,700 --> 00:07:18,090 Detta är mycket förståeligt i utvecklingen. 158 00:07:18,090 --> 00:07:20,110 När du kan, du vill inte upprepa dig själv, för om du upprepa dig själv, 159 00:07:20,760 --> 00:07:23,400  det är mycket dyrare att underhålla. 160 00:07:23,400 --> 00:07:26,040 Om du vill ändra en sak, måste du ändra det överallt, 161 00:07:26,040 --> 00:07:30,230 och som leder till fel, och det är hemskt. 162 00:07:30,230 --> 00:07:32,010 >> Okej. 163 00:07:32,010 --> 00:07:37,270 Har du frågor så långt om Kohana alls? 164 00:07:37,270 --> 00:07:39,200 Bra. 165 00:07:39,200 --> 00:07:42,300 Nu ska vi dyka in i live-kodning session, 166 00:07:42,300 --> 00:07:48,050 och förhoppningsvis allt går bra. 167 00:07:57,200 --> 00:08:00,050 Jag kommer att i grunden bygga denna webbplats 168 00:08:00,050 --> 00:08:03,910 på en av mina fjärrservrar, och på det sättet ni kan också 169 00:08:03,910 --> 00:08:06,310 se hemsidan och få tillgång till webbplatsen, 170 00:08:06,310 --> 00:08:10,990 och även miljön är bättre konfigurerad än min avlägsen maskin, 171 00:08:10,990 --> 00:08:14,580 eftersom det körs Linux istället för OS X. 172 00:08:14,580 --> 00:08:16,260 Vi bokstavligen kommer att starta. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 Jag ska hämta koden från webbplatsen. 175 00:08:21,350 --> 00:08:24,610 Jag kommer att kopiera adressen, 176 00:08:24,610 --> 00:08:29,770 gå till min server, ladda ner den, 177 00:08:29,770 --> 00:08:33,000 och jag kommer att extrahera den. 178 00:08:38,330 --> 00:08:45,710 >> [Student] Vad är det största du kan göra texten? 179 00:08:45,710 --> 00:08:47,330 [Brandon Liu] Är det bättre? 180 00:08:47,330 --> 00:08:50,070 [Student] Är det genomförbart? >> [Brandon Liu] Ja, det är bra. 181 00:08:50,070 --> 00:08:54,500 Jag laddade ner en ZIP-fil och uppackade det i en katalog som heter Kohana, 182 00:08:54,500 --> 00:08:58,820 och vi kommer att byta namn på den CS50-Kohana, 183 00:08:58,820 --> 00:09:01,140 och låt oss gå i. 184 00:09:01,140 --> 00:09:03,610 Awesome. 185 00:09:03,610 --> 00:09:06,870 Här ser du en massa olika filer. 186 00:09:06,870 --> 00:09:10,140 De flesta av er kan ignorera - Vi är inte kommer att gå igenom varje enskild fil som är här inne 187 00:09:10,140 --> 00:09:13,130 på grund av vår tidsbrist, 188 00:09:13,130 --> 00:09:16,310 men i allmänhet när du installerar Kohana, det första du gör 189 00:09:16,310 --> 00:09:23,210 är du går till katalogen, 190 00:09:23,210 --> 00:09:26,050 och du i princip göra vissa miljötester och whatnot 191 00:09:26,050 --> 00:09:28,640 att se till att din omgivning är korrekt inställd på att köra Kohana 192 00:09:28,640 --> 00:09:31,450 och se till att allt är okej. 193 00:09:31,450 --> 00:09:35,510 Du kan se det mesta gått, men generellt du alltid stöter på detta 1 problem 194 00:09:35,510 --> 00:09:38,180 där man klagar över att någon katalog är inte skrivbar, 195 00:09:38,180 --> 00:09:40,410 och det är på grund av vissa behörigheter. 196 00:09:40,410 --> 00:09:43,080 Jag vet inte hur mycket ni har lärt sig om filrättigheter i CS50, 197 00:09:43,080 --> 00:09:47,920 men om du gör webbutveckling, du kommer att stöta på denna fråga en hel del. 198 00:09:47,920 --> 00:09:58,340 Jag kommer att göra den skrivbar 199 00:09:58,340 --> 00:10:03,390 och jag tror att jag måste också - där vi går. 200 00:10:03,390 --> 00:10:07,040 >> Okej, så nu kan du se allt gått, 201 00:10:07,040 --> 00:10:10,000 och nu kommer det att berätta för dig att byta namn på filen install.php. 202 00:10:10,000 --> 00:10:15,630 Jag kommer att flytta filen install.php att installed.php, 203 00:10:15,630 --> 00:10:19,610 och nu om jag uppdaterar, 204 00:10:19,610 --> 00:10:22,810 det ger mig lite fel, och det är där felsökning kommer in 205 00:10:22,810 --> 00:10:25,610 Det är här du kan se vad som egentligen kommer att hända. 206 00:10:25,610 --> 00:10:28,460 Saken är den, som standard, antar Kohana att 207 00:10:28,460 --> 00:10:31,480 ditt projekt är i rotkatalogen på din domän, 208 00:10:31,480 --> 00:10:35,920 så det förväntar dig att vara på demo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 Vi måste säga det att det är faktiskt i en undermapp. 210 00:10:37,540 --> 00:10:39,820 Det är i en undermapp som heter CS50 Kohana. 211 00:10:39,820 --> 00:10:42,640 Saken är den, det är misstolkar CS50-Kohana 212 00:10:42,640 --> 00:10:45,680 som något annat, som jag ska förklara för dig i en sekund. 213 00:10:45,680 --> 00:10:49,910 Men jag ska säga dig att det är något som är att vänta. 214 00:10:49,910 --> 00:10:53,700 Vad vi ska göra är att vi kommer att gå in i denna mapp som heter bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 vilket är konfigurationen mapp där en massa olika saker sätts upp. 216 00:10:59,260 --> 00:11:01,570 Jag öppnar det upp. 217 00:11:01,570 --> 00:11:09,790 Då kanske en av de första sakerna jag ska göra är att ändra tidszon. 218 00:11:09,790 --> 00:11:13,910 >> Och sedan ska vi se. 219 00:11:13,910 --> 00:11:15,180 Aha! Just här. 220 00:11:15,180 --> 00:11:18,690 Det finns en massa olika konfigurationstalesätt i här, 221 00:11:18,690 --> 00:11:21,700 men det jag letar efter är denna sak kallad bas-URL, 222 00:11:21,700 --> 00:11:24,570 och som standard jag får det satt till Kohana, 223 00:11:24,570 --> 00:11:29,020 men jag ska ändra det till CS50-Kohana, 224 00:11:29,020 --> 00:11:32,880 och jag tror att det skulle fixa det. 225 00:11:32,880 --> 00:11:34,150 Ja, bra. 226 00:11:34,150 --> 00:11:39,530 Som standard, för att se att det fungerar, det står, "Hello World". 227 00:11:39,530 --> 00:11:42,930 Var kom det ifrån? Hur kom vi till Hello World? 228 00:11:42,930 --> 00:11:47,640 Var exakt är den kod som faktiskt skrev det? 229 00:11:47,640 --> 00:11:50,240 För att förstå det, kommer jag presentera detta koncept som kallas routing. 230 00:11:50,240 --> 00:11:52,590 Ganska mycket alla webbramverk har konceptet kallas routing, 231 00:11:52,590 --> 00:11:57,230 vilket är den del av programmet som kommer att kartlägga en viss webbadress 232 00:11:57,230 --> 00:12:01,550 till en viss bit kod i din ram. 233 00:12:01,550 --> 00:12:07,510 Till exempel, om du har någon webbadress och du går till en viss webbadress som foo.com / blog / all 234 00:12:07,510 --> 00:12:11,170 vad ramarna kommer att göra - eller åtminstone vad Kohana kommer att göra - 235 00:12:11,170 --> 00:12:15,540 är att det kommer att hitta en klass som heter styrenhet blogg, 236 00:12:15,540 --> 00:12:18,720 och det kommer att köra den funktion som heter action. 237 00:12:18,720 --> 00:12:20,160 Jag vet att jag talar om klass och funktioner, 238 00:12:20,160 --> 00:12:23,860 och jag vet att ni har inte täckt klasser och funktioner 239 00:12:23,860 --> 00:12:26,470 i CS50 ännu, men för nu, 240 00:12:26,470 --> 00:12:29,800 du kan tänka på klasser som bara en grupp av funktioner, 241 00:12:29,800 --> 00:12:32,900 ett sätt att gruppera funktioner tillsammans. 242 00:12:32,900 --> 00:12:37,690 Det är egentligen allt du behöver veta. 243 00:12:37,690 --> 00:12:43,120 >> Nu om vi tittar på vår mappstruktur, 244 00:12:43,120 --> 00:12:47,110 i programmappen finns en annan mapp som heter klasser, 245 00:12:47,110 --> 00:12:49,200 och de andra mapparna kallas Controller och modell. 246 00:12:49,200 --> 00:12:52,530 Om du tittar in i Controller-mappen, 247 00:12:52,530 --> 00:12:56,330 Vi ser att det finns en fil som heter Welcome, 248 00:12:56,330 --> 00:13:00,370 och du kan se här är en klass som heter Controller Välkommen, 249 00:13:00,370 --> 00:13:02,340 och det finns en funktion som heter åtgärd Index, 250 00:13:02,340 --> 00:13:06,360 och vad den gör är det sätter kroppen av din reaktion på Hello World. 251 00:13:06,360 --> 00:13:08,730 Det är där koden skrivs. 252 00:13:08,730 --> 00:13:11,610 Den andra frågan är, ja, jag gick inte till 253 00:13:11,610 --> 00:13:13,680 bla, bla, bla, / welcome / index. 254 00:13:13,680 --> 00:13:16,250 Hur hamnade jag här? 255 00:13:16,250 --> 00:13:20,410 Tja, det är helt enkelt därför att 256 00:13:20,410 --> 00:13:22,410 Här längst ner på vår bootstrap-fil 257 00:13:22,410 --> 00:13:24,550 där vi satt våra vägar 258 00:13:24,550 --> 00:13:26,570 du kan se att de sätter vissa standardinställningar för dig. 259 00:13:26,570 --> 00:13:28,990 Standard styrenhet är Välkommen. Standardåtgärden är index. 260 00:13:28,990 --> 00:13:31,600 Det är därför när vi satte ingenting i det automatiskt gick till Välkommen controller 261 00:13:31,600 --> 00:13:33,940 och index åtgärd. 262 00:13:33,940 --> 00:13:37,460 >> Allt vettigt hittills? 263 00:13:37,460 --> 00:13:40,850 Nu kan du göra mer än att bara gå till Controller 264 00:13:40,850 --> 00:13:43,670 och en särskild åtgärd. 265 00:13:43,670 --> 00:13:48,480 Du kan också skicka in parametrar till regulatorn. 266 00:13:48,480 --> 00:13:56,390 Bara som ett exempel, 267 00:13:56,390 --> 00:14:04,070 Jag kommer att lägga till ytterligare åtgärder för att denna regulator visa. 268 00:14:04,070 --> 00:14:09,130 Låt oss kalla denna åtgärd Echo, eftersom det kommer att berätta för dig vad du ger det, 269 00:14:09,130 --> 00:14:17,510 och så jag i princip kommer att ta 270 00:14:17,510 --> 00:14:20,960 en parameter som kommer att skickas till mig till routingprogrammet, 271 00:14:20,960 --> 00:14:24,440 och som ni kan se här, 272 00:14:24,440 --> 00:14:28,440 denna linje här, kan du se att 273 00:14:28,440 --> 00:14:31,270 Detta innebär i princip att du har controller, och du har en /, 274 00:14:31,270 --> 00:14:33,480 och du har handling, och du har en annan /, 275 00:14:33,480 --> 00:14:39,140 och det kommer att bli parametrar, och för att vi har detta namn ID 276 00:14:39,140 --> 00:14:42,450 inom vinkelparenteser, innebär att att vi namnge denna parameter-ID. 277 00:14:42,450 --> 00:14:45,490 Senare i min controller kod om jag vill ta tag i denna parameter, 278 00:14:45,490 --> 00:14:51,790 Jag kan använda koden jag skrev, hitta den parameter som heter ID. 279 00:14:51,790 --> 00:14:59,290 Det är vad jag gjorde här, och jag kommer att gå tillbaka och säga, 280 00:14:59,290 --> 00:15:07,090 "Du sa" det. 281 00:15:07,090 --> 00:15:10,760 Och så nu, om jag går till vår hemsida, 282 00:15:10,760 --> 00:15:19,550 Jag går till cs50-kohana/welcome/echo/Helloooo-- 283 00:15:19,550 --> 00:15:21,420 åh, det stämmer. 284 00:15:21,420 --> 00:15:23,930 Det finns 1 steg jag lämnade ut. 285 00:15:23,930 --> 00:15:27,020 Detta är en del av den levande kodnings idé. 286 00:15:27,020 --> 00:15:36,100 >> Här är en sak. Låt oss se. 287 00:15:36,100 --> 00:15:38,870 Så normalt som standard med en hel del av dessa webbapplikationer 288 00:15:38,870 --> 00:15:42,820 du måste inkludera denna index.php sak i din webbadress, 289 00:15:42,820 --> 00:15:46,410 eftersom tanken är index.php är en slags inkörsport 290 00:15:46,410 --> 00:15:48,250 av din ansökan, men naturligtvis, 291 00:15:48,250 --> 00:15:50,110 det är typ av irriterande att ha. 292 00:15:50,110 --> 00:15:53,790 Du vill inte ha index.php visas i din webbadress, 293 00:15:53,790 --> 00:15:56,080 och ganska mycket varje webbramverk ur lådan 294 00:15:56,080 --> 00:15:58,440 har detta index.php problem, 295 00:15:58,440 --> 00:16:03,370 och så du måste vidta vissa åtgärder för att kunna ta bort det. 296 00:16:03,370 --> 00:16:07,540 Och så i detta fall, 297 00:16:07,540 --> 00:16:11,450 vad vi ska göra är att vi kommer att använda en fil som heter. htaccess, 298 00:16:11,450 --> 00:16:13,900 och detta är något som är specifikt för webbservern Apache, 299 00:16:13,900 --> 00:16:16,290 och det kan göra saker som att skriva om adresser 300 00:16:16,290 --> 00:16:19,350 och omdirigera webbadresser och så vidare och så vidare, 301 00:16:19,350 --> 00:16:24,280 och Kohana är tillräckligt bra för att ge en mall. htaccess-fil som vi kan använda. 302 00:16:24,280 --> 00:16:28,300 >> Som ni ser, det finns en fil där som heter example.htaccess, 303 00:16:28,300 --> 00:16:33,410 och vi kommer att kopiera det till. htaccess. 304 00:16:33,410 --> 00:16:36,950 Jag kommer att öppna denna och redigera den, 305 00:16:36,950 --> 00:16:40,840 och i princip det gör en massa olika saker. 306 00:16:40,840 --> 00:16:45,320 Nyckeln linje du kanske vill titta på är här. 307 00:16:45,320 --> 00:16:49,840 Tanken är att detta sätter upp en regel som säger, 308 00:16:49,840 --> 00:16:56,400 "Okej, vad du än skriver in, prepend index.php till det." 309 00:16:56,400 --> 00:16:58,710 Du kan se det. 310 00:16:58,710 --> 00:17:00,370 Den. * Står för någonting, matcha vad som helst, 311 00:17:00,370 --> 00:17:03,300 och sedan den andra delen är index.php / $ 0, 312 00:17:03,300 --> 00:17:07,410 och $ 0 hänvisar till vad som tidigare matchas. 313 00:17:07,410 --> 00:17:09,500 Låter det vettigt? 314 00:17:09,500 --> 00:17:12,190 Men det riktigt viktig sak jag vill ändra på är att ändra detta omskrivning bas, 315 00:17:12,190 --> 00:17:14,300 vilket är den URL-basen. 316 00:17:14,300 --> 00:17:17,780 Det förutsätter slags där du arbetar från. 317 00:17:17,780 --> 00:17:22,560 Jag kommer att lägga CS50 Kohana till det, 318 00:17:22,560 --> 00:17:26,530 och på det sättet nu, om jag tar bort index.php, 319 00:17:26,530 --> 00:17:32,110 det borde fungera, och jag kommer att lägga till några siffror 320 00:17:32,110 --> 00:17:36,380 visa att det verkligen fungerade. 321 00:17:36,380 --> 00:17:38,130 Låter bra. 322 00:17:38,130 --> 00:17:40,260 >> Några frågor hittills? 323 00:17:40,260 --> 00:17:42,300 [Student] Hur har det vet att göra 123? 324 00:17:42,300 --> 00:17:44,120 Är det ett argument? 325 00:17:44,120 --> 00:17:46,560 Exakt. Du kan tänka på det precis som ett argument. 326 00:17:46,560 --> 00:17:52,410 Men det konstiga är dock att det sätt Kohana gör det 327 00:17:52,410 --> 00:17:54,910 är de inte gör det precis som ett argument. 328 00:17:54,910 --> 00:17:56,930 Du måste ta tag i det så här. 329 00:17:56,930 --> 00:18:01,030 Du måste ta tag i begäran objektet och be om den parameter som är uppkallad ID, 330 00:18:01,030 --> 00:18:03,240 och det namnet ID kommer från att bootstrap-fil 331 00:18:03,240 --> 00:18:06,990 som jag visade tidigare, och namnet ID var i dessa vinkelfästen, 332 00:18:06,990 --> 00:18:11,580 och det är hur du tar tag i dessa parametrar. 333 00:18:11,580 --> 00:18:14,010 Awesome. 334 00:18:14,010 --> 00:18:17,550 Fler frågor? 335 00:18:17,550 --> 00:18:20,500 Som jag sa, controllers, hanterar de programlogik, 336 00:18:20,500 --> 00:18:22,980 så det är en instans där man kan se that - 337 00:18:22,980 --> 00:18:24,830 det är mycket grundläggande, men det är fortfarande programlogik, 338 00:18:24,830 --> 00:18:27,980 tanken på att ta tag i parameter och skapa en ny sträng 339 00:18:27,980 --> 00:18:31,920 som säger, "Du sa bla" och sedan spotta det tillbaka till dig. 340 00:18:31,920 --> 00:18:34,030 Och i allmänhet vad du gör är att du skapar olika styrenheter. 341 00:18:34,030 --> 00:18:36,450 Du skapa separata regulatorer för olika delar av din webbplats. 342 00:18:36,450 --> 00:18:38,160 >> I dag ska vi göra en mycket enkel hemsida, 343 00:18:38,160 --> 00:18:40,420 och det kommer att bli en mycket grundläggande blogg. 344 00:18:40,420 --> 00:18:43,780 Vi kommer att göra en ny styrenhet bara för inlägg i en blogg. 345 00:18:43,780 --> 00:18:47,060 Men sedan om jag skulle också lägga till kommentarer till blogginlägget, 346 00:18:47,060 --> 00:18:50,140 då skulle jag nog vilja göra en ny styrenhet för dessa synpunkter. 347 00:18:50,140 --> 00:18:53,380 Om jag vill lägga till användare, skulle jag antagligen lägga till en ny styrenhet för dessa användare, 348 00:18:53,380 --> 00:18:57,000 och i allmänhet, är tanken att varje gång du har en ny modell, 349 00:18:57,000 --> 00:18:59,630 ett nytt dataobjekt som du arbetar med, 350 00:18:59,630 --> 00:19:02,970 du har en enda styrenhet för den dataobjekt. 351 00:19:02,970 --> 00:19:04,370 Idag ska vi bara kommer att arbeta med en dataobjekt, 352 00:19:04,370 --> 00:19:06,250 och det kommer att bli inlägg, 353 00:19:06,250 --> 00:19:08,710 och även du kan tänka på dataobjekt som motsvarar tabeller. 354 00:19:08,710 --> 00:19:12,160 Generellt varje tabell motsvarar 1 typ av dataobjekt, 355 00:19:12,160 --> 00:19:15,160 så efterbordet kommer att ha 1 inlägg modell, 356 00:19:15,160 --> 00:19:18,230 som kommer att ha en efterstyrenheten som motsvarar denna, 357 00:19:18,230 --> 00:19:22,190 och samma för kommentarer, samma för användarna, och så vidare och så vidare. 358 00:19:22,190 --> 00:19:24,070 Och det är en allmän tumregel. 359 00:19:24,070 --> 00:19:27,460 Det kommer att finnas särskilda fall där man kan skilja sig från det, 360 00:19:27,460 --> 00:19:29,300 men 90% av den tid som är vad du ska göra, 361 00:19:29,300 --> 00:19:32,810 och jag ska visa dig att det är vad vi ska göra i dag. 362 00:19:32,810 --> 00:19:35,490 1 mer koncept innan vi dyker tillbaka in koden, 363 00:19:35,490 --> 00:19:37,710 denna idé om objektet relationell mappning. 364 00:19:37,710 --> 00:19:41,200 >> Ni har redan gjort en webbutveckling pset, 365 00:19:41,200 --> 00:19:43,820 och du har sett att du gör en SQL-fråga, 366 00:19:43,820 --> 00:19:46,510 och vad det tillbaka till dig är rader. 367 00:19:46,510 --> 00:19:50,040 Du får dessa rader, och du indexera dem av några namn, 368 00:19:50,040 --> 00:19:55,480 namnet på kolonnen och bordet, 369 00:19:55,480 --> 00:19:57,630 och det är hur man jobbar med det, 370 00:19:57,630 --> 00:19:59,290 och det kan vara lite besvärlig. 371 00:19:59,290 --> 00:20:01,810 Men dessutom, om du har relationer inom databasen, 372 00:20:01,810 --> 00:20:05,280 som till exempel om jag har synpunkter och inlägg, 373 00:20:05,280 --> 00:20:11,240 då kanske jag vill ta den överordnade posten som en kommentar. 374 00:20:11,240 --> 00:20:14,350 Om jag använder bara rader i SQL, så allt jag kan få är ID 375 00:20:14,350 --> 00:20:19,310 av den överordnade posten och inte själva inlägget i sig. 376 00:20:19,310 --> 00:20:21,680 Men när vi är kodning, vad vi egentligen vill är att faktiskt ta tag i 377 00:20:21,680 --> 00:20:23,550  föräldern lägga sig ibland. 378 00:20:23,550 --> 00:20:25,730 Vilka objekt relationell mappning gör är 379 00:20:25,730 --> 00:20:29,480 det tar resultaten av databasfråga 380 00:20:29,480 --> 00:20:32,420 och tar den i objekt för dig, som är mycket trevligare att arbeta med 381 00:20:32,420 --> 00:20:34,770 än vanligt arrayer och rader. 382 00:20:34,770 --> 00:20:37,550 >> Till exempel, nu när jag har en kommentar kanske, 383 00:20:37,550 --> 00:20:40,900 och jag vill ta den överordnade posten, 384 00:20:40,900 --> 00:20:43,440 och jag kanske kommentera pil inlägg, 385 00:20:43,440 --> 00:20:45,230 så kommer det att faktiskt ge mig posten objektet 386 00:20:45,230 --> 00:20:47,940 som motsvarar den faktiska förälder post, inte bara en del-ID, 387 00:20:47,940 --> 00:20:52,210 som jag annars skulle behöva använda och göra en annan SQL-fråga för att ta tag i stolpen, 388 00:20:52,210 --> 00:20:57,430 vilket är omständligt och onödigt. 389 00:20:57,430 --> 00:21:01,840 Och dessutom, genom att kartlägga alla dessa rader med data till objekt, 390 00:21:01,840 --> 00:21:03,760 Du kan också bifoga fler funktioner till objekt, 391 00:21:03,760 --> 00:21:09,700 så till exempel, jag pratade om hur klasser är i huvudsak grupperingar av funktioner. 392 00:21:09,700 --> 00:21:11,620 Du kan tänka på det viset. 393 00:21:11,620 --> 00:21:15,290 Till exempel kanske jag har det här inlägget objektet 394 00:21:15,290 --> 00:21:17,830 och kanske jag skulle vilja ha någon form av funktion kopplad till sig 395 00:21:17,830 --> 00:21:20,300 som i grunden säger mig var det nyligen postat? 396 00:21:20,300 --> 00:21:23,570 Var det postade i förra veckan, sant eller falskt? 397 00:21:23,570 --> 00:21:27,320 Och det är en funktion jag kan fästa på det objektet, 398 00:21:27,320 --> 00:21:31,300 och det är verkligen praktiskt att ha det på samma ställe, 399 00:21:31,300 --> 00:21:33,820 och det finns en mängd olika funktioner som du kan skapa 400 00:21:33,820 --> 00:21:37,990 för dessa objekt, och det är verkligen skönt att kunna koppla den till en klass, 401 00:21:37,990 --> 00:21:41,700 till ett objekt, medan om du bara hade rader som kommer från databasen, 402 00:21:41,700 --> 00:21:43,790 då kan du inte riktigt fästa någon funktionalitet till det. 403 00:21:43,790 --> 00:21:47,850 Det är bokstavligen bara data. 404 00:21:47,850 --> 00:21:50,550 Eventuella frågor om det alls? 405 00:21:50,550 --> 00:21:52,710 ORMS är mycket vanliga webbutveckling, 406 00:21:52,710 --> 00:21:56,330 och det finns en massa olika typer av Orms, 407 00:21:56,330 --> 00:21:58,450 och Kohana har sin egen ORM. 408 00:21:58,450 --> 00:22:05,050 Det är mycket grundläggande, men du får ett smakprov på hur det ser ut. 409 00:22:05,050 --> 00:22:08,780 >> Låt oss skapa en modell för våra blogginlägg, 410 00:22:08,780 --> 00:22:12,350 och det första vi naturligtvis måste göra är att skapa en faktisk bord 411 00:22:12,350 --> 00:22:16,680 i vår databas för att faktiskt lagra våra data för dessa tjänster. 412 00:22:16,680 --> 00:22:19,260 Det första jag ska göra är att gå till phpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 Har ni använt phpMyAdmin tidigare? 414 00:22:21,410 --> 00:22:23,400 Okej, enormt, så ni vet redan vad det är, 415 00:22:23,400 --> 00:22:32,200 och jag kommer att skapa en ny tabell som heter Kohana inlägg, 416 00:22:32,200 --> 00:22:37,820 och det kommer att bli väldigt enkelt. 417 00:22:37,820 --> 00:22:40,190 Jag blir tvungen att logga in igen 418 00:23:02,620 --> 00:23:04,640 Allt vi ska göra i dag är att ha en författare och en kropp, 419 00:23:04,640 --> 00:23:11,930 bara hålla det enkelt. 420 00:23:11,930 --> 00:23:15,620 Jag kommer att skapa den tabellen, 421 00:23:15,620 --> 00:23:19,620 och nu har vi bara ha en tabell som representerar våra inlägg 422 00:23:19,620 --> 00:23:23,370 med 2 fält för våra författare och vår kropp. 423 00:23:23,370 --> 00:23:26,290 Den andra saken jag ska göra nu är 424 00:23:26,290 --> 00:23:29,820 konfigurera min webbapplikation så den vet hur man ska ansluta till databasen, 425 00:23:29,820 --> 00:23:31,950 och detta, återigen, är något som du måste göra med alla webbapplikationer. 426 00:23:31,950 --> 00:23:34,790 Du måste berätta det användarnamn och lösenord 427 00:23:34,790 --> 00:23:36,990 och namnet på databasen och så vidare och så vidare 428 00:23:36,990 --> 00:23:40,000 att räkna ut hur du faktiskt ansluta till din databas. 429 00:23:40,000 --> 00:23:58,710 >> I Kohana, har vi något som kallas en databasmodul, 430 00:23:58,710 --> 00:24:02,690 och i konfigurationsmappen vi har denna mapp som heter Database, 431 00:24:02,690 --> 00:24:07,330 och som ni ser, det finns en massa inställningar som du måste ställa in här 432 00:24:07,330 --> 00:24:09,860 att tala om vad är det användarnamn och lösenord 433 00:24:09,860 --> 00:24:13,110 för databasen så jag kan faktiskt ansluta till den. 434 00:24:13,110 --> 00:24:15,010 Och eftersom jag inte vill att ni ska verkligen känna 435 00:24:15,010 --> 00:24:17,190 användarnamn och lösenord på min databas, 436 00:24:17,190 --> 00:24:23,840 Jag har en fil där jag redan fixa allt, och jag kommer att kopiera och klistra in den över. 437 00:24:33,080 --> 00:24:36,870 Awesome. 438 00:24:36,870 --> 00:24:39,880 Okej. Jag tror att det är all konfiguration jag behöver göra, 439 00:24:39,880 --> 00:24:41,070 men låt oss se. 440 00:24:41,070 --> 00:24:43,720 Vi fortsätter att arbeta på det, och om något kraschar, 441 00:24:43,720 --> 00:24:47,490 då vi ska fixa det. 442 00:24:47,490 --> 00:24:51,830 Nu vad jag ska göra är att jag ska skapa en ny styrenhet. 443 00:24:51,830 --> 00:24:53,190 Eller faktiskt, sorry. 444 00:24:53,190 --> 00:24:55,080 Först måste jag skapa en ny modell. 445 00:24:55,080 --> 00:25:01,620 Jag ska skapa en ny modell som heter Post.php, 446 00:25:01,620 --> 00:25:12,440 och vad vi ska göra är att vi kommer att kalla den klassen Model_Post. 447 00:25:12,440 --> 00:25:15,390 Få lite syntaxmarkering på, 448 00:25:15,390 --> 00:25:19,750 och så när jag säger, "utökar ORM," det är i princip 449 00:25:19,750 --> 00:25:21,210 lite mer objektorienterad programmering, 450 00:25:21,210 --> 00:25:23,340 som tyvärr ni har inte lärt sig i CS50 ännu, 451 00:25:23,340 --> 00:25:25,290 men det är ganska lätt att plocka upp. 452 00:25:25,290 --> 00:25:27,950 Det ger mig all denna extra funktionalitet som kommer i denna ORM paket, 453 00:25:27,950 --> 00:25:31,120 och så får jag en massa extra funktioner och allt gratis, 454 00:25:31,120 --> 00:25:34,810 som ni ser lite av på en sekund. 455 00:25:34,810 --> 00:25:37,670 >> Just nu faktiskt allt jag behöver göra är att skapa denna klass. 456 00:25:37,670 --> 00:25:39,160 Jag behöver inte ens göra någon funktion eller vad som helst, 457 00:25:39,160 --> 00:25:41,770 men jag har skapat en klass som representerar tabellen, 458 00:25:41,770 --> 00:25:44,140 och eftersom jag har utsträckt denna ORM klass, 459 00:25:44,140 --> 00:25:51,080 Jag får en massa saker gratis, så nu behöver du inte ställa in något mer upp. 460 00:25:51,080 --> 00:25:53,530 Och nu vad jag ska göra är att jag ska skapa en ny styrenhet, 461 00:25:53,530 --> 00:25:58,480 som jag kommer att nämna blog.php, 462 00:25:58,480 --> 00:26:04,350 och jag ska kopiera över Welcome controller 463 00:26:04,350 --> 00:26:11,950 så jag inte behöver skriva lite saker, 464 00:26:11,950 --> 00:26:20,720 och nu måste jag byta namn på det här. 465 00:26:20,720 --> 00:26:24,710 Nu vad jag ska göra för att testa för att se till att allt fungerar ut, 466 00:26:24,710 --> 00:26:27,820 Jag kommer att ta det första inlägget från min databas 467 00:26:27,820 --> 00:26:32,680 och skriva ut kroppen av inlägget på skärmen. 468 00:26:32,680 --> 00:26:37,920 För att göra det vad jag ska göra först är jag ska spara inlägg 469 00:26:37,920 --> 00:26:48,770 till en variabel så vad vi ska göra är - 470 00:26:48,770 --> 00:26:52,090 i Kohana det du gör är att ta tag i inlägget objektet 471 00:26:52,090 --> 00:26:55,380 det är lite besvärligt, men du måste göra det här kallas ORM :: fabrik, 472 00:26:55,380 --> 00:26:57,750 och då du passerar in namnet på den modell du vill ha, 473 00:26:57,750 --> 00:27:00,490 och den returnerar den ORM-objekt som representerar den modellen. 474 00:27:00,490 --> 00:27:04,860 Och sedan, som jag sa, när vi utöka ORM objektet, 475 00:27:04,860 --> 00:27:07,320 vi får alla dessa metoder för gratis, så till exempel, 476 00:27:07,320 --> 00:27:09,200 vi får denna nya funktion som heter "hitta alla," 477 00:27:09,200 --> 00:27:12,160 som återgår automatiskt varenda inlägg i databasen, 478 00:27:12,160 --> 00:27:14,850 vilket är ganska bekvämt. 479 00:27:14,850 --> 00:27:17,480 >> Och nu i kroppen jag kommer att återvända 480 00:27:17,480 --> 00:27:24,860 det första inlägget och returnera sin kropp. 481 00:27:24,860 --> 00:27:27,930 Och naturligtvis, jag behöver för att skapa ett inlägg, 482 00:27:27,930 --> 00:27:31,880 så låt oss sätta in en ny post. 483 00:27:31,880 --> 00:27:37,870 Jag säger, "Brandon, min allra första inlägg." 484 00:27:37,870 --> 00:27:40,010 Awesome. 485 00:27:40,010 --> 00:27:45,910 Och nu ska vi gå till bloggar 486 00:27:45,910 --> 00:27:50,960 och om allt fungerar bra - Åh, det här är en annan dum fil behörighet sak igen. 487 00:27:50,960 --> 00:27:56,090 Håll på 1 sekund. Det är ganska absurt. 488 00:28:06,700 --> 00:28:08,490 Så där. Okej. 489 00:28:08,490 --> 00:28:10,040 Jag fast att tillstånd problem. 490 00:28:10,040 --> 00:28:12,040 Man försökte skapa några filer och någon logg, 491 00:28:12,040 --> 00:28:15,400 och behörigheter, återigen, inte var korrekt inställd, så jag gjorde det 492 00:28:15,400 --> 00:28:18,320 så dessa filer var skrivbara och körbara 493 00:28:18,320 --> 00:28:21,090 så det kan faktiskt logga till saker. 494 00:28:21,090 --> 00:28:24,220 Nu är det ger mig ett annat undantag ordspråket, "klass ORM hittades inte," 495 00:28:24,220 --> 00:28:26,960 och det beror på att jag har glömt ett steg. 496 00:28:26,960 --> 00:28:37,010 Det är synd. 497 00:28:37,010 --> 00:28:40,270 I bootstrap mappfilen, finns dessa moduler här, 498 00:28:40,270 --> 00:28:42,480 som du kan välja att aktivera eller inaktivera. 499 00:28:42,480 --> 00:28:44,340 Det är en massa olika funktioner som du kan välja att använda 500 00:28:44,340 --> 00:28:46,180 inom Kohana, som är typ av trevligt. 501 00:28:46,180 --> 00:28:49,090 >> Till exempel, de har en autentiseringsmodul 502 00:28:49,090 --> 00:28:51,170 som du kan använda för att autentisera användare. 503 00:28:51,170 --> 00:28:53,390 De har en cache-modul om du vill genomföra 504 00:28:53,390 --> 00:28:57,870 någon form av caching bakdelen för att göra ansökan arbete snabbare och allt. 505 00:28:57,870 --> 00:29:02,140 Vi måste tillåta databasen och ORM-modul, 506 00:29:02,140 --> 00:29:04,280 eftersom som sagt, vi använder databasen, naturligtvis, 507 00:29:04,280 --> 00:29:08,200 och vi måste också göra det möjligt för ORM-modulen, 508 00:29:08,200 --> 00:29:12,220 för att vi skulle vilja ha den extra funktionalitet, vilket är bra att ha. 509 00:29:12,220 --> 00:29:14,240 Allt jag behöver göra är att kommentera bort dessa 2 rader, 510 00:29:14,240 --> 00:29:18,760 och nu om jag uppdaterar, det gav mig ett annat fel. 511 00:29:18,760 --> 00:29:22,100 Den säger, "Klass Model_Post hittades inte." 512 00:29:22,100 --> 00:29:30,210 Nu är det här ett bra problem att ha. 513 00:29:30,210 --> 00:29:37,660 Låt oss se. 514 00:29:37,660 --> 00:29:42,200 Gör det offentligt. 515 00:29:42,200 --> 00:29:46,450 Nej. Vänta. 516 00:30:11,610 --> 00:30:13,160 Kära nån. 517 00:30:13,160 --> 00:30:18,590 Jag vet inte varför det inte kunna hitta det. 518 00:30:18,590 --> 00:30:21,030 Det är verkligen konstigt. 519 00:30:21,030 --> 00:30:23,820 Jag har den här klassen här. 520 00:30:23,820 --> 00:30:28,650 Jag antar att jag kanske måste - oh. 521 00:30:28,650 --> 00:30:32,010 Jag är så dum. Jag glömde att lägga till en PHP-tagg. 522 00:30:32,010 --> 00:30:34,670 Det är därför. 523 00:30:34,670 --> 00:30:41,260 Nu måste jag ångra att 1 förändring jag gjorde precis. 524 00:30:41,260 --> 00:30:44,270 >> Okej. Så där. 525 00:30:44,270 --> 00:30:47,500 Det var verkligen dumt. Jag hade inte en öppnings PHP-tagg. 526 00:30:47,500 --> 00:30:49,900 Men som ni ser nu att den fungerar på rätt sätt, eller hur? 527 00:30:49,900 --> 00:30:51,240 Vi har 1 inlägg. 528 00:30:51,240 --> 00:30:54,730 Vi tog det första inlägget, och nu har vi tryckt ut sin kropp. 529 00:30:54,730 --> 00:30:58,010 Bra. Fantastiskt. 530 00:30:58,010 --> 00:31:01,470 Har du frågor så långt? 531 00:31:01,470 --> 00:31:04,100 Nix? Några frågor? 532 00:31:04,100 --> 00:31:08,340 Okej, så vi bara skapat efter modell, mycket grundläggande, 533 00:31:08,340 --> 00:31:10,930 och vi kommer att lägga till några funktioner senare. 534 00:31:10,930 --> 00:31:13,600 Vi kan lägga till valideringar och filtrering. 535 00:31:13,600 --> 00:31:15,650 Valideringar är en av de saker 536 00:31:15,650 --> 00:31:18,150 att ramar lösa för dig riktigt, riktigt bra, 537 00:31:18,150 --> 00:31:21,310 och jag tror inte att ni var tvungna att göra detta för din CS50 pset, 538 00:31:21,310 --> 00:31:24,000 men om du gör webbutveckling för ditt slutprojekt, 539 00:31:24,000 --> 00:31:26,280 du förmodligen kommer att vilja göra någon form av validering, 540 00:31:26,280 --> 00:31:28,290 gillar inte att ha tomma användarnamn, 541 00:31:28,290 --> 00:31:31,950 kanske ha ett lösenord med åtminstone någon längd, sådana saker. 542 00:31:31,950 --> 00:31:34,750 Och det är verkligen besvärligt att genomföra dessa saker av oss själva, 543 00:31:34,750 --> 00:31:37,390 och ganska mycket varje enskild ram webben gör det åt dig 544 00:31:37,390 --> 00:31:41,140 och gör att du kan göra det på ett mycket rent sätt. 545 00:31:41,140 --> 00:31:44,340 Och modellen är där du i allmänhet uttrycka dessa valideringsregler, 546 00:31:44,340 --> 00:31:48,790 eftersom det är validering om en modell är giltig eller inte. 547 00:31:48,790 --> 00:31:51,350 >> Men för nu, vi kommer att sätta det förrän senare, 548 00:31:51,350 --> 00:31:53,520 och för nu ska vi jobba på en annan del, 549 00:31:53,520 --> 00:31:55,400 och vi kommer att försöka göra en ny vy 550 00:31:55,400 --> 00:31:59,580 som listar alla inlägg. 551 00:31:59,580 --> 00:32:02,490 De steg som ingår i att göra en ny åtgärd för att lista alla inlägg 552 00:32:02,490 --> 00:32:04,810 är att ta en lista över alla inlägg 553 00:32:04,810 --> 00:32:11,990 och sedan göra en lista över alla de tjänster genom en vy. 554 00:32:11,990 --> 00:32:16,420 Just här, lyckligtvis nog, vi redan gripit alla inlägg 555 00:32:16,420 --> 00:32:20,310 med hjälp av denna första raden, den hittar alla funktion, 556 00:32:20,310 --> 00:32:22,520 och nu vad vi ska göra är än så länge 557 00:32:22,520 --> 00:32:25,350 Jag har varit direkt sätta kroppen av svaret 558 00:32:25,350 --> 00:32:29,090 genom att strängen, men nu vill jag använda en vy, 559 00:32:29,090 --> 00:32:31,870 och skillnaden mellan en vy och att bara göra denna 560 00:32:31,870 --> 00:32:35,330 är med tanke jag kan ha en fin, stor HTML-mall, 561 00:32:35,330 --> 00:32:37,710 och vad jag kan göra är att ge det vissa variabler 562 00:32:37,710 --> 00:32:42,200 och sedan ha den vyn automatiskt fylla sin mall 563 00:32:42,200 --> 00:32:44,690 med hjälp av dessa variabler. 564 00:32:44,690 --> 00:32:50,780 Vad jag ska göra är att jag ska skapa en ny vy, 565 00:32:50,780 --> 00:32:55,940 och jag ska nämna vyn något som "blogg / index," 566 00:32:55,940 --> 00:33:08,480 och jag ska i princip binda detta - åh, vad är det jag skriver? 567 00:33:08,480 --> 00:33:12,910 Min hjärna är någon annanstans. 568 00:33:12,910 --> 00:33:16,600 Jag ska binda inlägg variabel till vyn, 569 00:33:16,600 --> 00:33:19,950 så på det sättet utsikten har tillgång till detta inlägg variabel. 570 00:33:19,950 --> 00:33:26,140 >> Och så nu behöver jag för att skapa denna uppfattning, 571 00:33:26,140 --> 00:33:28,500 så här har vi denna mapp som heter "Views," 572 00:33:28,500 --> 00:33:32,150 och först kommer jag att skapa en ny mapp under det som kallas "Blog." 573 00:33:32,150 --> 00:33:35,810 Det är trevligt. På så sätt kan vi få en trevlig hierarki för våra åsikter. 574 00:33:35,810 --> 00:33:43,910 Och då kommer jag att skapa en ny fil i det som heter "index.php". 575 00:33:43,910 --> 00:33:45,780 Awesome. 576 00:33:45,780 --> 00:33:52,930 Egentligen ska vi ha dem båda här. 577 00:33:52,930 --> 00:33:56,760 Att göra en vy fil är förmodligen den enklaste del av allt detta, 578 00:33:56,760 --> 00:33:59,090 och dessa är förmodligen saker som du redan är bekant med. 579 00:33:59,090 --> 00:34:01,240 Vi ska göra något riktigt enkelt, 580 00:34:01,240 --> 00:34:05,360 börja säga, "Min lista över blogginlägg." 581 00:34:05,360 --> 00:34:14,860 Då kan vi gå igenom, 582 00:34:14,860 --> 00:34:17,920 och vi kan iterera genom inlägg array, 583 00:34:17,920 --> 00:34:21,760 ta varenda inlägg och säga något i stil - 584 00:34:21,760 --> 00:34:25,290 kanske lägga till en rad 585 00:34:25,290 --> 00:34:42,460 och sedan skriva ut författaren och kroppen. 586 00:34:42,460 --> 00:34:44,480 Det vettigt hittills? 587 00:34:44,480 --> 00:34:50,870 Och låt oss se om det fungerar. 588 00:34:50,870 --> 00:34:53,489 Ingenting hände. 589 00:34:53,489 --> 00:34:55,090 Jag undrar varför. 590 00:34:55,090 --> 00:34:58,760 Åh, jag missade ett steg. Mycket dumt av mig. 591 00:34:58,760 --> 00:35:01,640 Jag skapade en vy, men jag ville inte ställa in vyn som svar, 592 00:35:01,640 --> 00:35:03,190 så du måste göra en sak till. 593 00:35:03,190 --> 00:35:12,610 Du måste göra "detta svar kropp" och ställ in den på att bli av utsikten. 594 00:35:12,610 --> 00:35:14,760 Så där. 595 00:35:14,760 --> 00:35:17,200 Vi har vår rubrik, och sedan har vi ett inlägg, 596 00:35:17,200 --> 00:35:20,500 och bara för sparkar, låt oss sätta en annan tjänst 597 00:35:20,500 --> 00:35:23,390 så att vi kan se en lista. 598 00:35:31,800 --> 00:35:36,650 Och sätta in dessa 2 inlägg, 599 00:35:36,650 --> 00:35:39,500 och nu om jag uppdatera sidan, 600 00:35:39,500 --> 00:35:42,060 Vi ser alla dessa inlägg här. 601 00:35:42,060 --> 00:35:44,250 >> Låter det vettigt hittills? 602 00:35:44,250 --> 00:35:46,400 Ja, en fråga? Åh, okej. 603 00:35:46,400 --> 00:35:51,440 Som ni ser har vi kunnat separera alla dessa koder ut 604 00:35:51,440 --> 00:35:53,920 i olika sektioner, och sedan kan du se att det är mest uppenbart i syfte koden. 605 00:35:53,920 --> 00:35:57,810 Denna fil här som representerar uppfattning, 606 00:35:57,810 --> 00:36:01,220 det bara bryr sig om att representera data, visa data. 607 00:36:01,220 --> 00:36:04,310 Det blir passerade någon form av data, och allt den gör är bara visa det för dig. 608 00:36:04,310 --> 00:36:07,660 I alla andra delar av din kod, behöver du inte oroa dig för något av detta, 609 00:36:07,660 --> 00:36:10,480 och på samma sätt, har din uppfattning kod inte oroa något om 610 00:36:10,480 --> 00:36:13,390 hur man kan få tillgång till databasen och så vidare och så vidare, 611 00:36:13,390 --> 00:36:19,950 vilket är riktigt bra och gör din kod mycket mer hanterbar. 612 00:36:19,950 --> 00:36:23,390 Som jag sa, åsikter, de är dynamiska i att 613 00:36:23,390 --> 00:36:27,080 det är 1 fil, men det skulle generera olika vyer 614 00:36:27,080 --> 00:36:29,940 utifrån de variabler du faktiskt passerar in, 615 00:36:29,940 --> 00:36:32,370 och dessutom finns det en massa olika hjälpfunktioner 616 00:36:32,370 --> 00:36:34,230 som du kan använda för att hjälpa dig att skriva din kod snabbare, 617 00:36:34,230 --> 00:36:36,320 som jag ska visa dig på bara en sekund. 618 00:36:36,320 --> 00:36:38,050 Yeah. 619 00:36:38,050 --> 00:36:42,490 >> [Student] Så $ 0 är en regulator, eller hur? 620 00:36:42,490 --> 00:36:44,000 Den andra saken. 621 00:36:44,000 --> 00:36:46,090 Frågan är är $ 0 en regulator? 622 00:36:46,090 --> 00:36:48,610 $ 0 är en variabel jag skapat här. 623 00:36:48,610 --> 00:36:51,320 Jag skapade en uppfattning först. Jag tilldelat det till viss variabel. 624 00:36:51,320 --> 00:36:54,960 Då jag passerade det in i denna funktion, ange den som kroppen av svaret. 625 00:36:54,960 --> 00:36:57,260 Låter det vettigt? 626 00:36:57,260 --> 00:37:02,200 [Student] Så är vy :: fabrik, är vyn som en klass 627 00:37:02,200 --> 00:37:06,610 eller ett bibliotek [ohörbart] fabriken funktion? 628 00:37:06,610 --> 00:37:10,640 Frågan är om utsikten :: fabriken funktion, 629 00:37:10,640 --> 00:37:14,020 och i grund och botten är detta lite mer objektorienterad programmering i grunden. 630 00:37:14,020 --> 00:37:18,000 Se är vyn klassen, och den har en metod som kallas "Factory" 631 00:37:18,000 --> 00:37:24,170 och det är ett sätt att ta tag i objekt som har namnet "blog / index." 632 00:37:24,170 --> 00:37:27,140 Och det är lite mer objektorienterad programmering grejer 633 00:37:27,140 --> 00:37:33,010 att jag inte tänker gå in på här för mycket. 634 00:37:33,010 --> 00:37:36,400 Nu uppenbarligen, vill vi skapa nya tjänster, 635 00:37:36,400 --> 00:37:38,790 men vi vill inte ha att göra det genom en databas, 636 00:37:38,790 --> 00:37:41,280 så vi kommer att skapa en ny åtgärd för att skapa ett nytt inlägg, 637 00:37:41,280 --> 00:37:43,050 och det finns en massa saker som vi måste göra. 638 00:37:43,050 --> 00:37:45,910 >> Det första vi ska göra - låt oss ta itu med dessa saker en efter en. 639 00:37:45,910 --> 00:37:48,320 Det första vi gör är att vi har att skapa ett formulär 640 00:37:48,320 --> 00:37:54,460 för att sätta in ett nytt inlägg, 641 00:37:54,460 --> 00:37:57,360 men jag kommer också att lägga till en ny åtgärd först, 642 00:37:57,360 --> 00:38:01,050 så att lägga till en ny åtgärd är precis lika enkelt som 643 00:38:01,050 --> 00:38:03,490 lägga till en ny funktion med handkontrollen, 644 00:38:03,490 --> 00:38:13,710 och nu ska jag göra något mycket grundläggande, 645 00:38:13,710 --> 00:38:20,850 bara ta denna uppfattning och lägga upp det, bara visa det för dig. 646 00:38:20,850 --> 00:38:26,220 Och så nu ska jag skapa en ny vy fil, 647 00:38:26,220 --> 00:38:33,690 och jag ska börja skriva lite grejer. 648 00:38:33,690 --> 00:38:36,540 Vad är trevligt om Kohana är att de ger en massa olika hjälpfunktioner 649 00:38:36,540 --> 00:38:38,790 för dig att skriva vykod lättare, 650 00:38:38,790 --> 00:38:41,970 och 1 av dessa hjälpfunktioner eller hjälpare moduler 651 00:38:41,970 --> 00:38:45,860 är runt skriver former. 652 00:38:45,860 --> 00:38:49,460 För att skriva blanketter, tror jag egentligen inte att direkt skriva någon HTML själv. 653 00:38:49,460 --> 00:38:51,100 Ni har skrivit HTML-formulär. 654 00:38:51,100 --> 00:38:54,850 Du vet hur det kan vara riktigt, riktigt smärtsamt och besvärligt att skriva blanketter. 655 00:38:54,850 --> 00:38:59,970 Det är inte roligt, så som tur är, 656 00:38:59,970 --> 00:39:04,860 Vi kan i princip skriva ett formulär med hjälp av Kohana s 657 00:39:04,860 --> 00:39:11,190 bildar hjälpfunktioner för att göra det åt oss. 658 00:39:11,190 --> 00:39:17,340 Vi kommer att i grunden ha fält för varje enskild sak som vi har, 659 00:39:17,340 --> 00:39:23,160 så en för författare och en för kropparna. 660 00:39:23,160 --> 00:39:27,090 Vi kommer att ha en etikett, och vi kommer att ha en ingång. 661 00:39:37,450 --> 00:39:41,360 >> Och slutligen, vi kommer att ha en underkastelse. 662 00:39:49,350 --> 00:39:52,230 Och som ni kan se, är det mycket renare att skriva 663 00:39:52,230 --> 00:39:58,150 än allt det rörigt HTML, vilket är ganska trevligt. 664 00:39:58,150 --> 00:40:00,930 Visst, det finns andra webb ramar som har det ännu renare än så, 665 00:40:00,930 --> 00:40:04,440 men det är åtminstone bättre än att skriva HTML själv. 666 00:40:09,400 --> 00:40:11,130 Awesome, så det här är vad du ser. 667 00:40:11,130 --> 00:40:13,530 Det är lite rörigt, 668 00:40:13,530 --> 00:40:19,720 så jag kommer att lägga till en radbrytning där 669 00:40:19,720 --> 00:40:21,180 för att göra det ser lite trevligare. 670 00:40:21,180 --> 00:40:23,330 Jo, naturligtvis, fortfarande ser det riktigt, riktigt illa, men vi bara fokuserat 671 00:40:23,330 --> 00:40:26,050 på funktionaliteten för nu och inte om estetik. 672 00:40:26,050 --> 00:40:28,010 Ingen tid att göra allt. 673 00:40:28,010 --> 00:40:30,600 Och som ni kan se, nu har vi en super grundläggande form, 674 00:40:30,600 --> 00:40:32,080 vilket är ganska trevligt. 675 00:40:32,080 --> 00:40:36,730 Denna kod skulle jag säga är renare än att försöka skriva en HTML bilda dig själv, 676 00:40:36,730 --> 00:40:40,290 så det är trevligt. 677 00:40:40,290 --> 00:40:42,030 Vad händer nu? 678 00:40:42,030 --> 00:40:49,260 Nu måste vi göra saker med åtgärden. 679 00:40:49,260 --> 00:40:51,240 Normalt när man skriver HTML-formulär, 680 00:40:51,240 --> 00:40:54,070 du måste berätta det där det kommer att skicka formuläret till. 681 00:40:54,070 --> 00:40:56,050 Som standard i de flesta webbramverk, 682 00:40:56,050 --> 00:40:58,200 ställs till exakt samma webbadress, så saken är, 683 00:40:58,200 --> 00:41:01,310 om du skickar en begäran få till / blog / nytt, 684 00:41:01,310 --> 00:41:03,240 det ska visa dig formuläret, 685 00:41:03,240 --> 00:41:06,810 men om du skickar ett inlägg begäran till / blog / ny med data, 686 00:41:06,810 --> 00:41:10,000 Det borde faktiskt försöka rädda det inlägget 687 00:41:10,000 --> 00:41:13,300 och göra något med den. 688 00:41:20,630 --> 00:41:22,180 >> Vad vi ska göra är att 689 00:41:22,180 --> 00:41:25,320 i princip allt vi behöver göra för att kontrollera om det är ett inlägg begäran eller begäran få 690 00:41:25,320 --> 00:41:29,350 är att kolla vad som är efter variabler som du kan ange. 691 00:41:29,350 --> 00:41:34,560 Och om posten variabeln är satt, då ska vi försöka skapa en ny post. 692 00:41:34,560 --> 00:41:38,440 Återigen, vi gör just detta, 693 00:41:38,440 --> 00:41:41,090 och som skapar ett nytt inlägg, och vi bokstavligen kommer att 694 00:41:41,090 --> 00:41:51,150 ställa sina områden som detta, 695 00:41:51,150 --> 00:41:55,640 och sedan ska vi rädda den. 696 00:41:55,640 --> 00:41:59,200 Och då kommer jag att omdirigera 697 00:41:59,200 --> 00:42:07,660 till indexsidan så de kan se vår lista med inlägg igen. 698 00:42:07,660 --> 00:42:09,620 Låt oss prova det. 699 00:42:09,620 --> 00:42:15,160 Jag säger, "Brandon" 700 00:42:15,160 --> 00:42:18,140 och sedan skicka den posten, och om allt går bra, 701 00:42:18,140 --> 00:42:21,390 som ni kan se, omdirigeras det mig till indexsidan, 702 00:42:21,390 --> 00:42:24,140 och om jag bläddrar till botten, har vi en nyinsatt inlägg. 703 00:42:24,140 --> 00:42:26,430 Yay! 704 00:42:26,430 --> 00:42:28,430 Ja, fråga. 705 00:42:28,430 --> 00:42:31,760 >> [Student] Tänk om du hade skrivit in exakt samma sak 706 00:42:31,760 --> 00:42:33,380 du skrev tidigare? 707 00:42:33,380 --> 00:42:36,950 Är det kontrollera att du inte har duplicerat 708 00:42:36,950 --> 00:42:38,810 samma underkastelse? 709 00:42:38,810 --> 00:42:41,660 Var standard, nej, eftersom som standard - 710 00:42:41,660 --> 00:42:46,470 ledsen, frågan är om du skriver in exakt samma data i form 711 00:42:46,470 --> 00:42:50,180 och skicka in det, kommer det att du kan sätta in en dubblett objekt, 712 00:42:50,180 --> 00:42:52,550 a duplicera post, i huvudsak? 713 00:42:52,550 --> 00:42:54,070 Just nu, ja, kommer det att du kan göra det, 714 00:42:54,070 --> 00:42:58,860 eftersom i databaser det är helt korrekt att ha helt dubblettrader, 715 00:42:58,860 --> 00:43:02,260 men om det är ett bekymmer, då kan du lägga till valideringar, till exempel, 716 00:43:02,260 --> 00:43:06,430 att se till att om detta är exakt samma som något som redan finns, 717 00:43:06,430 --> 00:43:08,720 då säga att det är ett ogiltigt objekt, 718 00:43:08,720 --> 00:43:11,200 och sedan kan du även ange ditt felmeddelande 719 00:43:11,200 --> 00:43:14,390 och säga, "Ogiltig eftersom det redan existerar" eller något liknande. 720 00:43:14,390 --> 00:43:22,420 Men i detta fall kan jag bara skapa något duplikat. 721 00:43:22,420 --> 00:43:26,010 Nu ska vi försöka lägga till några valideringar. 722 00:43:26,010 --> 00:43:30,400 Problemet med detta just nu är att 723 00:43:30,400 --> 00:43:34,220 Jag kunde bokstavligen lämna in en helt tom inlägg. 724 00:43:34,220 --> 00:43:37,500 Jag kan klicka på den här knappen just nu, och där vi går. 725 00:43:37,500 --> 00:43:40,290 Du kan inte riktigt se det, men denna extra rad här 726 00:43:40,290 --> 00:43:43,830 indikerar att jag bokstavligen har en ny post. 727 00:43:43,830 --> 00:43:46,050 Den har bara en tom författare och en tom kropp, 728 00:43:46,050 --> 00:43:48,630 och vi vill inte tillåta människor att göra det. 729 00:43:48,630 --> 00:43:52,550 Det är där validering kommer in 730 00:43:52,550 --> 00:43:57,540 >> Jag kan gå till min modell objekt, 731 00:43:57,540 --> 00:43:59,530 och nu kan jag lägga till en ny funktion som anger 732 00:43:59,530 --> 00:44:02,000 vilken valideringsregler jag skulle lägga till denna modell 733 00:44:02,000 --> 00:44:06,840 att se till att det är giltigt eller att specificera vad innebär det att vara en giltig inlägg? 734 00:44:06,840 --> 00:44:10,210 Och jag vill säga att det är bara en giltig inlägg om både författaren och kropp 735 00:44:10,210 --> 00:44:15,150 inte är tom, och det är hur du gör det i Kohana. 736 00:44:15,150 --> 00:44:18,750 Du skapar en ny funktion som heter "Regler", 737 00:44:18,750 --> 00:44:20,210 och då du i princip tillbaka en associativ array 738 00:44:20,210 --> 00:44:24,230 som definierar valideringsregler för detta objekt. 739 00:44:24,230 --> 00:44:27,530 Vi kommer att gå tillbaka arrayen, och sedan vad vi ska göra är att 740 00:44:27,530 --> 00:44:32,820 säger "författare", det går till en matris, 741 00:44:32,820 --> 00:44:37,720 som går till en annan array som heter "inte tom." 742 00:44:37,720 --> 00:44:41,480 Och då kommer jag att säga "kropp." 743 00:44:50,980 --> 00:44:54,120 Okej, och syntaxen för och struktur för detta 744 00:44:54,120 --> 00:44:56,530 kan se lite besvärligt och lite komplicerat. 745 00:44:56,530 --> 00:44:59,330 Om du läser dokumentationen, det är ganska enkelt att räkna ut, 746 00:44:59,330 --> 00:45:02,500 Men i huvudsak är detta vad du behöver göra för att specificera 747 00:45:02,500 --> 00:45:04,130 vissa valideringsregler, och det finns en massa olika regler 748 00:45:04,130 --> 00:45:06,810 att Kohana ger dig gratis, som du kan lägga till regler för att säga 749 00:45:06,810 --> 00:45:08,410 det måste vara åtminstone denna längd. 750 00:45:08,410 --> 00:45:11,800 Kanske det måste vara numeriskt. Kanske det måste vara alfanumeriska. 751 00:45:11,800 --> 00:45:14,410 Kanske det måste vara som mest denna längd, så vidare och så vidare. 752 00:45:14,410 --> 00:45:17,730 Det finns en massa olika regler som Kohana ger dig, 753 00:45:17,730 --> 00:45:19,610 och du kan gå på deras hemsida, titta på dokumentationen, 754 00:45:19,610 --> 00:45:23,150 och du kan se alla de olika saker som du kan göra. 755 00:45:23,150 --> 00:45:25,650 >> Men det är allt jag har att göra, 756 00:45:25,650 --> 00:45:30,490 och nu ska vi se vad som händer 757 00:45:30,490 --> 00:45:34,060 Om jag in ett tomt inlägg. 758 00:45:34,060 --> 00:45:36,960 Vad kommer att hända? Åh, nej, jag får ett felmeddelande. 759 00:45:36,960 --> 00:45:39,440 Jag får ett undantag validering. 760 00:45:39,440 --> 00:45:41,070 Tja, det är bra. 761 00:45:41,070 --> 00:45:43,200 Det berättade för mig att min modell är ogiltigt, 762 00:45:43,200 --> 00:45:45,780 men jag vill inte visa ett undantag 763 00:45:45,780 --> 00:45:48,720 till mina användare när de försöker lämna något ogiltigt, eller hur? 764 00:45:48,720 --> 00:45:51,560 Jag vill ge dem någon form av vänligare felmeddelande 765 00:45:51,560 --> 00:45:53,610 när något går fel. 766 00:45:53,610 --> 00:46:01,830 Vad vi ska göra är att vi ska 767 00:46:01,830 --> 00:46:04,490 linda in allt i ett försök fånga slinga. 768 00:46:04,490 --> 00:46:06,750 Faktiskt, jag tror att detta är också något som du inte har lärt sig ännu 769 00:46:06,750 --> 00:46:10,820 i CS50, eftersom C, programmeringsspråket C, 770 00:46:10,820 --> 00:46:14,000 inte har undantag, men nästan varje annat språk 771 00:46:14,000 --> 00:46:16,700 har undantag, så riktigt, riktigt kortfattat, 772 00:46:16,700 --> 00:46:19,430 Ett undantag är något som en del av koden kan 773 00:46:19,430 --> 00:46:21,430 kasta ett undantag när något går fel, 774 00:46:21,430 --> 00:46:23,410 men då kanske någon annan bit kod högre upp 775 00:46:23,410 --> 00:46:25,810 kan fånga detta undantag och göra något med den. 776 00:46:25,810 --> 00:46:27,710 >> Till exempel i det här fallet, 777 00:46:27,710 --> 00:46:29,940 den bit kod som försöker rädda en modell, 778 00:46:29,940 --> 00:46:33,170 Det validerar modellen, och om det står, "Okej, är denna modell ogiltigt," 779 00:46:33,170 --> 00:46:36,150 det kommer att kasta ett undantag, och det är typ av motsvarande 780 00:46:36,150 --> 00:46:39,870 i C du kan returnera en -1 eller något liknande. 781 00:46:39,870 --> 00:46:42,320 Och sedan för mig, denna funktion, min kod 782 00:46:42,320 --> 00:46:46,310 på en högre nivå, kan jag försöka fånga detta undantag 783 00:46:46,310 --> 00:46:49,330 och i princip säga, "Okej, om jag fångar undantaget, vad ska jag göra?" 784 00:46:49,330 --> 00:46:51,570 Eller jag kunde välja att inte fånga detta undantag och låta någon högre upp 785 00:46:51,570 --> 00:46:54,400 fånga undantag, eller om ingen fångar den, 786 00:46:54,400 --> 00:46:56,820 då hela programmet kraschar och säger, 787 00:46:56,820 --> 00:46:59,170 "Något gick fel, och jag kunde inte hantera det." 788 00:46:59,170 --> 00:47:04,490 >> Men det vi gör är att du linda en bit kod i ett try-block, 789 00:47:04,490 --> 00:47:09,030 och då du även lägga till något som kallas en catch-blocket, 790 00:47:09,030 --> 00:47:17,300 vilket är den typ av kod som kommer att försöka fånga undantag som kan uppstå. 791 00:47:17,300 --> 00:47:20,430 Och så om jag fånga denna särskilda undantag 792 00:47:20,430 --> 00:47:23,110 eller ogiltig undantag, vad jag ska göra är 793 00:47:23,110 --> 00:47:31,210 Jag kommer att ställa in fel - jag tror det är hur jag gör det - 794 00:47:31,210 --> 00:47:35,370 och jag kommer att ställa de fel på något föremål. 795 00:47:35,370 --> 00:47:40,920 Och vad jag ska göra är om den träffar detta undantag, 796 00:47:40,920 --> 00:47:43,090 det kommer inte att styra, och om det inte omdirigera, 797 00:47:43,090 --> 00:47:46,160 det kommer att komma ut ur den, om bloggen 798 00:47:46,160 --> 00:47:49,920 och slå den här bloggen / nya, som vill att jag vill göra. 799 00:47:49,920 --> 00:47:53,190 Om det finns ett fel, då jag vill gå tillbaka till den form 800 00:47:53,190 --> 00:47:55,100 och visa dessa fel. 801 00:47:55,100 --> 00:48:00,780 Nu vad jag vill göra är att jag vill passera på dessa fel 802 00:48:00,780 --> 00:48:07,010 till vyn. 803 00:48:07,010 --> 00:48:10,360 Okej, jag tror att jag har uppfattningen just här, 804 00:48:10,360 --> 00:48:14,660 och i grund och botten vill jag visa dessa fel om de finns. 805 00:48:14,660 --> 00:48:19,740 Innan jag skriver HTML för det, jag ska verkligen snabbt 806 00:48:19,740 --> 00:48:21,720 visa dig hur strukturen för detta fel variabla ser ut, 807 00:48:21,720 --> 00:48:23,080 och detta är en god praxis i allmänhet. 808 00:48:23,080 --> 00:48:25,070 Många gånger du får något tillbaka från någon metod, 809 00:48:25,070 --> 00:48:27,250 någon funktion inom ramen för webben, 810 00:48:27,250 --> 00:48:29,410 och du inte vet vad variabeln ser ut, 811 00:48:29,410 --> 00:48:31,210 så att du inte vet hur man arbetar med den. 812 00:48:31,210 --> 00:48:37,790 Jag kommer att använda en utskrifts r metod att i princip skriva ut den. 813 00:48:37,790 --> 00:48:41,100 >> Och som ni kan se, säger det mig att det är en associerad matris, 814 00:48:41,100 --> 00:48:44,880 och du har en nyckel, författare, pekar på denna sträng, 815 00:48:44,880 --> 00:48:47,050 Författaren får inte vara tomma, och en annan tangent, kropp, 816 00:48:47,050 --> 00:48:49,680 pekar på en annan sträng, kropp får inte vara tomt. 817 00:48:49,680 --> 00:48:52,130 Jag är som, okej, cool. 818 00:48:52,130 --> 00:48:56,230 Sedan kan jag iterera igenom arrayen och skriva ut varje enskilt meddelande. 819 00:48:56,230 --> 00:49:02,150 Det är i princip som en associativ array med en massa meddelanden. 820 00:49:02,150 --> 00:49:13,500 Vad jag ska göra är att "om fel," 821 00:49:13,500 --> 00:49:17,140 och jag kommer att skapa en icke ordnad lista, 822 00:49:17,140 --> 00:49:20,860 och jag kommer att iterera igenom alla fel. 823 00:49:33,730 --> 00:49:38,710 Och det här, och nu ska jag försöka skicka det igen, 824 00:49:38,710 --> 00:49:41,200 och låt oss se vad vi får. 825 00:49:41,200 --> 00:49:45,370 Nu får vi denna trevliga lista över fel, 826 00:49:45,370 --> 00:49:48,630 och det är fortfarande ganska ful, men detta uppenbarligen kan formateras för att se bra ut, 827 00:49:48,630 --> 00:49:51,620 men den grundläggande idén är bara i några få rader kod, 828 00:49:51,620 --> 00:49:53,720 vi kunde validera vår modell, 829 00:49:53,720 --> 00:49:56,510 se till att vissa områden inte var tomma, 830 00:49:56,510 --> 00:49:59,740 och om något gick fel, sedan tillbaka något slags felmeddelande 831 00:49:59,740 --> 00:50:01,760 Jag kunde då presentera tillbaka till användaren. 832 00:50:01,760 --> 00:50:03,910 Du kan också anpassa din validering 833 00:50:03,910 --> 00:50:07,590 så att du faktiskt kan få ett felmeddelande 834 00:50:07,590 --> 00:50:09,620 som är mer specifika för ditt program eller något liknande. 835 00:50:09,620 --> 00:50:14,600 Allt som är allmänt anpassade. 836 00:50:14,600 --> 00:50:17,150 >> Tyvärr, vi ont om tid, 837 00:50:17,150 --> 00:50:20,040 så jag kommer att behöva skära av den levande kodning session här. 838 00:50:20,040 --> 00:50:22,980 Det finns en massa andra funktioner som jag vill visa för dig 839 00:50:22,980 --> 00:50:25,650 i detta exempel. 840 00:50:25,650 --> 00:50:27,620 Till exempel kan du lägga till mallar för din webbplats, 841 00:50:27,620 --> 00:50:31,110 så kanske det finns någon form av HTML-kod som du vill använda 842 00:50:31,110 --> 00:50:35,190 till varje enskild sida på din webbplats, och i stället för att klistra in som 843 00:50:35,190 --> 00:50:40,630 i varje enskild vy fil du har, vilket naturligtvis skulle vara en dålig praxis, 844 00:50:40,630 --> 00:50:43,020 du kan i princip definiera dessa mallar, 845 00:50:43,020 --> 00:50:46,660 och sedan i handkontrollen säga, "Okej, jag använder den här mallen." 846 00:50:46,660 --> 00:50:50,130 "Har alla mina åsikter använda den här mallen." 847 00:50:50,130 --> 00:50:52,470 Och en sista sak jag vill visa för dig också 848 00:50:52,470 --> 00:50:57,800 att vi inte har tid för är cross-site scripting, 849 00:50:57,800 --> 00:51:01,430 och i grund och botten tror jag att ni har förmodligen sett i CS50 - 850 00:51:01,430 --> 00:51:03,770 Jag tror att David Malan talade förmodligen om hur du oftast kan injicera 851 00:51:03,770 --> 00:51:08,040 JavaScript-kod i - har ni pratat om det här? 852 00:51:08,040 --> 00:51:10,220 Kanske? Kanske inte? 853 00:51:10,220 --> 00:51:12,670 >> Men många gånger kan du injicera skadlig JavaScript-kod 854 00:51:12,670 --> 00:51:15,630 in i någon databas, och om de inte undgå att på rätt sätt, 855 00:51:15,630 --> 00:51:18,280 sedan när de presenterar dessa data tillbaka till användaren, 856 00:51:18,280 --> 00:51:21,310 då kan det gå någon form av slumpmässiga JavaScript-kod som du inte vill ska hända, 857 00:51:21,310 --> 00:51:23,050 och jag kommer att visa hur du skulle göra det inom Kohana. 858 00:51:23,050 --> 00:51:25,380 Det är faktiskt riktigt, riktigt enkelt. 859 00:51:25,380 --> 00:51:31,920 Jag skulle kunna göra det nu i 2 sekunder bokstavligen. 860 00:51:31,920 --> 00:51:34,560 Allt du behöver göra är i grunden linda dessa saker 861 00:51:34,560 --> 00:51:46,920 i denna sak kallad HTML-entiteter. 862 00:51:46,920 --> 00:51:51,180 Och det kommer automatiskt undan alla tecken på rätt sätt 863 00:51:51,180 --> 00:51:54,730 och se till att du inte får det här problemet. 864 00:51:54,730 --> 00:51:57,220 [Student] Du stavade det första testet felaktigt. 865 00:51:57,220 --> 00:52:01,030 [Brandon Liu] Åh, oops. 866 00:52:01,030 --> 00:52:06,420 >> Okej, det var allt jag hade att dela med dig i dag. 867 00:52:06,420 --> 00:52:09,930 Dessa bilder kommer att läggas ut, men dessa är i allmänhet 868 00:52:09,930 --> 00:52:13,900 de enda resurser som du bör verkligen behöver för att komma igång med Kohana. 869 00:52:13,900 --> 00:52:16,770 Du kan gå till webbplatsen. De har en manual, och de har också ett API explorer. 870 00:52:16,770 --> 00:52:20,630 Vi kan utforska alla olika funktioner och hjälpfunktioner som de har för dig. 871 00:52:20,630 --> 00:52:22,070 De har i allmänhet tillräckligt med information på webbplatsen 872 00:52:22,070 --> 00:52:25,310 som du kan använda för att komma igång och komma igång med Kohana. 873 00:52:25,310 --> 00:52:30,840 Det finns inte så många tutorials, tror jag, för Kohana, utanför 874 00:52:30,840 --> 00:52:33,880 vad de har på hemsidan här, så det här är förmodligen din bästa insats. 875 00:52:33,880 --> 00:52:35,600 Men om du vill gå med ramen webben 876 00:52:35,600 --> 00:52:37,120 och du inte vill ha för att plocka upp ett nytt språk, 877 00:52:37,120 --> 00:52:39,780 och du vill ha något som är relativt lätt och har en lätt inlärningskurva, 878 00:52:39,780 --> 00:52:41,570 Jag skulle definitivt föreslå Kohana. 879 00:52:41,570 --> 00:52:44,040 Det är förmodligen det bästa erbjudandet för det. 880 00:52:44,040 --> 00:52:46,830 Det lustiga är dock om vi använder Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 vi kunde ha replik vad vi just gjorde 882 00:52:48,550 --> 00:52:51,430 och förmodligen mer på under 3 minuter. 883 00:52:51,430 --> 00:52:54,710 Inget skämt, men att lära sig Ruby on Rails tar mycket längre tid 884 00:52:54,710 --> 00:52:56,780 än vad det skulle ta att lära Kohana. 885 00:52:56,780 --> 00:52:58,840 Det är i grunden ditt val på vad du vill välja att lära sig, 886 00:52:58,840 --> 00:53:01,260 men om du vill komma igång snabbt, 887 00:53:01,260 --> 00:53:03,870 Kohana är definitivt ett mycket bra val. 888 00:53:03,870 --> 00:53:06,730 >> Några sista frågor innan vi avslutar? Ja. 889 00:53:06,730 --> 00:53:08,020 [Student] Hur skulle vi integrerar det 890 00:53:08,020 --> 00:53:13,120 i en CSS-ramverk som du använde när du instruera? 891 00:53:13,120 --> 00:53:16,700 Frågan är hur skulle vi integrerar det med en CSS-ramverk? 892 00:53:16,700 --> 00:53:18,740 Vad vi skulle förmodligen göra är att vi skulle förmodligen inkludera 893 00:53:18,740 --> 00:53:21,090 en ny mapp där vi skulle dumpa alla CSS-filer, 894 00:53:21,090 --> 00:53:23,010 och då skulle vi också lägga till en ny mall. 895 00:53:23,010 --> 00:53:26,090 I mallen skulle vi inkludera dessa CSS-filer 896 00:53:26,090 --> 00:53:28,410 att se till att de är refererade på varje sida, 897 00:53:28,410 --> 00:53:32,220 och sedan när du faktiskt skriver HTML, 898 00:53:32,220 --> 00:53:34,010 du bara lägga till lämpliga klasser och vad inte, 899 00:53:34,010 --> 00:53:36,100 och till exempel när du använder något som formuläret 900 00:53:36,100 --> 00:53:40,710 hjälpare funktion, kan du lägga till fler parametrar i efterhand 901 00:53:40,710 --> 00:53:42,830 att ange vilka klasser som du vill bli kopplad till olika saker 902 00:53:42,830 --> 00:53:47,820 så att de kunde styla det på rätt sätt, och det är i princip hur du skulle gå. 903 00:53:47,820 --> 00:53:50,100 >> Fler frågor? 904 00:53:50,100 --> 00:53:52,090 Awesome. 905 00:53:52,090 --> 00:53:58,540 Tack för din tid, och tack för att ni kom. 906 00:53:58,540 --> 00:54:05,170 Jag var inte kommer att lägga väldigt mycket annat, 907 00:54:05,170 --> 00:54:08,560 men en riktigt snabb sak är att vi inte har en länk 908 00:54:08,560 --> 00:54:12,590 till formuläret. 909 00:54:12,590 --> 00:54:14,310 Riktigt dum. 910 00:54:14,310 --> 00:54:20,110 Låt oss lägga en - faktiskt i vyn, blogg, index, 911 00:54:20,110 --> 00:54:23,890 låt oss verkligen snabbt lägga till en länk som går till den nya sidan, 912 00:54:23,890 --> 00:54:26,770 sidan där vi kan sätta in en ny post. 913 00:54:26,770 --> 00:54:29,950 Vi ska göra det här. 914 00:54:29,950 --> 00:54:34,020 Vad är trevligt är att det är hela denna grupp av HTML-hjälpfunktioner 915 00:54:34,020 --> 00:54:37,090 som gör olika saker för dig, så att du redan sett de enheter 916 00:54:37,090 --> 00:54:41,980 fungera här, men de har också en funktion som kallas "ankare", 917 00:54:41,980 --> 00:54:45,400 som du kan skriva i bloggen / nytt 918 00:54:45,400 --> 00:54:49,550 och säga, "Skicka in en ny blogg." 919 00:54:49,550 --> 00:54:51,850 Och det skulle skapa den länken för dig, 920 00:54:51,850 --> 00:54:54,120 och detta verkar verkligen trivialt att göra, men det är trevligt, 921 00:54:54,120 --> 00:54:58,720 därför anta att du flyttar din webbplats från 1 domän till en annan. 922 00:54:58,720 --> 00:55:01,390 Och om du bara skriver ut adresserna själv, 923 00:55:01,390 --> 00:55:04,350 då skulle du behöva ändra alla URL: er. 924 00:55:04,350 --> 00:55:06,850 Eller kanske du har flyttat den från 1 undermapp till en annan undermapp. 925 00:55:06,850 --> 00:55:08,790 Du måste ändra alla dessa webbadresser själv, 926 00:55:08,790 --> 00:55:12,180 och det är inte roligt. 927 00:55:12,180 --> 00:55:14,510 Du kan använda denna ankare just här, 928 00:55:14,510 --> 00:55:18,950 och du kan ändra den domän eller undermappen prefixet 929 00:55:18,950 --> 00:55:20,640 i konfigurationsfilen en gång, 930 00:55:20,640 --> 00:55:22,980 och sedan kommer den att gälla att överallt, och detta är, återigen, 931 00:55:22,980 --> 00:55:26,930 ett bra exempel på inte upprepa dig själv, att torka din kod ut. 932 00:55:26,930 --> 00:55:30,370 Varhelst du upprepa dig själv, försöka extrahera i någon sorts konfigurationsfil 933 00:55:30,370 --> 00:55:34,160 eller till en annan funktion och har den hantera det åt dig. 934 00:55:34,160 --> 00:55:42,930 >> Och det allra sista som jag ville visa dig var 935 00:55:42,930 --> 00:55:50,250 antar att vi är tillbaka på detta inlägg, och jag hade komponerat några riktigt lång essä, 936 00:55:50,250 --> 00:55:52,670 men jag glömde att ta med min författare. 937 00:55:52,670 --> 00:55:55,210 Nu när jag klickar på "Skicka inlägg," 938 00:55:55,210 --> 00:55:57,270 Jag förlorade allt. 939 00:55:57,270 --> 00:56:00,000 Nej! Verkligen sorgligt. 940 00:56:00,000 --> 00:56:03,870 Så hur ska du hantera det? 941 00:56:03,870 --> 00:56:06,070 Det här är vad vi gör. 942 00:56:06,070 --> 00:56:09,340 Vad vi gör är här för dessa in-och textområdet funktioner, 943 00:56:09,340 --> 00:56:12,700 Om vi ​​inkluderar en andra parameter, då värdet på den andra parametern 944 00:56:12,700 --> 00:56:16,620 kommer att bli det som fältet kommer att vara ifyllda från början. 945 00:56:16,620 --> 00:56:23,570 Vad vi kan göra är i vår blogg controller, 946 00:56:23,570 --> 00:56:25,360 vi kunde binda en annan variabel. 947 00:56:25,360 --> 00:56:27,050 Kalla det "värden" kanske. 948 00:56:27,050 --> 00:56:30,620 Och gå på posten array, bokstavligt talat. 949 00:56:30,620 --> 00:56:32,620 Det innebär att om valideringen misslyckades, 950 00:56:32,620 --> 00:56:36,570 övergå till mig efter array som jag lämnat in från den sista begäran, 951 00:56:36,570 --> 00:56:38,420 och på det sättet jag kan använda värdena från min sista inlämning 952 00:56:38,420 --> 00:56:44,540 att återbefolka fälten. 953 00:56:44,540 --> 00:56:49,600 Nu kan jag göra något liknande värden författare 954 00:56:49,600 --> 00:56:55,180 och värde kropp, och så nu om jag gör några random grejer 955 00:56:55,180 --> 00:57:01,490 och klicka på "Skicka in", då det stannar där. 956 00:57:01,490 --> 00:57:03,830 Men vi kommer att stöta på ett annat problem. 957 00:57:03,830 --> 00:57:07,670 Det fungerar, men om jag går till sidan den allra första gången, 958 00:57:07,670 --> 00:57:09,720 det kommer att krascha, och det beror på den allra första gången 959 00:57:09,720 --> 00:57:13,730 vi går till sidan, har detta inlägg variabel inte definierats ännu. 960 00:57:13,730 --> 00:57:18,170 Det är null. Det finns inte. 961 00:57:18,170 --> 00:57:21,630 >> Och vad vi vill säga är att om denna nyckel finns, 962 00:57:21,630 --> 00:57:27,750 sedan returnera värdet av denna matris, 963 00:57:27,750 --> 00:57:30,450 men om nyckeln inte finns, sedan en tom sträng. 964 00:57:30,450 --> 00:57:32,150 Det är de funktioner vi vill ha här. 965 00:57:32,150 --> 00:57:34,690 Vi vill kontrollera om nyckeln finns innan du försöker komma åt arrayen, 966 00:57:34,690 --> 00:57:36,580 och lyckligtvis nog, 967 00:57:36,580 --> 00:57:38,570 Kohana ger oss även en hjälpare funktion för det. 968 00:57:38,570 --> 00:57:41,040 De har hela denna svit av funktioner 969 00:57:41,040 --> 00:57:43,660 under namnet ARR, kort för samling, 970 00:57:43,660 --> 00:57:45,800 och de har 1 funktion som heter "få" 971 00:57:45,800 --> 00:57:48,690 och man kan passera i arrayen, 972 00:57:48,690 --> 00:57:50,740 och du kan skicka in namnet på nyckeln. 973 00:57:50,740 --> 00:57:54,330 Då i princip vad det kommer att göra är att det kommer att försöka få den nyckeln, 974 00:57:54,330 --> 00:57:56,470 men om den nyckeln inte finns i arrayen, 975 00:57:56,470 --> 00:58:00,900 då den ger tom, eller vi kan också ange en standard, tror jag, 976 00:58:00,900 --> 00:58:03,500 vilket är trevligt. 977 00:58:09,740 --> 00:58:13,150 Nu om vi gör samma sak igen, 978 00:58:13,150 --> 00:58:15,970 då ser du nu det fungerar första gången, 979 00:58:15,970 --> 00:58:18,080 och återigen, om vi skriver i någon random stuff 980 00:58:18,080 --> 00:58:23,210 och försöka lägga fram, då det stannar där. 981 00:58:23,210 --> 00:58:31,640 >> Och jag antar att jag kan visa dig hur du lägger till en mall riktigt snabbt. 982 00:58:31,640 --> 00:58:36,140 Vad vi kan göra först säga kan vi lägga till en ny vy som kallas "template.php" 983 00:58:36,140 --> 00:58:38,890 inom Vyer mappen 984 00:58:38,890 --> 00:58:44,730 och vad jag ska göra är att jag ska skriva ut något som kallas "innehåll", 985 00:58:44,730 --> 00:58:49,130 som kommer att vara min huvudinnehåll. 986 00:58:49,130 --> 00:58:51,380 Och kanske längst ner jag ska lägga till, säg, 987 00:58:51,380 --> 00:58:53,340 upphovsrätt. 988 00:58:53,340 --> 00:58:56,150 [Ohörbar studenten frågan] 989 00:58:56,150 --> 00:58:58,050 [Brandon Liu] Kanske detta är en super grundläggande mall jag vill använda. 990 00:58:58,050 --> 00:59:02,840 Jag vill ha en mapp med min upphovsrätt på varje sida, 991 00:59:02,840 --> 00:59:05,560 och nu vad jag ska göra i mitt controller 992 00:59:05,560 --> 00:59:07,740 är nu i stället för att säga, "utökar Controller" 993 00:59:07,740 --> 00:59:11,870 Jag kommer att säga, "utökar Controller_Template," 994 00:59:11,870 --> 00:59:15,890 och nu i stället för att säga, "svars kropp är lika med denna uppfattning" 995 00:59:15,890 --> 00:59:24,110 Jag kommer att säga, "den här mallen innehåll är -" 996 00:59:24,110 --> 00:59:27,690 och jag tror - tror jag sätter ett likhetstecken? 997 00:59:27,690 --> 00:59:32,710 Jag glömmer. Ja, tänkte jag så. 998 00:59:32,710 --> 00:59:37,710 Och nu har jag satt att innehållsvariabel till lika vyn. 999 00:59:37,710 --> 00:59:40,960 Jag kan göra samma sak här. 1000 00:59:49,620 --> 00:59:57,170 Och nu om jag uppdaterar, kan du nu se den här upphovsrätts läggs där, 1001 00:59:57,170 --> 01:00:00,350 och bara göra några slumpmässiga inlägg, 1002 01:00:00,350 --> 01:00:06,760 och sedan, igen, bör du se till att upphovsrätten är längst ner på sidan. 1003 01:00:06,760 --> 01:00:10,730 >> Stor. Det var allt jag ville visa er. 1004 01:00:10,730 --> 01:00:14,970 [Applåder] 1005 01:00:14,970 --> 01:00:18,950 Några frågor? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]