Usando phulp-server

Há um tempo atrás, por uma necessidade de projeto, criei uma ferramenta em PHP análoga ao GulpJS, a qual eu dei o nome de phulp. As razões para a criação dessa ferramenta estão nesse post: https://reisraff.github.io/#!/posts/1/5.

Ultimamente, me surgiu a necessidade de ter um task “watcher”, onde, ao atualizar uma stack de arquivos definidos, seja executado uma clousure, e pegar o resultado dessa clousure e servir em tempo real via HTTP. Ou seja, para que eu possa acompanhar o resultado final das mudanças sem ter a necessidade de fazer um build. Para isso, implementei o “watch” no phulp e criei o phulp-server que tem a flexibilidade de ser usado em conjunto com o phulp ou standalone.

Na concepção do Phulp-server me deparei com o problema de precisar usar threads e, em geral, as compilações de PHP não as tem por padrão. Usar threads é o que faria a mágica de build e servir ao mesmo tempo. Para resolver o problema, recorri ao react-php, onde consigo, através de pipes, no meu caso, receber as saídas de um comando (nesse caso o “php -S”), realizar algo com essa saída, e executar alguma outra tarefa (nesse caso o “watch”).

O phulp-server tem como dependência o “React\EventLoop\LoopInterface”. Se sua aplicação usa o React, você também poderá usar o phulp-server. Exemplo de uso:

Baixando com o composer:

composer require reisraff/phulp-server

Escrevendo o `phulpfile.php`

<?php

use Phulp\Server\Server;

$phulp->task('serve', function ($phulp) use ($config) {
$server = new Server(
[
'address' => 'localhost',
'port' => '8000',
'router' => 'router.php',
'path' => $config['project_path'],
],
$phulp->getLoop() // here phulp returns the `LoopInterface`
);
});

Rodando o comando no terminal:

vendor/bin/phulp serve

Pronto ;)

Como é feito com o react-php, se pode ter mais de uma instância do phulp-server.

Você também pode ver esse post em:
Blog Pessoal