Microframeworks PHP usando Slim | Chris Worfolk | Skillshare
Pesquisar

Velocidade de reprodução


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Microframeworks PHP usando Slim

teacher avatar Chris Worfolk

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução

      1:23

    • 2.

      O que é um microestrutura?

      3:45

    • 3.

      Nossa primeira aplicação

      0:18

    • 4.

      Conceitos de encaminhamento

      1:24

    • 5.

      Como instalar dependências

      2:25

    • 6.

      Nossa primeira página

      2:53

    • 7.

      Executando o projeto

      1:10

    • 8.

      Rotas

      0:56

    • 9.

      Parâmetros de rota

      2:48

    • 10.

      Serviços

      0:28

    • 11.

      Injeção de dependência

      2:44

    • 12.

      Instalando um DIC

      2:07

    • 13.

      Instalando uma biblioteca de templates

      0:59

    • 14.

      Configurando o DIC

      3:06

    • 15.

      Usando o serviço de templating

      1:45

    • 16.

      Criando um modelo

      0:49

    • 17.

      Renderização de uma página

      0:56

    • 18.

      Controladores

      0:32

    • 19.

      Criando um controlador

      3:10

    • 20.

      Criando os modelos

      1:58

    • 21.

      Autoloading

      1:46

    • 22.

      Rotação para um controlador

      1:00

    • 23.

      Testando o controlador

      0:28

    • 24.

      Controladores abstratos

      3:38

    • 25.

      Testando o controlador abstrato

      1:12

    • 26.

      Solicitar e resposta

      0:30

    • 27.

      Registros de balanço

      0:50

    • 28.

      Criando a página inicial

      3:40

    • 29.

      Searching com cadeias de consulta

      3:17

    • 30.

      Executando uma pesquisa

      0:50

    • 31.

      Submissões de formulários

      2:04

    • 32.

      Documentos de HTTP sa

      2:37

    • 33.

      Respostas de JSON

      1:41

    • 34.

      Códigos de resposta

      1:50

    • 35.

      Mande erros

      0:29

    • 36.

      Loja de bicicletas

      0:41

    • 37.

      Página Página de bicicletas

      2:59

    • 38.

      Testando a página inicial

      0:36

    • 39.

      Página Página de detalhes

      3:25

    • 40.

      Filtração de parâmetros de rota

      1:16

    • 41.

      Adição de erros

      2:08

    • 42.

      Páginas de erro personalizado

      2:10

    • 43.

      Controlador de exceção

      3:01

    • 44.

      Erro Erro de desencadear manualmente

      2:19

    • 45.

      Middleware

      0:35

    • 46.

      Conceitos de middleware

      1:41

    • 47.

      Zona de membros

      0:27

    • 48.

      Páginas seguras e de login

      4:21

    • 49.

      middleware

      3:17

    • 50.

      Registrando e a saída

      2:14

    • 51.

      Playing o nome do usuário

      1:24

    • 52.

      middleware personalizado

      3:23

    • 53.

      middleware de rota

      1:45

    • 54.

      Grupos de rota

      3:55

    • 55.

      Considerações finais

      0:48

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

79

Estudantes

--

Projeto

Sobre este curso

Aprenda o melhor infraestrutura: Slim. Microframeworks de baixo de estruturas que permitem começar rapidamente e personalizar às suas necessidades. Neste curso, vamos passar pela Slim passo a passo desde a criação de seu primeiro site para explorar through envios, JSON, through autenticação e muito mais.

Ao final deste curso, você vai ter construído seus primeiros primeiros seis aplicativos de web no Slim, incluindo um sistema de login de membros, catálogo de produtos de e-commerce e banco de dados de dados de música de pesquisa

Conheça seu professor

Teacher Profile Image

Chris Worfolk

Professor

Chris Worfolk is a psychologist and software consultant. He is the author of How To Exit VIM and Do More, Worry Less.

Visualizar o perfil completo

