quinta-feira, 30 de maio de 2013

phpsh um REPL para PHP

Vocês sabem o que a sigla REPL significa? Ela significa read-eval-print-loop. Ela é usada para denominar um abiente shell de programação interativa. É como um programa de linha de comando onde você pudesse executar os comandos de sua linguagem de programação favorita e observar o que cada comando faz imediatamente depois de apertar Enter. Diversas linguagens de programação possuem seus REPL's como Python, Ruby, Perl, Scala, Groovy, Forth, Lisp, Javascript etc. Aliás é bem provável que você que está lendo este texto agora já tenha um ambiente REPL para Javascript instalado e funcional, afinal, os browsers mais usados como Firefox, Chrome e Iternet Explorer possuem interpretadores Javascript. Aperte F12 no Chrome e Internet Explorer ou Ctrl + Shift + K no firefox e procure pela aba console.

O PHP também já vem com um REPL instalado. Se você executar o seguinte comando:
php -a
Verá que ele irá abrir o "Interative Shell". Mas infelizmente ele é muito limitado, no meu caso por exemplo aparece um til(~) cada vez que aperto a tecla Delete e o autoloading não está disponível. E no windows eu diria que ele simplesmente não funciona.

O pessoal do Facebook criou um REPL bem legal para PHP. Chamdo phpsh ele é implementado na maior parte em Python(pecado mortal!). Mas enfim, ele tem recursos legais como autoloading, opção para carregar código já existente e a tecla Delete funciona!

O endereço com instruções para instalá-lo está aqui. Para baixá-lo eu simplesmente clonei o repositório usando o git, mas você também pode obtê-lo através de um arquivo zip na mesma página.

Existem alguns módulos PHP que precisam estar instalados, são eles: pcre, posix e tokenizer. No caso do Python também existem algumas dependências. No meu caso tive que instalar o easy_install para instalar o pacote readline. Para instalar o easy_install tive que instalar o pacote python-setuptools. Depois de instalar o setuptools basta usar o comando para instalar o readline:
sudo easy_install readline
E depois segui as instruções para instalar globalmente:
cd phpsh (precisamos entrar no diretório raiz do phpsh depois de baixá-lo)

python setup.py build
sudo python setup.py install
phpsh

E pronto! Você já pode escrever código PHP e apertar enter para ver o resultado. Eu particularmente acho muito úteis estes ambientes REPL. Quando eu quero ver o que uma função faz ou simplesmente testar algumas poucas linhas de código é muito fácil abrir o terminal e já começar a escrever o código e poucos momentos depois já ver o resultado. Espero que isto ajude vocês tanto quanto me ajuda.