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));
}
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');
}
Com isso, finalizamos o segundo dia do desafio! Até a próxima!
Top comments (0)