PHP SP

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 “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