Passo 2: Apresentando o Projeto

5.0 version
Maintained

Apresentando o Projeto

Precisamos encontrar um projeto para trabalhar. É um grande desafio, pois precisamos encontrar um projeto grande o suficiente para cobrir todo o Symfony mas, ao mesmo tempo, ele deve ser pequeno o suficiente; não quero que você fique entediado implementando recursos similares mais de uma vez.

Revelando o Projeto

Como o livro tem que ser lançado durante a SymfonyCon Amsterdam, pode ser legal se o projeto for relacionado ao Symfony e a conferências. Que tal um livro de visitas? Um livre d’or, como dizemos em francês. Eu gosto do sentimento antiquado e desatualizado de desenvolver um livro de visitas em 2019!

Já temos o projeto. Ele tem como objetivo obter feedback sobre as conferências: uma lista de conferências na página inicial, uma página para cada conferência, cheia de comentários simpáticos. Um comentário é composto por um pequeno texto e uma fotografia opcional tirada durante a conferência. Suponho que acabei de escrever todas as especificações que precisamos para começar.

O projeto conterá várias aplicações. Uma aplicação web tradicional com um frontend HTML, uma API e um SPA para telefones celulares. O que acha?

Aprender É Fazer

Aprender é fazer. Ponto final. Ler um livro sobre o Symfony é bom. Programar uma aplicação no seu computador pessoal enquanto lê um livro sobre Symfony é ainda melhor. Este livro é muito especial pois tudo foi feito para permitir que você acompanhe, codifique, e tenha os mesmos resultados que eu tive localmente na minha máquina quando eu a programei inicialmente.

O livro contém todo o código que você precisa escrever e todos os comandos que você precisa executar para obter o resultado final. Não falta nenhum código. Todos os comandos estão contidos aqui. Isto é possível porque as aplicações Symfony modernas têm muito pouco código boilerplate. A maior parte do código que vamos escrever juntos é sobre a lógica de negócio do projeto. Todo o resto é automatizado ou gerado automaticamente para nós.

Olhando o Diagrama Final da Infraestrutura

Mesmo que a idéia do projeto pareça simples, não vamos construir um projeto do tipo “Hello World”. Não usaremos apenas PHP e um banco de dados.

O objetivo é criar um projeto com algumas das complexidades que você pode encontrar na vida real. Quer uma prova? Dê uma olhada na infraestrutura final do projeto:

../_images/infrastructure.svg

Um dos grandes benefícios de usar um framework é a pequena quantidade de código necessária para desenvolver tal projeto:

  • 20 classes PHP em src/ para o site;
  • 550 Linhas de Código Lógico (LLOC) PHP conforme reportado pelo PHPLOC;
  • 40 linhas de configuração em 3 arquivos (via annotations e YAML), principalmente para configurar o design do backend;
  • 20 linhas de configuração da infraestrutura de desenvolvimento (Docker);
  • 100 linhas de configuração da infraestrutura de produção (SymfonyCloud);
  • 5 variáveis de ambiente explícitas.

Pronto para o desafio?

Obtendo o Código-Fonte do Projeto

Para continuar com o tema antiquado, eu poderia ter gravado um CD contendo o código-fonte, certo? Mas que tal a companhia de um repositório Git em vez disso?

Clone o repositório do livro de visitas em algum lugar na sua máquina local:

1
$ symfony new --version=5.0-4 --book guestbook

Este repositório contém todo o código do livro.

Note que estamos usando symfony new ao invés de git clone, pois o comando faz mais do que apenas clonar o repositório (hospedado no Github com a organização the-fast-track: https://github.com/the-fast-track/book-5.0-4). Ele também inicia o servidor web, os containers, migra o banco de dados, carrega fixtures, … Depois de executar o comando, o site deve estar pronto para ser usado.

É 100% garantido que o código esteja sincronizado com o código do livro (use a URL exata do repositório listado acima). Tentar sincronizar manualmente as alterações do livro com o código-fonte no repositório é quase impossível. Eu tentei no passado. E falhei. É simplesmente impossível. Especialmente para livros como os que eu escrevo: livros que contam uma história sobre o desenvolvimento de um site. Como cada capítulo depende dos anteriores, uma mudança pode ter consequências em todos os capítulos seguintes.

A boa notícia é que o repositório Git para este livro é gerado automaticamente a partir do conteúdo do livro. Você leu isso direito. Eu gosto de automatizar tudo, então há um script cujo trabalho é ler o livro e criar o repositório Git. Há um bom efeito colateral: ao atualizar o livro, o script falhará se as alterações forem inconsistentes ou se eu esquecer de atualizar algumas instruções. Isso é BDD, Book Driven Development!


  • « Previous Passo 1: Verificando Seu Ambiente de Trabalho
  • Next » Passo 3: Indo do Zero à Produção

This work, including the code samples, is licensed under a Creative Commons BY-NC-SA 4.0 license.