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
- 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;
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);
}
view.php
<?php
function renderView($template) {
$content = file_get_contents(VIEW_FOLDER . $template . '.view');
echo $content;
}
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;
}
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)