Em dezembro de 2018, na conferência SymfonyCon de Lisboa, Fabien Potansier - o criador do framework Symfony introduziu um certo symfony.phar - uma ferramenta para criar rapidamente aplicativos Symfony com base nos modelos oficiais de projeto: esqueleto , esqueleto de site ou demonstração . Também permite que você execute um servidor da web local para desenvolvimento.
Em seguida, a ferramenta foi reescrita no idioma Golang, o que permitiu implementar muitos recursos adicionais, como suporte ao protocolo https para o servidor da web local, forte integração com o SymfonyCloud e muito mais! Convido você, caro leitor, a se familiarizar com essa ferramenta com mais detalhes, pois ela funciona não apenas no contexto da estrutura do Symfony. 
Neste artigo, examinaremos a ferramenta no contexto do desenvolvimento local e não afetará a integração com o SymfonyCloud.
Criação de projeto
Para criar um novo projeto Symfony baseado em um dos modelos oficiais, você precisa executar o comando:
$ symfony new [--full | --demo] <path-to-project> 
Por padrão, o modelo mínimo de esqueleto é usado. Para instalar o website-skeleton, você precisa executar o comando com a opção --full . Portanto, para instalar o projeto demo , você deve executar o comando com a opção --demo .
Sob o capô, o symfony new executa o comando composer create-project do composer create-project , inicializa um novo repositório Git e cria imediatamente um commit inicial.

Servidor local
Para iniciar o servidor, basta executar o comando na raiz do aplicativo
 $ symfony serve 

ele analisará os SAPIs disponíveis na máquina usada e escolherá o melhor dentre os existentes, usando as seguintes prioridades: primeiro coloque o PHP FPM, depois o PHP CGI e no final da PHP CLI. A lista de SAPIs disponíveis pode ser visualizada com o comando:
 $ symfony local:php:list 

Depois disso, a equipe iniciará o servidor, que estará disponível no endereço 127.0.0.1 e selecionará a porta livre a partir de 8000 .
Por padrão, o servidor inicia interativamente. Vemos imediatamente os logs do servidor e do aplicativo, mas nosso terminal está bloqueado. O servidor pode ser iniciado no modo daemon. Para fazer isso, adicione a opção -d ao executar o comando symfony serve .
Os logs podem ser visualizados executando o comando:
 $ symfony server:log 
Você também pode ver o status do servidor em execução usando o comando:
 $ symfony server:status 
para parar o servidor em execução, use o comando:
 $ symfony server:stop 
UPD: Anteriormente, usamos o pacote symfony / web-server-bundle para iniciar o servidor. Com o advento da CLI do Symfony, este pacote se torna pouco relevante, pois só pode iniciar o servidor usando o PHP CLI SAPI e não suporta HTTPS, nomes de domínio, PHP FPM SAPI e muito mais.
Suporte TLS
Alguns serviços ou bibliotecas de terceiros exigem que você envie solicitações usando o protocolo HTTPS. A CLI do Symfony oferece a capacidade de configurar muito facilmente o suporte ao TLS instalando componentes adicionais usando o seguinte comando:
 $ symfony server:ca:install 

basta reiniciar o navegador e pronto - o suporte ao TLS está configurado! Inicie o servidor com o comando symfony serve e você pode acessar o site usando o protocolo HTTPS.
Não gosto de abrir todos os projetos em https://127.0.0.1:8000 ou https://localhost:8000 , mas e você? Isso traz seu inconveniente: se vários projetos estão sendo executados ao mesmo tempo, você precisa lembrar em qual porta o projeto trabalha; quando o servidor reinicia, as portas podem mudar etc.
O Symfony CLI também resolve esse problema! Ele nos fornece um servidor proxy com o qual você pode criar belos nomes de domínio. Para fazer isso, vincule o nome de domínio desejado ao nosso projeto usando o comando:
 $ symfony proxy:domain:attach <domain-name> 

