Caution: You are browsing the legacy symfony 1.x part of this website.
Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages showcasing Symfony with Docker, APIs, queues & async tasks, Webpack, SPAs, etc.

Command Line Interface (CLI)

1.2
Symfony version
1.1
Language

Visão geral

Muitas das tarefas(tasks) que os desenvolvedores executam ao desenvolver/manter aplicações podem ser tratadas com a CLI (Command Line Interface) do symfony. Capítulo 16 mostra algumas dessas tarefas com detalhes, enquanto este cookbook descreve todas elas com uma breve descrição.

CLI core

O symfony é um script PHP que ficam no diretório root de um projeto. O comando symfony é seguido de uma tarefa, e algumas dessas tarefas precisam de parâmetros adicionais. Para chamar o script, utilize a seguinte sintaxe:

$ cd myproject
$ php symfony <NOME_DA_TAREFA> [argumentos]

Uma tarefa pode ter também algumas opções:

$ php symfony <NOME_DA_TAREFA> [argumentos] --option1=value --option2

Nota: O comando symfony(CLI) só funciona quando rodado dentro do diretório root do projeto

O symfony sandbox contém executáveis para Windows e *nix que permitem uma maneira mais fácil de ser chamada:

$ ./symfony <TAREFA> [parametros]      #  *nix
$ symfony <TAREFA> [parametros]        #  Windows

Os exemplos desse capítulo irão utilizar o executável php, mas você pode omitir isso no seu projeto caso ele tenha os respectivos executáveis

Para listar todas as possíveis tarefas, digite:

$ php symfony

Para listar a versão do symfony instalada, digite:

$ php symfony -V

Algumas tarefas possuem atalhos, maneira mais rápida para chamar tarefas e que dão o mesmo efeito:

$ php symfony cc

// é o mesmo que
$ php symfony cache:clear

Quando ocorre um erro, você pode pegar o stack trace e informações detalhadas. Para isso, adicione a opção -t antes do nome da tarefa para obter o trace.

CLI tasks

Cada tarefa possui uma descrição dizendo para que serve, todos os argumentos que ela recebe e todas as opções que ela aceita. Para obter essas informações você pode utilizar a tarefa help:

$ php symfony help cache:clear

Estrutura da tarefa generate

$ php symfony generate:project <NOME_DO_PROJETO>

Inicia um novo projeto

$ php symfony generate:app <NOME_DA_APLICACAO>

Inicia uma nova aplicação

$ php symfony generate:module <NOME_DA_APLICACAO> <NOME_DO_MODULO>

Inicia um novo módulo

Saiba mais sobre esses comandos em Capítulo 16.

Gerando os Models

$ php symfony configure:database mysql://localhost/db_name

Configura os dados do banco de dados tanto para config/databases.yml quanto para config/propel.ini.

$ php symfony propel:build-model

Gera as classes do Propel para o model baseado no(s) arquivo(s) schema (YAML ou XML) do diretório config/

As configurações de conexão utilizadas por esses comandos são tiradas do arquivo config/propel.ini

$ php symfony propel:build-sql

Gera o SQL para criar as tabelas descritas no schema.yml no arquivo data/schema.sql

$ php symfony propel:build-db

Cria um novo banco de dados vazio baseado nas configurações de conexão

$ php symfony propel:insert-sql

Insere o SQL do arquivo data/schema.sql dentro do banco de dados

$ php symfony propel:build-forms

Gera os formulários baseado no model

$ php symfony propel:build-all

Executa propel:build-model, propel:build-sql, propel:build-forms, e propel:insert-sql em um único comando

Saiba mais sobre esses comandos em Capítulo 8.

Manipulando o Schema

$ php symfony propel:build-schema [--xml]

Cria o schema.yml de um banco de dados existente. Se o parâmetro --xml for adicionado, as tarefas serão criadas como XML no arquivo schema.xml

$ php symfony propel:schema-to-yml

Cria uma versão em YAML do schema em XML

$ php symfony propel:schema-to-xml

Cria uma versão em XML do schema em YAML

Manipulando dados

$ php symfony propel:data-load  <NOME_DA_APLICACAO> [--env=<ENVIRONMENT_NAME>] [--dir=<FIXTURES_DIR_OR_FILE>]

Carrega todos os dados do diretório padrão data/fixtures/ caso nenhum seja especificado. O environment por padrão é dev. O diretório precisa ser especificado com um caminho relativo ao diretório de dados, por exemplo, fixtures (padrão) ou testdata ou especificando um arquivo fixtures/arquivo.yml

$ php symfony propel:build-all-load  <NOME_DA_APLICACAO>

Executa propel:build-all depois propel:data-load. Aceita os mesmos argumentos do propel:data-load

$ php symfony propel:data-dump <NOME_DA_APLICACAO> [<TARGET>] [--env=<ENVIRONMENT_NAME>]

