"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > FetchPHP: uma atualização para trazer o Fetch e o True Async do Javascript para o PHP (agora com superpoderes!)

FetchPHP: uma atualização para trazer o Fetch e o True Async do Javascript para o PHP (agora com superpoderes!)

Publicado em 2024-11-04
Navegar:329

FetchPHP : An Update To Bring Javascript

Olá, entusiastas de PHP! ? Lembra daquela vez que você estava programando tarde da noite, lutando com solicitações HTTP em PHP, e pensou: "Se ao menos isso fosse tão fácil quanto a busca do JavaScript"? Bem, pegue seu café e prepare-se para novidades interessantes, porque o FetchPHP 2.0 está aqui e está prestes a tornar suas solicitações PHP HTTP mais suaves do que uma máquina bem lubrificada!

A história da origem: da busca à busca superpoderosa

Imagine isto: é 2023 e estou sentado em minha cafeteria favorita, tomando um café com leite extragrande... Não, estou brincando. Na verdade, eu estava em casa, mergulhado até os joelhos em uma sessão de Elden Ring, quando de repente a inspiração surgiu. “E se”, pensei, “pudéssemos trazer a simplicidade da busca do JavaScript para o mundo do PHP?” E assim nasceu o FetchPHP. (Não se preocupe, terminei aquela luta contra o chefe primeiro.)

Mas aqui está a questão da inspiração – ela não para na versão 1.0. Ao observar os desenvolvedores adotando o FetchPHP, percebi que poderíamos ir além ainda mais. Então, me tranquei em minha caverna de codificação (ok, era apenas meu escritório em casa, mas parecia uma caverna depois de um tempo), abastecido por uma quantidade prejudicial à saúde de bebidas energéticas, e emergi com o FetchPHP 2.0.

O que há de novo no FetchPHP 2.0?

Apertem os cintos, porque esta atualização vem com mais recursos do que um canivete suíço! Aqui está o que está acontecendo na versão 2.0:

  1. Verdadeiros superpoderes assíncronos: Lembra quando o assíncrono em PHP parecia tentar correr uma maratona de chinelos? Esses dias acabaram! O FetchPHP 2.0 aproveita PHP Fibers (graças ao nosso pacote irmão, Matrix) para fornecer simultaneidade verdadeira e sem bloqueio. É como dar ao seu código um par de botas-foguete! Matrix, um pacote que eu mesmo construí, simplifica o gerenciamento de tarefas assíncronas utilizando PHP Fibers. Com o Matrix, o FetchPHP pode executar tarefas assíncronas como nunca antes.

  2. Desenvolvedores de JavaScript, sintam-se em casa: introduzimos uma sintaxe semelhante a async()/await que fará com que os desenvolvedores de JavaScript sintam que nunca saíram de casa. É tão familiar que você pode esquecer que está escrevendo PHP!

  3. API fluente para o Win: criar solicitações agora é mais fácil do que a arte com leite do seu barista favorito. Encadeie métodos com nossa nova API fluente, inspirada no cliente HTTP do Laravel. É tão elegante que praticamente se escreve sozinho!

  4. Tratamento de erros com esteróides: Com nosso novo ErrorHandler personalizável, gerenciar erros não é mais um pesadelo. Pause, retome, tente novamente ou cancele tarefas instantaneamente. É como ter uma máquina do tempo para suas solicitações HTTP!

  5. Guzzle Who?: Embora ainda tiremos o chapéu para o Guzzle (ele está alimentando nossas solicitações síncronas nos bastidores), o FetchPHP 2.0 leva as coisas a um nível totalmente novo. É como se tivéssemos levado Guzzle para a academia, alimentado com espinafre e ensinado novos truques!

Mas espere, há mais

Lembra que na versão 1.0 estávamos todos entusiasmados em fazer solicitações simples? Bem, segure seus teclados, porque o FetchPHP 2.0 está pronto para lidar com cenários complexos como um profissional. Vejamos alguns exemplos que farão você querer reescrever toda a sua lógica HTTP (não se preocupe, não julgaremos se você fizer isso):

// Async request with all the bells and whistles
async(fn () => fetch()
    ->baseUri('https://api.coolstartup.com')
    ->withHeaders(['X-API-Key' => 'supersecret'])
    ->withBody(json_encode(['feature' => 'awesome']))
    ->withProxy('tcp://localhost:8080')
    ->timeout(5)
    ->retry(3, 1000)
    ->post('/unicorns'))
    ->then(fn ($response) => processUnicornData($response->json()))
    ->catch(fn ($e) => logUnicornError($e));

Olha que beleza! Ele lida com proxies, novas tentativas, tempos limite e muito mais, tudo isso enquanto permanece assíncrono e tem uma aparência linda.

FetchPHP vs Guzzle: o confronto que você estava esperando

Agora, eu sei o que você está pensando. "Mas uso o Guzzle há anos! Por que deveria mudar?" Bem, aperte o cinto, porque estamos prestes a descobrir por que o FetchPHP 2.0 é o novo campeão peso-pesado dos clientes PHP HTTP.

