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
Descubra as novidades do PostgreSQL 13: suporte a colações não determinísticas
Com o lançamento recente do PostgreSQL 13 e com a grande maturidade das versões anteriores, algumas das novidades dessas versões mais recentes se tornam cada vez mais disponíveis para uso
Guia prático: aprenda a utilizar o Git e integrar com o Github
Conhecendo o Git Git – é uma das, senão a mais utilizada ferramente de SCM (Source Control Management) presentes no mercado de TI e um ponto muito importante, é disponibilizado
Automatização de ambientes com Rundeck
Por que automatizar seu ambiente? Nos últimos anos, a automação tem crescido como um elemento imperativo em todos os negócios. Independente da área, temos observado um notável aumento no uso