Faz um backup do banco de dados em um arquivo no no formato YAML dentro do diretório de fixtures

Ferramentas de desenvolvimento

$ php symfony cache:clear [--app=<NOME_DA_APLICACAO>] [--type=template|config|i18n|routing] [--env=<ENVIRONMENT_NAME>]

Limpa as informações que estão no cache (atalho: cc) (saiba mais em Capítulo 12).

$ php symfony project:permissions

Corrige as permissões dos diretórios, colocando 777 nos que precisam ser escritos. A permissão pode ser quebrada se você estiver usando uma versão do repositório SVN

$ php symfony project:freeze <SF_DATA_DIR>
$ php symfony project:unfreeze

Copia todas as bibliotecas necessárias para as pastas data/, lib/ e web/sf do seu projeto. Seu projeto então passa a ser um tipo de sandbox, por exemplo: uma aplicação, sem dependências e pronta para ser transferida para produção via FTP. Isso funciona tanto para instalações com PEAR quanto para links simbólicos. Remova todas essas bibliotecas (unfreeze) com a tarefa project:unfreeze

$ php symfony project:deploy <SERVER_CONFIGURATION_NAME> [--go]

Sincroniza seu projeto atual com outra máquina (geralmente seu servidor) (saiba mais em Capítulo 16).

Testes

$ php symfony test:unit <UNIT_TEST>

Executa uma "unit test" que fica localizada no diretório test/unit. O parâmetro pode ser o mesmo de um arquivo de uma simples unidade de teste (omitinho o sufixo Test.php), um grupo de arquivos de unidade de teste, ou um path. Se nenhum nome for dado ao teste, todas a unidades de teste serão executadas.

$ php symfony test:unit

Executa todos os testes de unidade no modo "harness"

$ php symfony test:functional <NOME_DA_APLICACAO> <TEST>

Executa um teste funcional para uma aplicação específica. O parâmetro TEST pode ser o nome de um único arquivo de teste funcional (omitindo o sufixo Test.php), um grupo de arquivos de unidade de teste, ou um simples path.

$ php symfony test:functional <NOME_DA_APLICACAO>

Executa todos os testes funcionais de uma aplicação no modo "harness"

$ php symfony test:all

Executa todos os testes funcionais e de unidade no modo "harness"

Saiba mais sobre testes em Capítulo 15.

Administração de projetos

$ php symfony project:disable <NOME_DA_APLICACAO> <ENVIRONMENT_NAME>

Encaminha o usuário para o módulo e ação indisponível no seu settings.yml e faz como se você tivesse ligado a configuração de unavailable no settings.yml. A vantagem dessa configuração é que você pode desabilitar uma simples aplicação para um único environment e não só o projeto inteiro.

$ php symfony project:enable <NOME_DA_APLICACAO> <ENVIRONMENT_NAME>

Habilita a aplicação e limpa o cache

$ php symfony log:clear

Limpa os arquivos de log que estão no diretório de log das aplicações e environments onde o logging.yml especifica purge: on (valor padrão)

$ php symfony log:rotate <NOME_DA_APLICACAO> <ENVIRONMENT_NAME>

Força a rotação de arquivos de log. As opções de rotação são --period (o número de dias para trocar de arquivo_ e --history (o número de arquivos de backups que serão mantidos)

Geração de Esqueleto e Admin

$ php symfony propel:generate-crud <NOME_DA_APLICACAO> <NOME_DO_MODULO> <CLASS_NAME>

Gera um novo módulo Propel CRUD baseado na classe do modelo. A versão normal copia o código do framework para um novo módulo; se você adicionar a opção --generate-in-cache, a tarefa cria um módulo vazio que herda do módulo da framework. Nesse caso, o código gerado é visível somente no diretório cache/ (as ações e templates gerados herdam da framework)

$ php symfony propel:init-admin <NOME_DA_APLICACAO> <NOME_DO_MODULO> <CLASS_NAME>

Inicializa um novo módulo Propel admin baseado na classe do modelo

Saiba mais sobre esses comandos em Capítulo 14.

Manipulando plugins

$ php symfony plugin:install [<CHANNEL_NAME>/]<PLUGIN_NAME>

Instala um novo plugin. Para instalar um novo plugin vindo do wiki do symfony, o nome implicito do canal é symfony

$ php symfony plugin:upgrade [<CHANNEL_NAME>/]<PLUGIN_NAME>

Atualiza um plugin

$ php symfony plugin:upgrade-all

Atualiza todos os plugins previamente instalados

$ php symfony plugin:uninstall [<CHANNEL_NAME>/]<PLUGIN_NAME>

Desinstala um plugin

Saiba mais sobre plugins em Capítulo 17.

Preenchimento automático

A wiki do symfony contém diversas contribuições dos usuários que mostram como executar os comandos do symfony com preenchimento automático. Veja qual se encaixa no seu CLI: