Laravel - Parte 2
Tags: php, laravel, lumen
Published: 2023-07-27 00:25:15

---
title: Laravel - Parte 2
published: true
description: Controllers
tags: php, laravel, lumen
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-06-11 14:39 +0000
---

Chegamos aos controladores da aplicação, que no artigo anterior seriam os próximos logo após da rota. Recapitulando: a aplicação recebe a chamada HTTP, leva pra rotas pra verificar para onde vai esse requisição e no caso atual ele vai ir para algum controller. Os controllers podem chamar classes e métodos de muitos lugares dependendo do tamanho e do design da aplicação, como por exemplo QueryBuilders, UseCases, Services, Repositories entre outros.

Mas ainda não chegamos ao ponto de utilizar esses designs, vamos somente seguir o fluxo simples da requisição. Dentro do método do controller podemos literalmente colocar qualquer coisa e até mesmo nem dar retorno :), mas vou dar um exemplo mais decente:

```PHP
    public function metodoDoController()
    {
        // coloca o que quiser aqui mas vou dar um retorno do famoso hello world
        
        return "Hello World";
    }
```

Antes de continuar esqueci de dizer onde ficam os arquivos de controllers e como cria eles. Os arquivos ficam em `app/Http/Controllers` e é possivel criar um novo com o comando `php artisan make:controller NomeDoController`

Isso é extremamente básico, vamos fazer algo útil mesmo, vamos pegar dados que vieram na requisição:

```PHP
    public function metodoDoController(Request $request)
    {
        $dadosDoRequest = $request->all();
    }
```

Agora eu pedi a injeção do Request como parâmetro do método, o Laravel injeta automaticamente o objeto do Request, com essa injeção podemos fazer outras coisas mas mais adiante veremos mais afundo a injeção de dependência nos métodos de Controller. O método 'all' retorna um array com tudo de dado que veio no request. Vamos supor que esse é o método de login e deve receber email e senha na requisição:

```PHP
    public function login(Request $request)
    {
        $email = $request->email;
        $senha = $request->senha;

        return response()->json([
            'email' => $email,
            'senha' => $senha
        ]);
    }
```

Agora obtive o email e senha utilizando o request de uma maneira diferente, chamando diretamente a chave do dado como se fosse uma propriedade do objeto. No PHP temos os métodos mágicos, e o `__get()` é um deles utilizado amplamente dentro do Laravel, em outros casos veremos esse mesmo esquema de chamar propriedades que não foram definidas na classe. E pra finalizar o método utilizei o `response()->json()` que retorna a resposta com o header 'application/json' para o cliente.

Somente com isso já podemos fazer coisas legais, como a famosa calculadora :)

```PHP
    public function somar(Request $request)
    {
        $numero1 = $request->numero1;
        $numero2 = $request->numero2;

        return response()->json([
            'resultado' => $numero1 + $numero2
        ]);
    }
```

Somente com isso já podemos realmente criar uma API que não precise de base de dados e ir explorando o Request e Response do Laravel. Use o wget, postman, insomnia, o navegador ou qualquer outra ferramenta para enviar requisições HTTP e teste sua API.

Na próxima veremos o início de banco de dados, já montando uma API mais dinâmica e legal :)