Desenvolvimento

22 fev, 2016

Chamando o backend do Silex pela linha de comando. Criando ferramentas SAAS para linha de comando

Publicidade

Algumas vezes, precisamos criar ferramentas para a linha de comando. Podemos construí-las utilizando diferentes tecnologias. No mundo Symfony, existe o Symfony Console. Me sinto muito bem usando-o.

Mas se você quer distribuir a sua ferramenta, precisará enfrentar um “problema”: o usuário terá que ter o PHP instalado. Isso parece algo trivial, mas ele não está instalado em todos os computadores.

Podemos usar NodeJS para construir a ferramenta. Atualmente, NodeJS é um padrão de-facto, mas ainda assim você teria o problema. Outro “problema” é como distribuir uma nova versão da sua ferramenta. Problemas por todos os lados.

Ferramentas de Software As A Service (SAAS) são ótimas. Podemos construir um serviço (um serviço web based, por exemplo), e ainda é possível monetizar o serviço com um tipo de plano pago ou coisa assim. Com o SAAS não é preciso se preocupar em redistribuir o software a cada release. Mas, o que acontece quando seu serviço é a linha de comando um?

Imagine, por exemplo, que vamos construir um serviço para converter texto para uppercase (eu realmente acho essa uma ideia milionária!).

Podemos criar um exemplo Silex simples para converter para strings upper case.

<?php
include __DIR__ . "/../vendor/autoload.php";
 
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
 
$app = new Application();
$app->post("/", function (Request $request) {
    return strtoupper($request->getContent());
});
$app->run();

E agora só precisamos chamar esse serviço a partir da linha de comando. Podemos usar curl, por exemplo, e converter um arquivo de conteúdo para upper case:

cat myfile.txt | curl -d @- localhost:8080 > MYFILE.txt

Você pode ver o exemplo na minha conta no GitHub.

***

Gonzalo Ayuso faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://gonzalo123.com/2016/01/25/calling-silex-backend-from-command-line-creating-saas-command-line-tools/