portanto, o domínio demo-project.com vinculado ao diretório do projeto. Em seguida, precisamos iniciar o servidor proxy com o comando:
 $ symfony proxy:start 

Iniciamos o servidor proxy no modo daemon e ele está disponível em nosso endereço http://127.0.0.1:7080 , podemos abri-lo em um navegador:

onde veremos uma lista de domínios, caminhos para projetos no sistema de arquivos e status do servidor para cada projeto. Nesta captura de tela, você pode ver que todos os servidores estão no status Stopped , ou seja, eles ainda não estão em execução. A próxima etapa, precisamos adicionar este servidor proxy nas configurações do SO

Isso completa a configuração do servidor proxy e, em seguida, você precisa iniciar o servidor com o comando symfony serve já conhecido. Além do endereço IP com a porta, veremos nosso nome de domínio, que podemos usar no navegador! O postfix .wip é adicionado a todos os nomes de domínio.

Ou seja, no caso de usar o fluxo do servidor proxy, o lançamento do projeto muda ligeiramente:
- Iniciamos o servidor proxy
  $ symfony proxy:start
 
- Iniciamos o servidor para o aplicativo
  $ symfony serve
 
Para concluir o trabalho com o projeto, espelhamos as ações descritas acima:
- Paramos o servidor
  $ symfony server:stop
 
- Pare o servidor proxy
  $ symfony proxy:stop
 
Para simplificar essas operações, eu recomendo usar o utilitário GNU Make.
Troca de versão do PHP
Se você usa versões diferentes do PHP em projetos diferentes, provavelmente enfrentou o problema de alternar entre versões. Seria ótimo ter algum tipo de ferramenta automática para isso, certo? O Symfony CLI pode resolver este problema! Você só precisa criar o arquivo .php-version na raiz do projeto e especificar a versão desejada como o conteúdo.
 $ echo "7.2" > .php-version 

Como você pode ver na captura de tela acima, a CLI do Symfony leu o arquivo .php-version e iniciou o servidor usando a versão especificada neste arquivo.
Além disso, a CLI do Symfony fornece um wrapper sobre a CLI do PHP, que também leva em consideração a versão do PHP especificada no arquivo .php-version. Ou seja, se você precisar chamar scripts de console, por exemplo bin/console , use-o.
 $ symfony php 

Por conveniência, você pode criar um alias para esse comando para economizar tempo e evitar erros ao escrever o comando. Por exemplo, criei um alias sphp para mim:
 $ echo "alias sphp='symfony php'" >> ~/.bash_profile && source ~/.bash_profile 
O Symfony CLI fornece um wrapper semelhante para o Composer, para que você também não tenha problemas. Por conveniência, você pode criar um alias para este wrapper. Eu tenho este compositor :
 $ echo "alias scomposer='symfony composer'" >> ~/.bash_profile && source ~/.bash_profile 
Verifique se há pacotes vulneráveis
Como um bônus, a CLI do Symfony fornece um comando para verificar se há pacotes vulneráveis do compositor em seu projeto. Você não precisa mais instalar a dependência do Symfony Security Checker no projeto. Além disso, a documentação oficial sugere que a versão incorporada na CLI do Symfony funciona melhor devido ao fato de não fazer solicitações HTTP para a API oficial. Você pode executar o teste com o comando:
 $ symfony security:check 

Conclusão
O Symfony CLI é um componente bastante conveniente da infraestrutura local de aplicativos. Ele tem a capacidade de executar um servidor Web com suporte para o protocolo HTTPS, criar nomes de domínio, automatizar a alternância da versão PHP para cada projeto e verificar dependências quanto a vulnerabilidades.
A documentação oficial do componente pode ser encontrada neste link .
Qualquer dúvida e problema pode ser descrito no repositório oficial symfony / cli no GitHub.
Compartilhe sua experiência com esta ferramenta nos comentários.
Obrigado pela atenção!