Level: Beginner

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução: Olá e bem-vindo a este curso sobre PHP. Microfone funciona usando Slim se você é novo em frameworks Petri e Michael e ótimo , porque vamos começar de baixo para cima. Então nós realmente começamos com o básico e construímos um aplicativos realmente simples ao vivo e depois vamos escalar isso para usos mais avançados. Se você é uma cadela existente, ser desenvolvedor já familiarizado com mais frameworks, então maravilhoso. Você vai adorar Slim porque é super simples, muito fácil de começar, mas escala incrivelmente bem. Então, se você quiser criar aplicativos maiores, eu construí aplicativos maiores, incluindo lojas de comércio, incluindo lojas de comércio sistemas complicados de gerenciamento de conteúdo, bancos de dados de gerenciamento de clientes, tudo fino escalas. Muito bem, por isso começa simples e ficar lindamente maior e vai ajudar. Então eu realmente acho que você vai adorar. Uma vez que você começa Teoh, você magro, você provavelmente não vai ver a necessidade de usar sobre frameworks porque isso faz quase tudo que você precisa. Eu sou Chris. Eu tenho Bean, um consultor de software. mais de 15 anos. Trabalhei para multinacionais para startups. Eu amo programação, e Slim é o meu quadro favorito pessoal de escolha. Mal posso esperar para te ensinar isto. Vamos começar 2. O que é um microestrutura?: nesta lição vai olhar para o que é um trabalho de microfone. Pode ajudar se começarmos por olhar o que é uma estrutura porque poderíamos começar a construir cada site do zero em fazer tudo nós mesmos, lidar com o pedido sobre a resposta e todo o roteamento e o template ing. Mas, ah, muitas dessas coisas são compartilhadas em todos os aplicativos da web. Basicamente, cada aplicação web vai precisar de algum tipo de sistema de dizer, ok, o que você está bem, é o usuário solicitando e onde nós vamos enviá-los para o que vamos fazer quando eles fazem Esse pedido? E assim, para os poupadores de ter que fazer isso as pessoas criaram estruturas. A Andi. Eles fazem coisas como roteamento de pré-processamento, o resultado de retorno da solicitação, gerenciar todas as dependências, ter algum tipo de sistema de gerenciamento de variáveis de sessão de template ing. E há um monte de estruturas populares em sua sinfonia em DLA. Ravel é o fim usado para ser mais popular. Foi recusado recentemente. Bolo de código de ignição, ph. B. Todos eles vêm com uma torrente todas as funcionalidades para tornar nossas vidas mais fáceis. Mas eles são muitas vezes bastante grandes e volumosos, e eles nos dão toda essa funcionalidade fora da caixa e talvez nós queremos um pouco dela, mas nós não queremos mais pedaços dela. Temos nossas preferências pessoais para como queremos fazer template ing ou gestão de sessão ou este gits deve ter jogado em que, retardando um significado. Temos que fazer uma carga, bootstrapping e escrever um código inicial e esses grandes controladores que realmente não queremos fazer. E nós só queremos algo super simples para a próxima geração de coisas que surgiram em microestruturas, que removeu muito disso. Eles disseram OK, o componente do núcleo rial vê é basicamente o Reuss ing e algumas outras coisas sobre. Enquanto pudermos fazer isso, queremos que seja muito simples. Queremos que as pessoas para L escrevam um aplicativo Web de um arquivo onde eles possam dizer OK, se um usuário vai para essa rota, em seguida, retornar essa resposta muito popular com olhos AP, por exemplo, nós não precisamos de todo esse tamanho, gestão de sessão complexa e template ing um monte de tempo, e por isso realmente tem condenações para baixo para este quadro super simples. Isso significava que semanas de microfone ou muito mais rápido e mais fácil de configurar como discutimos você pode muitas vezes fazer em arquivo quente provavelmente vai querer usar mais para torná-lo mais limpo e apenas mais fácil de gerenciar. Mas poderíamos enfiar tudo em um arquivo, se quiséssemos. Eles tendem a vir com última funcionalidade empacotada, então, como veremos com Slim, ele não vem. Temos qualquer tipo de mecanismo de banco de dados ou mecanismo de template ing, mas faz com que seja bastante fácil de conectar um em, modo que se quisermos fazer isso, podemos. Andi, eles muitas vezes escalam muito bem, então as pessoas às vezes pensam que o microfone funciona apenas para sites com um par de páginas, mas na verdade especialmente magro com o poder que ele tem é, você pode escrever um aplicativo completo da Web com coisas complexas, como autenticação e lógica de negócios complexa, e realmente pode. Todos se encaixam dentro. Slim vai se adaptar, e você tem que ir buscar esses serviços você mesmo. Mas eles se conectam muito bem para que as obras de microfone estão em uma ferramenta incrivelmente poderosa em que você pode começar muito simples e construir aplicações Web bastante complexas, assim como você poderia com uma estrutura maior, mas com muito mais personalizável e muito mais fácil de começar e mais rápido 3. Nossa primeira aplicação: neste módulo. Vamos escrever a nossa primeira aplicação Web em slim, e vai ser o clássico mundo do olá. Então, nada super emocionante, mas ele vai mostrar é os fundamentos. E quão fácil é escrever um aplicativo fino antes de passar para projetos mais substanciais? 4. Conceitos de encaminhamento: Vejamos brevemente a teoria por trás do enraizamento. Então, essencialmente, nós vamos criar ah, aplicação Web baseada no trabalho do microfone, nós vamos assistir assinar um monte de rotas para ele. No caso de Slim, é apenas chamando uma função baseada no verbo que queremos e, em seguida, passando um u r l e um callback. Então, por exemplo, se quisermos obter solicitação, que é o padrão get post put dilate neste caso, maioria de nossas solicitações estarão recebendo talvez algum elenco postal e então vamos chamar o método get em o aplicativo passará a string que queríamos corresponder. Então, se você é uma página flash dois, nós queríamos ler para esta função. Se você é o u r L. Slash pago grátis, então queríamos encaminhar para a função prata no segundo parâmetro que vamos passar é dizer trabalho de telefone fino. O que devemos fazer quando combinarmos este u r l para que isso possa ser uma função anônima? Poderia apenas Ou poderia ser uma função nomeada, uma classe controlador que irá explorar mais tarde no curso. Mas basicamente vamos definir a rota nos dizendo o que ele quer mapear e então o que queremos que a estrutura faça quando conseguir essa correspondência. 5. Como instalar dependências: A primeira coisa que vamos fazer é instalar as dependências usando o gerenciador de dependências PHP, compositor. Então, para fazer isso, vamos subir aqui para o terminal ou prompt de comando se você estiver no Windows. E vamos dizer compositor e vamos exigir, e vamos precisar de algumas bibliotecas aqui. Então vamos precisar da biblioteca principal. Também vamos precisar de PSR 7 e HTTP fino. Você tecnicamente poderia fazer isso sem eles. E se você quisesse, você poderia apenas trazer Slim traço slim, e você poderia trazer suas próprias bibliotecas HTTP e PSR sete. Na prática, porém, nunca queremos fazer isso. Nós sempre queremos trazer essas bibliotecas para dentro porque eles funcionam muito bem com slim. Então, foi apenas se você dissesse, migrando um projeto legado, eu tinha que ter uma palavra a dizer e PSR sete biblioteca que você precisaria fazer isso na prática. Podemos trazê-los sempre. Então vamos deixar os compositores girarem e baixarem tudo o que precisamos. Ok, isso parece ótimo. Legal. Então é baixado todas essas dependências. E se entrarmos em nosso projeto, e agora podemos dizer que temos esse arquivo compositor gerado com as bibliotecas que pedimos. Então também temos este compositor dot loc. Esse é o que diz ao compositor exatamente quais bibliotecas baixamos, incluindo todas as dependências. Então você nunca editaria esse arquivo. Só teríamos lido um compositor JSON. Este é gerado automaticamente pelo compositor. E então nós também temos o arquivo de fornecedor, que contém todas as dependências em si. Agora mesmo, se fizemos tudo para conseguir que incluísse nossa pasta de fornecedores e queremos compor, baixe isso toda vez que instalarmos em um novo computador. Então vamos em frente e criar arquivo gitignore para isso em um minuto, que está no ponto raiz git ignore. Se você não vai usar o “get “, isso não importa muito. Mas se você estiver, você provavelmente está familiarizado com gitignore e nós vamos apenas dizer-lhe para ignorar o diretório do fornecedor. Então aqui temos nossas dependências baixadas e devemos estar prontos para começar a codificar. 6. Nossa primeira página: Instalamos todas as dependências que precisamos. Então agora vamos em frente e criar nossa primeira página. Então vamos criar um novo arquivo PHP. E vamos chamar isso de index.html HP. Vou criar um novo diretório chamado public e guardá-lo nisso. E então vamos precisar trazer algumas coisas. Então vamos carregar em alguns namespaces. Sim. Vou precisar da interface de resposta. Carregue a resposta inicial. E, em seguida, e vamos fazer o mesmo a interface de solicitação. E eu também vou trazer a fábrica fina. E então também queremos carregar em todas as nossas dependências e compor. Torna muito fácil fazer isso usando apenas a carga automática. E depois vamos em frente e embrulhamos. Então vamos chamá-lo de aplicativo. E vamos perguntar à fábrica do aplicativo e chamar o método de criação ou não. E então definiremos nossa primeira taxa. Então vamos chamar o método get porque isso pode ser uma solicitação GET. E vamos apenas fazê-lo cortar por enquanto. E então podemos definir uma função para dizer, ok, se você combinar esta rota barra, este homebrew executar esta função. E vamos tomar o pedido e a resposta como parâmetros. E então, dentro disso, vamos dizer resposta para obter corpo. E vamos escrever um texto. Então vamos fazer um Hello World por enquanto. E então retornaremos a resposta. Assim que definirmos nossas raízes, podemos chamar o comando Executar. Então vamos passar pelo que fazemos aqui. Ei, estamos carregando alguns namespaces e pacotes. Em seguida, certificamo-nos de que incluímos todas as dependências que instalamos via compositor. Estamos criando nosso aplicativo aqui usando o método de criação de fábrica de aplicativos de lims. E então definimos nossas raízes. E estamos dizendo que se algo corresponde a ponto barra, então a página inicial executa esta função. E esta função vai escrever Olá mundo para a resposta e, em seguida, enviar essa resposta para o navegador. E então uma vez que terminamos de construir tudo para o aplicativo, chamamos o método de execução para dizer slim, hey, agora isso está pronto. E você pode ir em frente e executar o aplicativo. 7. Executando o projeto: Escrevemos nossa primeira raiz, então vamos executá-la e ver se funciona. Então, vamos voltar para o terminal ou prompt de comando. E nós queremos ir para este diretório público, que é o que vai ser a raiz web da nossa aplicação. Então todo o nosso código será mantido fora das raízes da Web. Se alguma coisa correr mal, vamos expor o nosso código, mas esta parte será pública. E podemos usar o PHP é servidor de desenvolvimento interno para isso. Então nós podemos digitar PHP traço S, e então vamos pedir-lhe para executar um servidor web em localhost cólon 8 mil. E ótimo. Está pronto e funcionando. Então agora podemos ir para o navegador e apenas digitar localhost 8 mil. E lá vamos nós. Temos nosso HelloWorld que está trabalhando em um navegador. Então criamos nosso pequeno corte de cabelo de raiz Olá mundo. Nós rodamos PHP é um servidor de desenvolvimento local e ele funcionou. Não é muito útil, mas você já escreveu com sucesso sua primeira aplicação em slim. Então, agora que temos isso funcionando, vamos em frente e fazer algo mais interessante. 8. Rotas: Agora temos a nossa primeira rota. Vamos em frente e adicionar um segundo. E desta vez vamos fazer algo um pouco mais interessante do que um corte. Então digamos que o Hallo Slash Jane é a raiz. E novamente, vamos definir um encerramento, uma função anônima. E temos um corpo de novo. E desta vez vamos dizer “Olá Jane”. E então retornaremos a resposta novamente. Isso se parece com a linha de cima, exceto que desta vez temos uma rota de barra Olá Slash Jane. Vamos adicionar um ponto-e-vírgula lá. E agora, se voltarmos para ele, vamos cortar Olá, Flash Jane. Poderíamos criar uma nova raiz, Perfeito. 9. Parâmetros de rota: Então isso é meio útil. Agora somos capazes de definir várias rotas. Mas muitas vezes ao trabalhar com PHP, queremos que essas raízes sejam dinâmicas. Queremos ser capazes de passar digamos, uma variável e talvez seja a URL de uma postagem de blog. O que podemos fazer isso usando parâmetros. Então, novamente, vamos definir um pedido get. E desta vez vamos dizer olá. E vou colocar seu nome em chaves, que diz ao Slim que é um parâmetro. E então vamos definir função novamente. E desta vez eu vou pedir um terceiro, que é um array chamado 4xh. E isso nos dará os argumentos, que neste caso são os parâmetros que sacrificam o nome aqui. E vamos capitalizá-lo. E então eu vou acessar a matriz de argumentos e retirar o nome. Então, o que quer que alguém coloque na URL aqui, diga que você pode fazer slash hello slash Chris. Em seguida, isso será passado através da matriz 4xh. E vamos capitalizá-lo aqui e ser capazes de acessá-lo. Então vamos escrever isso na sua resposta. Vamos pegar o corpo de novo. Vamos usar. Então vamos dizer olá, passe um nome. E então retornaremos a resposta como de costume. E eu vou precisar fechar. Então, podemos passar agora qualquer string para aqui, qualquer variável usando o URL, e ele vai chegar a esta função. Então vamos tentar isso. E nós estamos desaparecidos porque eu adicionei um extra que vamos nós temos Olá Chris, perfeito. E eu poderia mudar isso ou eu poderia dizer oi Sam. E as pistas desistem da Jane. Mas se formos até a Jane, ainda vai ser anulado por isso porque vai cascata abaixo das raízes. Mas se não coincidir com nenhum destes, não podemos. O curinga do Dick aqui, onde podemos passar qualquer coisa. É tomado o parâmetro name aqui está passando para a matriz aqui, e nós estamos puxando para fora a matriz e podemos fazer o que quisermos com a função. Neste caso, estamos apenas escrevendo para esta string. 10. Serviços: neste módulo, vamos olhar para injeção de dependência. Com qualquer web up, você provavelmente tem um monte de serviços, como conexões de banco de dados, e-mails de gerenciamento sexual que você deseja se conectar e ser capaz de trazer para dentro. E como gerenciamos todas essas dependências? Bem, Slim não tem um recipiente de injeção de dependência embutido, mas torna muito fácil importar um. Então, neste módulo, vamos fazer saltos que e configurar alguns serviços. 11. Injeção de dependência: Vamos começar este módulo olhando para algumas das teorias por trás da injeção de dependência. Então, se você tem um aplicativo Web e provavelmente precisa de um monte de serviços, há um banco de dados ao qual você pode querer se conectar. Se quiser renderizar alguns modelos, talvez odeie e-mails. Você quer gerenciar algum tipo de dados de sessão, e talvez você queira enviar e-mails transacionais ou colocar as pessoas em algum tipo de provedor de e-mail como macaco de e-mail. Há todas essas dependências externas com as quais você quer trabalhar. Agora. Como nos certificamos, por exemplo, por exemplo, se queremos ter uma conexão com o banco de dados? Será que cada classe tem sua própria conexão de banco de dados que é terrivelmente ineficiente? E então, antigamente, usávamos o padrão de singleton. Se você tem idade suficiente para lembrar que Andi, toda vez que você queria usar o banco de dados, você teria que chamar o método get instance, e isso significaria que poderíamos você só poderia criar uma conexão de banco de dados. E foi horrível porque era impossível testar unidade era o grande problema no DSO . Mudamos para a solução onde começamos a injetar dependências. Então, quando você cria uma classe como este controlador, você passaria na instância de banco de dados para que quando estamos testando unidade, poderíamos passar uma simulação lá em que nos permitiria fazer todos os testes que precisávamos. Tudo bem, mas significa que você precisa do Teoh. Tenha todas as suas dependências injetadas na classe. Então, toda vez que você escreve uma nova classe, como um controlador, você tem que passar tudo o que você precisa. E isso pode ser um monte de coisas. Em um grande aplicativo Web, havia muitos serviços, então o modelo mais recente é usar o que é chamado de contêiner e em um contêiner, ele sabe como acessar todos os serviços que você precisa. Então, por exemplo, neste código aqui, estamos criando um contêiner em estavam registrando um serviço de banco de dados em estavam dizendo, Se alguém quer um banco de dados, aqui está a classe que você precisa. Aqui está como você Winston ela odiava você criar sua classe de banco de dados e um interior de embrulho. Podemos falar com o recipiente de injeção de dependência e dizer, OK, OK, me dê o banco de dados, e somente quando chamamos esse serviço ele contém atrás e, em seguida, criar a instância fora do banco de dados, mas nós não necessidade de pré-registrar isso na classe. Podemos começar a codificar e dizer: “ Certo, Certo, precisamos de base de dados no nosso contentor de injecção de dependência. Nosso serviço Lehrer sabe como se levantar para nós. 12. Instalando um DIC: Slim não contém mais um recipiente de injeção de dependência usado para ser fornecido com 1-bit. As novas evasões da pequena dúvida. Então, se quisermos um dia, vamos ter que instalar um. Então isso é muito fácil, que é aqui no nosso terminal. E vamos voltar ao nosso projeto. E nós vamos pedir por isso. Então vamos dizer compor, requer PHP traço, traço d pi. Então este é um recipiente de injeção de dependência de terceiros. É o mais popular em PHP, por isso vai fazer bem, vai compor um ir em frente e instalar isso. Agora. Só vou demorar uns segundos. E vai baixar todas as dependências. O PHP DI precisa. Ótimo, então está feito. E se dermos uma olhada em nossa pasta de fornecedores, temos PID P d i nisso. Ótimo. Então aqui estamos em um arquivo de índice e podemos configurar nossos contaminantes de injeção de dependência. Então vamos trazer um namespace importante. E logo abaixo de onde trouxemos nossas dependências, vamos em frente e criar um contêiner. Queremos fazer isso antes de criarmos nossa aplicação. Então vamos criar um contêiner e então vamos dizer slim que queremos usar este contêiner. Então aqui estamos nós em uma fábrica. Este é o lugar onde estamos criando são magros. Mas antes de fazermos isso, criamos esta injeção de dependência contendo um par. E nós definimos, disse à fábrica AP que quando criamos um aplicativo, queríamos usar esse contêiner. E assim, quando ele cria o de cima para baixo aqui, ele já está usando isso, o que é ótimo. Obviamente não há nada em nosso recipiente de injeção de dependência agora, mas ele está configurado pronto para usar para que quando tivermos algumas dependências, queremos injetar no aplicativo, alguns serviços, podemos fazer isso. Então vamos fazer isso na próxima lição. 13. Instalando uma biblioteca de templates: Então, no projeto original, nós apenas obtivemos a resposta e nós escrevemos algum HTML bruto para ele. Não há tags HTML reais em habitats onde estamos fazendo um Widgets convidando tags HTML cruas. E seria melhor se tivéssemos algum tipo de motor de modelagem ou motor de visão que poderia fazer isso por nós. Slim não vem com um, então precisamos fornecer um e podemos usar o que quisermos. Mas para os propósitos deste curso, vamos usar um chamado bigode. Então, novamente, nós vamos voltar para o terminal ou prompt de comando e nós vamos fazer compositor exigir, deve pedir bigode barra. E vai dar ao compositor um par de segundos para trazer isso. Bigode é um modelo realmente simples na linguagem. Por isso, é ótimo para este curso destinado a aprendizagem porque é muito fácil de entender, tem lógica mínima no modelo. Ótimo, então isso é dentro, Agora vamos em frente e instalar isso em nosso projeto. 14. Configurando o DIC: Então nós temos nosso modelo e temos nossa injeção de dependência ou Service Manager instalado. Então, primeiro de tudo, vamos nos livrar deles e depois aparecer no recipiente. Vamos configurar isso para que quando queremos acessar um serviço de modelos, podemos, então vamos chamar conter um conjunto e definir novamente uma função anônima. Haha, gostaria de pegar meus pontos-e-vírgula e cedo para não esquecermos deles. E vamos dizer novo bigode no motor SQL. E eu passarei a configuração deles aqui. Vamos passar por isso em um minuto. Para o momento. Vamos pegar um código. Ok, isso parece bom. Então estamos definindo um serviço chamado templating. Isso significa que quando dentro, quando definimos nossas raízes e tentamos acessar o modelo atendido, ele executará essa função, e essa função nos entregará esse motor de bigode, que é o modelo de bigode serviço. Agora você pode se perguntar, Ok, nós importamos todos os namespaces aparecem para todo o resto. Por que não precisamos fazer isso com bigode? E isso porque bigode está no namespace raiz e nós estamos no namespace raiz aqui. Então, digamos, este arquivo, haveria uma definição no topo que diz namespace Deal.II. E então ele diria como recipiente de classe. E é por isso que precisamos importá-lo deste DI, namespace. Mas o motor de bigode não tem esta declaração de namespace e por isso não precisamos fazer uma declaração para au pair. Em segundo lugar, o que estamos fazendo aqui? Bem, estamos dizendo bigode onde carregar o modelo, e vamos criar o diretório deste modelo em breve. Então estamos dizendo para me gerar um motor de bigode. E quando você precisa carregar o modelo usa o carregador do sistema de arquivos e carregá-lo a partir deste local e não tem extensões automaticamente. Então você poderia, se seus templates forem todos chamados de ponto HTML, você poderia adicioná-lo lá. Mas acho que é mais fácil definir isto à medida que avançamos. Então vamos carregá-lo a partir do arquivo template e nós vamos apenas carregar o nome do arquivo, nós dar-lhe n. Vamos ver como isso, nós realmente usamos isso na próxima lição. E então tudo isso vai começar a se juntar e fazer muito mais sentido. 15. Usando o serviço de templating: Agora que configuramos o serviço de modelos, vamos em frente e usá-lo. Então, vamos descer aqui depois de criarmos o aplicativo e vamos criar uma rota e dizer olá, nome exatamente como fizemos com o projeto original. E novamente, vamos definir a função anônima. Então vamos levar em nossa busca, nossa resposta e alguns argumentos. Ok, legal. E vai dizer que temos o serviço de templação. E vamos chamar o método aleatório, que é um método bigode que diz renderizar algum HTML. E vamos dar-lhe um nome de modelo, hello.html. E então vamos passar em variáveis também. Então, a maneira como você renderiza modelo é você dizer bigode que modelo você deseja renderizar e quais variáveis você deseja adicionar um neste caso, nós vamos apenas para, eu vou passar a ele uma variável chamada nome. E nós vamos puxar isso para cima os argumentos, que, claro, vai pegar essa cabeça que nós passamos dentro Então isso vai gerar esta string HTML. E então podemos dizer resposta, pegar corpo, certo? Vamos escrever o nosso HTML e, em seguida, vamos retornar a resposta. Ok, isso parece muito bom. Vamos em frente e criar um modelo na próxima lição. 16. Criando um modelo: Vamos criar um modelo então. Então isso é muito fácil. Vamos usar um tanque de altura 1. Eu vou dizer olá. E bigode usa este sistema de chaves duplas para todas as variáveis que você deseja passar. E, literalmente, é isso. Então podemos salvar isso, chamá-lo hello.html. E em nosso espaço de trabalho vamos criar um diretório de modelos e salvar isso. Ótima. Então olhamos para o que está acontecendo aqui. Quando chamamos esta rota com dizendo, Chegar ao modelo e serviço, renderizar este hello.html, que dissemos olhar no diretório templates, passando esta variável nome. E, em seguida, um modelo. Temos aquele par de armação. Então isso deve estar pronto agora. 17. Renderização de uma página: Então, agora estamos prontos para executar nossos projetos ou apenas 0,1 minúsculo erro de sintaxe. Isto deve ser adulto. Isso parece bom. Então vamos para ele e vamos para o nosso diretório público. E novamente, vamos rodar PHP é servidor de desenvolvimento local, então vamos fazer pitch P dash S, localhost, 8 mil. Ok, agora nós definimos as raízes Olá Slash nome. Então vamos tentar cortar Kim. Perfeito. Então temos uma etiqueta H1. Então estamos passando o nome aqui como poderia ser qualquer nome aqui. Isso está sendo passado aqui como uma discussão. E tomamos um argumento com o envio para bigode para renderizar este modelo Olá. Estamos caindo em Haha, ótimo. Então, um sistema de modelos está funcionando agora. 18. Controladores: já escrevemos algumas páginas. Nós trouxemos um serviço para nos ajudar a emprestar para essas páginas, mas no momento não é super escalável. Sua maior parte do seu em um arquivo. E se quiséssemos escrever um aplicativo maior, ficaria um pouco confuso. Então, como fazemos isso? Vai esmagar escalas realmente bem, porque podemos usar controladores da mesma forma que usaríamos controladores em uma estrutura maior. Mas eles encaixam muito bem em slim também. E assim, neste módulo, vamos ver como fazer isso. 19. Criando um controlador: Ser capaz de colocar todo o nosso código em um arquivo é útil se nós temos apenas um pequeno projeto e manter as coisas agradáveis e simples, o que acontece se você tem um projeto maior? Se temos 20-30 raízes, então de repente index.js HP vai ser enorme. Então, em vez disso, podemos dividir as coisas em arquivos separados e podemos usar controladores, idiotas como você poderiam usar um controlador e uma estrutura maior como sinfonia ou Lera val. Você também pode usar controladores em slim. escolha é sua se você quer colocar tudo em um arquivo ou dividir. Então vamos em frente e criar controlador. E eu vou continuar e salvar isso no primeiro controle. E eu vou colocar, eu vou Chris diretório fonte. E, em seguida, dentro que eu vou criar diretório controlador e salvar-nos primeiro controlador. Ok, ótimo. - Legal. Então primeiro eu vou dar um namespace e, em seguida, vamos querer trazer em resposta de solicitação. Vamos apanhá-los. E então eu também vou trazer esta interface de contêiner e nós usamos este dano da válvula também. E então eu vou apenas definir este controlador. Então, quando a coisa útil que aconteceu com Slim é que quando ele cria este controlador para frente, ele passa no recipiente de injeção dependência, a interface de contêiner. Então a CPU está cheia. Podemos salvar isso para esta variável de instância aqui. E então nós, quando queremos acessar nossos serviços, acessamos nosso contêiner de injeção de dependência para baixo. Temos esta variável pronta. Conheci seu privado porque não precisamos de mais ninguém para acessá-lo agora. E então vamos definir um método. Então vamos definir uma função homepage e diminuir as funções anônimas em index.html. Nós vamos receber um pedido e uma resposta aqui e vamos acessar nosso contêiner. E novamente vamos dizer obter templating, dizer renderizar homepage que HTML, Tony para passar quaisquer variáveis. E neste ponto, e novamente vamos dizer obter corpo e chamar o método de escrita, passar o homem HTML. E ajudaria se eu pudesse soletrar retorno corretamente. Ok, legal. Então, em vez de uma função anônima, agora temos este controlador com este método homepage em, na próxima lição, vamos em frente e criar este modelo de página inicial. 20. Criando os modelos: Criamos nosso controlador aqui. Então vamos em frente e criar este modelo de página inicial. Então eu vou criar um novo arquivo aqui e vamos usar algumas inclusões. Então a maneira como fazemos isso no bigode é com as chaves encaracoladas e depois maior que a flecha. E então vamos colocar um modelo. E então criaremos o corpo principal. Diga, bem-vindo à minha página inicial. Obrigado por me visitar. E usarei essa sintaxe novamente para trazer o rodapé. E vamos salvar isso como HTML da página inicial. E vamos colocar isso no diretório templates. Mais algumas coisas que precisamos. Então precisamos realmente criar esses rodapé headroom. Agora você pode criá-los manualmente, mas você também pode simplesmente copiá-los e colá-los do código de exemplo. Então, se formos no projeto eólico três aqui. Então vamos em frente e pegar este cabeçalho. E vamos apenas salvar isso como cabeçalho onde quer que você esteja trabalhando. E as fotos devem ser bem simples também. Mais uma vez, vamos desenhar isso. E uma das coisas que queremos ter cuidado é o cabeçalho n-x inclui este style.css. Então vamos em frente e pegar isso de graça também. Está no diretório público. Então style.css e eu sabemos espaço de trabalho. Vamos guardar isso no diretório público. Então, vou deixar as coisas mais bonitas também. Ótimo. Então temos o nosso modelo aqui, temos o nosso controlador aqui. Só precisamos ligar tudo agora. 21. Autoloading: Nos velhos tempos do PHP, uma vez que temos este primeiro controlador, podemos entrar aqui e é algo como exigir molho pode rolar. Primeiro controlador. Mas esta é uma massa real porque então o código é firmemente acoplado e realmente difícil de testar. Então, em vez disso, agora podemos usar o carregamento automático com base no namespace porque definimos esse namespace ou pagador. Então vamos em frente e configurar isso. Precisamos ir ao nosso arquivo de compositor. E nós vamos adicionar em uma nova seção aqui chamada auto load. E vai ser um PSR para e vamos dizer no Slash Slash. Então qualquer coisa, qualquer namespace que comece com um aplicativo, você deve carregar automaticamente do diretório de origem. Então isso significa que quando tentamos ler o controlador de aplicativo de referência, primeiro controlador, ele vai dizer, ok, começa com um aplicativo. Então olhe no diretório de origem, e então ele vai dizer, OK, ele está no controlador e é o primeiro controlador. Então isso significa que o PHP vai ajudar a encontrá-lo magicamente. Então, a próxima coisa que precisamos ir para o nosso terminal e apenas atualizar compositor. Deixe compositor. Agora que isso aconteceu. Então vamos voltar para a rota aqui e vamos fazer dump compositor, traço auto load. Também podemos regenerar completamente os arquivos do compositor. Mas se você quiser apenas atualizar o carregamento automático, então compositor dump dash Autolite, vamos fazer o que precisamos. Ok, ótimo. Então isso gerou alguns novos arquivos de piloto automático e agora devemos estar prontos para conectá-lo. 22. Rotação para um controlador: Vamos em frente e ligar este controlador. Então vamos nos livrar desse código antigo do primeiro projeto. E não definimos uma raiz get novamente. E vamos fazer dela a raiz. Então, normalmente aqui nós passamos uma função anônima, digamos, Ok, se você coincidir com este URL, em seguida, entregar isso. E nós vamos fazer uma coisa semelhante aqui, mas em vez de fazê-lo funcionar, vamos passar em uma classe e um nome de método. Então, vamos dizer controlador de aplicativo primeiro controlador, esse é o caminho de namespaced completo. E vamos dizer página inicial do cólon. Então este dois-pontos é sintaxe específica slim dizendo que esta é a classe, este é o método nessa classe porque isso é o que chamamos aqui que queríamos executar. E isso é literalmente tudo o que precisamos fazer para conectá-la. Então vamos em frente e explodiu o servidor de desenvolvimento e vê-lo em execução. 23. Testando o controlador: Vamos ao nosso terminal e vamos gravar no diretório público. E, em seguida, como normal, irá dizer PHP para o servidor de desenvolvimento de site. Melhor rodando no localhost 8.000.5, temos um localhost 8 mil. Perfeito. Temos a nossa página inicial. Temos a nossa página inicial aqui. E está ainda mais em nosso cabeçalho, bem como em nossa folha de estilo. E tudo parece bom. 24. Controladores abstratos: Parece que está funcionando muito bem. Mas no momento, isso significaria que quando criássemos esse controlador, teríamos que fazer todo esse código sempre. Seria bom se pudéssemos simplificar muito disto. Então o que poderíamos fazer é criar um controlador abstrato para fazer um monte dessa floresta. Então vamos em frente e fazer isso agora. Vamos apenas tomar isso como uma base, chamá-lo controller dot PHP, e nós podemos trabalhar a partir daí. Então eu vou fazer disso uma aula abstrata. Então, quando não podemos instanciar diretamente, você tem que estender usando outra classe. E vamos chamá-lo de controlador. E vamos mudar isso para protegê-lo porque queremos que nossas classes infantis sejam capazes de usá-lo. E então vamos voltar para este método homepage aqui. E vamos criar uma função chamada renderização, que fará parte do trabalho pesado em termos de renderização HTML. Então, vamos pegar uma resposta, tomar um nome de modelo, e vamos pegar todos os dados e variáveis a querer bater em, que por padrão será uma matriz vazia. E então vamos fazer muito a mesma coisa que fazemos em uma função normal e vamos chamar o esforço aleatório. Ok, isso parece bom. Então esse é um controlador que podemos estender agora. E vamos em frente e criar controlador que usa isso. Então não vamos precisar disso. E vamos chamar o segundo controlador. Ótimo, vamos guardar isso. E nós não precisamos mais desse código porque isso está em seu pai embora estendendo. Então vamos estender o controlador. E vamos nos livrar do ninho também. E agora vamos criar uma função normal. Então vamos chamar isso de “olá”. E agora podemos usar esse método especial que criamos em nosso controlador base. Então eu vou passar o objeto de resposta. Template será chamado Olá. E, por enquanto, vamos codificar isso. Ok, isso parece muito bom. Então nós temos nosso segundo controlador que estende nosso controlador baseado em controlador base define coisas como tomar o recipiente de injeção de dependência e colocar em uma variável de instância. E isso lhe dá esse esforço aleatório, faz muito trabalho pesado de usar essa floresta. Para que aqui, tudo o que temos que fazer é dizer, ok, vai ser olá. E nós só queremos destacar missões de nomes. E então só precisamos desse nome de arquivo de modelo. Tenho isto por aqui, mas vamos actualizar. Então nós trazemos o cabeçalho e rodapé, ou se você excluí-lo, você pode simplesmente criá-lo do zero. Certo, luxo, perfeito. Então temos o nosso controlador básico, temos o nosso novo controlador, e temos o nosso modelo. Vamos em frente e ligar tudo isso. 25. Testando o controlador abstrato: Vamos em frente e ligar este segundo controlador. Então viremos aqui para as nossas raízes e definiremos uma nova rota. E apenas diga olá. Novamente. Vamos dar-lhe um caminho completo. Então é o segundo controlador. E o método foi chamado de olá. Agora, se formos ao nosso servidor de desenvolvimento, temos que cumprimentar. Perfeito, então temos Olá Chris, essa é a variável que passamos e temos um cabeçalho e rodapé e funcionando também. Isto é muito parecido com o que fizemos no início. Mas se você se lembra no primeiro controlador este monte de código boilerplate aqui que está acontecendo aqui e aqui. Considerando que este segundo controlador, agora estamos escondendo muito disso neste controlador abstrato. Isso é muito mais bonito porque é literalmente uma linha para renderizar um modelo. Neste caso, nem precisamos tocar no modelo em serviço. Mas ainda vamos manter isso protegido para que possamos acessar serviços aqui se quisermos, e faremos mais tarde no projeto. Mas ele só torna super agradável e limpo ao usar este controlador abstrato e padrão ChildController. 26. Solicitar e resposta: neste módulo. Vamos ver como modificamos os objetos de solicitação e resposta. Então, o que acontece quando queremos extrair informações da consulta, cadeia de caracteres ou submissão de formulário? O que acontece quando queremos enviar diferentes formas de dados de volta, como Jason? Ou talvez um redirecionamento parecerá tudo isso neste módulo, e as coisas ficarão um pouco mais interessantes no produto. Front vai escrever algo um pouco mais substancial e que nós vamos criar registros pesquisáveis , Got Lord chamado Rockin Records. 27. Registros de balanço: Neste projeto, vamos criar um catálogo musical pesquisável chamado Rockin Records. Há algumas coisas que precisamos fazer antes de começarmos. Então, se você entrar em Project para o diretório de dados e há um ponto JSON de Album. Precisamos disso. Então, basta salvar isso como álbuns para JSON em um diretório de dados. E em modelos. Temos este cabeçalho atualizado. Vamos em frente e copiar isso. E finalmente, no diretório público, há uma folha de estilo atualizada também. Então traga esses três arquivos e então estamos prontos para começar. 28. Criando a página inicial: Nesta lição, criaremos uma página inicial para o catálogo de registros. Então podemos ir em frente e nos livrar deste primeiro controlador. E oops, área. É só mudar o nome deste. E vamos chamar este controlador de busca. E vamos renomeá-lo aqui para se livrar deste método ele eu corri do zero. Então vamos dizer função pública, vamos apenas chamá-lo padrão. Vai ser a página padrão, a página inicial. E muito ser pedidos. E eu não vou dizer resposta. Fórmula equilibrada bem. Lá vamos nós. E então aqui, vamos pegar a lista de álbuns. Então, usamos o método de decodificação adjacente e o arquivo obter conteúdo. E vamos para o diretório de dados e chamamos o álbum de ponto JSON. Então, decodificar JSon, você pode tê-lo como um objeto ou uma matriz e queremos como uma matriz. E então vamos em frente e renderizar uma página aqui. Então vamos passar na resposta será HTML padrão. E vamos passar os álbuns lá. Certo? Então nós definimos a função raiz. Nós dissemos obter essa matriz de álbuns e passá-lo para o modelo. Então vamos em frente e criar um modelo para isso também. Olhe paga padrões também, então vamos dizer cabeçalho. E se quisermos fazer um loop no bigode, usamos este haxixe e um corte para acabar com isso. E então traremos nosso rodapé aqui também. Salve isso e modelos. E então aqui dentro para cada álbum, vamos criar div. Vamos imprimir o título e o nome do artista também. Está bem. Bem, isso é bom para mim. A última coisa é, e vamos ligar isto. Então vamos para o nosso index.html, ser dado a este código antigo e vamos dizer aplicativo. E vamos definir uma rota get. Ele vai obter o controlador de aplicativo, controlador busca padrão. Está bem? E se voltarmos para o nosso servidor de desenvolvimento e perfeito, Lá vamos nós. Então, por padrão, temos esta página inicial, registros Rakim, e eu tenho o artista faltando aqui. Então vamos em frente e solucionar problemas. E lá vamos nós, Sr. T, eu sou perfeito. Agora temos o nome do álbum e o nome do artista sendo exibido na mesma página. 29. Searching com cadeias de consulta: Dissemos que queríamos que o catálogo fosse pesquisável. Então vamos em frente e nos permita pesquisar com strings de consulta. Então, podemos apenas copiar e colar este método e vamos chamá-lo de pesquisa. Ok, agora eu, então ainda vamos precisar carregar nossos álbuns. Mas nós também vamos precisar para obter a string de consulta. E isso vai ser chamado Q. Então hey, vamos puxar a variável de string de consulta q da requisição. E então vamos dizer, Ok, se houver uma consulta, então nós vamos filtrar este array. Então vamos usar valores de matriz. Filtrar substantivos para ser álbum. Temos a aptidão dele e assim que tivermos o código para baixo. E, em seguida, aqui em baixo , renderizar, que é o modelo que vamos criar. Certo, então o que estamos fazendo aqui, bem, se tivermos uma consulta, se não tivermos uma consulta, vamos apenas ignorá-la e viramos todos os álbuns. Mas se nós temos uma consulta, então nós vamos pegar esses álbuns e vamos filtrá-lo com base se a consulta está no título ou no teste de tudo. Então agora podemos ir em frente e criar um modelo de pesquisa. Ele está indo para a pasta templates, tem padrão. Haha, vamos apenas copiar e colar isso chamado search.html. E vamos em frente e sair do telefone. Ok, não parece legal. Então nós temos ativos daqui, os álbuns, temos um método aqui. Então vamos em frente e conectá-lo. 30. Executando uma pesquisa: Vamos em frente e ligar a busca do Chin e verificar se funciona. Então vamos abrir index dot PHP e vamos definir um novo aqui. Haverá para obter Ru barra de pesquisa e conectá-la para controladores de aplicativos, tal controlador. E chamamos o conjunto de métodos. Ótima. Então vamos para o nosso desenvolvimento, seja o que for. Temos uma busca de barra. Isto parece bom. Então nós temos uma caixa de pesquisa aqui, e nós temos todos nós álbuns aqui não sabe se está sendo filtrado. E vamos em frente e procurar por eu vir para contratar. E perfeito. É filtrado tudo até apenas os álbuns com o nome Albo do artista nesta string. Então isso está funcionando perfeitamente. 31. Submissões de formulários: Então, neste primeiro exemplo, usamos uma string de consulta. Então, quando fazemos um conjunto, ele aparece na URL. Mas o que acontece se quisermos fazer uma submissão de formulário usando post? Isso é muito fácil de fazer. Vamos passar por como fazemos isso. Então vamos começar com o modelo de pesquisa. Vamos fazer uma cópia disso e vamos chamá-lo formado nosso HTML. E vamos mudar o método para um método post aqui. E, em seguida, aqui vamos copiar e colar este método de pesquisa. E novamente vamos chamá-lo de formulário. E isso vai funcionar quase exatamente o mesmo, mas porque agora é uma variável post em vez de uma string de consulta em vez de get parâmetro query, que vai dizer get Program. E vamos precisar mudar isso para você no novo modelo. Está bem, adorável. E, em seguida, na próxima etapa, ocontrole do aplicativoPHP controle do aplicativo definir a forma do controlador. Então, se eu for para a forma agora, B, um cólon, lá vamos nós. Certo, perfeito. E isso parece bom, mas, na verdade, se eu fizer uma busca aqui, não vai funcionar. Porque quando definimos a rota, nós a definimos, o gueto e agora estamos tentando postar nela. Para que pudéssemos mudar isso para postar. Mas então quando nós apenas tentar e carregá-lo normalmente vai dizer que não é um get rw é a sala de correio. Então, em vez disso, podemos usar o verbo qualquer. E isso permitirá que ambos GET e post. Então temos que fazer isso agora. Mas está tudo bem. E colocando um termo de pesquisa, ótimo. Então ele está postando agora não está mais no URL, mas ainda podemos acessá-lo. É muito parece perfeito. 32. Documentos de HTTP sa: Você pode estar olhando para alguns dos métodos que estamos usando aqui assim. Obter parâmetro de consulta sobre o objeto de solicitação e pensando, Eu não consigo encontrar este método nas docas finas, onde ele está? E isso porque quando se trata dos objetos de solicitação e resposta é um pouco mais complicado, infelizmente. Lembra-se quando arrumamos as coisas pela primeira vez, trouxemos o Slim. Nós também iremos nessas duas bibliotecas de solicitação e resposta, que são PSR sete e HTTP. E isso é porque você pode realmente trocar estes por bibliotecas diferentes se você quiser isso. Agora vamos precisar de 99% do tempo que você pode apenas usá-los, mas é o que chamamos de dissociado para que você possa trocar outra coisa. E isso significa que infelizmente estamos tentando encontrar os documentos. Pode não estar em um lugar que você espera. Então, se você não consegue encontrar o método em boi emagrecido, A primeira coisa é olhar para os PSR sete documentos. Psr sete é um padrão. Portanto, não é uma biblioteca concreta específica, mas padrão usado por um monte de estruturas diferentes e ele vai trabalhar em toda estrutura. Então, se há um método em haha que você quer usar, então este estará disponível em slim, mas também foi estar disponível em Lera val e sinfonia e tudo o que usa o par viu sete padrão. Você será ajudado a usar os mesmos métodos padrão. E, em seguida, em cima disso, há magros métodos auxiliares porque PSR sete por si só não fornece muito. Então, há também a biblioteca HTTP slim, que fornece um monte de realmente útil, funções fáceis como coisas como retornar dados com JSON. Ou isso é um redirecionamento ou obter os parâmetros e como o corpo passado. Então, se você está confuso sobre molhado, molhado para encontrar um método para fazer se pedido e respostas não nos cães magros. Pode estar no PRC sete documentos, pode estar nos documentos HTTP finos. Infelizmente, a forma como dissociamos as coisas agora e permitimos que você troque bibliotecas diferentes. E eles estão agora significa que poderia estar em um monte de documentação diferente e é um pouco confuso. Mas faz projetos muito mais compatíveis e extensíveis. E há boas razões de programação para fazê-lo, mesmo que isso atrapalhe a documentação um pouco mais. 33. Respostas de JSON: Até agora temos trabalhado com HTML. O que acontece se quisermos trabalhar com formatos como Jason? Bem, isso é bastante fácil de fazer. Então vamos ver um exemplo de como faríamos isso. E podemos fechar malha esses arquivos abrirão o controlador de busca. E vamos apenas copiar e colar em cores API controller dot PHP em nosso diretório controller. Podemos fazer isso pelo método? E vamos nos livrar desse método padrão também. E esqueci-me de mudar o nome da turma. Está bem, adorável. Então, a única coisa que precisamos fazer, porque slim torna agradável e fácil é destinado. Em vez de devolvermos HTML, vamos devolver Jason. Então, vamos dizer resposta com Jason, que é um desses métodos auxiliares slim, HTTP fornece. E vamos passar na matriz de álbuns. Então, o mesmo código como antes, mas estamos apenas usando isso com o método JSON. E, em seguida, se abrirmos a página Index.html, vamos adicionar uma nova regra. E o controlador de aplicativo, controlador de API. E eu acho que nós o chamamos, dissemos, nós modificamos o nome. Agora, se chegarmos à API, perfeito, temos todos os nossos dados JSON lá e podemos até mesmo executar a consulta. E vai filtrar para baixo também. Está bem, adorável. 34. Códigos de resposta: Até agora tudo o que retornamos como sendo um código de resposta 200. Então, foi uma resposta feliz. Mas o que acontece se precisarmos de algo como Flora Seguider ou 500 ou algo assim? Bem, vamos tomar este exemplo de Jason e digamos que tem que haver uma consulta. Então, se você não passar uma consulta aqui, em vez de retornar todos os dados, vai dizer sempre, você precisa passar alguma coisa. Vamos abrir nosso controlador de API e estamos recebendo nossa consulta aqui. Então vamos dizer, ok, se a consulta está em branco, então vamos retornar um erro. Então, vamos dizer resposta com um status de 400. Então 400 é uma solicitação inválida. Página não encontrada seria 404, mas neste caso, queremos solicitação inválida para 100. E ainda vamos enviar alguns JSON de volta. E nós podemos apenas encadear esses métodos juntos. E vamos dizer pedido inválido. Ok, ótimo, então isso é tudo o que precisamos fazer se a consulta estiver em branco, retornar não solicitação inválida. Lá vamos nós. Então, se passarmos a consulta, ainda temos dados. Mas se não, obtemos este pedido inválido. E se olharmos para cabeçalhos de rede , podemos dizer que obtemos um erro 400 em vez de 200. Ok, isso é apenas um rastreamento, então esse é o normal. Esta é a solicitação que fizemos e recebemos uma solicitação inválida e ela aparece em vermelho porque retornamos com sucesso um Ara. 35. Mande erros: Apesar das nossas melhores intenções, às vezes as coisas correm mal quando acontecem. Queremos ser capazes de lidar com isso graciosamente e tornar as coisas tão boas quanto possível para o usuário em sua experiência. Então, neste módulo, vamos olhar para a manipulação de erros, e vamos escrever uma loja de comércio realmente simples que derruba bicicletas. Será apenas uma lista de bicicletas e página de detalhes, e vamos ver o que aconteceu quando o usuário se perde e precisa ver uma tela de erro . 36. Loja de bicicletas: Neste módulo, vamos criar uma loja de bicicletas. Então, há alguns recursos que precisarão do projeto cinco. Então, no diretório de dados, temos essas bicicletas Jason, e salve isso em nosso espaço de trabalho. E então, no diretório público, temos alguns estilos atualizados. E então nós podemos apenas manipular este cabeçalho também. E estamos prontos para começar a codificar. 37. Página Página de bicicletas: Vamos começar criando uma página inicial para a nossa loja. Então vamos criar um controlador que vamos chamar de controlador de loja. E vamos dar-lhe um namespace dizendo controlador barra. E vamos pegar esses impulsos de namespace aqui também. E eu não sou apenas um controlador crítico padrão. Então controlador afiado estende Controlador. Faça um pedido e uma resposta é normal. E nós vamos pegar o byte declarado juts como fizemos antes, assim como fizemos com os dados dos registros. - Legal. E eu vou usar isso para renderizar página passando na matriz de motos. Ok, parece bom. Então vamos em frente e criar este modelo padrão também. HTML ponto padrão irá percorrer as bicicletas. É um pouco de CSS pré-criar Flores e CSS que copiamos. E queremos que este link para uma página de detalhes que vamos construir mais tarde e colocar o nome do byte em ty pen também. E então fomos um emoji de bicicleta aqui. Então podemos roubar isso do modelo no projeto cinco. E então, finalmente, vamos entrar e por que essa regra. Então, vamos dizer controlador, loja, controlador dois-pontos padrão, e que deve estar pronto para ir. Então vamos acionar o servidor de desenvolvimento na próxima lição e vê-lo funcionando. 38. Testando a página inicial: Uma mudança chave que precisamos para fazer isso como modelo. Vou mudar isso de div para spam. A questão parece boa. Então vamos para o nosso terminal ou prompt de comando e vamos lançá-lo no localhost 8 mil. - Legal. E, em seguida, no navegador, vamos para localhost 8 mil. E aqui temos nossa página inicial, loja de bicicletas. Allah bicicletas listadas com seus nomes estão ligados aos detalhes e ao tipo também. Mas no momento em que não há uma página de detalhes, então vamos em frente e construir isso na próxima lição. 39. Página Página de detalhes: Nesta lição, criaremos a página “Detalhes”. Então vai voltar para o nosso controlador aqui. E vamos criar um novo método chamado Detalhes. E desta vez vamos precisar dos registros também. E de novo, vamos pegar as motos, Jason. Há duas maneiras de fazermos isso. Podemos colocá-lo em um serviço, poderíamos fazê-lo não iria parar a construção. Leve-o e tudo vai agarrá-lo. Mas é um forro único. Vamos viver com a duplicação de voo por enquanto. E estou pronto para esta matriz. Então vamos pegar uma identificação para a identificação da bicicleta. E encontraremos a moto por identificação. E isso nos dará a chave por causa da forma como estamos fazendo isso aqui. E então podemos renderizar uma página. Então vamos executar os detalhes que HTML. Novamente, vamos passar escolhidos pelo cuidado. Então usamos uma chave para encontrá-la da matriz de bicicletas. Ok, parece bom. Então vamos criar esse modelo de detalhes também. Então vamos chamar esses detalhes para HTML. E vamos começar por apenas guindastes, migalhas de pão simples. E então vamos pegar o objeto da bicicleta. Agora vamos puxar aquele emoji de bicicleta de novo. E agora, porque estamos dentro deste objeto de bicicleta, podemos apenas fazer referência a uma propriedade. Então aqui vamos usar o nome e colocar o tipo n. E eu vou colocar sua escrita branca e sua classificação aerodinâmica também. Coloque uma foto na parte inferior. Está bem, parece-me bem. E então vamos indexar e mais por que essa regra. Então vamos dizer controlador, loja, controle sobre detalhes. E isto parece bem. Mas acho que há uma mudança importante que podemos fazer nesse roteamento para torná-lo mais preciso. Então vamos em frente e olhar para isso na próxima lição. 40. Filtração de parâmetros de rota: Então construímos a página de detalhes. E se formos para um servidor de desenvolvimento, podemos agora dizer, podemos clicar em um analógico de bicicleta, trazer detalhes, e, em seguida, dar-nos branco e seta e digitar tudo o que colocamos em um modelo. Isso é ótimo. Mas há um problema é que isto é suposto ser um ID numérico e sim, eu poderia digitar um nome aqui. E ele ainda carrega a página é ainda pensa que é a URL. E isso é porque acabamos de dizer id, mas não demos nenhuma informação sobre qual ID deve ser. Felizmente, é muito fácil fazer isso e magro, então se adicionarmos um cólon e então colocaremos uma expressão regular. Neste caso, queremos dígitos 0 a nove e pode haver vários deles. Repetir Sanat. Isso ainda funciona quando colocamos um número. Tudo isso parece bom. Mas agora vamos tentar colocar um nome. E agora temos uma exceção não encontrada. Não parece muito bonito, mas é isso que queremos. Este URL deve ser um fóruns para não encontrado. Então isso é ótimo porque agora isso significa que você só pode acessar esta página quando é um URL genuíno. Quando você estiver usando o ID. 41. Adição de erros: Então temos essa filtragem agora onde se colocarmos em alguns caracteres não numéricos, obtemos essa exceção não encontrada. Mas é muito feio e não muito útil. Agora, felizmente, fleuma vem com alguns middleware empacotado para manutenção mais fácil. Então vamos falar sobre middleware de fantasia. Isso é meio enquanto criamos no próximo módulo. Mas neste módulo vamos apenas usar alguns que vem com o framework slim. E isso nos permite tornar a manipulação de erros muito mais bonita. Então vamos em frente e adicionar isso. Então vamos adicionar middleware era. E vamos dizer verdade, verdade, quando falarmos sobre isso em um momento. Então, agora atualize a página. Nós temos este bem formatado para, para não era libra, que é muito mais bonito do que o antigo, dá-nos todos os detalhes e o traço de pilha bem formatado. E isso vem com magro. Então tudo o que temos a ver com essa linha, essas diferentes opções permitem. Este diz se você deve exibir os detalhes do erro não então se vendermos para falso, vemos que tudo o que obtemos não é encontrado e não obtemos qualquer da era. Não é um grande negócio em um não encontrado. Mas se você considerar isso também lida com 500 erro de servidor está em produção. Não queremos exibir todos esses detalhes. Só queremos dizer ao usuário que houve um erro. Enquanto que no desenvolvimento, podemos definir isso como verdadeiro. E isso nos dá todos os detalhes para que possamos depurá-lo. Então, provavelmente estamos mudando isso com base na produção, estes para controlar. Onde mais, em termos de registro, o erro vai e você pode passar um logotipo personalizado aqui também. Mas o principal é certificar-se de que isso é definido como falso e produção. Então você não está exibindo seu código PHP para os usuários se houver um erro. Mas queremos que seja verdade no desenvolvimento para que possamos descobrir o que está acontecendo. 42. Páginas de erro personalizado: O que acontece se, em vez de manipulador de erros padrão Slims, queríamos fornecer nossa própria página onde podemos fazer isso usando o middleware sempre. É um pouco inquieta, mas vamos passar por isso agora. Então, vamos dizer middleware era, definir manipulador de erros. E então inalar ar. Festival vai dizer o que queremos lidar. Então, neste caso e alguns não encontraram exceção. E então vamos dar a ele uma função para descobrir o que fazer quando encontrarmos isso. Também vou querer usar o nosso contentor. E depois vamos dizer “Controla A”. Ok, então vamos falar sobre o que está acontecendo aqui. Então, no middleware ERA, estamos definindo o manipulador de erros e estamos definindo isso. Então, sempre que há uma exceção não encontrada, que é o que está acontecendo aqui. Então vamos executar esta função. A função leva em um objeto de solicitação e nós também estamos trazendo em nosso recipiente para que quando executamos esta função, podemos criar um controlador. Neste caso, é um controlador de exceção que vamos criar em um minuto. E nós vamos ganhar o método NOT_FOUND. Então isso é como ligar este livro para erros não encontrados. Vamos criar manualmente em torno do controlador. E vamos retornar método NOT_FOUND passando na solicitação. Então, vamos em frente e criar o controlador de exceção e um modelo para ele na próxima lição. 43. Controlador de exceção: Agora que dissemos que queremos usar este controlador de exceção, precisamos ir criar isso. Então vamos fazer isso agora. Então vamos chamá-lo de controlador de exceção. É qualquer namespace de controlador de aplicativo. E dispara com controladores. Precisamos desta interface de solicitação do servidor. Mas não vamos precisar da resposta porque vamos falar sobre isso em um minuto, mas normalmente temos a resposta passada. Então, se olharmos para o controlador de corte, resposta vem aqui. Mas se vemos aqui no manipulador de erros, não temos realmente um objeto de resposta passado por ele. Só temos o pedido. Então vamos ter que criar nossa própria resposta. Então vamos definir classe. E vamos estender os controladores que podemos usar nossos métodos auxiliares normais. E, em seguida, aqui em vez de, vamos criar uma função primeiro curso chamado NOT_FOUND quando definimos aqui. Então vamos chamá-lo de não encontrado aqui. E vamos precisar de uma crista. E porque não conseguimos passar a resposta, vamos criar a nossa própria resposta aqui. Podemos fazer isso porque importamos o namespace aqui. Então vamos criar uma resposta em branco. E então podemos passar isso para a função de renderização como normal. Muito bem, coisas adoráveis. A outra coisa que precisamos fazer é criar esse modelo NOT_FOUND. Modelos crit, não holandês encontrado. Vou dizer que a página não foi encontrada. E alguns à luz com pena, não conseguimos encontrar essa página. E eu vou colocar um link de volta para a página inicial. E então vamos trazer essa vibração também. Ok, então SEP IRA manipulação aqui nós dissemos criar um controlador de exceção. E quando o método NOT_FOUND, criamos nosso controlador de exceção aqui, defina o método NOT_FOUND. Criamos nossa própria resposta e dissemos a ele para renderizar o modelo NOT_FOUND. E, em seguida, nós criamos não são encontrados modelo aqui. E lá vamos nós. Então, agora, quando um erro não encontrado é lançado, ele jogando este modelo que acabamos de criar com o nosso texto local. E eu vou voltar para o link da página inicial. 44. Erro Erro de desencadear manualmente: Agora temos nossa página de erro personalizada Não Encontrada, mas há um cenário que eu acho que estamos faltando. Então nós sentimos os URLs que você tem que colocar um número aqui, mas há apenas oito bicicletas aqui. Então, o que acontece se eu colocar, digamos 800? Nós vamos, isso é um URL válido porque é um número. Mas a moto não deveria existir. E sim, estou recebendo isso, que é o primeiro elemento na matriz. E se eu colocar qualquer um de um número em um provavelmente subir Bian Qi também porque a chave, eles não conseguem encontrar o nome da chave. Está voltando falso. E se olharmos para o que o nosso código está a fazer no controlador de choque, isto vai voltar como falso. E então eu vou tentar e cair fora este que nós vamos apenas padrão para o primeiro item que é o Bian Qi. Enquanto fato real se você colocar em uma idéia de 200, você deve obter um não encontrado. Então, para fazer isso, vamos precisar acionar manualmente uma exceção HTTP não encontrada. Então não vai comprar controlador e vamos precisar importar isso. Então vamos usar exceção slim, HTTP, não encontrado exceção. E então aqui embaixo, podemos fazer uma pequena verificação para dizer se p é falso, e vamos fazer triplo igual para ter certeza de que é um booleano e não dizer o número 0, que poderia resolver como falso. Se assim for, vamos lançar uma exceção e precisamos passar o pedido e resposta para isso. Ok, então agora estamos dizendo que se a chave não existir, lance essa exceção e então ela será tratada pelo nosso tratamento de erros. Então, se atualizarmos a página agora, adorável. Então nós colocamos em uma idéia de 200 e é que pago não encontrado. Ainda podemos entrar em qualquer uma das motos existentes e obter os detalhes. Mas se mudarmos isso para um ID que não existe, chave volta como falsa. Nós para a nossa exceção e ele é pego pelo tratamento de erros e mostra nossa página de erro agradável. 45. Middleware: middleware nos permite modificar a solicitação, o ambiente e a resposta e fazer um monte de processamento extra. Então, se você quiser lidar com coisas como gerenciamento de sessão, processamento de dados, manipulação de erros, podemos fazer isso tudo com middleware. Então, neste módulo, vamos escrever um aplicativo de área de membros onde você pode fazer login e como, nós mesmos, chamado número Zone. E vamos fazer isso trazendo algum terceiro meio onde dinheiro para a sessão e escrever nosso próprio middleware para lidar com a autenticação. 46. Conceitos de middleware: Vamos olhar para a teoria por trás middleware até agora em nosso tipo de uso básico da aplicação, temos essa idéia. Esse pedido vem do navegador, digamos, um pedido get para cortar, hello e que é mapeado para uma raiz na rota, olha para o pedido e diz, OK, vamos enviar esta resposta para trás. Isso diz, Aqui está algum momento apressado diz Olá Mundo no código. Dentro dessa rota, a estrutura faz a correspondência para a rota, e então a raiz retorna a resposta que precisamos, e é um sistema simples de entrada. Mas o que acontece se precisarmos de algo mais complexo onde queremos interagir com essa solicitação e talvez mudar a resposta com base em diferentes variáveis ou apenas ADM ou informações para ela, alterá-la ligeiramente, revisar algumas das informações nele antes de passá-lo para a raiz em? Isso pode ser algo que queremos fazer em cada solicitação ou fazer certos pedidos. Bem, a resposta é aqui que nós usamos middleware, então o pedido entra e passa por uma série de middleware menos, e nós podemos ter esses muitos veste do meio como queremos neste pequeno diagrama que eu mostrei para pedaço de middleware. O pedido chega. Ele é passado através do meio, onde para baixo cada levou para o aplicativo pode, em seguida, fazer algo e passá-lo novamente em cima. Ele vai para esse processo e, eventualmente, atinge a resposta. Então é uma chance para nós intervir no ciclo de vida desse pedido e resposta sem o código tenha que estar na rota em si. 47. Zona de membros: Um pouco de preparação para este módulo. Então agora estamos em projetos seis. E se entrarmos em público, alguns estilos atualizados, podemos copiar e colar aqui. E você também pode copiar sobre a cabeça para o modelo. Ou pode entrar aqui e atualizar os números. Vou chamá-lo de membros. Eu sou tudo o que precisamos para começar com este projeto. 48. Páginas seguras e de login: Vamos em frente e começar guindastes algumas páginas básicas para zona membro. Então vamos criar um controlador chamado off controller. Dado o namespace padrão. Traga o pedido e a resposta. E eu sei chamá-lo off controlador estende como de costume. E vamos criar um método chamado login. Chame a penalidade de login do modelo por enquanto. E então vamos copiar e colar isso e criar um chamado Secure Controller. Então esta será a nossa área de membros. E vamos chamar esse método padrão, e irá renderizar um modelo chamado padrão também. Vamos em frente e cuidar desses modelos. Então chamamos este ponto de login HTML, trazendo a vibração no final. Ok, isso parece bom para o modelo de login. Então vamos criar modelo não padrão, que será a matriz que você começa quando você está logado. Coágulo padrão HTML ponto. Quero dizer algo como bem-vindo, bem-vindo à área de membros. Certo, e então vamos armar essas raízes. Slash r2 e muito mais. Por que isso até o login. Então ele vai usar o verbo qualquer porque você vai ser capaz de postar para isso em algum momento. O que você pode postar para ele. Agora o formulário não vai fazer nada, mas você pode fazer. E vamos chamar Slash Secure. E ele vai para o controle seguro e nós chamamos de padrão. Ok. Vamos fazer desenvolvimentos sempre permanentes. E vamos ver o que acontece aqui. Ok. Sim. Então eu tenho meu formulário de login e se eu for seguro, eu tenho minha página de boas-vindas. Então temos as páginas para fora. Obviamente, agora há Protection e seu sistema de login no momento, mas temos alguns bons andaimes para começar. 49. middleware: Para gerenciar esta sessão, vamos precisar de algum tipo de biblioteca de tratamento de sessão. Neste caso, vou usar esta chamada Slim Session. Então, podemos ir em frente e instalar que permite servidor de desenvolvimento do conselho e vamos fazer um compositor exigir soletrá-lo corretamente. Vamos descobrir muito rapidamente. Então vamos deixar o compositor fazer sua coisa aqui para instalar o middleware, que deve levar apenas alguns segundos. E então vamos voltar para a nossa página de índice e instalá-la. Ok, legal. Então, sim, nós temos isso. E se olharmos compor um arquivo lá está. Perfeito. Legal. Então vamos instalar isso como um serviço. E vamos precisar adicioná-lo como middleware. Bem, então vamos em frente e fazer isso. Então, em nosso arquivo de índice, digamos conter uma sessão definida. E vamos dar-lhe uma função aqui, como de costume. E tudo o que vamos fazer aqui é retornar nova sessão slim, como PKA. E então precisamos adicionar o middleware também. Então vamos fazer isso aqui. Certo, vamos falar do que está acontecendo por aqui. Então aqui estamos instalando o middleware, que é o que precisamos para fazê-lo funcionar. Mas também queremos tornar a seção disponível em nosso recipiente de injeção de dependência, portanto, também, uma vez que tenhamos feito isso, vamos instalá-lo como um serviço aqui também. Então, podemos usá-lo em nosso controlador. Então, se nós só temos que desligar o controle e topo de hey, vamos apenas ecoar algo para fora. Então, vamos adicionar recipiente de injeção de dependência. Não podemos sessão de serviço. E nós vamos conseguir a contagem. E aqui vamos implementar uma conta também. Então, novamente, temos o serviço de sessão. Então este deve ter cruz realmente ser demitido porque queremos definir contagem para ser igual a contar mais um. Agora, se formos para aqui em nossa página de login e atualizarmos, veremos os serviços de sessão funcionando porque cada vez que ele está incrementando esse número. 50. Registrando e a saída: Agora que temos serviço de adesão, vamos em frente e usá-lo. Então vamos comentar este código que criamos aqui. E, em seguida, vamos lidar com o usuário que envia o formulário. Então, vamos dizer solicitação é post métodos auxiliares que vem em verificações HTTP slim se a solicitação está sendo postada. E se assim for, vamos em frente e teremos o serviço de sessão. E vamos definir o usuário TB, o endereço de e-mail. Então, no mundo real, nós obviamente verificamos isso com um usuário válido. Mas por aqui, vamos acreditar que seu endereço de e-mail é legítimo. E vamos usar um método de ajuda nova aqui porque queremos enviá-los para a área de membros. Então vamos fazer redirecionamento de resposta e vamos redirecioná-los para segurança, vamos devolver isso. Então, agora, se usarmos um post algo, ele vai salvar esse endereço de e-mail para a sessão e este uso de variável e ele vai lê-los. Até o que queremos fazer é adicionar um método de logout. E aqui novamente, temos o serviço de sessão. E em vez de um tempo Gauss Atlas, vamos deletar porque queremos excluir essas variáveis. E irá retornar resposta novamente usando o método de leitura apenas para a barra, que irá levá-los de volta para a página de login. E então vamos para index.js, HP e por que isso também? Slash logout. E uma vez que você sair do controlador no método é chamado de logout super. Então, nós também provavelmente queremos dizer-lhes que não estão logados e dar-lhes muito link logout. Então vamos em frente e fazer isso na próxima lição. 51. Playing o nome do usuário: Os usuários agora podem fazer login, mas precisamos idealmente dizer-lhe que eles fizeram login. Então, se abrirmos o controlador seguro aqui e vamos passar alguns dados aqui. Então, quando você começa o nome de usuário, então nós temos um serviço de sessão terá um uso de variável a partir disso. E, em seguida, se abrirmos padrão, podemos dizer algo como você está logado como um usuário. E eu também vou dar a eles um link de logout. Ok. Legal. Então vamos em frente e eu vou entrar. E que podemos ver que reproduzimos Chris em example.com. Ok, adorável. E nós temos logout link também, então eu posso clicar nisso. E isso me envia de volta para a tela de login. Então isso é bom para o único problema é que eu poderia apenas digitar manualmente barra segura. E eu não estou até eles entrarem, podemos ver os endereços de e-mail em branco aqui, mas isso não me impediu de chegar a esta página. Então a próxima coisa é que precisamos realmente banco esta página privada. 52. middleware personalizado: Temos este sistema de login semi funcional onde ele pode fazer login, mas você também pode simplesmente digitar o URL diretamente. Agora, há algumas coisas que podemos fazer com isso. Por exemplo, nós poderíamos entrar manualmente aqui e poderíamos dizer, nós temos a sessão. E poderíamos pegar o usuário. E poderíamos dizer, se não, então retornar uma resposta. Redirecionamos para a página de login, algo assim. E poderíamos fazer isso em todos os métodos. Mas isso seria um pouco chato, porque teríamos que nos lembrar de fazer isso em todos os métodos. E se nos esquecermos, poderíamos potencialmente cônjuge uma página privada fez fora do mundo. Então, uma maneira melhor de fazer isso é com algum middleware personalizado. E vamos passar pela configuração agora. Então, ele vai estar em nosso aplicativo. E nós vamos chamá-lo de autenticar ponto PHP. E eu vou criar uma nova pasta aqui chamada middleware. E então vamos precisar trazer algumas coisas. E vamos criar uma classe chamada authenticate private variable chamada session. E nós vamos tomar o serviço de sessão N como um parâmetro e apenas salvá-lo para esta variável de instância. E isso é um pouco enquanto vamos limitar um pouco. Então vamos usar uma função mágica. Vamos pop hit para ser chamado invoke para executar quando a classe é invocada. E eu aceito um pedido e o manipulador de pedidos. E então vamos dizer, OK, temos nosso serviço de sessão. E vamos dizer que existe uma variável de uso. E se continuar com o pedido. Então, podemos dizer o manipulador de solicitações para continuar a lidar com esta solicitação porque sabemos que a variável de usuário existe e, portanto, o usuário está conectado se ele não existe. E estamos indo para o pouco solicitado dizendo lidar com o pedido com um redirecionamento para a página de login. Então, quando o pedido chega, este middleware será executado. E ele vai dizer, é o uso de uma variável que se for continuado, o pedido é normal. Se não estiver, redirecione a alteração da solicitação para ser um redirecionamento para a tela de login. Então vamos em frente e ligar esta aula na próxima lição. 53. middleware de rota: Vamos em frente e conectar nosso middleware personalizado. Então temos que nos proteger aqui. Eu só vou mover este para baixo. E aqui nós adicionamos alguns middleware personalizado para todo o aplicativo. Mas aqui só queremos que este middleware seja executado quando estiver na URL segura. Então eu vou em frente onde estamos chamando a definição para a rota. Eu vou adicionar, haha, eu vou chamar o método add. E vamos ligar para a aula de autenticação. Ok, ótimo. E então é claro que precisamos passar a sessão para isso. Então, vamos dizer apt-get container get session. Assim como instalamos aqui, também instalamos um cabelo. E agora, se atualizarmos a página, seremos enviados de volta para a tela de login. Então, toda vez que tentamos digitar a URL, o middleware entra em ação, ele entra aqui, ele diz que o usuário não existe, então não continue. O pedido é normal, envie-os para a tela de login. Então podemos ir em frente aqui e podemos digitar o endereço de e-mail e login. E vemos que o temos lá. Então, novamente, agora ele está funcionando porque o usuário existe e, portanto, ele não precisa interromper a solicitação. Obter este middleware só será executado nesta rota com o momento, porque é quando nós adicionamos. Se nós sair e tentar digitá-lo novamente, nós nos encontramos pacote. As telas de login são ótimas. Agora temos um sistema de login totalmente protegido. 54. Grupos de rota: O que acontece se quisermos mais de uma página? Então, no momento em que acabamos de adicionar essa, rota, uma página segura aqui, mas talvez queiramos adicionar mais. Digamos que queremos a página de status. Então vamos entrar em controlador seguro e apenas criar lat. Então vamos chamar isso de status. E aceitaremos nosso pedido e resposta habituais. E vamos apenas executar a página realmente básica aqui. E então vamos em frente e criar uma página de status também modelo. E eu vou apenas codificado para dizer que sua inscrição está atualizada. E temos de ligar isto. E poderíamos instalar o middleware personalizado novamente naquela sala separada. Mas isso seria super bagunçado. Então, uma maneira muito mais limpa é que podemos usar um grupo raiz. Vamos apenas comentar isso. E em vez disso aqui, e vamos dizer aplicativo. Vamos criar um grupo cortar o controle de qualidade. Porque todos os nossos URLs vão começar com a segurança de barras. Você poderia realmente tornar isso vazio se você quisesse ter um grupo com URLs completamente diferentes. Mas, neste caso, todos estarão aqui. E é IB AP lá dentro. E então aqui vamos definir nossas rotas. Então, se você é barra segura, então queremos ir para a página padrão. Como antes. Vou criar uma nova página. E, novamente, como antes, queremos instalar o middleware. Então, podemos tomar essa forma aqui. Então, o que está acontecendo aqui? Bem, nós definimos duas raízes também. É como “haha”. Mas nós os colocamos dentro desta zona segura. Isso significa que se você está seguro e nada mais, ele vai para aqui. E se você cortar status de barra segura, então ele vai nos levar para a página de status. E para ambos, estamos instalando nosso grupo de middleware personalizado. Então vamos tentar refrescar o cabelo e eu já vi funcionar. Vamos obter um status. - Sim. E então vamos widgets. Eu abro uma janela, não estamos trancados. Fomos enviados para a página de login. Ok, brilhante. Então isso pode, se você precisar dele completamente URLs, poderíamos deixar isso em branco e poderíamos fazer algo assim. E isso funcionaria bem. Mas como todas as URLs são agrupadas, podemos muito bem apenas colocar barra mais complicada aqui e, em seguida, estender todas as nossas raízes aqui. Então temos o espaço em branco, temos o status da barra. E então podemos instalar middleware de autenticação personalizada em todas essas raízes de uma só vez, tudo no grupo, para que todas essas áreas sejam protegidas pelo sistema de login. 55. Considerações finais: Parabéns por chegar ao fim desta aula no Slim. Agora você tem uma introdução aos microframeworks. Você entende o quão fino funciona em termos de controladores de enraizamento sempre relatando middleware e muito mais sobre Esperemos que você construiu seus primeiros 6 projetos. Compartilhe seus projetos com o grupo mesmo compartilhando o código-fonte. Ou como você os queria longe na seção do projeto. Se você gostou deste gesso e, por favor, deixe um comentário sobre o que você está passando para a próxima, vamos atirar o melhor da sorte.