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

Semântica em HTML5: mais acessibilidade e SEO em seus projetos

Antes de tudo você sabe o que significa a palavra semântica? se·mân·ti·co 1. Relativo à semântica 2. Relativo a significação, ao significado. = SIGNIFICATIVO. https://www.priberam.pt/dlpo/sem%C3%A2ntica [consultado em 29-11-2017]. Podemos então entender

Desenvolvimento

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

Curso PHP Completo do Básico ao Avançado

Hoje estamos entusiasmados em anunciar o nosso Curso PHP Completo.  Existem muitas linguagens de programação para se aprender, o que pode levar você a se perguntar se deve começar a