Iniciando com Symfony: Como criar o projeto e seu primeiro CRUD \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 04 Horas 

 12 Min 

 13 Seg 

   Tempo restante da oferta: 04 12 13 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Iniciando com Symfony: Como criar o projeto e seu primeiro CRUD  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Iniciando com Symfony: Como criar o projeto e seu primeiro CRUD

 Nesse artigo veremos como criar o primeiro projeto no Symfony. Falaremos sobre qual tipo de estrutura escolher dependendo da aplicação e como criar o primeiro CRUD utilizando o comando make.

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 8 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/11153116/symfony-projeto-e-crud.png)  

Caso nunca tenha tido contato com Symfony, antes de iniciar esse artigo aconselho a leitura: [O que é o Symfony Framework](https://www.treinaweb.com.br/blog/o-que-e-symfony/ "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](https://www.treinaweb.com.br/blog/o-que-e-o-symfony-flex-e-como-ele-funciona/ "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.

[  ![Symfony - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/symfony.svg)   Curso Symfony - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/symfony-fundamentos)

## Criando o projeto com estrutura mínima

Quando vamos trabalhar com [API](https://www.treinaweb.com.br/blog/o-que-e-uma-api/ "API"), [microsserviço](https://www.treinaweb.com.br/blog/o-que-sao-microsservicos/ "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](https://www.treinaweb.com.br/blog/o-que-e-o-slim-framework/ "Slim") ou [Lumen](https://lumen.laravel.com/ "Lumen"), podemos usar o Symfony com sua estrutura de base simplificada.

Para realizarmos a criação do projeto precisamos apenas do [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "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:

```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:

```json
"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](http://127.0.0.1:8080 "http://127.0.0.1:8080")

![Tela Inicial Symfony](https://dkrn4sk0rn31v.cloudfront.net/2019/06/05100749/tela-inicial-symfony41.png)

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.

[  ![Desenvolvedor Symfony Full-Stack](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/symfony.svg)   Formação Desenvolvedor Symfony Full-Stack Conhecer a formação ](https://www.treinaweb.com.br/formacao/desenvolvedor-symfony-full-stack)

- [ #Symfony ](https://www.treinaweb.com.br/blog/tag/symfony)
- [ #criando projeto ](https://www.treinaweb.com.br/blog/tag/criando-projeto)

Autor

 ![Elton Fonseca](//secure.gravatar.com/avatar/2cee05645357ced0841ce76ba5569c72?d=mm)

## Elton Fonseca

 Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. [@eltonfonsecadev](https://twitter.com/eltonfonsecadev) 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/elton-fonseca)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/como-usar-attritutes-annotations-no-php-8-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     6 anos atrás

    ##  [ Como usar Attributes/Annotations no PHP 8 ](https://www.treinaweb.com.br/blog/como-usar-attributes-annotations-no-php-8) 

     Aprenda como utilizar attributes no PHP 8. Veja o que são, qual a sintaxe e como obter os dados das annotations na prática.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/02/11105139/PHP-WINDOWS-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Como instalar o PHP e Xdebug no Windows ](https://www.treinaweb.com.br/blog/como-instalar-o-php-e-xdebug-no-windows) 

     Aprenda como instalar o PHP e a extensão Xdebug no Windows. Ensinaremos os detalhes que você precisa observar na hora de escolher a versão do PHP e todo o processo de instalação e configuração.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/03/07100631/VIEWS-LOGICA-LARAVEL-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     9 anos atrás

    ##  [ Removendo a lógica das views com presenters no Laravel ](https://www.treinaweb.com.br/blog/removendo-logica-das-views-com-presenters-no-laravel) 

     Um dos problemas mais clássicos de aplicações que utilizam MVC é a camada de view concentrar lógica ao invés de apenas aspectos relacionados à exibição. Veremos nesse artigo como isso pode ser contornado.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/12/09153638/doctrine-ORM-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Primeiros passos com Doctrine ORM ](https://www.treinaweb.com.br/blog/primeiros-passos-com-doctrine-orm) 

     Conheça os principais conceitos do Doctrine ORM, como entidade, mapeamento e Entity Manager. Veja também como executar um exemplo prático de criação de registro no banco de dados.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/10/04103322/ferramentas-php-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Ferramentas essenciais para um projeto PHP ](https://www.treinaweb.com.br/blog/ferramentas-essenciais-para-um-projeto-php) 

     Neste artigo cito as quatro principais ferramentas que considero essenciais para qualquer projeto PHP: PHPUnit, PHPStan, PHP-CS-Fixer e PHP Insights.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/01/iniciando-com-spring-data-jpa-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     5 anos atrás

    ##  [ Iniciando com Spring Data JPA ](https://www.treinaweb.com.br/blog/iniciando-com-spring-data-jpa) 

     Neste artigo iremos conhecer o Spring Data JPA, entender o seu funcionamento e como o mesmo pode nos auxiliar na camada de persistência.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/03/dicionario-programador-iniciante-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     4 anos atrás

    ##  [ Dicionário básico para quem está iniciando na programação ](https://www.treinaweb.com.br/blog/dicionario-basico-para-quem-esta-iniciando-na-programacao) 

     Você está iniciando na programação e está perdido nos termos e siglas que você lê ou ouve falar por aí? Confira neste artigo um guia rápido para você começar a se familiarizar com esse universo da TI.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/03/como-escolher-melhor-area-400x280.jpg)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     4 anos atrás

    ##  [ Como escolher a área de TI mais adequada para mim? ](https://www.treinaweb.com.br/blog/como-escolher-a-area-de-ti-mais-adequada-para-mim) 

     Se você está iniciando em TI pode ficar muito confuso com a área que você deve escolher, o que é muito comum. Por isso, vamos dar algumas dicas que podem te ajudar a encontrar a área que mais tem a ver com você.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/10192215/tempo-programação-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     7 anos atrás

    ##  [ Existe um tempo certo para se aprender a programar? ](https://www.treinaweb.com.br/blog/existe-um-tempo-certo-para-se-aprender-a-programar) 

     "Em quanto tempo vou aprender a programar?" Essa pergunta é muito comum em quem está iniciando e será o tema deste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/08/dicas-programadores-iniciantes-parte-2-1-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     5 anos atrás

    ##  [ Dicas para programadores iniciantes - parte 2 ](https://www.treinaweb.com.br/blog/dicas-para-programadores-iniciantes-parte-2) 

     Receber dicas nunca é demais. Confira neste artigo algumas dicas que podem fazer a diferença no seu começo de carreira.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/05/07145013/DJANGO-CLI-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     8 anos atrás

    ##  [ Principais comandos do Django CLI ](https://www.treinaweb.com.br/blog/principais-comandos-do-django-cli) 

     Neste artigo veremos os principais comandos do Django CLI e como utilizá-los em seus projetos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/17130351/HTTPS-DEV-TEST-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ Automatizando a geração de certificados SSL locais para ambientes de desenvolvimento ](https://www.treinaweb.com.br/blog/automatizando-a-geracao-de-certificados-ssl-locais-para-ambientes-de-desenvolvimento) 

     Veja como automatizar a geração de certificados SSL e usar no servidor do seu ambiente de desenvolvimento.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **04h 12min 13s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
