1 00:00:00,000 --> 00:00:02,150 >> [Seminário] [Kohana: A Lightweight PHP Framework] 2 00:00:02,150 --> 00:00:04,000 [Liu Brandon] [Harvard University] 3 00:00:04,000 --> 00:00:07,270 [Isto é CS50.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> Olá a todos. Meu nome é Brandon. 5 00:00:09,130 --> 00:00:11,000 Eu sou um júnior aqui na faculdade fazendo ciência da computação, e hoje vamos falar sobre 6 00:00:11,000 --> 00:00:14,460 Kohana, que é um framework de desenvolvimento web PHP. 7 00:00:14,460 --> 00:00:17,260 Hoje vai ser um seminário de codificação ao vivo, 8 00:00:17,260 --> 00:00:21,000 então eu estou basicamente vai gastar 5-10 minutos explicando o que Kohana é, 9 00:00:21,000 --> 00:00:25,000 e então eu estou literalmente indo para construir um blog super simples 10 00:00:25,000 --> 00:00:28,570 para você aqui literalmente do zero. 11 00:00:28,570 --> 00:00:32,229 Nós vamos fazer o download do código no site da Kohana, 12 00:00:32,229 --> 00:00:35,000 e vamos começar a construir um blog, e espero que ele vai ser muito instrutivo, 13 00:00:35,000 --> 00:00:37,000 porque você vai ver, talvez, talvez eu vou cometer alguns erros, 14 00:00:37,000 --> 00:00:39,000 e você verá me recuperar a partir deles, 15 00:00:39,000 --> 00:00:42,040 ou você vai ver o meu processo de pensamento como eu construir através deste blog, 16 00:00:42,040 --> 00:00:44,000 e enquanto isso, você também vai se familiarizar com o próprio quadro. 17 00:00:44,000 --> 00:00:48,000 Esperemos que ele vai ser um exercício muito instrutivo. 18 00:00:48,000 --> 00:00:51,370 >> Em primeiro lugar, o que exatamente é um framework? 19 00:00:51,370 --> 00:00:54,000 Se você estiver tomando CS50 até agora, você realmente não tenho trabalhado com qualquer 20 00:00:54,000 --> 00:00:56,000 Ainda estruturas, ea coisa é esta. 21 00:00:56,000 --> 00:01:00,000 Você provavelmente já fez um desenvolvimento web pset já, 22 00:01:00,000 --> 00:01:03,000 e digamos que você continuar a construir sites e manter a construção de websites. 23 00:01:03,000 --> 00:01:05,000 Você vai começar a notar algumas coisas. 24 00:01:05,000 --> 00:01:07,000 A primeira coisa que você vai notar é que você deve estar se fazendo as mesmas coisas 25 00:01:07,000 --> 00:01:09,150 uma e outra vez o tempo todo, 26 00:01:09,150 --> 00:01:13,000 coisas como a limpeza de dados de entrada do usuário, 27 00:01:13,000 --> 00:01:17,250 coisas como organizar seus arquivos de uma certa maneira. 28 00:01:17,250 --> 00:01:19,000 A outra coisa que você também provavelmente vai notar é que o seu código 29 00:01:19,000 --> 00:01:21,000 pode começar a ficar muito, muito confuso, 30 00:01:21,000 --> 00:01:24,000 e você pode deixá-lo confuso e só tem um tempo muito difícil mantê-lo, 31 00:01:24,000 --> 00:01:26,000 ou você pode começar a estruturar o seu código e torná-lo modular 32 00:01:26,000 --> 00:01:28,510 em determinadas maneiras de torná-lo mais sustentável. 33 00:01:28,510 --> 00:01:31,020 >> Este é o lugar onde frameworks web, basicamente, veio dentro 34 00:01:31,020 --> 00:01:33,680 Essas pessoas que haviam construído um monte de sites, segundo eles, 35 00:01:33,680 --> 00:01:35,820 "Nós não precisamos de refazer esta cada vez que construir um site." 36 00:01:35,820 --> 00:01:39,050 "Por que não vamos apenas fazer um pacote que faz todas estas coisas para você 37 00:01:39,050 --> 00:01:41,250 cada vez que você quiser construir um site? " 38 00:01:41,250 --> 00:01:43,030 E assim que quando você faz um novo site, 39 00:01:43,030 --> 00:01:45,880 você se concentrar apenas sobre o que exatamente este determinado site é sobre. 40 00:01:45,880 --> 00:01:48,630 Você não precisa repetir todas as várias configuração 41 00:01:48,630 --> 00:01:53,070 e separação de códigos e código de reescrever 42 00:01:53,070 --> 00:01:56,180 que muitas vezes você tem que fazer quando você está fazendo sites. 43 00:01:56,180 --> 00:01:59,410 A idéia é que um quadro permite que você escreva um código de nível superior 44 00:01:59,410 --> 00:02:01,030 sem ter que se preocupar com detalhes de nível inferior. 45 00:02:01,030 --> 00:02:03,670 Um detalhe de baixo nível pode ser algo como 46 00:02:03,670 --> 00:02:07,250 lidar com a limpeza de dados de entrada do usuário. 47 00:02:07,250 --> 00:02:09,320 Isso é algo que você não deve realmente precisa se preocupar. 48 00:02:09,320 --> 00:02:12,370 Você deve se concentrar no que a sua alocação web é realmente sobre. 49 00:02:12,370 --> 00:02:14,790 Ele elimina um monte de código clichê. 50 00:02:14,790 --> 00:02:16,640 É uma arquitetura para seu projeto. 51 00:02:16,640 --> 00:02:18,680 >> O mais popular seria Model-View-Controller, 52 00:02:18,680 --> 00:02:20,380 que eu vou falar em um segundo. 53 00:02:20,380 --> 00:02:22,790 E um monte de vezes, essas estruturas incorporam um conjunto de procedimentos, 54 00:02:22,790 --> 00:02:25,750 normas e as melhores práticas para que você use 55 00:02:25,750 --> 00:02:28,190 de modo que quando você adota o framework web 56 00:02:28,190 --> 00:02:30,050 você tem que escrever o código de uma certa maneira, 57 00:02:30,050 --> 00:02:32,430 e é geralmente um acordo sobre conjunto de princípios 58 00:02:32,430 --> 00:02:34,290 pela comunidade que é geralmente aceite para ser 59 00:02:34,290 --> 00:02:36,230 uma boa maneira de escrever código. 60 00:02:36,230 --> 00:02:38,260 Não faz o seu código mais sustentável, mais útil, 61 00:02:38,260 --> 00:02:40,030 assim por diante e assim por diante. 62 00:02:40,030 --> 00:02:42,740 E, finalmente, a coisa que eu quero enfatizar sobre enquadramentos 63 00:02:42,740 --> 00:02:45,980 contra bibliotecas é essa idéia de inversão de controle, ea coisa é esta. 64 00:02:45,980 --> 00:02:48,430 A diferença entre uma biblioteca e um quadro é que, com uma biblioteca 65 00:02:48,430 --> 00:02:51,990 você ainda está escrevendo o programa principal, 66 00:02:51,990 --> 00:02:54,460 e você está tipo de chamar a biblioteca 67 00:02:54,460 --> 00:02:56,810 e apelando para a biblioteca para fazer algo por você. 68 00:02:56,810 --> 00:02:58,180 A diferença entre uma biblioteca e um quadro 69 00:02:58,180 --> 00:03:01,620 é que o quadro começa com o controle, 70 00:03:01,620 --> 00:03:03,260 e invoca o seu código, 71 00:03:03,260 --> 00:03:06,190 assim você pode pensar nisso como - é por isso que ele é chamado de um quadro - 72 00:03:06,190 --> 00:03:09,700 a estrutura oferece este quadro e estrutura para o seu código, 73 00:03:09,700 --> 00:03:11,320 e preencher os buracos, 74 00:03:11,320 --> 00:03:13,990 e este ficará mais evidente na segunda 75 00:03:13,990 --> 00:03:16,670 quando você me vê começar a escrever código dentro do contexto do quadro. 76 00:03:16,670 --> 00:03:19,130 Você vai ver que eu estou preenchendo as lacunas, 77 00:03:19,130 --> 00:03:22,450 eo quadro é uma espécie de controle de todas as peças móveis, 78 00:03:22,450 --> 00:03:27,420 e eu tenho que colocar as peças nos lugares certos. 79 00:03:27,420 --> 00:03:29,360 >> Hoje vamos falar sobre Kohana, 80 00:03:29,360 --> 00:03:31,610 que é um dos muitos frameworks PHP. 81 00:03:31,610 --> 00:03:34,550 Existem frameworks web, e há aqueles em praticamente todas as línguas único, 82 00:03:34,550 --> 00:03:38,330 e eu estou pegando Kohana Kohana porque é indiscutivelmente 83 00:03:38,330 --> 00:03:43,250 e geralmente reconhecido como o quadro mais fácil PHP para pegar. 84 00:03:43,250 --> 00:03:45,940 É o mais leve. 85 00:03:45,940 --> 00:03:48,470 Há outros lá fora, que vêm com muitos, muitos mais recursos, 86 00:03:48,470 --> 00:03:51,590 mas eles tendem a ser mais difíceis de pegar. 87 00:03:51,590 --> 00:03:54,920 E, finalmente, Kohana utiliza a arquitetura MVC. 88 00:03:54,920 --> 00:03:57,780 É leve o suficiente para que nós pode literalmente construir um projeto 89 00:03:57,780 --> 00:03:59,620 aqui bem em frente de seus olhos, e você pode muito bem 90 00:03:59,620 --> 00:04:02,780 acompanhar com bastante facilidade. 91 00:04:02,780 --> 00:04:04,420 >> O que é a arquitetura MVC? 92 00:04:04,420 --> 00:04:06,540 Fica para o Model-View-Controller, 93 00:04:06,540 --> 00:04:09,560 e, talvez, se você pensar sobre o código que você tem escrito até agora 94 00:04:09,560 --> 00:04:11,280 para alguns de seus Série de Exercícios de desenvolvimento web 95 00:04:11,280 --> 00:04:14,710 você pode ser capaz de ver um pouco disso, mas geralmente quando você começar a escrever 96 00:04:14,710 --> 00:04:16,500 uma aplicação web mais complexas, 97 00:04:16,500 --> 00:04:21,209 a divisão entre estes três segmentos torna-se cada vez mais evidente. 98 00:04:21,209 --> 00:04:26,740 Eu coloquei o MVC aqui espécie de como uma pilha, 99 00:04:26,740 --> 00:04:29,920 e muitas vezes você vai ouvir as pessoas falarem sobre pilhas em desenvolvimento web, 100 00:04:29,920 --> 00:04:33,760 e isto é para ilustrar a ideia de que 101 00:04:33,760 --> 00:04:37,510 cada camada, cada componente realmente tenta se comunicar apenas 102 00:04:37,510 --> 00:04:40,750 entre dois outros componentes. 103 00:04:40,750 --> 00:04:44,550 Alguém acessa o seu site como um cliente ou um navegador. 104 00:04:44,550 --> 00:04:48,870 Eles interagem com o seu programa através do código vista. 105 00:04:48,870 --> 00:04:50,500 O código de visão interage com o controlador. 106 00:04:50,500 --> 00:04:52,400 O controlador interage com o modelo, 107 00:04:52,400 --> 00:04:55,090 e o modelo interage com a base de dados de SQL. 108 00:04:55,090 --> 00:04:59,670 E não há nenhum salto entre se você escrever o código corretamente. 109 00:04:59,670 --> 00:05:01,670 >> O que essas coisas fazem? 110 00:05:01,670 --> 00:05:06,020 O modelo é essencialmente a parte do código que lida com os seus dados. 111 00:05:06,020 --> 00:05:09,100 Tudo o que lida com o seu banco de dados, com os objetos que você armazena, 112 00:05:09,100 --> 00:05:11,280 ou recuperar os objetos no banco de dados, 113 00:05:11,280 --> 00:05:13,450 que está tudo tratado pelo modelo. 114 00:05:13,450 --> 00:05:15,290 Talvez você tem objetos em seu banco de dados. 115 00:05:15,290 --> 00:05:17,700 Nós vamos criar um modelo que tenha a ver as mensagens, 116 00:05:17,700 --> 00:05:19,760 assim um post pode ter alguns atributos para isso. 117 00:05:19,760 --> 00:05:23,900 Você pode ter funções em torno de armazenar essas mensagens ou recuperar mensagens 118 00:05:23,900 --> 00:05:26,270 ou filtrar os posts e assim por diante e assim por diante, 119 00:05:26,270 --> 00:05:28,880 e isso é todo o código que é tratado pelo modelo. 120 00:05:28,880 --> 00:05:31,780 O controlador é uma espécie de lógica do aplicativo, 121 00:05:31,780 --> 00:05:37,910 e um monte de coisas diferentes podem ir na lógica do aplicativo. 122 00:05:37,910 --> 00:05:39,790 Se você está falando com uma API diferente, 123 00:05:39,790 --> 00:05:42,310 que podem estar onde você está lidando com a lógica do aplicativo. 124 00:05:42,310 --> 00:05:47,990 Se você está tentando ter de trazer dados de vários modelos diferentes 125 00:05:47,990 --> 00:05:51,540 e têm a combiná-los de alguma forma, que muitas vezes pode ser tratada pelo controlador. 126 00:05:51,540 --> 00:05:53,820 Por exemplo, no Facebook, se você amigo de alguém, 127 00:05:53,820 --> 00:05:58,500 então talvez esse ato de estabelecer essa relação 128 00:05:58,500 --> 00:06:00,490 pode ser feito pelo controlador. 129 00:06:00,490 --> 00:06:04,350 >> E, finalmente, a visão é o código que está gerando o que você realmente vê. 130 00:06:04,350 --> 00:06:07,410 Muitas vezes eu penso nas Série de Exercícios CS50 131 00:06:07,410 --> 00:06:10,050 eles realmente não incentivar vocês a separar estas três coisas. 132 00:06:10,050 --> 00:06:12,430 Você provavelmente vai ter este arquivo grande, longa, onde no topo 133 00:06:12,430 --> 00:06:15,130 você faz alguma consulta SQL e talvez fazer algum processamento 134 00:06:15,130 --> 00:06:17,020 sobre os dados obtidos a partir do banco de dados, 135 00:06:17,020 --> 00:06:19,370 e então você tem todo o seu HTML na parte inferior. 136 00:06:19,370 --> 00:06:22,840 E você pode achar que como você criar mais e mais páginas 137 00:06:22,840 --> 00:06:25,790 que você vai ter algum código de repetição, e também, 138 00:06:25,790 --> 00:06:29,600 a coisa é o arquivo fica muito grande e longa 139 00:06:29,600 --> 00:06:32,370 e torna-se difícil de gerir. 140 00:06:32,370 --> 00:06:34,500 A razão pela qual MVC é tão bem visto 141 00:06:34,500 --> 00:06:36,120 é por um número de razões. 142 00:06:36,120 --> 00:06:38,110 A primeira coisa é uma coisa chamada separação de interesses 143 00:06:38,110 --> 00:06:40,370 que é a idéia de que quando você tem - 144 00:06:40,370 --> 00:06:43,520 idealmente um pedaço de código deve fazer uma coisa e fazê-lo muito bem, 145 00:06:43,520 --> 00:06:47,210 e você não deve combinar peças de código que fazem coisas diferentes. 146 00:06:47,210 --> 00:06:49,230 Por exemplo, visualizar o código e código do modelo, 147 00:06:49,230 --> 00:06:51,040 eles realmente não têm de ser relacionados. 148 00:06:51,040 --> 00:06:53,290 Eles não tem que ser nos mesmos arquivos, então, quando você puder, para separá-los 149 00:06:53,290 --> 00:06:55,300 por isso é fácil de manter. 150 00:06:55,300 --> 00:06:57,130 >> A outra coisa é a reutilização de código. 151 00:06:57,130 --> 00:06:59,770 Você pode encontrar-se escrever a mesma consulta SQL ou fazer 152 00:06:59,770 --> 00:07:03,060 consultas semelhantes que podem ser abstraídas em uma função, 153 00:07:03,060 --> 00:07:05,440 e essa é a idéia por trás modelos e controladores, 154 00:07:05,440 --> 00:07:09,690 tê-lo em uma função separada que pode ser reutilizado em diferentes locais em seu projeto. 155 00:07:09,690 --> 00:07:12,420 E, finalmente, que está ligada a secagem do seu código, 156 00:07:12,420 --> 00:07:14,700 ou não repetir-se, não se repetir. 157 00:07:14,700 --> 00:07:18,090 Isso é muito compreensível em desenvolvimento. 158 00:07:18,090 --> 00:07:20,110 Sempre que puder, você não quer repetir a si mesmo, porque se você repetir-se, 159 00:07:20,760 --> 00:07:23,400  é muito mais caro para manter. 160 00:07:23,400 --> 00:07:26,040 Se você quer mudar uma coisa, você tem que mudá-lo em todos os lugares, 161 00:07:26,040 --> 00:07:30,230 e que leva a erros, e é horrível. 162 00:07:30,230 --> 00:07:32,010 >> Tudo bem. 163 00:07:32,010 --> 00:07:37,270 Qualquer dúvida, até agora cerca de Kohana, afinal? 164 00:07:37,270 --> 00:07:39,200 Grande. 165 00:07:39,200 --> 00:07:42,300 Agora vamos mergulhar na sessão de codificação ao vivo, 166 00:07:42,300 --> 00:07:48,050 e espero que tudo corra bem. 167 00:07:57,200 --> 00:08:00,050 Vou construir basicamente este site 168 00:08:00,050 --> 00:08:03,910 em um dos meus servidores remotos, e de que maneira vocês podem também 169 00:08:03,910 --> 00:08:06,310 ver o site e acessar o site, 170 00:08:06,310 --> 00:08:10,990 e também o ambiente é melhor do que o meu configurado máquina remota, 171 00:08:10,990 --> 00:08:14,580 porque está rodando Linux em vez de OS X. 172 00:08:14,580 --> 00:08:16,260 Estamos, literalmente, vai começar. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 Eu estou indo para baixar o código do site. 175 00:08:21,350 --> 00:08:24,610 Vou copiar o endereço do link, 176 00:08:24,610 --> 00:08:29,770 ir para o meu servidor, baixá-lo, 177 00:08:29,770 --> 00:08:33,000 e eu estou indo para extraí-lo. 178 00:08:38,330 --> 00:08:45,710 >> [Estudante] O que é o maior que você pode fazer o texto? 179 00:08:45,710 --> 00:08:47,330 [Brandon Liu] Está melhor? 180 00:08:47,330 --> 00:08:50,070 [Estudante] É isso factível? >> [Brandon Liu] Sim, isso é bom. 181 00:08:50,070 --> 00:08:54,500 Eu baixei um arquivo ZIP e abriu o zíper que em um diretório chamado Kohana, 182 00:08:54,500 --> 00:08:58,820 e nós vamos mudar o nome que CS50-Kohana, 183 00:08:58,820 --> 00:09:01,140 e vamos lá dentro 184 00:09:01,140 --> 00:09:03,610 Incrível. 185 00:09:03,610 --> 00:09:06,870 Aqui você vê um monte de arquivos diferentes. 186 00:09:06,870 --> 00:09:10,140 A maioria de vocês pode ignorar - estamos não vai passar por todos os arquivos que estão aqui 187 00:09:10,140 --> 00:09:13,130 por causa de nossas limitações de tempo, 188 00:09:13,130 --> 00:09:16,310 mas geralmente quando você instala o Kohana, a primeira coisa que você faz 189 00:09:16,310 --> 00:09:23,210 é que você vá para o diretório, 190 00:09:23,210 --> 00:09:26,050 e você vai basicamente fazer alguns testes ambientais e outros enfeites 191 00:09:26,050 --> 00:09:28,640 certificar-se de seu ambiente está configurado corretamente para executar Kohana 192 00:09:28,640 --> 00:09:31,450 e certifique-se de que está tudo bem. 193 00:09:31,450 --> 00:09:35,510 Você pode ver a maioria das coisas se passaram, mas geralmente você sempre executar para esse problema 1 194 00:09:35,510 --> 00:09:38,180 onde ele se queixa de que algum diretório não é gravável, 195 00:09:38,180 --> 00:09:40,410 e isso é por causa de algumas permissões. 196 00:09:40,410 --> 00:09:43,080 Eu não sei o quanto vocês aprenderam sobre permissões de arquivo em CS50, 197 00:09:43,080 --> 00:09:47,920 mas se você fizer de desenvolvimento web, você vai se deparar com este problema muito. 198 00:09:47,920 --> 00:09:58,340 Eu estou indo para torná-lo gravável 199 00:09:58,340 --> 00:10:03,390 e eu acho que eu também tenho que - lá vamos nós. 200 00:10:03,390 --> 00:10:07,040 >> Ok, então agora você pode ver tudo passou, 201 00:10:07,040 --> 00:10:10,000 e agora ele vai dizer para renomear o arquivo install.php. 202 00:10:10,000 --> 00:10:15,630 Vou mover o arquivo install.php para installed.php, 203 00:10:15,630 --> 00:10:19,610 e agora, se eu atualizar, 204 00:10:19,610 --> 00:10:22,810 dá-me algum erro, e é aí que a depuração vem dentro 205 00:10:22,810 --> 00:10:25,610 Este é o lugar onde você pode ver o que está realmente vai acontecer. 206 00:10:25,610 --> 00:10:28,460 A coisa é, por padrão, Kohana assume que 207 00:10:28,460 --> 00:10:31,480 seu projeto está no diretório raiz do seu domínio, 208 00:10:31,480 --> 00:10:35,920 por isso está esperando por você para ser a demo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 Temos de dizer que ele é realmente em uma subpasta. 210 00:10:37,540 --> 00:10:39,820 Está em uma subpasta chamada CS50 Kohana. 211 00:10:39,820 --> 00:10:42,640 A coisa é, ele está interpretando mal CS50-Kohana 212 00:10:42,640 --> 00:10:45,680 como qualquer outra coisa, que eu vou explicar para você em um segundo. 213 00:10:45,680 --> 00:10:49,910 Mas devo dizer-lhe que é algo que é de se esperar. 214 00:10:49,910 --> 00:10:53,700 O que nós vamos fazer é que nós estamos indo para ir para essa pasta chamado bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 que é a pasta de configuração, onde um monte de coisas diferentes são criados. 216 00:10:59,260 --> 00:11:01,570 Eu abro isso. 217 00:11:01,570 --> 00:11:09,790 Então, talvez, uma das primeiras coisas que eu vou fazer é alterar o fuso horário. 218 00:11:09,790 --> 00:11:13,910 >> E então vamos ver. 219 00:11:13,910 --> 00:11:15,180 Aha! Bem aqui. 220 00:11:15,180 --> 00:11:18,690 Há um grupo de provérbios diferentes de configuração aqui, 221 00:11:18,690 --> 00:11:21,700 mas o que eu estou procurando é essa coisa chamada URL base, 222 00:11:21,700 --> 00:11:24,570 e, por padrão, eu entendo definido para Kohana, 223 00:11:24,570 --> 00:11:29,020 mas eu vou mudar isso para CS50-Kohana, 224 00:11:29,020 --> 00:11:32,880 e eu acho que deve corrigi-lo. 225 00:11:32,880 --> 00:11:34,150 Sim, ótimo. 226 00:11:34,150 --> 00:11:39,530 Por padrão, ao ver que ele está trabalhando, ele diz: "Olá Mundo". 227 00:11:39,530 --> 00:11:42,930 Onde é que isso veio? Como chegamos a Olá Mundo? 228 00:11:42,930 --> 00:11:47,640 Onde exatamente é o código que realmente escreveu isso? 229 00:11:47,640 --> 00:11:50,240 Para entender isso, vou apresentar este conceito chamado de roteamento. 230 00:11:50,240 --> 00:11:52,590 Praticamente todos os frameworks web tem o conceito chamado de roteamento, 231 00:11:52,590 --> 00:11:57,230 qual é a parte do software que irá mapear uma determinada URL 232 00:11:57,230 --> 00:12:01,550 a um determinado pedaço de código dentro do seu quadro. 233 00:12:01,550 --> 00:12:07,510 Por exemplo, se você tem alguma URL e você ir para algum URL como foo.com / blog / all 234 00:12:07,510 --> 00:12:11,170 em seguida, o que o quadro vai fazer - ou pelo menos o que Kohana vai fazer - 235 00:12:11,170 --> 00:12:15,540 é que vai encontrar uma classe chamada controlador de blog, 236 00:12:15,540 --> 00:12:18,720 e está indo para executar a função chamada ação todos. 237 00:12:18,720 --> 00:12:20,160 Eu sei que eu estou falando de classe e funções, 238 00:12:20,160 --> 00:12:23,860 e eu sei que vocês não cobrimos classes e funções 239 00:12:23,860 --> 00:12:26,470 em CS50 ainda, mas, por agora, 240 00:12:26,470 --> 00:12:29,800 você pode pensar em aulas como apenas um grupo de funções, 241 00:12:29,800 --> 00:12:32,900 uma forma de agrupar as funções em conjunto. 242 00:12:32,900 --> 00:12:37,690 Isso é realmente tudo o que você precisa saber. 243 00:12:37,690 --> 00:12:43,120 >> Agora, se olharmos para a nossa estrutura de pastas, 244 00:12:43,120 --> 00:12:47,110 dentro da pasta do aplicativo há uma outra pasta chamada classes 245 00:12:47,110 --> 00:12:49,200 e as outras pastas são chamadas de Controladoria e Modelo. 246 00:12:49,200 --> 00:12:52,530 Se você olhar dentro da pasta Controller, 247 00:12:52,530 --> 00:12:56,330 vemos que há um arquivo chamado Bem-vindo, 248 00:12:56,330 --> 00:13:00,370 e você pode ver aqui é uma classe chamada Controlador Bem-vindo, 249 00:13:00,370 --> 00:13:02,340 e há uma função chamada Índice Ação, 250 00:13:02,340 --> 00:13:06,360 eo que ele faz é que define o corpo de sua resposta a Olá Mundo. 251 00:13:06,360 --> 00:13:08,730 Isso é onde o código está sendo escrito. 252 00:13:08,730 --> 00:13:11,610 A outra questão é, bem, eu não ir para 253 00:13:11,610 --> 00:13:13,680 blah, blah, blah, / welcome / index. 254 00:13:13,680 --> 00:13:16,250 Como é que vim parar aqui? 255 00:13:16,250 --> 00:13:20,410 Bem, isso é simplesmente porque 256 00:13:20,410 --> 00:13:22,410 aqui na parte inferior do nosso arquivo de inicialização 257 00:13:22,410 --> 00:13:24,550 onde montamos nossas rotas 258 00:13:24,550 --> 00:13:26,570 você pode ver que eles definir alguns padrões para você. 259 00:13:26,570 --> 00:13:28,990 O controlador padrão é bem-vindo. A ação padrão é Index. 260 00:13:28,990 --> 00:13:31,600 É por isso que quando colocamos nada lá ele automaticamente foi para o controlador de Bem-vindo 261 00:13:31,600 --> 00:13:33,940 ea Acção índice. 262 00:13:33,940 --> 00:13:37,460 >> Tudo faz sentido até agora? 263 00:13:37,460 --> 00:13:40,850 Agora, você pode fazer mais do que apenas ir ao Controlador 264 00:13:40,850 --> 00:13:43,670 e uma ação específica. 265 00:13:43,670 --> 00:13:48,480 Você também pode passar parâmetros para o controlador. 266 00:13:48,480 --> 00:13:56,390 Apenas como exemplo, 267 00:13:56,390 --> 00:14:04,070 Eu estou indo para adicionar uma outra ação para este controlador para lhe mostrar. 268 00:14:04,070 --> 00:14:09,130 Vamos chamar esta ação Echo, porque ele vai lhe dizer o que você dá, 269 00:14:09,130 --> 00:14:17,510 e então eu estou basicamente vai pegar 270 00:14:17,510 --> 00:14:20,960 um parâmetro que vai ser enviada através de mim para o programa de roteamento, 271 00:14:20,960 --> 00:14:24,440 e como você pode ver aqui, 272 00:14:24,440 --> 00:14:28,440 esta linha bem aqui, você pode ver que 273 00:14:28,440 --> 00:14:31,270 isso basicamente significa que você tem controle, e você tem a /, 274 00:14:31,270 --> 00:14:33,480 e você tem ação, e você tem mais /, 275 00:14:33,480 --> 00:14:39,140 e que vai ser parâmetros, e porque temos este nome ID 276 00:14:39,140 --> 00:14:42,450 dentro de colchetes, o que significa que estamos nomeando este parâmetro ID. 277 00:14:42,450 --> 00:14:45,490 Mais tarde, no meu código do controlador, se eu quiser pegar um porão de que o parâmetro, 278 00:14:45,490 --> 00:14:51,790 Eu posso usar o código que eu escrevi, encontrar o parâmetro nomeado ID. 279 00:14:51,790 --> 00:14:59,290 Isso é o que eu fiz aqui, e eu vou voltar e dizer: 280 00:14:59,290 --> 00:15:07,090 "Você disse" isso. 281 00:15:07,090 --> 00:15:10,760 E agora, se eu for para o nosso site, 282 00:15:10,760 --> 00:15:19,550 Eu vou para cs50-kohana/welcome/echo/Helloooo-- 283 00:15:19,550 --> 00:15:21,420 oh, isso é certo. 284 00:15:21,420 --> 00:15:23,930 Existe um passo que deixei de fora. 285 00:15:23,930 --> 00:15:27,020 Isso faz parte da idéia de codificação ao vivo. 286 00:15:27,020 --> 00:15:36,100 >> Aqui está uma coisa. Vamos ver. 287 00:15:36,100 --> 00:15:38,870 Então, normalmente, por padrão, com um monte dessas aplicações web 288 00:15:38,870 --> 00:15:42,820 você tem que incluir essa coisa index.php na sua URL, 289 00:15:42,820 --> 00:15:46,410 porque a idéia é index.php é uma espécie de ponto de entrada 290 00:15:46,410 --> 00:15:48,250 de sua aplicação, mas é claro, 291 00:15:48,250 --> 00:15:50,110 que é uma espécie de chato ter. 292 00:15:50,110 --> 00:15:53,790 Você não quer ter index.php aparecer na sua URL, 293 00:15:53,790 --> 00:15:56,080 e praticamente todos os framework web fora da caixa 294 00:15:56,080 --> 00:15:58,440 tem este problema index.php, 295 00:15:58,440 --> 00:16:03,370 e então você tem que tomar algumas medidas para ser capaz de remover isso. 296 00:16:03,370 --> 00:16:07,540 E assim, neste caso, 297 00:16:07,540 --> 00:16:11,450 o que nós vamos fazer é que vamos usar um arquivo chamado. htaccess, 298 00:16:11,450 --> 00:16:13,900 e isso é algo que é específico para o servidor web Apache, 299 00:16:13,900 --> 00:16:16,290 e pode fazer coisas como reescrita de URLs 300 00:16:16,290 --> 00:16:19,350 e redirecionar URLs e assim por diante e assim por diante, 301 00:16:19,350 --> 00:16:24,280 e Kohana é bom o suficiente para fornecer um arquivo htaccess modelo. que podemos usar. 302 00:16:24,280 --> 00:16:28,300 >> Como você pode ver, há um arquivo lá chamado example.htaccess, 303 00:16:28,300 --> 00:16:33,410 e vamos copiar isso para. htaccess. 304 00:16:33,410 --> 00:16:36,950 Vou abrir este e editá-lo, 305 00:16:36,950 --> 00:16:40,840 e, basicamente, ele faz um monte de coisas diferentes. 306 00:16:40,840 --> 00:16:45,320 A linha de chave que você pode querer olhar é bem aqui. 307 00:16:45,320 --> 00:16:49,840 A idéia é que este estabelece uma regra que diz que, 308 00:16:49,840 --> 00:16:56,400 "Tudo bem, tudo o que você digita, preceder index.php para isso." 309 00:16:56,400 --> 00:16:58,710 Você pode ver isso. 310 00:16:58,710 --> 00:17:00,370 A. * Significa nada, corresponde a nada, 311 00:17:00,370 --> 00:17:03,300 e, em seguida, a segunda parte é index.php / $ 0, 312 00:17:03,300 --> 00:17:07,410 e US $ 0 refere-se a tudo o que foi combinado previamente. 313 00:17:07,410 --> 00:17:09,500 Será que isso faz sentido? 314 00:17:09,500 --> 00:17:12,190 Mas a coisa realmente fundamental eu quero mudar é mudar esta base de reescrita, 315 00:17:12,190 --> 00:17:14,300 que é a base de URL. 316 00:17:14,300 --> 00:17:17,780 É uma espécie de assume onde você está trabalhando. 317 00:17:17,780 --> 00:17:22,560 Eu estou indo para adicionar CS50 Kohana para que, 318 00:17:22,560 --> 00:17:26,530 e de que maneira, agora se eu remover o index.php, 319 00:17:26,530 --> 00:17:32,110 ele deve funcionar, e eu estou indo para adicionar alguns números 320 00:17:32,110 --> 00:17:36,380 para mostrar que ele realmente não funcionou. 321 00:17:36,380 --> 00:17:38,130 Parece bom. 322 00:17:38,130 --> 00:17:40,260 >> Todas as perguntas até agora? 323 00:17:40,260 --> 00:17:42,300 [Estudante] Como foi saber para fazer o 123? 324 00:17:42,300 --> 00:17:44,120 Isso é um argumento? 325 00:17:44,120 --> 00:17:46,560 Exatamente. Você pode pensar nisso como um argumento. 326 00:17:46,560 --> 00:17:52,410 Mas o mais estranho, porém, é que a forma como o faz Kohana 327 00:17:52,410 --> 00:17:54,910 é que eles não fazem isso exatamente como um argumento. 328 00:17:54,910 --> 00:17:56,930 Você tem que agarrá-lo assim. 329 00:17:56,930 --> 00:18:01,030 Você tem que pegar o objeto do pedido e pedir o parâmetro que é chamado ID, 330 00:18:01,030 --> 00:18:03,240 e que o nome vem do ID que arquivo de inicialização 331 00:18:03,240 --> 00:18:06,990 que eu mostrei antes, eo nome do ID era naqueles colchetes, 332 00:18:06,990 --> 00:18:11,580 e é assim que você pegar esses parâmetros. 333 00:18:11,580 --> 00:18:14,010 Incrível. 334 00:18:14,010 --> 00:18:17,550 Alguma outra pergunta? 335 00:18:17,550 --> 00:18:20,500 Como eu disse, os controladores, eles lidam com a lógica da aplicação, 336 00:18:20,500 --> 00:18:22,980 de modo que é um caso em que você pode ver isso é - 337 00:18:22,980 --> 00:18:24,830 é muito básico, mas ainda é a lógica da aplicação, 338 00:18:24,830 --> 00:18:27,980 a idéia de pegar o parâmetro e criar uma nova cadeia 339 00:18:27,980 --> 00:18:31,920 que diz: "Você disse que blá," e depois cuspindo que volta para você. 340 00:18:31,920 --> 00:18:34,030 E, geralmente, o que você faz é criar controladores diferentes. 341 00:18:34,030 --> 00:18:36,450 Você cria controladores separados para diferentes partes do seu site. 342 00:18:36,450 --> 00:18:38,160 >> Hoje vamos fazer um site muito simples, 343 00:18:38,160 --> 00:18:40,420 e isso vai ser um blog muito básico. 344 00:18:40,420 --> 00:18:43,780 Nós vamos fazer um novo controlador apenas para os cargos em um blog. 345 00:18:43,780 --> 00:18:47,060 Mas, então, se eu fosse para adicionar também os comentários ao post do blog, 346 00:18:47,060 --> 00:18:50,140 então eu provavelmente quer fazer um novo controlador para esses comentários. 347 00:18:50,140 --> 00:18:53,380 Se eu quisesse adicionar usuários, eu provavelmente gostaria de acrescentar um novo controlador para os usuários, 348 00:18:53,380 --> 00:18:57,000 e, em geral, a idéia é que sempre que você tem um novo modelo, 349 00:18:57,000 --> 00:18:59,630 um novo objeto de dados que você está lidando, 350 00:18:59,630 --> 00:19:02,970 você tem um único controlador para o objeto de dados. 351 00:19:02,970 --> 00:19:04,370 Hoje nós só vamos trabalhar com um objeto de dados, 352 00:19:04,370 --> 00:19:06,250 e que vai ser mensagens, 353 00:19:06,250 --> 00:19:08,710 e você também pode pensar em objetos de dados como correspondendo às tabelas. 354 00:19:08,710 --> 00:19:12,160 Geralmente cada tabela corresponde a um tipo de objeto de dados, 355 00:19:12,160 --> 00:19:15,160 assim a tabela de pós terá um modelo de post, 356 00:19:15,160 --> 00:19:18,230 que terá um controlador de pós correspondente a esse, 357 00:19:18,230 --> 00:19:22,190 e o mesmo para comentários, o mesmo para os utilizadores, e assim por diante e assim por diante. 358 00:19:22,190 --> 00:19:24,070 E isso é uma regra geral. 359 00:19:24,070 --> 00:19:27,460 Não vão haver casos especiais onde você pode ser diferente da que, 360 00:19:27,460 --> 00:19:29,300 mas 90% do tempo é o que você vai estar fazendo, 361 00:19:29,300 --> 00:19:32,810 e eu vou mostrar-lhe que é o que nós vamos fazer hoje. 362 00:19:32,810 --> 00:19:35,490 1 mais conceito, antes de mergulhar de volta para o código, 363 00:19:35,490 --> 00:19:37,710 essa idéia de mapeamento objeto relacional. 364 00:19:37,710 --> 00:19:41,200 >> Vocês já fizeram um desenvolvimento pset web, 365 00:19:41,200 --> 00:19:43,820 e você viu que você faça uma consulta SQL, 366 00:19:43,820 --> 00:19:46,510 e tudo o que ele retorna a você são linhas. 367 00:19:46,510 --> 00:19:50,040 Você fica com essas linhas, e você indexá-los por algum nome, 368 00:19:50,040 --> 00:19:55,480 o nome da coluna e da tabela, 369 00:19:55,480 --> 00:19:57,630 e é assim que você trabalha com ele, 370 00:19:57,630 --> 00:19:59,290 e pode ser um pouco mais complicado. 371 00:19:59,290 --> 00:20:01,810 Mas além disso, se você tem relações dentro do seu banco de dados, 372 00:20:01,810 --> 00:20:05,280 como, por exemplo, se eu tiver comentários e posts, 373 00:20:05,280 --> 00:20:11,240 então talvez eu quiser pegar o post pai de um comentário. 374 00:20:11,240 --> 00:20:14,350 Se eu usar apenas linhas em SQL, então tudo o que posso chegar é o ID 375 00:20:14,350 --> 00:20:19,310 do post pai e não o próprio pós real. 376 00:20:19,310 --> 00:20:21,680 Mas quando estamos a codificação, o que nós realmente queremos é realmente agarrar 377 00:20:21,680 --> 00:20:23,550  o pai colocar-se algumas vezes. 378 00:20:23,550 --> 00:20:25,730 O mapeamento objeto relacional faz é 379 00:20:25,730 --> 00:20:29,480 leva os resultados da consulta de banco de dados 380 00:20:29,480 --> 00:20:32,420 e coloca-lo em objetos para você, que são muito mais agradável para trabalhar com 381 00:20:32,420 --> 00:20:34,770 de matrizes simples e linhas. 382 00:20:34,770 --> 00:20:37,550 >> Por exemplo, agora, quando eu tiver um comentário, talvez, 383 00:20:37,550 --> 00:20:40,900 e eu quero agarrar seu posto pai, 384 00:20:40,900 --> 00:20:43,440 e eu talvez comentar pós seta, 385 00:20:43,440 --> 00:20:45,230 em seguida, ele vai realmente me dar o objeto pós 386 00:20:45,230 --> 00:20:47,940 correspondente ao cargo de pai real, e não apenas alguns ID, 387 00:20:47,940 --> 00:20:52,210 que eu teria de outra maneira de usar e fazer outra consulta SQL para pegar o post, 388 00:20:52,210 --> 00:20:57,430 que é pesado e desnecessária. 389 00:20:57,430 --> 00:21:01,840 E além disso, mapeando todas essas linhas de dados em objetos, 390 00:21:01,840 --> 00:21:03,760 Você também pode anexar mais funções aos objetos, 391 00:21:03,760 --> 00:21:09,700 assim, por exemplo, eu falei sobre como as classes são essencialmente grupos de funções. 392 00:21:09,700 --> 00:21:11,620 Você pode pensar assim. 393 00:21:11,620 --> 00:21:15,290 Por exemplo, talvez eu tenha esse objeto post, 394 00:21:15,290 --> 00:21:17,830 e talvez eu gostaria de ter algum tipo de função ligado a ele 395 00:21:17,830 --> 00:21:20,300 que, basicamente, diz-me que foi recentemente postou? 396 00:21:20,300 --> 00:21:23,570 Foi publicado na última semana, verdadeiro ou falso? 397 00:21:23,570 --> 00:21:27,320 E essa é uma função que eu possa anexar no objeto que, 398 00:21:27,320 --> 00:21:31,300 e é muito conveniente para tê-lo no mesmo lugar, 399 00:21:31,300 --> 00:21:33,820 e há uma série de funções diferentes que você pode criar 400 00:21:33,820 --> 00:21:37,990 para esses objetos, e é muito bom para ser capaz de anexá-lo a uma classe, 401 00:21:37,990 --> 00:21:41,700 a um objeto, enquanto que, se você só tinha linhas que vêm de seu banco de dados, 402 00:21:41,700 --> 00:21:43,790 então você realmente não pode anexar qualquer funcionalidade para isso. 403 00:21:43,790 --> 00:21:47,850 É, literalmente, apenas dados. 404 00:21:47,850 --> 00:21:50,550 Qualquer dúvida sobre isso em tudo? 405 00:21:50,550 --> 00:21:52,710 ORMs são o desenvolvimento web muito comum, 406 00:21:52,710 --> 00:21:56,330 e há um grande número de diferentes tipos de ORMs, 407 00:21:56,330 --> 00:21:58,450 Kohana e tem o seu próprio ORM. 408 00:21:58,450 --> 00:22:05,050 É muito básico, mas você vai ter um gostinho do que parece. 409 00:22:05,050 --> 00:22:08,780 >> Vamos criar um modelo para os nossos posts, 410 00:22:08,780 --> 00:22:12,350 ea primeira coisa que obviamente precisa fazer é criar uma tabela real 411 00:22:12,350 --> 00:22:16,680 dentro do nosso banco de dados para armazenar os nossos dados, na verdade, para esses lugares. 412 00:22:16,680 --> 00:22:19,260 A primeira coisa que vou fazer é ir ao phpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 Vocês já usado phpMyAdmin antes? 414 00:22:21,410 --> 00:22:23,400 Ok, impressionante, então vocês já sabem o que é, 415 00:22:23,400 --> 00:22:32,200 e eu estou indo para criar uma nova tabela chamada Kohana Mensagens, 416 00:22:32,200 --> 00:22:37,820 e isso vai ser muito simples. 417 00:22:37,820 --> 00:22:40,190 Eu vou fazer o login para trás dentro 418 00:23:02,620 --> 00:23:04,640 Tudo o que nós vamos fazer hoje é ter um autor e um corpo, 419 00:23:04,640 --> 00:23:11,930 apenas mantê-la simples. 420 00:23:11,930 --> 00:23:15,620 Eu estou indo para criar essa tabela, 421 00:23:15,620 --> 00:23:19,620 e agora só temos uma tabela representando nossos posts 422 00:23:19,620 --> 00:23:23,370 com 2 campos para nosso autor e nosso corpo. 423 00:23:23,370 --> 00:23:26,290 A outra coisa que eu vou fazer agora é 424 00:23:26,290 --> 00:23:29,820 configurar minha aplicação web para que ele saiba como se conectar ao banco de dados, 425 00:23:29,820 --> 00:23:31,950 e este, mais uma vez, é algo que você vai ter que fazer com todos os aplicativos da web. 426 00:23:31,950 --> 00:23:34,790 Você tem que dizer a ele o nome de usuário ea senha 427 00:23:34,790 --> 00:23:36,990 e o nome da base de dados e assim por diante e assim por diante 428 00:23:36,990 --> 00:23:40,000 para descobrir como realmente se conectar ao seu banco de dados. 429 00:23:40,000 --> 00:23:58,710 >> Em Kohana, temos algo chamado um módulo de banco de dados, 430 00:23:58,710 --> 00:24:02,690 e na pasta de configuração temos esta pasta chamada Banco de Dados, 431 00:24:02,690 --> 00:24:07,330 e como você pode ver, há um monte de configurações que você tem que definir aqui 432 00:24:07,330 --> 00:24:09,860 para dizer o que é o nome de usuário ea senha 433 00:24:09,860 --> 00:24:13,110 para o banco de dados para que eu possa realmente se conectar a ele. 434 00:24:13,110 --> 00:24:15,010 E desde que eu não quero que vocês realmente sabem 435 00:24:15,010 --> 00:24:17,190 o nome de usuário e senha do meu banco de dados, 436 00:24:17,190 --> 00:24:23,840 Eu tenho um arquivo onde já definir tudo, e eu vou copiar e colá-lo sobre. 437 00:24:33,080 --> 00:24:36,870 Incrível. 438 00:24:36,870 --> 00:24:39,880 Okay. Acho que essa é toda a configuração que eu preciso fazer, 439 00:24:39,880 --> 00:24:41,070 mas vamos ver. 440 00:24:41,070 --> 00:24:43,720 Vamos continuar trabalhando nele, e se algo falhar, 441 00:24:43,720 --> 00:24:47,490 então nós vamos corrigi-lo. 442 00:24:47,490 --> 00:24:51,830 Agora o que eu vou fazer é que eu vou criar um novo controlador. 443 00:24:51,830 --> 00:24:53,190 Ou, na verdade, me desculpe. 444 00:24:53,190 --> 00:24:55,080 Primeiro eu tenho que criar um novo modelo. 445 00:24:55,080 --> 00:25:01,620 Eu vou criar um novo modelo chamado Post.php, 446 00:25:01,620 --> 00:25:12,440 eo que nós vamos fazer é que vamos chamá-lo de classe Model_Post. 447 00:25:12,440 --> 00:25:15,390 Obter algum destaque de sintaxe em, 448 00:25:15,390 --> 00:25:19,750 e assim, quando eu digo, "se estende ORM", que é basicamente 449 00:25:19,750 --> 00:25:21,210 um pouco mais de programação orientada a objetos, 450 00:25:21,210 --> 00:25:23,340 que, infelizmente, vocês não aprenderam em CS50 ainda, 451 00:25:23,340 --> 00:25:25,290 mas é muito fácil de pegar. 452 00:25:25,290 --> 00:25:27,950 Isso me dá toda esta funcionalidade extra que vem neste pacote ORM, 453 00:25:27,950 --> 00:25:31,120 e assim eu recebo um monte de funções extras e outras coisas de graça, 454 00:25:31,120 --> 00:25:34,810 que você vai ver um pouco em um segundo. 455 00:25:34,810 --> 00:25:37,670 >> Agora, na verdade, tudo o que eu preciso fazer é criar esta classe. 456 00:25:37,670 --> 00:25:39,160 Eu nem sequer precisa de fazer qualquer função ou qualquer coisa, 457 00:25:39,160 --> 00:25:41,770 mas eu criei uma classe que representa a tabela, 458 00:25:41,770 --> 00:25:44,140 e porque eu tenho estendido esta classe ORM, 459 00:25:44,140 --> 00:25:51,080 Eu recebo um monte de coisas de graça, então por enquanto você não tem que configurar algo mais para cima. 460 00:25:51,080 --> 00:25:53,530 E agora o que eu vou fazer é que eu vou criar um novo controlador, 461 00:25:53,530 --> 00:25:58,480 que eu vou citar blog.php, 462 00:25:58,480 --> 00:26:04,350 e eu vou copiar o controlador de boas-vindas 463 00:26:04,350 --> 00:26:11,950 então eu não tenho que redigitar algumas coisas, 464 00:26:11,950 --> 00:26:20,720 e agora eu tenho que mudar o nome deste. 465 00:26:20,720 --> 00:26:24,710 Agora o que eu vou fazer para testar para se certificar que tudo está dando certo, 466 00:26:24,710 --> 00:26:27,820 Eu vou pegar o primeiro post do meu banco de dados 467 00:26:27,820 --> 00:26:32,680 e imprimir o corpo da mensagem na tela. 468 00:26:32,680 --> 00:26:37,920 Para isso o que eu vou fazer primeiro é que eu vou guardar as mensagens 469 00:26:37,920 --> 00:26:48,770 a uma variável de modo que nós vamos fazer é - 470 00:26:48,770 --> 00:26:52,090 em Kohana o que você faz é pegar o objeto pós 471 00:26:52,090 --> 00:26:55,380 é meio complicado, mas você tem que fazer essa coisa chamada ORM :: fábrica, 472 00:26:55,380 --> 00:26:57,750 e então você passar o nome do modelo que você quer, 473 00:26:57,750 --> 00:27:00,490 e ele retorna o objeto ORM que representa esse modelo. 474 00:27:00,490 --> 00:27:04,860 E então, como eu disse, quando estendemos o objeto ORM, 475 00:27:04,860 --> 00:27:07,320 temos todos estes métodos de graça, assim, por exemplo, 476 00:27:07,320 --> 00:27:09,200 temos essa nova função chamada "encontrar todos", 477 00:27:09,200 --> 00:27:12,160 que retorna automaticamente cada post no banco de dados, 478 00:27:12,160 --> 00:27:14,850 o que é muito conveniente. 479 00:27:14,850 --> 00:27:17,480 >> E agora no corpo eu vou voltar 480 00:27:17,480 --> 00:27:24,860 o primeiro post e retornar seu corpo. 481 00:27:24,860 --> 00:27:27,930 E, claro, eu preciso criar um post, 482 00:27:27,930 --> 00:27:31,880 então vamos inserir um novo post. 483 00:27:31,880 --> 00:27:37,870 Eu vou dizer: "Brandon, o meu primeiro post." 484 00:27:37,870 --> 00:27:40,010 Incrível. 485 00:27:40,010 --> 00:27:45,910 E agora nós estamos indo para ir para blogs 486 00:27:45,910 --> 00:27:50,960 e se tudo funciona bem - oh, isso é alguma outra coisa de permissão de arquivo mudo novamente. 487 00:27:50,960 --> 00:27:56,090 Espere um segundo. É uma espécie de absurdo. 488 00:28:06,700 --> 00:28:08,490 Lá vamos nós. Okay. 489 00:28:08,490 --> 00:28:10,040 Eu que problema de permissão. 490 00:28:10,040 --> 00:28:12,040 Ele estava tentando criar alguns arquivos e alguns log, 491 00:28:12,040 --> 00:28:15,400 e as permissões, mais uma vez, não foram devidamente configurado, então eu fiz isso 492 00:28:15,400 --> 00:28:18,320 para que os arquivos foram gravável e executável 493 00:28:18,320 --> 00:28:21,090 para que ele pudesse realmente fazer logon às coisas. 494 00:28:21,090 --> 00:28:24,220 Agora ele está me dando outro ditado exceção ", classe ORM não encontrado" 495 00:28:24,220 --> 00:28:26,960 e isso é porque eu esqueci uma outra etapa. 496 00:28:26,960 --> 00:28:37,010 Isso é muito ruim. 497 00:28:37,010 --> 00:28:40,270 No arquivo de pasta de inicialização, existem estes módulos aqui, 498 00:28:40,270 --> 00:28:42,480 que você pode optar por ativar ou desativar. 499 00:28:42,480 --> 00:28:44,340 Trata-se de um monte de características diferentes que você pode optar por usar 500 00:28:44,340 --> 00:28:46,180 dentro de Kohana, que é uma espécie de bom. 501 00:28:46,180 --> 00:28:49,090 >> Por exemplo, eles têm um módulo de autenticação 502 00:28:49,090 --> 00:28:51,170 que você pode usar para autenticar usuários. 503 00:28:51,170 --> 00:28:53,390 Eles têm um módulo de armazenamento em cache, se você quiser implementar 504 00:28:53,390 --> 00:28:57,870 algum tipo de cache de back-end para fazer o trabalho de aplicação mais rápida e outros enfeites. 505 00:28:57,870 --> 00:29:02,140 Precisamos permitir que o banco de dados eo módulo ORM, 506 00:29:02,140 --> 00:29:04,280 porque como eu disse, estamos usando o banco de dados, obviamente, 507 00:29:04,280 --> 00:29:08,200 e nós também precisamos ativar o módulo ORM, 508 00:29:08,200 --> 00:29:12,220 porque nós gostaríamos de ter a funcionalidade extra, que é bom ter. 509 00:29:12,220 --> 00:29:14,240 Tudo o que tenho a fazer é descomentar essas duas linhas, 510 00:29:14,240 --> 00:29:18,760 e agora, se eu atualizar, ele me deu um outro erro. 511 00:29:18,760 --> 00:29:22,100 Ela diz: "Classe Model_Post não foi encontrado." 512 00:29:22,100 --> 00:29:30,210 Agora este é um problema bom de ter. 513 00:29:30,210 --> 00:29:37,660 Vamos ver. 514 00:29:37,660 --> 00:29:42,200 Torná-lo público. 515 00:29:42,200 --> 00:29:46,450 Não. Espere. 516 00:30:11,610 --> 00:30:13,160 Oh, querida. 517 00:30:13,160 --> 00:30:18,590 Eu não sei por que ele não é capaz de encontrar isso. 518 00:30:18,590 --> 00:30:21,030 Isso é muito estranho. 519 00:30:21,030 --> 00:30:23,820 Eu tenho essa classe bem aqui. 520 00:30:23,820 --> 00:30:28,650 Eu acho que eu poderia ter que - oh. 521 00:30:28,650 --> 00:30:32,010 Eu sou tão burro. Eu esqueci de adicionar um código PHP. 522 00:30:32,010 --> 00:30:34,670 É por isso. 523 00:30:34,670 --> 00:30:41,260 Agora eu tenho que desfazer essa mudança 1 eu fiz. 524 00:30:41,260 --> 00:30:44,270 >> Okay. Lá vamos nós. 525 00:30:44,270 --> 00:30:47,500 Isso foi muito bobo. Eu não tinha uma tag PHP abertura. 526 00:30:47,500 --> 00:30:49,900 Mas, como você pode ver, agora está funcionando corretamente, certo? 527 00:30:49,900 --> 00:30:51,240 Temos um post. 528 00:30:51,240 --> 00:30:54,730 Pegamos o primeiro post, e agora nós impresso seu corpo. 529 00:30:54,730 --> 00:30:58,010 Grande. Fantástico. 530 00:30:58,010 --> 00:31:01,470 Todas as perguntas até agora? 531 00:31:01,470 --> 00:31:04,100 Não.? Alguma pergunta? 532 00:31:04,100 --> 00:31:08,340 Ok, então nós acabamos de criar o modelo de post, muito básico, 533 00:31:08,340 --> 00:31:10,930 e nós vamos adicionar algumas funções mais tarde. 534 00:31:10,930 --> 00:31:13,600 Podemos adicionar validações e filtragem. 535 00:31:13,600 --> 00:31:15,650 As validações são uma das coisas 536 00:31:15,650 --> 00:31:18,150 que os quadros resolver para você muito, muito bem, 537 00:31:18,150 --> 00:31:21,310 e eu não acho que vocês tinham que fazer isso para o seu pset CS50, 538 00:31:21,310 --> 00:31:24,000 mas se você fizer de desenvolvimento web para o seu projeto final, 539 00:31:24,000 --> 00:31:26,280 você provavelmente vai querer fazer algum tipo de validação, 540 00:31:26,280 --> 00:31:28,290 como não ter nomes de usuário em branco, 541 00:31:28,290 --> 00:31:31,950 talvez ter uma senha com pelo menos algum tempo, coisas assim. 542 00:31:31,950 --> 00:31:34,750 E é realmente complicado de implementar essas coisas por nós mesmos, 543 00:31:34,750 --> 00:31:37,390 e praticamente todos os framework web único faz isso por você 544 00:31:37,390 --> 00:31:41,140 e permite que você faça isso de uma maneira muito limpa. 545 00:31:41,140 --> 00:31:44,340 E o modelo é o lugar onde você geralmente expressar essas regras de validação, 546 00:31:44,340 --> 00:31:48,790 porque é validar se um modelo é válido ou não. 547 00:31:48,790 --> 00:31:51,350 >> Mas, por agora, vamos colocar isso até mais tarde, 548 00:31:51,350 --> 00:31:53,520 e por enquanto vamos trabalhar em outra parte, 549 00:31:53,520 --> 00:31:55,400 e vamos tentar fazer uma nova visão 550 00:31:55,400 --> 00:31:59,580 que lista todas as mensagens. 551 00:31:59,580 --> 00:32:02,490 As etapas envolvidas na tomada de uma nova ação para listar todas as mensagens 552 00:32:02,490 --> 00:32:04,810 é pegar uma lista de todas as mensagens 553 00:32:04,810 --> 00:32:11,990 e, em seguida, tornar a lista de todas as mensagens através de um ponto de vista. 554 00:32:11,990 --> 00:32:16,420 Aqui, felizmente o suficiente, já pegou todas as mensagens 555 00:32:16,420 --> 00:32:20,310 usando esta primeira linha, a encontrar todas as funções, 556 00:32:20,310 --> 00:32:22,520 e agora o que vamos fazer é até agora 557 00:32:22,520 --> 00:32:25,350 Eu tenho vindo a estabelecer diretamente o corpo da resposta 558 00:32:25,350 --> 00:32:29,090 passando a corda, mas agora eu quero usar um ponto de vista, 559 00:32:29,090 --> 00:32:31,870 ea diferença entre uma vista e apenas fazendo isso 560 00:32:31,870 --> 00:32:35,330 está com uma visão que eu possa ter um bom, modelo grande HTML, 561 00:32:35,330 --> 00:32:37,710 eo que eu posso fazer é passar algumas variáveis 562 00:32:37,710 --> 00:32:42,200 e, em seguida, ter a visão de preencher automaticamente o seu modelo 563 00:32:42,200 --> 00:32:44,690 usando essas variáveis. 564 00:32:44,690 --> 00:32:50,780 O que eu vou fazer é que eu vou criar um novo ponto de vista, 565 00:32:50,780 --> 00:32:55,940 e eu vou citar o ponto de vista algo como "Blog / index" 566 00:32:55,940 --> 00:33:08,480 e eu vou ligar basicamente isso - oh, o que estou escrevendo? 567 00:33:08,480 --> 00:33:12,910 Meu cérebro está em outro lugar. 568 00:33:12,910 --> 00:33:16,600 Vou ligar as variáveis ​​para a exibição mensagens, 569 00:33:16,600 --> 00:33:19,950 de modo que forma o ponto de vista tem acesso a esta variável post. 570 00:33:19,950 --> 00:33:26,140 >> E agora eu preciso para criar esse ponto de vista, 571 00:33:26,140 --> 00:33:28,500 então aqui temos esta pasta chamada "Visto", 572 00:33:28,500 --> 00:33:32,150 e em primeiro lugar, eu vou criar uma nova pasta em que chamado "Blog". 573 00:33:32,150 --> 00:33:35,810 Isso é bom. Dessa forma, podemos ter uma hierarquia agradável para os nossos pontos de vista. 574 00:33:35,810 --> 00:33:43,910 E então eu vou criar outro arquivo lá chamado de "index.php". 575 00:33:43,910 --> 00:33:45,780 Incrível. 576 00:33:45,780 --> 00:33:52,930 Na verdade, vamos ter os dois aqui. 577 00:33:52,930 --> 00:33:56,760 Fazendo um arquivo de visão, provavelmente é a parte mais simples de tudo isso, 578 00:33:56,760 --> 00:33:59,090 e estas são provavelmente as coisas que você já está familiarizado. 579 00:33:59,090 --> 00:34:01,240 Nós vamos fazer algo muito simples, 580 00:34:01,240 --> 00:34:05,360 começar a dizer: "A minha lista de posts do blog." 581 00:34:05,360 --> 00:34:14,860 Então, podemos passar, 582 00:34:14,860 --> 00:34:17,920 e nós pode percorrer a matriz mensagens, 583 00:34:17,920 --> 00:34:21,760 agarrar cada post e dizer algo como - 584 00:34:21,760 --> 00:34:25,290 talvez adicionar uma linha 585 00:34:25,290 --> 00:34:42,460 e, em seguida, imprimir o autor eo corpo. 586 00:34:42,460 --> 00:34:44,480 Isso faz sentido até agora? 587 00:34:44,480 --> 00:34:50,870 E vamos ver se funciona. 588 00:34:50,870 --> 00:34:53,489 Não aconteceu nada. 589 00:34:53,489 --> 00:34:55,090 Eu me pergunto por quê. 590 00:34:55,090 --> 00:34:58,760 Oh, eu perdi um passo. Muito bobo de mim. 591 00:34:58,760 --> 00:35:01,640 Eu criei um ponto de vista, mas eu não definir a vista como a resposta, 592 00:35:01,640 --> 00:35:03,190 então você tem que fazer mais uma coisa. 593 00:35:03,190 --> 00:35:12,610 Você tem que fazer ", este corpo de resposta" e configurá-lo para ser a vista. 594 00:35:12,610 --> 00:35:14,760 Lá vamos nós. 595 00:35:14,760 --> 00:35:17,200 Temos nosso campo, e então temos um post, 596 00:35:17,200 --> 00:35:20,500 e apenas por diversão, vamos inserir um outro post 597 00:35:20,500 --> 00:35:23,390 para que possamos ver uma lista. 598 00:35:31,800 --> 00:35:36,650 E inserir estas duas mensagens, 599 00:35:36,650 --> 00:35:39,500 e agora se eu atualizar a página, 600 00:35:39,500 --> 00:35:42,060 vemos todos esses posts aqui. 601 00:35:42,060 --> 00:35:44,250 >> Será que faz sentido até agora? 602 00:35:44,250 --> 00:35:46,400 Sim, uma pergunta? Oh, tudo bem. 603 00:35:46,400 --> 00:35:51,440 Como você pode ver, temos sido capazes de separar todos estes códigos para fora 604 00:35:51,440 --> 00:35:53,920 em seções diferentes, e então você pode ver que é mais claro, com o código de ponto de vista. 605 00:35:53,920 --> 00:35:57,810 Este arquivo aqui que representa o ponto de vista, 606 00:35:57,810 --> 00:36:01,220 ele só se preocupa com a representação de dados, exibindo dados. 607 00:36:01,220 --> 00:36:04,310 Ele é passado algum tipo de dados, e tudo que ele faz é apenas mostrá-lo a você. 608 00:36:04,310 --> 00:36:07,660 Em todas as outras partes de seu código, você não terá que se preocupar com nada disso, 609 00:36:07,660 --> 00:36:10,480 e da mesma forma, o seu código de vista não tem que preocupar-se sobre qualquer coisa 610 00:36:10,480 --> 00:36:13,390 como acessar o banco de dados e assim por diante e assim por diante, 611 00:36:13,390 --> 00:36:19,950 o que é muito bom e faz com que o seu código muito mais fácil de manter. 612 00:36:19,950 --> 00:36:23,390 Como eu disse, pontos de vista, eles são dinâmicos em que 613 00:36:23,390 --> 00:36:27,080 é um arquivo, mas ele iria gerar diferentes pontos de vista 614 00:36:27,080 --> 00:36:29,940 com base nas variáveis ​​que você realmente passar em, 615 00:36:29,940 --> 00:36:32,370 e, além disso, há um grande número de diferentes funções auxiliares 616 00:36:32,370 --> 00:36:34,230 que você pode usar para ajudá-lo a escrever o seu código mais rápido, 617 00:36:34,230 --> 00:36:36,320 que eu vou lhe mostrar em apenas um segundo. 618 00:36:36,320 --> 00:36:38,050 É. 619 00:36:38,050 --> 00:36:42,490 >> [Estudante] Então $ 0 é um controlador, certo? 620 00:36:42,490 --> 00:36:44,000 Essa segunda coisa. 621 00:36:44,000 --> 00:36:46,090 A pergunta é é de R $ 0 a controlador? 622 00:36:46,090 --> 00:36:48,610 $ 0 é uma variável que eu criei aqui. 623 00:36:48,610 --> 00:36:51,320 Eu criei uma visão de primeira. Eu atribuído a alguma variável. 624 00:36:51,320 --> 00:36:54,960 Então, eu passei para esta função, defina-o como o corpo da resposta. 625 00:36:54,960 --> 00:36:57,260 Será que isso faz sentido? 626 00:36:57,260 --> 00:37:02,200 [Estudante] Então, é vista :: factory, é vista como uma classe 627 00:37:02,200 --> 00:37:06,610 ou uma biblioteca [inaudível] função de fábrica? 628 00:37:06,610 --> 00:37:10,640 A questão é sobre a função de visualização :: fábrica, 629 00:37:10,640 --> 00:37:14,020 e, basicamente, este é um pouco mais de programação orientada a objetos essencialmente. 630 00:37:14,020 --> 00:37:18,000 Ver é a classe vista, e ele tem um método chamado "Fábrica" 631 00:37:18,000 --> 00:37:24,170 e isso é uma maneira de agarrar o objeto que está com o nome "Blog / index." 632 00:37:24,170 --> 00:37:27,140 E isso é mais um pouco de material de programação orientada a objeto 633 00:37:27,140 --> 00:37:33,010 que eu não vou entrar aqui muito. 634 00:37:33,010 --> 00:37:36,400 Agora, obviamente, queremos criar novas mensagens, 635 00:37:36,400 --> 00:37:38,790 mas não quero ter que fazê-lo por meio de um banco de dados, 636 00:37:38,790 --> 00:37:41,280 então vamos criar uma nova ação para a criação de um novo post, 637 00:37:41,280 --> 00:37:43,050 e há um monte de coisas que temos que fazer. 638 00:37:43,050 --> 00:37:45,910 >> A primeira coisa que vamos fazer - vamos enfrentar essas coisas um por um. 639 00:37:45,910 --> 00:37:48,320 A primeira coisa que vamos fazer é que temos que criar um formulário 640 00:37:48,320 --> 00:37:54,460 para a inserção de um novo post, 641 00:37:54,460 --> 00:37:57,360 mas eu também estou indo para adicionar uma nova ação em primeiro lugar, 642 00:37:57,360 --> 00:38:01,050 assim que adicionar uma nova ação é tão fácil como 643 00:38:01,050 --> 00:38:03,490 adicionando uma nova função com seu controlador, 644 00:38:03,490 --> 00:38:13,710 e agora eu vou fazer algo muito básico, 645 00:38:13,710 --> 00:38:20,850 basta pegar esse ponto de vista e publicá-lo, basta indicá-lo para você. 646 00:38:20,850 --> 00:38:26,220 E então agora eu vou criar um novo arquivo de ponto de vista, 647 00:38:26,220 --> 00:38:33,690 e eu vou começar a escrever algumas coisas. 648 00:38:33,690 --> 00:38:36,540 O que é agradável sobre Kohana é que eles fornecem um monte de diferentes funções auxiliares 649 00:38:36,540 --> 00:38:38,790 para você escrever código vista com mais facilidade, 650 00:38:38,790 --> 00:38:41,970 e uma dessas funções auxiliares ou módulos auxiliares 651 00:38:41,970 --> 00:38:45,860 está em torno de formas de escrever. 652 00:38:45,860 --> 00:38:49,460 Para escrever as formas, eu realmente não tenho que escrever diretamente qualquer HTML mim. 653 00:38:49,460 --> 00:38:51,100 Vocês escreveram formulários HTML. 654 00:38:51,100 --> 00:38:54,850 Você sabe como ele pode ser muito, muito doloroso e complicado para escrever formas. 655 00:38:54,850 --> 00:38:59,970 Não é divertido, por isso, felizmente, 656 00:38:59,970 --> 00:39:04,860 podemos basicamente escrever um formulário usando Kohana do 657 00:39:04,860 --> 00:39:11,190 formar funções auxiliares para fazer isso por nós. 658 00:39:11,190 --> 00:39:17,340 Nós estamos indo para basicamente ter campos para cada coisa que temos, 659 00:39:17,340 --> 00:39:23,160 assim um para autores e outro para os corpos. 660 00:39:23,160 --> 00:39:27,090 Nós vamos ter um rótulo, e nós vamos ter uma entrada. 661 00:39:37,450 --> 00:39:41,360 >> E então, finalmente, nós vamos ter uma submissão. 662 00:39:49,350 --> 00:39:52,230 E como você pode ver, este é muito mais limpo para escrever 663 00:39:52,230 --> 00:39:58,150 do que tudo o que HTML bagunçado, o que é bem legal. 664 00:39:58,150 --> 00:40:00,930 Concedido, há outros frameworks web que têm ainda mais limpo do que isso, 665 00:40:00,930 --> 00:40:04,440 mas pelo menos é melhor do que escrever o código HTML mesmo. 666 00:40:09,400 --> 00:40:11,130 Impressionante, então é isso que você vê. 667 00:40:11,130 --> 00:40:13,530 Isso é meio confuso, 668 00:40:13,530 --> 00:40:19,720 então eu estou indo para adicionar uma quebra de linha não 669 00:40:19,720 --> 00:40:21,180 para fazer esse olhar um pouco mais agradável. 670 00:40:21,180 --> 00:40:23,330 Bem, é claro, ele ainda parece muito, muito ruim, mas nós estamos apenas focados 671 00:40:23,330 --> 00:40:26,050 na funcionalidade de agora e não na estética. 672 00:40:26,050 --> 00:40:28,010 Sem tempo para fazer tudo. 673 00:40:28,010 --> 00:40:30,600 E como você pode ver, agora temos uma forma de super básico, 674 00:40:30,600 --> 00:40:32,080 o que é bem legal. 675 00:40:32,080 --> 00:40:36,730 Este código eu diria que é mais limpo do que tentando escrever um HTML formar-se, 676 00:40:36,730 --> 00:40:40,290 de modo que é bom. 677 00:40:40,290 --> 00:40:42,030 Qual é o próximo? 678 00:40:42,030 --> 00:40:49,260 Agora precisamos fazer as coisas com a ação. 679 00:40:49,260 --> 00:40:51,240 Normalmente, quando você escrever formulários HTML, 680 00:40:51,240 --> 00:40:54,070 você tem que dizer onde ele vai enviar o formulário para. 681 00:40:54,070 --> 00:40:56,050 Por padrão, na maioria dos frameworks web, 682 00:40:56,050 --> 00:40:58,200 submete ao mesmo exato, assim que a coisa é, 683 00:40:58,200 --> 00:41:01,310 se você enviar uma solicitação GET para / blog / new, 684 00:41:01,310 --> 00:41:03,240 ele deve mostrar-lhe a forma, 685 00:41:03,240 --> 00:41:06,810 mas se você enviar uma solicitação POST para / blog / novo com os dados, 686 00:41:06,810 --> 00:41:10,000 ele deve realmente tentar salvar esse post 687 00:41:10,000 --> 00:41:13,300 e fazer algo com ele. 688 00:41:20,630 --> 00:41:22,180 >> O que vamos fazer é 689 00:41:22,180 --> 00:41:25,320 basicamente tudo o que temos que fazer para verificar se é um pedido post ou uma solicitação get 690 00:41:25,320 --> 00:41:29,350 é verificar quais são as variáveis ​​post você pode definir. 691 00:41:29,350 --> 00:41:34,560 E se a variável cargo está definido, então vamos tentar criar um novo post. 692 00:41:34,560 --> 00:41:38,440 Mais uma vez, nós apenas fazemos isso, 693 00:41:38,440 --> 00:41:41,090 e que cria um novo post, e nós estamos indo literalmente para 694 00:41:41,090 --> 00:41:51,150 definir seus campos como este, 695 00:41:51,150 --> 00:41:55,640 e, em seguida, vamos salvá-lo. 696 00:41:55,640 --> 00:41:59,200 E então eu vou para redirecionar 697 00:41:59,200 --> 00:42:07,660 para a página de índice para que eles possam ver a nossa lista de mensagens novamente. 698 00:42:07,660 --> 00:42:09,620 Vamos tentar isso. 699 00:42:09,620 --> 00:42:15,160 Eu vou dizer: "Brandon" 700 00:42:15,160 --> 00:42:18,140 e, em seguida, enviar o post, e se tudo correr bem, 701 00:42:18,140 --> 00:42:21,390 como você pode ver, ele me redirecionado para a página do índice, 702 00:42:21,390 --> 00:42:24,140 e se eu vá até o final, temos um novo post inserido. 703 00:42:24,140 --> 00:42:26,430 Yay! 704 00:42:26,430 --> 00:42:28,430 Sim, pergunta. 705 00:42:28,430 --> 00:42:31,760 >> [Estudante] E se você tivesse entrado exatamente a mesma coisa 706 00:42:31,760 --> 00:42:33,380 você entrou antes? 707 00:42:33,380 --> 00:42:36,950 Será que ela verifique se você não tiver duplicado 708 00:42:36,950 --> 00:42:38,810 a mesma submissão? 709 00:42:38,810 --> 00:42:41,660 Seja por defeito, não, porque, por padrão - 710 00:42:41,660 --> 00:42:46,470 desculpe, a pergunta é se inserir nos mesmos dados na forma 711 00:42:46,470 --> 00:42:50,180 e alegam que, vai permitir a inserção de um objeto duplicado, 712 00:42:50,180 --> 00:42:52,550 uma entrada duplicada, essencialmente? 713 00:42:52,550 --> 00:42:54,070 Agora, sim, ele irá permitir que você faça isso, 714 00:42:54,070 --> 00:42:58,860 porque em bancos de dados é perfeitamente válido ter linhas completamente duplicados, 715 00:42:58,860 --> 00:43:02,260 mas se isso for um problema, então você pode adicionar validações, por exemplo, 716 00:43:02,260 --> 00:43:06,430 certificar-se de que, se este é exatamente o mesmo como algo que já existe, 717 00:43:06,430 --> 00:43:08,720 em seguida, dizer que é um objeto inválido, 718 00:43:08,720 --> 00:43:11,200 e então você pode até mesmo especificar sua mensagem de erro 719 00:43:11,200 --> 00:43:14,390 e dizer: "inválido porque isso já existe" ou algo parecido. 720 00:43:14,390 --> 00:43:22,420 Mas, neste caso, eu poderia simplesmente criar algo duplicado. 721 00:43:22,420 --> 00:43:26,010 Agora vamos tentar adicionar algumas validações. 722 00:43:26,010 --> 00:43:30,400 O problema com isto agora é que 723 00:43:30,400 --> 00:43:34,220 Eu poderia literalmente enviar uma mensagem completamente em branco. 724 00:43:34,220 --> 00:43:37,500 I pode clicar nesse botão, agora, e lá vamos nós. 725 00:43:37,500 --> 00:43:40,290 Você não pode realmente vê-lo, mas essa linha extra aqui 726 00:43:40,290 --> 00:43:43,830 indica que eu, literalmente, ter um novo post. 727 00:43:43,830 --> 00:43:46,050 Ele só tem um autor em branco e um corpo em branco, 728 00:43:46,050 --> 00:43:48,630 e nós não queremos que as pessoas para fazer isso. 729 00:43:48,630 --> 00:43:52,550 Este é o lugar onde a validação vem dentro 730 00:43:52,550 --> 00:43:57,540 >> Eu posso ir para o meu modelo de objeto, 731 00:43:57,540 --> 00:43:59,530 e agora eu posso adicionar uma nova função que especifica 732 00:43:59,530 --> 00:44:02,000 quais as regras de validação que eu deveria adicionar a este modelo 733 00:44:02,000 --> 00:44:06,840 para se certificar de que ele é válido ou para especificar o que significa ser um pós válido? 734 00:44:06,840 --> 00:44:10,210 E eu quero dizer que é apenas um post válido se o autor eo corpo 735 00:44:10,210 --> 00:44:15,150 não estão em branco, e isso é como fazê-lo em Kohana. 736 00:44:15,150 --> 00:44:18,750 Você cria uma nova função chamada "regras" 737 00:44:18,750 --> 00:44:20,210 e então você basicamente retornar um array associativo 738 00:44:20,210 --> 00:44:24,230 que define as regras de validação para este objeto. 739 00:44:24,230 --> 00:44:27,530 Nós estamos indo para retornar a matriz, em seguida, o que vamos fazer é 740 00:44:27,530 --> 00:44:32,820 dizer "autor", ele vai para uma matriz, 741 00:44:32,820 --> 00:44:37,720 que vai para outro array chamado "não está vazio." 742 00:44:37,720 --> 00:44:41,480 E então eu vou dizer "corpo". 743 00:44:50,980 --> 00:44:54,120 Ok, ea sintaxe para isso e estrutura para este 744 00:44:54,120 --> 00:44:56,530 pode parecer um pouco complicado e um pouco complicado. 745 00:44:56,530 --> 00:44:59,330 Se você ler a documentação, é bastante simples de descobrir, 746 00:44:59,330 --> 00:45:02,500 Mas, essencialmente, é isso que você precisa fazer para especificar 747 00:45:02,500 --> 00:45:04,130 algumas regras de validação, e há uma série de regras diferentes 748 00:45:04,130 --> 00:45:06,810 Kohana que vai lhe dar de graça, como você pode adicionar regras para dizer 749 00:45:06,810 --> 00:45:08,410 deve ser pelo menos este comprimento. 750 00:45:08,410 --> 00:45:11,800 Talvez ele tem que ser numérico. Talvez tenha que ser alfanumérico. 751 00:45:11,800 --> 00:45:14,410 Talvez que tem de ser, no máximo, este comprimento, assim por diante e assim por diante. 752 00:45:14,410 --> 00:45:17,730 Há uma série de regras diferentes que Kohana fornece para você, 753 00:45:17,730 --> 00:45:19,610 e você pode ir em seu site, olhar para a documentação, 754 00:45:19,610 --> 00:45:23,150 e você pode ver todas as coisas diferentes que você pode fazer. 755 00:45:23,150 --> 00:45:25,650 >> Mas isso é tudo o que tenho que fazer, 756 00:45:25,650 --> 00:45:30,490 e agora vamos ver o que acontece 757 00:45:30,490 --> 00:45:34,060 se eu enviar uma mensagem em branco. 758 00:45:34,060 --> 00:45:36,960 O que vai acontecer? Oh, não, eu recebo um erro. 759 00:45:36,960 --> 00:45:39,440 Eu recebo uma exceção de validação. 760 00:45:39,440 --> 00:45:41,070 Bem, isso é bom. 761 00:45:41,070 --> 00:45:43,200 Ele me disse que o meu modelo é inválido, 762 00:45:43,200 --> 00:45:45,780 mas eu não quero mostrar uma exceção 763 00:45:45,780 --> 00:45:48,720 para meus usuários quando eles tentam enviar algo inválido, certo? 764 00:45:48,720 --> 00:45:51,560 Quero dar-lhes algum tipo de mensagem de erro amigável 765 00:45:51,560 --> 00:45:53,610 quando algo dá errado. 766 00:45:53,610 --> 00:46:01,830 O que nós vamos fazer é que vamos 767 00:46:01,830 --> 00:46:04,490 embrulhar tudo em um loop try catch. 768 00:46:04,490 --> 00:46:06,750 Na verdade, eu acho que isso também é algo que você ainda não aprendeu 769 00:46:06,750 --> 00:46:10,820 em CS50, porque C, a linguagem de programação C, 770 00:46:10,820 --> 00:46:14,000 não tem exceções, mas quase todos os outros idioma 771 00:46:14,000 --> 00:46:16,700 tem exceções, de modo muito, muito brevemente, 772 00:46:16,700 --> 00:46:19,430 uma exceção é algo que um pedaço de código pode 773 00:46:19,430 --> 00:46:21,430 lançar uma exceção quando algo dá errado, 774 00:46:21,430 --> 00:46:23,410 mas então talvez algum outro pedaço de código mais acima 775 00:46:23,410 --> 00:46:25,810 pode capturar essa exceção e fazer algo com ele. 776 00:46:25,810 --> 00:46:27,710 >> Por exemplo, neste caso, 777 00:46:27,710 --> 00:46:29,940 o pedaço de código que está tentando salvar um modelo, 778 00:46:29,940 --> 00:46:33,170 ele valida o modelo, e se diz: "Ok, este modelo não é válido", 779 00:46:33,170 --> 00:46:36,150 que vai lançar uma exceção, e isso é uma espécie de equivalente a 780 00:46:36,150 --> 00:46:39,870 em C que você pode voltar a -1 ou algo parecido. 781 00:46:39,870 --> 00:46:42,320 E então, para mim, esta função, o meu código 782 00:46:42,320 --> 00:46:46,310 a um nível superior, posso tentar pegar essa exceção 783 00:46:46,310 --> 00:46:49,330 e, basicamente, dizer: "Ok, se eu pegar a exceção, o que eu vou fazer?" 784 00:46:49,330 --> 00:46:51,570 Ou eu poderia optar por não capturar essa exceção e deixe alguém mais acima 785 00:46:51,570 --> 00:46:54,400 capturar a exceção, ou se ninguém pega, 786 00:46:54,400 --> 00:46:56,820 então todo o programa trava e diz: 787 00:46:56,820 --> 00:46:59,170 "Algo deu errado, e eu não podia lidar com isso." 788 00:46:59,170 --> 00:47:04,490 >> Mas o que fazemos é que você enrole um pedaço de código em um bloco try, 789 00:47:04,490 --> 00:47:09,030 e então você também adicionar algo chamado um bloco catch, 790 00:47:09,030 --> 00:47:17,300 qual é o tipo de código que irá tentar capturar exceções que possam ocorrer. 791 00:47:17,300 --> 00:47:20,430 E então se eu pegar essa exceção especial 792 00:47:20,430 --> 00:47:23,110 ou exceção invalidação, então o que eu vou fazer é 793 00:47:23,110 --> 00:47:31,210 Eu estou indo para definir os erros - Eu acho que é como eu faço isso - 794 00:47:31,210 --> 00:47:35,370 e eu estou indo para definir os erros de algum objeto. 795 00:47:35,370 --> 00:47:40,920 E então, o que eu vou fazer é se ela atinge essa exceção, 796 00:47:40,920 --> 00:47:43,090 ele não está indo para redirecionar, e se não redirecionar, 797 00:47:43,090 --> 00:47:46,160 ele vai sair do caso do blog 798 00:47:46,160 --> 00:47:49,920 e bater esse blog / new, que é quer que eu quero fazer. 799 00:47:49,920 --> 00:47:53,190 Se houver um erro, então eu quero voltar à forma 800 00:47:53,190 --> 00:47:55,100 e exibir esses erros. 801 00:47:55,100 --> 00:48:00,780 Agora o que eu quero fazer é que eu quero passar esses erros 802 00:48:00,780 --> 00:48:07,010 à vista. 803 00:48:07,010 --> 00:48:10,360 Ok, eu acho que eu tenho o ponto de vista aqui, 804 00:48:10,360 --> 00:48:14,660 e, basicamente, eu quero mostrar esses erros se existirem. 805 00:48:14,660 --> 00:48:19,740 Antes de eu escrever o código HTML para isso, eu vou realmente rapidamente 806 00:48:19,740 --> 00:48:21,720 mostrar o que a estrutura deste erros olhares variáveis ​​como, 807 00:48:21,720 --> 00:48:23,080 e esta é uma boa prática em geral. 808 00:48:23,080 --> 00:48:25,070 Muitas vezes você recebe algo de volta de algum método, 809 00:48:25,070 --> 00:48:27,250 alguma função no âmbito web, 810 00:48:27,250 --> 00:48:29,410 e você não sabe o que a variável parece, 811 00:48:29,410 --> 00:48:31,210 assim você não sabe como trabalhar com ele. 812 00:48:31,210 --> 00:48:37,790 Eu vou usar um método de impressão r basicamente imprimi-lo. 813 00:48:37,790 --> 00:48:41,100 >> E como você pode ver, ele me diz que é uma matriz de associado, 814 00:48:41,100 --> 00:48:44,880 e você tem uma chave, autor, os pontos a esta corda, 815 00:48:44,880 --> 00:48:47,050 autor não pode estar vazio, e uma outra chave, corpo, 816 00:48:47,050 --> 00:48:49,680 aponta para outra cadeia, o corpo não pode estar vazio. 817 00:48:49,680 --> 00:48:52,130 Eu sou como, bem, legal. 818 00:48:52,130 --> 00:48:56,230 Então eu pode percorrer a matriz e imprimir cada mensagem. 819 00:48:56,230 --> 00:49:02,150 É basicamente como uma matriz associativa com um monte de mensagens. 820 00:49:02,150 --> 00:49:13,500 O que eu vou fazer é "se erros" 821 00:49:13,500 --> 00:49:17,140 e eu estou indo para criar uma lista não ordenada, 822 00:49:17,140 --> 00:49:20,860 e eu estou indo para percorrer todos os erros. 823 00:49:33,730 --> 00:49:38,710 E isso, e agora eu vou tentar apresentar este novo, 824 00:49:38,710 --> 00:49:41,200 e vamos ver o que temos. 825 00:49:41,200 --> 00:49:45,370 Agora temos essa boa lista de erros, 826 00:49:45,370 --> 00:49:48,630 e isso ainda é muito feio, mas isso, obviamente, pode ser formatado para uma boa aparência, 827 00:49:48,630 --> 00:49:51,620 mas a idéia básica é apenas em poucas linhas de código, 828 00:49:51,620 --> 00:49:53,720 fomos capazes de validar o nosso modelo, 829 00:49:53,720 --> 00:49:56,510 certifique-se de que certos campos não estavam vazias, 830 00:49:56,510 --> 00:49:59,740 e se algo deu errado, em seguida, retornar algum tipo de mensagem de erro 831 00:49:59,740 --> 00:50:01,760 Eu poderia, então, apresentar para o usuário. 832 00:50:01,760 --> 00:50:03,910 Você também pode personalizar a sua validação 833 00:50:03,910 --> 00:50:07,590 de modo que você pode realmente ter uma mensagem de erro 834 00:50:07,590 --> 00:50:09,620 que é mais específico para a sua aplicação, ou algo assim. 835 00:50:09,620 --> 00:50:14,600 Tudo o que é geralmente personalizável. 836 00:50:14,600 --> 00:50:17,150 >> Infelizmente, estamos correndo contra o tempo, 837 00:50:17,150 --> 00:50:20,040 então eu vou ter que cortar a sessão de codificação ao vivo aqui. 838 00:50:20,040 --> 00:50:22,980 Há um monte de outras características que eu quero demonstrar para você 839 00:50:22,980 --> 00:50:25,650 neste exemplo. 840 00:50:25,650 --> 00:50:27,620 Por exemplo, você pode adicionar modelos para o seu site, 841 00:50:27,620 --> 00:50:31,110 então talvez haja algum tipo de código HTML que você deseja aplicar 842 00:50:31,110 --> 00:50:35,190 para cada página em seu site, e em vez de colar que 843 00:50:35,190 --> 00:50:40,630 em cada arquivo visão única que você tem, o que obviamente seria uma má prática, 844 00:50:40,630 --> 00:50:43,020 basicamente você pode definir esses modelos, 845 00:50:43,020 --> 00:50:46,660 e, em seguida, em seu controlador dizer: "Ok, eu estou usando esse modelo." 846 00:50:46,660 --> 00:50:50,130 "Ter todos os meus pontos de vista usar esse modelo." 847 00:50:50,130 --> 00:50:52,470 E a última coisa que eu quero demonstrar a você também 848 00:50:52,470 --> 00:50:57,800 que não tem tempo para se cross-site scripting, 849 00:50:57,800 --> 00:51:01,430 e, basicamente, eu acho que vocês provavelmente já viu em CS50 - 850 00:51:01,430 --> 00:51:03,770 Eu acho que David Malan provavelmente falou sobre como você pode geralmente injetar 851 00:51:03,770 --> 00:51:08,040 O código JavaScript em - você falou sobre isso? 852 00:51:08,040 --> 00:51:10,220 Talvez? Talvez não? 853 00:51:10,220 --> 00:51:12,670 >> Mas muitas vezes você pode injetar código JavaScript malicioso 854 00:51:12,670 --> 00:51:15,630 no banco de dados de alguém, e se eles não escapam que corretamente, 855 00:51:15,630 --> 00:51:18,280 então, quando eles apresentam os dados de volta para o usuário, 856 00:51:18,280 --> 00:51:21,310 então ele pode executar algum tipo de código JavaScript acaso você não quer que aconteça, 857 00:51:21,310 --> 00:51:23,050 e eu estava indo para demonstrar como você faria isso dentro Kohana. 858 00:51:23,050 --> 00:51:25,380 É realmente muito, muito fácil. 859 00:51:25,380 --> 00:51:31,920 Eu poderia fazê-lo agora em 2 segundos literalmente. 860 00:51:31,920 --> 00:51:34,560 Tudo que você tem a fazer é basicamente quebrar essas coisas 861 00:51:34,560 --> 00:51:46,920 nesta coisa chamada entidades HTML. 862 00:51:46,920 --> 00:51:51,180 E isso vai escapar automaticamente todos os caracteres corretamente 863 00:51:51,180 --> 00:51:54,730 e certifique-se de não obter este problema. 864 00:51:54,730 --> 00:51:57,220 [Estudante] Você digitou o primeiro teste de forma incorreta. 865 00:51:57,220 --> 00:52:01,030 [Brandon Liu] Oh, oops. 866 00:52:01,030 --> 00:52:06,420 >> Ok, isso é tudo o que eu tinha que compartilhar com vocês hoje. 867 00:52:06,420 --> 00:52:09,930 Esses slides vão ser publicadas, mas estes são geralmente 868 00:52:09,930 --> 00:52:13,900 os únicos recursos que você deve realmente precisa para começar com o Kohana. 869 00:52:13,900 --> 00:52:16,770 Você pode ir para o site. Eles têm um guia do usuário, e eles também têm um explorador API. 870 00:52:16,770 --> 00:52:20,630 Podemos explorar todas as diferentes funções e funções auxiliares que eles têm para você. 871 00:52:20,630 --> 00:52:22,070 Eles geralmente têm informações suficientes sobre o site 872 00:52:22,070 --> 00:52:25,310 que você pode usar para começar e ir andando com Kohana. 873 00:52:25,310 --> 00:52:30,840 Não há que muitos tutoriais, eu acho, para Kohana, fora do 874 00:52:30,840 --> 00:52:33,880 o que eles têm no site aqui, então este é provavelmente a sua melhor aposta. 875 00:52:33,880 --> 00:52:35,600 Mas se você quer ir com o framework web 876 00:52:35,600 --> 00:52:37,120 e você não quer ter que pegar uma nova língua, 877 00:52:37,120 --> 00:52:39,780 e você quer algo que é relativamente leve e tem uma curva de aprendizagem fácil, 878 00:52:39,780 --> 00:52:41,570 Gostaria definitivamente sugerir Kohana. 879 00:52:41,570 --> 00:52:44,040 Essa é provavelmente a melhor oferta para isso. 880 00:52:44,040 --> 00:52:46,830 O mais engraçado, porém, é se estivéssemos usando Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 poderíamos ter replicado o que nós fizemos 882 00:52:48,550 --> 00:52:51,430 e, provavelmente, mais em menos de 3 minutos. 883 00:52:51,430 --> 00:52:54,710 Não é brincadeira, mas aprender Ruby on Rails leva muito mais tempo 884 00:52:54,710 --> 00:52:56,780 do que seria necessário para aprender Kohana. 885 00:52:56,780 --> 00:52:58,840 É basicamente a sua escolha sobre o que você quer escolher para aprender, 886 00:52:58,840 --> 00:53:01,260 mas se você quiser começar a trabalhar rapidamente, 887 00:53:01,260 --> 00:53:03,870 Kohana é definitivamente uma escolha muito boa. 888 00:53:03,870 --> 00:53:06,730 >> Alguma última pergunta antes de terminar? Sim. 889 00:53:06,730 --> 00:53:08,020 [Estudante] Como poderíamos integrar esse 890 00:53:08,020 --> 00:53:13,120 num quadro CSS como você estava usando quando você estava instruindo? 891 00:53:13,120 --> 00:53:16,700 A questão é como é que integramos que, com um quadro de CSS? 892 00:53:16,700 --> 00:53:18,740 O que provavelmente gostaria de fazer é que provavelmente incluiria 893 00:53:18,740 --> 00:53:21,090 uma nova pasta onde gostaríamos de despejar todos os nossos arquivos CSS, 894 00:53:21,090 --> 00:53:23,010 e então nós também gostaria de acrescentar um novo modelo. 895 00:53:23,010 --> 00:53:26,090 No modelo de nós incluir esses arquivos CSS 896 00:53:26,090 --> 00:53:28,410 para se certificar de que eles estão referenciados em cada página, 897 00:53:28,410 --> 00:53:32,220 e então quando você realmente está escrevendo HTML, 898 00:53:32,220 --> 00:53:34,010 que você acabou de adicionar classes e outros enfeites adequados, 899 00:53:34,010 --> 00:53:36,100 e, por exemplo, quando você está usando algo parecido com a forma 900 00:53:36,100 --> 00:53:40,710 função auxiliar, você pode adicionar mais parâmetros depois 901 00:53:40,710 --> 00:53:42,830 para especificar quais classes você quer ser ligado a várias coisas 902 00:53:42,830 --> 00:53:47,820 assim eles poderiam denominá-lo corretamente, e isso é basicamente como você iria. 903 00:53:47,820 --> 00:53:50,100 >> Alguma outra pergunta? 904 00:53:50,100 --> 00:53:52,090 Incrível. 905 00:53:52,090 --> 00:53:58,540 Obrigado pelo seu tempo, e obrigado por ter vindo. 906 00:53:58,540 --> 00:54:05,170 Eu não estava indo para adicionar muito mais, 907 00:54:05,170 --> 00:54:08,560 mas uma coisa realmente rápida é que não temos um link 908 00:54:08,560 --> 00:54:12,590 a forma. 909 00:54:12,590 --> 00:54:14,310 Realmente burro. 910 00:54:14,310 --> 00:54:20,110 Vamos adicionar um - na verdade, a vista, blog, índice, 911 00:54:20,110 --> 00:54:23,890 vamos muito rapidamente adicionar um link que vai para a nova página, 912 00:54:23,890 --> 00:54:26,770 a página onde podemos inserir um novo post. 913 00:54:26,770 --> 00:54:29,950 Nós vamos fazer isso. 914 00:54:29,950 --> 00:54:34,020 O que é bom é que há todo este grupo de funções auxiliares HTML 915 00:54:34,020 --> 00:54:37,090 que fazer coisas diferentes para você, então você já viu as entidades 916 00:54:37,090 --> 00:54:41,980 funcionar aqui, mas eles também têm uma função chamada "âncora", 917 00:54:41,980 --> 00:54:45,400 qual você pode digitar no Blog / novo 918 00:54:45,400 --> 00:54:49,550 e dizer: "Publicar um novo blog." 919 00:54:49,550 --> 00:54:51,850 E seria criar esse link para você, 920 00:54:51,850 --> 00:54:54,120 e isso parece realmente simples de se fazer, mas isso é bom, 921 00:54:54,120 --> 00:54:58,720 porque suponho que você está movendo o seu site a partir de um domínio para outro. 922 00:54:58,720 --> 00:55:01,390 E se você acabou de escrever os URLs a si mesmo, 923 00:55:01,390 --> 00:55:04,350 então você teria que mudar todas as URLs. 924 00:55:04,350 --> 00:55:06,850 Ou talvez você mudou-se a partir de 1 subpasta para outra subpasta. 925 00:55:06,850 --> 00:55:08,790 Você teria que mudar todas as URLs a si mesmo, 926 00:55:08,790 --> 00:55:12,180 e isso não é divertido. 927 00:55:12,180 --> 00:55:14,510 Você pode usar essa âncora aqui, 928 00:55:14,510 --> 00:55:18,950 e você pode mudar o domínio ou o prefixo subpasta 929 00:55:18,950 --> 00:55:20,640 no arquivo de configuração uma vez, 930 00:55:20,640 --> 00:55:22,980 e, em seguida, ele vai aplicar isso em todos os lugares, e isso é, mais uma vez, 931 00:55:22,980 --> 00:55:26,930 um grande exemplo de não repetir-se, secando o seu código para fora. 932 00:55:26,930 --> 00:55:30,370 Onde quer que você está se repetindo, e tentar extrair em algum tipo de arquivo de configuração 933 00:55:30,370 --> 00:55:34,160 ou para uma função diferente e tê-lo lidar com isso para você. 934 00:55:34,160 --> 00:55:42,930 >> E a última coisa que eu queria te mostrar era 935 00:55:42,930 --> 00:55:50,250 Suponho que estamos de volta neste post, e eu tinha composto alguns realmente longo ensaio, 936 00:55:50,250 --> 00:55:52,670 mas eu esqueci de incluir o meu autor. 937 00:55:52,670 --> 00:55:55,210 Agora, quando eu clique em "Enviar Mensagem" 938 00:55:55,210 --> 00:55:57,270 Acabo de perder tudo. 939 00:55:57,270 --> 00:56:00,000 Não! Realmente triste. 940 00:56:00,000 --> 00:56:03,870 Então, como você lida com isso? 941 00:56:03,870 --> 00:56:06,070 Isto é o que nós fazemos. 942 00:56:06,070 --> 00:56:09,340 O que fazemos aqui é para essas funções de entrada e área de texto, 943 00:56:09,340 --> 00:56:12,700 se incluir um segundo parâmetro, então o valor do referido segundo parâmetro 944 00:56:12,700 --> 00:56:16,620 vai ser o que o campo vai ser preenchido inicialmente com. 945 00:56:16,620 --> 00:56:23,570 O que podemos fazer é em nosso controlador blog, 946 00:56:23,570 --> 00:56:25,360 pudéssemos ligar outra variável. 947 00:56:25,360 --> 00:56:27,050 Chamá-lo de "valores", talvez. 948 00:56:27,050 --> 00:56:30,620 E passar na matriz post, literalmente. 949 00:56:30,620 --> 00:56:32,620 Isso significa que, se a validação falhou, 950 00:56:32,620 --> 00:56:36,570 passar para mim o cargo matriz que eu submeti a partir do último pedido, 951 00:56:36,570 --> 00:56:38,420 e de que maneira eu posso usar os valores da minha última apresentação de 952 00:56:38,420 --> 00:56:44,540 para repovoar os campos. 953 00:56:44,540 --> 00:56:49,600 Agora eu posso fazer algo parecido com valores autor 954 00:56:49,600 --> 00:56:55,180 e valores do corpo, e assim agora se eu fizer alguma coisa aleatória 955 00:56:55,180 --> 00:57:01,490 e clique em "Enviar Mensagem", então ele permanece lá. 956 00:57:01,490 --> 00:57:03,830 Mas vamos a correr para um outro problema. 957 00:57:03,830 --> 00:57:07,670 Isso funciona, mas se eu for para a página pela primeira vez, 958 00:57:07,670 --> 00:57:09,720 ele vai cair, e isso é porque a primeira vez 959 00:57:09,720 --> 00:57:13,730 vamos para a página, esta variável cargo ainda não foi definido. 960 00:57:13,730 --> 00:57:18,170 É nulo. Ela não existe. 961 00:57:18,170 --> 00:57:21,630 >> E o que queremos dizer é que se esta chave existir, 962 00:57:21,630 --> 00:57:27,750 em seguida, retornar o valor desta matriz, 963 00:57:27,750 --> 00:57:30,450 mas se a chave não existir, em seguida, retornar uma cadeia em branco. 964 00:57:30,450 --> 00:57:32,150 Essa é a funcionalidade que queremos aqui. 965 00:57:32,150 --> 00:57:34,690 Queremos verificar se a chave existe antes de tentar acessar a matriz, 966 00:57:34,690 --> 00:57:36,580 e, felizmente, o suficiente, 967 00:57:36,580 --> 00:57:38,570 Kohana também nos dá uma função auxiliar para isso. 968 00:57:38,570 --> 00:57:41,040 Eles têm todo esse conjunto de funções 969 00:57:41,040 --> 00:57:43,660 sob o nome de ARR, abreviação de matriz, 970 00:57:43,660 --> 00:57:45,800 e eles têm uma função chamada "get" 971 00:57:45,800 --> 00:57:48,690 e você pode passar na matriz, 972 00:57:48,690 --> 00:57:50,740 e você pode passar o nome da chave. 973 00:57:50,740 --> 00:57:54,330 Então, basicamente, o que ele vai fazer é que vai tentar obter a chave, 974 00:57:54,330 --> 00:57:56,470 mas se essa chave não existir na matriz, 975 00:57:56,470 --> 00:58:00,900 em seguida, ele irá retornar em branco, ou também podemos especificar um padrão, eu creio, 976 00:58:00,900 --> 00:58:03,500 que é bom. 977 00:58:09,740 --> 00:58:13,150 Agora, se fizermos a mesma coisa de novo, 978 00:58:13,150 --> 00:58:15,970 então você vê agora ele funciona na primeira vez, 979 00:58:15,970 --> 00:58:18,080 e novamente, se digitar alguma coisa aleatória 980 00:58:18,080 --> 00:58:23,210 e tentar apresentar, em seguida, ele permanece lá. 981 00:58:23,210 --> 00:58:31,640 >> E eu acho que eu também posso mostrar-lhe como adicionar um modelo muito rapidamente. 982 00:58:31,640 --> 00:58:36,140 O que podemos fazer em primeiro lugar é que podemos adicionar uma nova exibição chamada "template.php" 983 00:58:36,140 --> 00:58:38,890 dentro da pasta Views, 984 00:58:38,890 --> 00:58:44,730 eo que eu vou fazer é que eu vou imprimir algo chamado "conteúdo" 985 00:58:44,730 --> 00:58:49,130 qual vai ser o meu conteúdo principal. 986 00:58:49,130 --> 00:58:51,380 E talvez bem no fundo eu vou adicionar, digamos, 987 00:58:51,380 --> 00:58:53,340 copyright. 988 00:58:53,340 --> 00:58:56,150 [Pergunta estudante inaudível] 989 00:58:56,150 --> 00:58:58,050 [Brandon Liu] Talvez este é um modelo muito básico que eu quero usar. 990 00:58:58,050 --> 00:59:02,840 Eu quero ter uma pasta com os meus direitos autorais em cada página, 991 00:59:02,840 --> 00:59:05,560 e agora o que eu vou fazer no meu controlador 992 00:59:05,560 --> 00:59:07,740 é agora, em vez de dizer, "se estende Controller" 993 00:59:07,740 --> 00:59:11,870 Eu vou dizer: "se estende Controller_Template" 994 00:59:11,870 --> 00:59:15,890 e agora, em vez de dizer, "corpo de resposta é igual a este ponto de vista," 995 00:59:15,890 --> 00:59:24,110 Eu vou dizer: "este conteúdo modelo é -" 996 00:59:24,110 --> 00:59:27,690 e eu acho - posso colocar um sinal de igualdade? 997 00:59:27,690 --> 00:59:32,710 Eu esqueço. Sim, eu pensei assim. 998 00:59:32,710 --> 00:59:37,710 E agora eu definir essa variável conteúdo para igualar a vista. 999 00:59:37,710 --> 00:59:40,960 Eu posso fazer o mesmo aqui. 1000 00:59:49,620 --> 00:59:57,170 E agora, se eu atualizar, você pode ver agora, este autor é adicionado lá, 1001 00:59:57,170 --> 01:00:00,350 e apenas fazer alguns post aleatório 1002 01:00:00,350 --> 01:00:06,760 e depois, novamente, você verá que o direito autoral é na parte inferior da página. 1003 01:00:06,760 --> 01:00:10,730 >> Grande. Isso é tudo o que eu queria mostrar para vocês. 1004 01:00:10,730 --> 01:00:14,970 [Aplausos] 1005 01:00:14,970 --> 01:00:18,950 Alguma pergunta? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]