Symfony 4: O que mudou?

Symfony 4: O que mudou?

O versão 4 do Symfony, foi lançada em 30 de novembro de 2017. Com uma nova filosofia e menor número de dependências, a nova versão está muito melhor que as anteriores.

Symfony é um framework web escrito em PHP que segue o modelo MVC (model-view-controller). Neste artigo apresento um resumo sobre as alterações mais importantes feitas na nova versão. Este post é para você que já está familiarizado com as versões anteriores e quer se atualizar com a nova.

Nova filosofia

A nova filosofia do Symfony é partir do simples para se tornar complexo. A ideia é deixar o mínimo de dependências obrigatórias e, conforme a necessidade, tornar mais complexo. Ele deixa como escolha do desenvolvedor, instalar os bundles (plugins) necessários, o que torna este framework uma escolha para todos os tamanhos de aplicações, desde pequenas a robustas. Podendo ser utilizado desde API’s e sites simples a sistemas complexos.

Novo Symfony

Internamente o Symfony 4 é o mesmo que da versão 3 só que com códigos obsoletos removidos, mais a adição do Symfony Flex (explico mais adiante)  e com todas as melhorias da versão 3.4.

Externamente está muito mais clean. As grandes alterações foram feitas para melhorar a experiência de desenvolvimento, desde o processo de instalação, inclusão e remoção de bundles, até o próprio código. Com a nova versão a ferramenta prova que é possível esconder a complexidade.

Instalação

A instalação é um simples comando de composer. Quem já utilizou este frameworks estará familiarizado.

composer create-project symfony/skeleton symfony4

As 5 dependências no composer.json resultam nos seguintes pacotes:

Symfony

Somente os pacotes necessários para executar o framework, como podem perceber, não vem ORM,  TWIG, Swiftmailer, entre outros que vinham nas outras versões. Assim, você programador instale somente o que julgar necessário. Nas versões anteriores, se fosse desenvolver uma API, por exemplo, teríamos que conviver com o TWIG, mesmo ele não sendo necessário, fazendo com que este framework não ser uma escolha para esse tipo de projeto.

Estrutura de pastas

Aqui mais uma vez é possível ver, o quão limpa está a instalação:

Symfony

As alterações mais importantes são:

  • A pasta config saiu de dentro da pasta app, e está na raiz do projeto.
  • O arquivo params.yml, não é mais utilizado, dando lugar a variável de ambiente na raiz do projeto.
  • A pasta src, não tem mais nenhum bundle instalado.
  • A pasta web deu lugar a pasta public.
  • O arquivo app_dev.php não existe mais, somente o arquivo index.php,  que consegue identificar o ambiente de desenvolvimento e de produção.
  • A pasta var, é a pasta  onde são mantidos cachêslogs.
  • As configurações de bundles não são mais definidos no arquivo Kernel e sim em config/bundles.php.
  • As views são mantidas na pasta templates e não mais em App/Resources/Views.

Symfony Flex

O Symfony flex é um utilitário que modifica certos pontos do código que envolvem manipulação de pacotes. Ele veio para auxiliar e facilitar determinados processos como, por exemplo, a instalação/desinstalação de bundles de forma automática. Ele vai agir sempre na instalação, remoção ou update de pacotes flex com o composer. Antes a  instalação de bundles e extensões eram muitas vezes problemática: era preciso registar o bundles manualmente na classe AppKernel, adicionar a configuração ao arquivo config.yml e ainda seguir a lista de instalação – que era  diferente para cada tipo de bundle – o que o tornava muitas vezes inviável a instalação. Com ele esse processo é todo feito de forma automática.

A lista de pacotes oficiais, é encontrado em: https://github.com/symfony/recipes e a lista de pacotes desenvolvidos pela comunidade em: https://github.com/symfony/recipes-contrib .

O symfony flex,suporta aplicações a partir da versão 3.3, . Mas para utilizá-lo é exigido que as aplicações usem a estrutura de pasta da versão 4, então, a estrutura deve ser atualizada de forma manual.

Recipes

Cada instalação de pacote segue uma ‘receita’ definida nos repositórios do Symfony Flex Recipes.

Symfony

Bundles: diz ao flex em quais ambientes esse bundle deve ser habilitado automaticamente.

Copy-from-recipes: permite que a receita copie arquivos e diretórios para sua aplicação.

Env: adiciona novas variáveis de ambiente na aplicação.

Aliases: permite a instalação de pacotes utilizando nomes curtos,  fáceis de lembrar. (composer req mailer – nesse caso).

Essas instruções ficam definidas no arquivo manifest.json, e também são utilizadas pelo Flex ao desinstalar o bundles. Exemplo: composer remove mailer, irá desfazer todas as mudanças.

Maker Bundle

Nas versões 2 e 3 tínhamos o SensioGenerateBundle, que nós dava alguns comandos úteis no console. Na versão 4 ele foi substituído e melhorado pelo MakerBundle. Quem já trabalha com o Laravel vai reconhecê-lo e para instalá-lo basta digitar:

  composer require maker

O que nós dá a lista de geradores abaixo,  que facilita a criação de Controller, Command entre outros.

Symfony

 

Links uteis

Documentação: https://symfony.com/doc/current/index.html

Medium do Fabien Potencier (CEO da SensioLabs – mantenedora do Symfony): https://medium.com/@fabpot

Video demo de criação de API com Symfony Flex: https://www.youtube.com/watch?v=o9N1nOYfAl4

 

Essas foram as principais mudanças. Ele ainda é um framework robusto, e com grande potencial e com a nova versão ficou muito mais simples e leve. Ele veio para facilitar o desenvolvimento e para ser utilizado em todos os tamanhos de projetos. Espero que tenham gostado e que o utilizem.

Anterior Na 4Linux você fica fluente mais rápido!
Próxima Engenheiro de Dados: nova oportunidade em TI

About author

Camila Fernandes
Camila Fernandes 3 posts

Desenvolvedora PHP 5 anos de experiência em desenvolvimento de software orientado a objetos, arquitetura, padrões de projeto e refatoração de código.

View all posts by this author →

Você pode gostar também

Desenvolvimento

Codeception: crie testes automatizados para suas APIs

O uso de APIs para uma comunicação padronizada entre aplicações é cada vez mais comum. Ao utilizar APIs testes precisam ser criados para validar seu funcionamento e garantir a comunicação.

Big Data

JSON e BSON no MongoDB: para iniciantes

Dando continuidade na série de MongoDB, nesse post farei uma Introdução ao formato “Javascript Object Notation” (JSON), ao BSON e aos primeiros passos com o MongoDB.

Desenvolvimento

Ferramentas para testar sua API

Quando estamos construindo uma API precisamos fazer uma simulação das requisições que serão feitas por agentes externos. Como uma API não tem um HTML diante de nós, como simular essas