Descubra as novidades e melhorias do Symfony 4, o framework PHP
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:
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:
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ês e logs.
- 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.
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.
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.
About author
Você pode gostar também
Guia Prático: Ferramentas para Simulação de Requisições em APIs
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
Por que escolher Python para projetos de Big Data: vantagens e benefícios
A maioria dos profissionais da área de Big Data possui uma dúvida em comum: qual linguagem de programação certa para um projeto que envolva um grande volume de dados? O
GitLab CI – Integração Contínua sem sair do repositório
Ferramentas de CI/CD hoje em dia andam de mãos dadas com os nossos projetos – dificilmente vemos um repositório no GitHub, GitLab, Bitbucket, Gitea… sem alguma configuração de integração contínua.