1. Verdadeiros poderes assíncronos

  • Guzzle: usa promessas para operações assíncronas. É como enviar um pombo-correio e esperar que ele volte.
  • FetchPHP: aproveita PHP Fibers para uma verdadeira simultaneidade sem bloqueio. É como ter uma equipe de jatos supersônicos à sua disposição, graças ao poder do meu pacote Matrix!

2. Sintaxe que parece em casa

  • Guzzle: Sintaxe PHP tradicional. É familiar, mas pode ficar detalhado.
  • FetchPHP: sintaxe assíncrona/aguardada semelhante ao JavaScript. É tão intuitivo que você pensará que está escrevendo código frontend (mas com todo o poder do PHP).

3. API Fluente

  • Guzzle: Oferece uma API decente, mas pode parecer um pouco rígida para operações complexas.
  • FetchPHP: métodos encadeados que fazem com que até as solicitações mais complexas pareçam um lindo poema.

4. Tratamento de erros e gerenciamento de tarefas

  • Guzzle: tratamento de erros básico baseado em promessa.
  • FetchPHP: Tratamento avançado de erros com ErrorHandler personalizável. Pause, retome, tente novamente ou cancele tarefas instantaneamente. É como ter uma varinha mágica para suas solicitações HTTP.

5. Curva de aprendizagem

  • Guzzle: Curva de aprendizado mais acentuada, especialmente para operações assíncronas complexas.
  • FetchPHP: Se você conhece o fetch do JavaScript, já está na metade do caminho. Do contrário, você aprenderá mais rápido do que poderia dizer "assíncrono".

6. Desempenho

  • Guzzle: Bom desempenho para solicitações síncronas, decente para assíncronas.
  • FetchPHP: Otimizado para solicitações síncronas e assíncronas. É como passar de uma bicicleta para um foguete.

Aqui está uma comparação rápida para deixar claro:

// Guzzle
$promise = $client->requestAsync('GET', 'http://httpbin.org/get');
$promise->then(
    function ($response) {
        echo 'I completed! ' . $response->getBody();
    },
    function ($exception) {
        echo 'I failed! ' . $exception->getMessage();
    }
);

// FetchPHP

// using async/await syntax
async(fn () => fetch('http://httpbin.org/get'))
    ->then(fn ($response) => echo 'I completed! ' . $response->body())
    ->catch(fn ($e) => echo 'I failed! ' . $e->getMessage());

// or directly using the ClientHandler class
use Fetch\Http\ClientHandler;

(new ClientHandler())
    ->async()
    ->get('http://httpbin.org/get');

Vê a diferença? O FetchPHP traz a elegância do JavaScript moderno para o mundo PHP, ao mesmo tempo em que mantém o poder e a flexibilidade necessários para aplicativos complexos.

Por que o FetchPHP 2.0 fará você questionar tudo

Imagine que você é um maestro e suas solicitações HTTP são sua orquestra. Com o Guzzle, você está fazendo um ótimo trabalho, mas está limitado a tocar um instrumento por vez. Buscar PHP 2.0? Transforma você em um maestro, conduzindo uma sinfonia completa de pedidos assíncronos, com cada um tocando em perfeita harmonia.

Veja por que o FetchPHP 2.0 é o cliente HTTP que você nunca soube que precisava:

  1. True Async: Não estamos apenas fingindo com promessas. Este é o verdadeiro negócio, desenvolvido com PHP Fibers e Matrix.
  2. Sintaxe familiar: os desenvolvedores de JavaScript se sentirão em casa, e os desenvolvedores de PHP se perguntarão por que nem sempre foi tão fácil.
  3. Tratamento flexível de erros: tente novamente, pause, retome ou cancele solicitações instantaneamente. É como ter um controle remoto para suas solicitações HTTP.
  4. Poderoso, mas simples: operações complexas agora são tão fáceis quanto pedir uma pizza (talvez até mais fácil, dependendo da pizzaria local).

O futuro é brilhante (e assíncrono)

FetchPHP 2.0 não é apenas uma atualização; é uma revolução na forma como lidamos com solicitações HTTP em PHP. Esteja você construindo uma API pequena ou um sistema de grande escala que precisa lidar com milhares de solicitações simultâneas, o FetchPHP 2.0 está à sua disposição.

Então, você está pronto para se juntar à revolução assíncrona? Acesse nosso repositório GitHub, dê-nos uma estrela (nós amamos isso!) e comece a tornar seus aplicativos PHP mais rápidos, mais eficientes e, ouso dizer, mais divertidos de trabalhar!

Lembre-se, no mundo do FetchPHP 2.0, o único limite é a sua imaginação (e talvez os recursos do seu servidor, mas isso é um problema para outro dia).

Boa codificação e que suas solicitações sejam sempre assíncronas! ?✨


P.S. Se você tiver algum problema ou tiver ideias para tornar o FetchPHP ainda mais incrível, não hesite em abrir um problema ou enviar uma solicitação pull. Vamos tornar o mundo PHP um lugar melhor, uma solicitação de cada vez!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/thavarshan/fetchphp-20-an-update-to-bring-javascripts-fetch-true-async-to-php-now-with-superpowers-3g1m?1 Qualquer violação, entre em contato com [email protected] para excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3