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!