DEV Community

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

Posted on • Updated on

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

Nesta série de posts, vou apresentar a vocês minha trajetória durante a execução do desafio de PHP 7 Days of Code, uma iniciativa da Alura.

Tais desafios consistem da apresentação de um problema inicial que, geralmente, é uma simulação de uma demanda do mundo real. A cada dia, nós devemos cuidar de uma parte específica do projeto, implementando uma funcionalidade nova, resolvendo algum problema, ou os dois.

Para falar do primeiro dia, antes vou comentar brevemente sobre a estrutura inicial do projeto:

├── boot.php
├── config.php
├── 📁 data
│   └── users.json
├── index.php
├── 📁 resource
├── routes.php
├── 📁 view
Enter fullscreen mode Exit fullscreen mode
  • boot.php: Carrega os arquivos necessários para a execução do projeto;
  • config.php: Declaração de constantes;
  • data/users.json: Nosso "banco de dados" local;
  • index.php: Ponto inicial do projeto;
  • resource/: Arquivos de imagem e de estilização;
  • routes.php: Chama a função específica do Controller (a ser implementado) de acordo com a página solicitada;
  • view/: Contém todos os arquivos de template, os quais serão mostrados de acordo com a rota acessada

A tarefa do primeiro dia consistiu apenas em separar a responsabilidade do arquivo routes.php que, além de checar qual página estava sendo requisitada, também mostrava o template correspondente.

routes.php

<?php
$page = ($_GET['page']??'login').'.view';
$content = file_get_contents(VIEW_FOLDER.$page);
echo $content;
Enter fullscreen mode Exit fullscreen mode

Com isso, foi requisitada a criação de dois arquivos: controller.php e view.php. O Controller abriga as funções que serão chamadas pelo arquivo de rotas e executadas de acordo com a página solicitada. Já a View contém a função responsável pela exibição do conteúdo em tela de acordo com o template solicitado.

controller.php

<?php

function doRegister() {
    renderView('register');
}

function doLogin() {
    renderView('login');
}

function doNotFound() {
    renderView('not_found');
    http_response_code(404);
}
Enter fullscreen mode Exit fullscreen mode
view.php

<?php

function renderView($template) {
    $content = file_get_contents(VIEW_FOLDER . $template . '.view');
    echo $content;
}
Enter fullscreen mode Exit fullscreen mode

A refatoração em routes.php consistiu em criar um switch para a variável $page. Dessa forma, eu posso controlar melhor o que fazer em cada caso, além de melhorar a leitura do código. Também retirei as linhas de código que mostravam o conteúdo na tela e joguei para view.php.

routes.php depois da refatoração

<?php

$page = ($_GET['page'] ?? 'login');

switch ($page) {
    case 'login':
        doLogin();
        break;

    case 'register':
        doRegister();
        break;

    default:
        doNotFound();
        break;
}
Enter fullscreen mode Exit fullscreen mode

Dessa forma, concluímos o primeiro dia do desafio. Nada muito complicado, porém ainda há muitas funcionalidades e melhorias a serem implementadas. Te vejo na próxima ou nos comentários!

Top comments (0)