PHP em modo interativo

Artigo que apresenta algumas formas de executar o PHP de forma interativa, através do terminal de comandos.

Introdução

Embora o PHP seja especialmente criado para atender requisições Web, ele também pode ser executado em um terminal de comandos (prompt), através do php cli. Pelo terminal, podemos executá-lo de diferentes formas e, neste post, veremos quais são elas.

Executando um script pelo terminal

Para executar um script PHP pelo terminal, basta executar o comando "php" seguido do caminho para o arquivo a ser executado. Por exemplo:

$ php teste.php

Executando um código PHP pelo terminal

Para executar um código PHP pelo terminal, basta executar o comando "php" passando o parâmetro -r, seguido do comando a ser executado. Note que o comando precisa estar delimitado por aspas simples ou duplas. Não é permitido usar os delimitadores de código PHP para delimitar os comandos (como o <?php e ?>), embora você possa encerrá-lo e abrí-lo novamente. Veja um exemplo:

$ php -r 'var_dump(substr("abcde", 2));'

Isso pode ser útil para realizar pequenos testes rápidos pelo terminal, sem a necessidade de criar um script só para ver o resultado.

Um inconveniente é que, se você usa aspas duplas, e pretende executar algum comando que envolva variáveis, você precisa escapar o símbolo "$". Além disso, se pretende usar as mesmas aspas usadas para delimitar o comando, também precisa escapá-la, conforme o exemplo:

$ php -r "\$a = 1; echo \$a . \"2\";"

Observe que podemos executar mais de um comando. Basta delimitá-los pelo ";".

Executando um código PHP pelo terminal interativo

Para executar uma sequência de códigos PHP pelo terminal, de forma interativa, basta executar o comando "php" passando o parâmetro -a. Por exemplo:

$ php -a

Ao executar este comando, será mostrado um prompt de PHP, conforme exemplo abaixo:

Interactive mode enabled

php >

Neste prompt de PHP, você pode executar comandos do PHP e o resultado é mostrado assim que um comando é completamente interpretado. Neste caso, podemos criar variáveis, executar loops e imprimir resultados com mais facilidade que a forma anterior (com o -r). Isso porque não precisamos nos preocupar com escapar as aspas e as variáveis.

Veja um exemplo de um loop executado no prompt interativo:

php > for ($i = 0; $i < 10; $i++) {
php { echo $i . "\n";
php { }
0
1
2
3
4
5
6
7
8
9
php > quit

Observe que após adicionarmos a primeira linha, abrimos uma chave. Com isso, o PHP muda o prompt para "php {". Assim que fechamos as chaves, pela terceira linha inserida, o PHP executa todo o bloco definido.

Para encerrar o modo interativo, basta executar o comando "exit" ou "quit". Note que ele é diferente de executar o comando do PHP "exit(0);". Neste caso, só estará sendo definido o valor retornado para o shell.

4 comentários

Diego Figueiró Dias disse...

No Windows funciona um pouco diferente. Para fazer funcionar de modo similar ao artigo, vc precisa colocar as tags de abertura e fechamento normalmente e após concluir o comando, dar Ctrl+Z, para que o Windows reconheça o fim do arquivo. Um exemplo:


^Z (Aqui é o Ctrl+Z)

Assim ele executa o echo. Mais informações acesse aqui http://php.net/manual/pt_BR/features.commandline.interactive.php.

Diego Figueiró Dias disse...

OBS.: O comentário literalmente comeu minhas tags PHP, então acesse o link e dê um find em 'spencer at aninternetpresence dot net' que tem o exemplo.

Rubens Takiguti Ribeiro (autor do blog) disse...

Olá Diego, obrigado pelo comentário.

Na verdade, acho que essa "diferença" que você relatou em ambientes Windows na verdade é um bug ainda não resolvido. Veja:
https://bugs.php.net/bug.php?id=51695

Também presenciei este comportamento no Linux, quando o PHP não é compilado com a opção "--with-readline".