DEV Community

Cover image for [PHP] - Desafio Alura - 7 Days of Code - Dia 2
André Sousa
André Sousa

Posted on • Updated on

[PHP] - Desafio Alura - 7 Days of Code - Dia 2

No post anterior, falamos um pouco sobre a iniciativa 7 Days of Code e também foi dada uma visão geral sobre o desafio de PHP, bem como a estrutura geral do projeto com o qual estamos trabalhando.

Por enquanto, o código não está grande, porém, se não tomarmos cuidado, ele terá cada vez mais dívidas técnicas, causadas pela falta de boas práticas. Devemos nos atentar a isso, além de cumprir o desafio do dia. Dito isso...

Bora pro segundo dia!

Nossa segunda tarefa é bem simples: criar uma função que salve os dados dos usuários vindos do formulário de registro.

Os usuários cadastrados ficarão salvos em data/users.json. A extensão do arquivo já nos dá uma dica de funções que serão úteis para persistirmos os dados, como json_encode e json_decode.

Para isso, um novo arquivo foi criado: crud.php. Nele, implementei duas funções: a primeira, pega os dados vindos da requisição POST, insere no registro de usuários e grava os dados no arquivo.

A segunda função serve apenas para retornar a lista de usuários devidamente formatada (como array) para que possamos manipula-la mais facilmente, e também por ser uma funcionalidade que, provavelmente, será utilizada mais vezes. Dessa forma, evitamos a repetição de código.

crud.php

<?php

function crudCreate($user) {
    $usersList = getUsersList();

    $usersList[] = $user;

    $usersList = json_encode($usersList);

    file_put_contents(DATA_LOCATION, $usersList);
}

function getUsersList(): array {
    return json_decode(file_get_contents(DATA_LOCATION));
}
Enter fullscreen mode Exit fullscreen mode

Outra alteração necessária foi no controller.php, mais especificamente na função doRegister(). Nele, eu precisei criar uma verificação para quando chegasse uma requisição via POST. Neste caso, o sistema deve realizar o registro do usuário e voltar para a tela de login. Caso contrário, ou seja, se for uma requisição via GET, deve apenas exibir a tela de registro.

function doRegister() {
    if (isset($_POST['person'])) {
        crudCreate($_POST['person']);
        header('Location: /?page=login');
    }

    renderView('register');
}
Enter fullscreen mode Exit fullscreen mode

Com isso, finalizamos o segundo dia do desafio! Até a próxima!

Top comments (0)