Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 41e742d

Browse files
committed
[Console] Translate into Portuguese
1 parent 94969b3 commit 41e742d

File tree

1 file changed

+313
-0
lines changed

1 file changed

+313
-0
lines changed

‎console.rst‎

Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
.. index::
2+
single: Console; Criar comandos
3+
4+
Comandos de Console
5+
===================
6+
7+
O framework Symfony disponibiliza muitos comandos através do script ``bin/console``
8+
(por exemplo, o comando bem conhecido ``bin/console cache:clear``). Esses comandos são
9+
criados com o :doc:`componente Console </components/console>`. Você também pode
10+
usá-lo para criar os seus próprios comandos.
11+
12+
Criar o comando
13+
---------------
14+
15+
Os comandos são definidos nas classes que devem ser criadas no namespace ``Command``
16+
de seu bundle (por exemplo, ``AppBundle\Command``) e os seus nomes devem terminar com
17+
sufixo ``Command``.
18+
19+
Por exemplo, um comando chamado ``CreateUser`` deve seguir essa estrutura::
20+
21+
// src/AppBundle/Command/CreateUserCommand.php
22+
namespace AppBundle\Command;
23+
24+
use Symfony\Component\Console\Command\Command;
25+
use Symfony\Component\Console\Input\InputInterface;
26+
use Symfony\Component\Console\Output\OutputInterface;
27+
28+
class CreateUserCommand extends Command
29+
{
30+
protected function configure()
31+
{
32+
// ...
33+
}
34+
35+
protected function execute(InputInterface $input, OutputInterface $output)
36+
{
37+
// ...
38+
}
39+
}
40+
41+
Configurar o comando
42+
--------------------
43+
44+
Antes de tudo, você deve configurar o nome do comando no método
45+
``configure()``. Então você pode, opcionalmente, definir uma mensagem de ajuda
46+
e as :doc:`opções e argumentos de entrada </console/input>`::
47+
48+
// ...
49+
protected function configure()
50+
{
51+
$this
52+
// the name of the command (the part after "bin/console")
53+
->setName('app:create-users')
54+
55+
// the short description shown while running "php bin/console list"
56+
->setDescription('Creates new users.')
57+
58+
// the full command description shown when running the command with
59+
// the "--help" option
60+
->setHelp("This command allows you to create users...")
61+
;
62+
}
63+
64+
Executar o comando
65+
------------------
66+
67+
Após configurar o comando, você pode executá-lo no terminal:
68+
69+
.. code-block:: terminal
70+
71+
$ php bin/console app:create-users
72+
73+
Como esperado, esse comando não fará nada pois você não escreveu nenhuma lógica
74+
ainda. Adicione a sua própria lógica dentro do método ``execute()``, que tem acesso ao
75+
fluxo de entrada (por exemplo, opções e argumentos) e ao fluxo de saída (para escrever
76+
mensagens no console)::
77+
78+
// ...
79+
protected function execute(InputInterface $input, OutputInterface $output)
80+
{
81+
// outputs multiple lines to the console (adding "\n" at the end of each line)
82+
$output->writeln([
83+
'User Creator',
84+
'============',
85+
'',
86+
]);
87+
88+
// outputs a message followed by a "\n"
89+
$output->writeln('Whoa!');
90+
91+
// outputs a message without adding a "\n" at the end of the line
92+
$output->write('You are about to ');
93+
$output->write('create a user.');
94+
}
95+
96+
Agora, tente executar o comando:
97+
98+
.. code-block:: terminal
99+
100+
$ php bin/console app:create-user
101+
User Creator
102+
============
103+
104+
Whoa!
105+
You are about to create a user.
106+
107+
Entrada de Console
108+
------------------
109+
110+
Use opções de entrada ou argumentos para passar informações ao comando::
111+
112+
use Symfony \ Component \ Console \ Input \ InputArgument;
113+
114+
use Symfony\Component\Console\Input\InputArgument;
115+
116+
// ...
117+
protected function configure()
118+
{
119+
$this
120+
// configure an argument
121+
->addArgument('username', InputArgument::REQUIRED, 'The username of the user.')
122+
// ...
123+
;
124+
}
125+
126+
// ...
127+
public function execute(InputInterface $input, OutputInterface $output)
128+
{
129+
$output->writeln([
130+
'User Creator',
131+
'============',
132+
'',
133+
]);
134+
135+
// retrieve the argument value using getArgument()
136+
$output->writeln('Username: '.$input->getArgument('username'));
137+
}
138+
139+
Agora, você pode passar o nome de usuário para o comando:
140+
141+
.. code-block:: terminal
142+
143+
$ php bin/console app:create-user Wouter
144+
User Creator
145+
============
146+
147+
Username: Wouter
148+
149+
.. seealso::
150+
151+
Leia :doc:`/console/input` para obter mais informações sobre as opções e argumentos
152+
de console.
153+
154+
Obter Serviços do Container de Serviços
155+
---------------------------------------
156+
157+
Para realmente criar um novo usuário, o comando tem que acessar alguns
158+
:doc:`serviços </service_container>`. Isso pode ser realizado fazendo o comando
159+
estender a :class:`Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand`
160+
::
161+
162+
// ...
163+
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
164+
165+
class CreateUserCommand extends ContainerAwareCommand
166+
{
167+
// ...
168+
169+
protected function execute(InputInterface $input, OutputInterface $output)
170+
{
171+
// ...
172+
173+
// access the container using getContainer()
174+
$userManager = $this->getContainer()->get('app.user_manager');
175+
$userManager->create($input->getArgument('username'));
176+
177+
$output->writeln('User successfully generated!');
178+
}
179+
}
180+
181+
Agora, depois de ter criado os serviços e a lógica necessária, o comando irá executar
182+
o método ``create()`` do serviço ``app.user_manager`` e o usuário
183+
será criado.
184+
185+
Ciclo de Vida do Comando
186+
------------------------
187+
188+
Os comandos possuem três métodos de ciclo de vida que são invocados durante a execução do
189+
do mesmo:
190+
191+
:method:`Symfony\\Component\\Console\\Command\\Command::initialize` *(opcional)*
192+
Esse método é executado antes dos métodos ``interact()`` e ``execute()``
193+
. Sua principal finalidade é inicializar variáveis ​​usadas pelos outros
194+
métodos do comando.
195+
196+
:method:`Symfony\\Component\\Console\\Command\\Command::interact` *(opcional)*
197+
Esse método é executado após o ``initialize()`` e antes do ``execute()``.
198+
Sua finalidade é verificar se estão faltando algumas das opções/argumentos
199+
e interativamente pedir ao usuário esses valores. Esse é o último lugar
200+
onde você pode pedir pelas opções/argumentos que estiverem faltando. Após esse
201+
comando, as opções/argumentos que estiverem faltando irão resultar em um erro.
202+
203+
:method:`Symfony\\Component\\Console\\Command\\Command::execute` *(obrigatório)*
204+
Esse método é executado após o ``interact()`` e ``initialize()``.
205+
Ele contém a lógica que você deseja que o comando execute.
206+
207+
.. _console-testing-commands:
208+
209+
Testando os Comandos
210+
--------------------
211+
212+
O Symfony oferece várias ferramentas para ajudar você a testar seus comandos. A mais
213+
útil é :class:`Symfony\\Component\\Console\\Tester\\CommandTester`
214+
. Ela usa as classes de entrada e saída especiais para facilitar o teste sem um
215+
console real::
216+
217+
// tests/AppBundle/Command/CreateUserCommandTest.php
218+
namespace Tests\AppBundle\Command;
219+
220+
use AppBundle\Command\CreateUserCommand;
221+
use Symfony\Bundle\FrameworkBundle\Console\Application;
222+
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
223+
use Symfony\Component\Console\Tester\CommandTester;
224+
225+
class CreateUserCommandTest extends KernelTestCase
226+
{
227+
public function testExecute()
228+
{
229+
self::bootKernel();
230+
$application = new Application(self::$kernel);
231+
232+
$application->add(new CreateUserCommand());
233+
234+
$command = $application->find('app:create-user');
235+
$commandTester = new CommandTester($command);
236+
$commandTester->execute(array(
237+
'command' => $command->getName(),
238+
239+
// pass arguments to the helper
240+
'username' => 'Wouter',
241+
242+
// prefix the key with a double slash when passing options,
243+
// e.g: '--some-option' => 'option_value',
244+
));
245+
246+
// the output of the command in the console
247+
$output = $commandTester->getDisplay();
248+
$this->assertContains('Username: Wouter', $output);
249+
250+
// ...
251+
}
252+
}
253+
254+
.. tip::
255+
256+
Você também pode testar uma aplicação inteira de console usando
257+
:class:`Symfony\\Component\\Console\\Tester\\ApplicationTester`.
258+
259+
.. note::
260+
261+
Ao usar o componente Console em um projeto independente, use
262+
:class:`Symfony\\Component\\Console\\Application <Symfony\\Component\\Console\\Application>`
263+
e estenda o normal ``\PHPUnit_Framework_TestCase``.
264+
265+
Para poder utilizar o contêiner de serviço totalmente configurado para seus testes de console
266+
você pode estender o seu teste de
267+
:class:`Symfony\\Bundle\\FrameworkBundle\\Test\\KernelTestCase`::
268+
269+
// ...
270+
use Symfony\Component\Console\Tester\CommandTester;
271+
use Symfony\Bundle\FrameworkBundle\Console\Application;
272+
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
273+
274+
class CreateUserCommandTest extends KernelTestCase
275+
{
276+
public function testExecute()
277+
{
278+
$kernel = $this->createKernel();
279+
$kernel->boot();
280+
281+
$application = new Application($kernel);
282+
$application->add(new CreateUserCommand());
283+
284+
$command = $application->find('app:create-user');
285+
$commandTester = new CommandTester($command);
286+
$commandTester->execute(array(
287+
'command' => $command->getName(),
288+
'username' => 'Wouter',
289+
));
290+
291+
$output = $commandTester->getDisplay();
292+
$this->assertContains('Username: Wouter', $output);
293+
294+
// ...
295+
}
296+
}
297+
298+
Saiba mais
299+
----------
300+
301+
.. toctree::
302+
:maxdepth: 1
303+
:glob:
304+
305+
console/*
306+
307+
O componente Console também contém um conjunto de "helpers" - pequenas ferramentas
308+
capazes de ajudá-lo com tarefas diferentes:
309+
310+
* :doc:`/components/console/helpers/questionhelper`: interativamente pedir informações ao usuário
311+
* :doc:`/components/console/helpers/formatterhelper`: personalizar a colorização de saída
312+
* :doc:`/components/console/helpers/progressbar`: mostrar uma barra de progresso
313+
* :doc:`/components/console/helpers/table`: exibir dados tabulares como uma tabela

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /