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 “ReactEventLoopLoopInterface”. 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 PhulpServerServer; $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
Medium
Powered by WPeMatico