Caso nunca tenha tido contato com Symfony, antes de iniciar esse artigo aconselho a leitura: O que é o Symfony Framework, nele falamos sobre o padrão estrutural MVC, componentes, ciclo de atualização e suporte, além de outras características.
Uma das principais novidades que o Symfony trouxe a partir da versão 4 é o Flex, que vamos falar em nosso próximo artigo. Ele é um plugin para composer que faz a criação de toda a estrutura do nosso projeto, além facilitar a instalação de novos pacotes. A partir do seu uso é possível de forma muito simples começar com um pequeno projeto e ir “plugando” novos recursos quando necessário. O Flex permitiu ao Symfony unir as características de microframework e framework full stack em um único lugar.
Baseado nessa característica é possível escolher quando vamos criar o projeto entre duas opções. A primeira é a estrutura mínima, com poucas dependências, muito utilizada para APIs e pequenos projetos. A segunda estrutura chamada de website, é uma estrutura mais completa que contém a maioria das dependências necessárias para aplicações web clássicas.
Curso Symfony - Fundamentos
Conhecer o cursoCriando o projeto com estrutura mínima
Quando vamos trabalhar com API, microsserviço ou uma aplicação muito pequena geralmente não precisamos de todos os recursos de uma aplicação web. Nesses casos ao invés de usar um microframework como Slim ou Lumen, podemos usar o Symfony com sua estrutura de base simplificada.
Para realizarmos a criação do projeto precisamos apenas do PHP e do composer instalados na máquina. Ao executarmos o comando abaixo ele fará a criação do projeto:
composer create-project symfony/skeleton nome-do-projeto
Ao abrir o projeto verá que ele possui uma estrutura bem enxuta. E poucas dependências declaradas no composer.json:
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"symfony/console": "4.3.*",
"symfony/dotenv": "4.3.*",
"symfony/flex": "^1.1",
"symfony/framework-bundle": "4.3.*",
"symfony/yaml": "4.3.*"
},
Podemos começar desenvolver nossa aplicação e instalar os pacotes conforme necessário.
Criando o projeto com estrutura website
Quando vamos criar uma aplicação web normalmente precisamos de uma série de recursos específicos, como por exemplo, template engine, forms, gerenciador de assets e outros. Nesse caso podemos usar o projeto que possui todos esses elementos já instalados e pré-configurado por padrão.
Basta executar o comando abaixo:
composer create-project symfony/website-skeleton nome-projeto2
Depois de criado faça uma comparação entre a estrutura dele e o primeiro. Além da própria estrutura, a quantidade de pacotes instalados também é bem maior:
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"symfony/asset": "4.3.*",
"symfony/console": "4.3.*",
"symfony/dotenv": "4.3.*",
"symfony/expression-language": "4.3.*",
"symfony/flex": "^1.1",
"symfony/form": "4.3.*",
"symfony/framework-bundle": "4.3.*",
"symfony/http-client": "4.3.*",
"symfony/intl": "4.3.*",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "*",
"symfony/process": "4.3.*",
"symfony/security-bundle": "4.3.*",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/translation": "4.3.*",
"symfony/twig-bundle": "4.3.*",
"symfony/validator": "4.3.*",
"symfony/web-link": "4.3.*",
"symfony/yaml": "4.3.*"
},
"require-dev": {
"symfony/debug-pack": "*",
"symfony/maker-bundle": "^1.0",
"symfony/profiler-pack": "*",
"symfony/test-pack": "*",
"symfony/web-server-bundle": "4.3.*"
},
Rodando o projeto
Depois de terminar a criação do projeto podemos testar, basta iniciar o servidor embutido do PHP dentro da pasta public:
php -S 127.0.0.1:8080
Já é possível ver a página de boas-vindas do Symphony no endereço http://127.0.0.1:8080
O mais aconselhável é usar o servidor de desenvolvimento através do comando symfony
, porém como estamos apenas trabalhando em uma aplicação de exemplo vamos manter assim.
Criando um CRUD de forma prática
O Symfony conta com uma aplicação console que nos ajuda executar as tarefas de desenvolvimento de forma fácil e segura. A partir dela podemos gerar uma série de arquivos na nossa aplicação e até mesmo cadastros completos. No vídeo abaixo, veja como é possível criar um CRUD com as 4 operações básicas do banco de dados usando apenas comandos. Essa ferramenta é muito útil para quem está começando a aprender o Symfony, mas também para automatizar a tarefa em sistemas que possuem muitos cadastros.