「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > FetchPHP : Javascript のフェッチと真の非同期を PHP にもたらすアップデート (スーパーパワーが追加されました!)

FetchPHP : Javascript のフェッチと真の非同期を PHP にもたらすアップデート (スーパーパワーが追加されました!)

2024 年 11 月 4 日に公開
ブラウズ:510

FetchPHP : An Update To Bring Javascript

PHP 愛好家の皆さん、こんにちは。 ?深夜にコーディングをしていて、PHP で HTTP リクエストと格闘していて、「これが JavaScript のフェッチと同じくらい簡単だったらなあ」と思ったことを覚えていますか?さて、コーヒーを飲んで、いくつかのエキサイティングなニュースを読む準備をしてください。FetchPHP 2.0 が登場し、PHP HTTP リクエストが十分に油を注いだマシンよりもスムーズになるからです!

起源の物語: フェッチから超強力なフェッチへ

これをイメージしてください: 今は 2023 年で、私はお気に入りのコーヒー ショップに座って、特大のカフェラテを飲んでいます... いや、冗談です。実際、私は家でエルデンリングのセッションに膝まで浸かっていたのですが、突然インスピレーションが湧きました。 「JavaScript のフェッチのシンプルさを PHP の世界に持ち込めたらどうだろう?」と私は考えました。そしてまさにそのようにして、FetchPHP が誕生しました。 (心配しないでください、私はそのボス戦を先に終わらせました。)

しかし、ここでインスピレーションが重要になります。それはバージョン 1.0 にとどまりません。開発者が FetchPHP を採用しているのを見て、限界をさらに押し上げることができることに気づきました。そこで、私はコーディングの洞窟 (ホーム オフィスにすぎませんでしたが、しばらくすると洞窟のように感じました) に閉じ込められ、不健康な量のエナジードリンクでエネルギーを補給し、FetchPHP 2.0 で登場しました。

FetchPHP 2.0 の新機能?

このアップデートにはスイス アーミー ナイフよりも多くの機能が満載されているので、しっかりと準備してください。バージョン 2.0 の特徴は次のとおりです:

  1. 真の非同期スーパーパワー: PHP の非同期がビーチサンダルでマラソンを走ろうとしているように感じたときのことを覚えていますか?そんな日々はもう終わりました! FetchPHP 2.0 は、PHP Fibers (兄弟パッケージである Matrix のおかげ) を活用して、真のノンブロッキング同時実行性を実現します。コードにロケットブーツを与えるようなものです。私が自分で構築したパッケージである Matrix は、PHP Fiber を利用することで非同期タスク管理を簡素化します。 Matrix を使用すると、FetchPHP はこれまでにない非同期タスクを実行できます。

  2. JavaScript 開発者は家にいるように感じてください: JavaScript 開発者が家から出たことがないように感じられる async()/await のような構文を導入しました。あまりにも馴染み深いので、PHP を書いていることを忘れてしまうかもしれません!

  3. Fluent API for the Win: リクエストの作成が、お気に入りのバリスタのラテアートよりもスムーズになりました。 Laravel の HTTP クライアントからインスピレーションを得た、新しい流暢な API を使用してメソッドをチェーンします。とてもエレガントで、実際に自動的に記述されます!

  4. ステロイドでのエラー処理: 新しいカスタマイズ可能な ErrorHandler を使用すると、エラーの管理はもはや悪夢ではありません。タスクをその場で一時停止、再開、再試行、またはキャンセルします。 HTTP リクエストのタイムマシンのようなものです!

  5. Guzzle Who?: 私たちは依然として Guzzle に感謝していますが (Guzzle は内部で同期リクエストを強化しています)、FetchPHP 2.0 は物事をまったく新しいレベルに引き上げます。まるで、Guzzle をジムに連れて行き、ほうれん草を食べさせ、新しい技を教えたようなものです!

でも待ってください、もっとたくさんあります

バージョン 1.0 のとき、私たちは皆、単純なリクエストを行うことに興奮していたことを覚えていますか? FetchPHP 2.0 はプロのように複雑なシナリオを処理する準備ができているので、キーボードを離さないでください。 HTTP ロジックをすべて書き直したくなるような例をいくつか見てみましょう (心配しないでください。書き換えるかどうかは判断しません):

// 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));

この美しさを見てください!プロキシ、再試行、タイムアウトなどを処理しながら、すべて非同期を維持し、見栄えを良くしています。

FetchPHP vs Guzzle: 待ち望んでいた対決

まあ、あなたが何を考えているかはわかります。 「でも、私は Guzzle を何年も使ってきました。なぜ切り替える必要があるのでしょう?」さて、FetchPHP 2.0 が PHP HTTP クライアントの新たなヘビー級チャンピオンである理由をこれから詳しく説明するので、しっかりしてください。

1. 真の非同期パワー

  • Guzzle: 非同期操作に Promise を使用します。それは伝書鳩を送って、それが戻ってくることを期待するようなものです。
  • FetchPHP: PHP ファイバーを活用して真のノンブロッキング同時実行を実現します。私のマトリックス パッケージの力のおかげで、超音速ジェットのチームを自由に使えるようなものです!

2. アットホームな構文

  • Guzzle: 従来の PHP 構文。よく知られていますが、冗長になる場合があります。
  • FetchPHP: JavaScript のような async/await 構文。非常に直感的なので、フロントエンド コードを書いているように思えます (ただし、PHP のすべての機能を使用しています)。

3. 流暢なAPI

  • Guzzle: 適切な API を提供しますが、複雑な操作には少し硬く感じる場合があります。
  • FetchPHP: 最も複雑なリクエストでも美しい詩のように読めるチェーン可能なメソッド。

4. エラー処理とタスク管理

  • Guzzle: 基本的な Promise ベースのエラー処理。
  • FetchPHP: カスタマイズ可能な ErrorHandler による高度なエラー処理。タスクをその場で一時停止、再開、再試行、またはキャンセルします。 HTTP リクエストに魔法の杖を持っているようなものです。

5. 学習曲線

  • Guzzle: 特に複雑な非同期操作の場合、学習曲線が急峻になります。
  • FetchPHP: JavaScript のフェッチを理解していれば、すでに半分まで到達したことになります。そうしないと、「非同期」と言うよりも早く理解することになります。

6. パフォーマンス

  • Guzzle: 同期リクエストでは良好なパフォーマンス、非同期では適切なパフォーマンス。
  • FetchPHP: 同期リクエストと非同期リクエストの両方に最適化されています。自転車からロケット船にアップグレードするようなものです。

ここで要点を理解するための簡単な比較を示します:

// 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');

違いがわかりますか? FetchPHP は、複雑なアプリケーションに必要なパワーと柔軟性を維持しながら、最新の JavaScript の優雅さを PHP の世界にもたらします。

FetchPHP 2.0 がすべてに疑問を抱かせる理由

あなたが指揮者で、HTTP リクエストがオーケストラであると想像してください。 Guzzle を使用すると、素晴らしい仕事ができますが、一度に演奏できる楽器は 1 つまでに制限されます。 FetchPHP 2.0?それはあなたをマエストロに変え、非同期リクエストの完全な交響曲を指揮し、それぞれが完璧なハーモニーを奏でます。

FetchPHP 2.0 が、必要だと思っていなかった HTTP クライアントである理由は次のとおりです:

  1. 真の非同期: 私たちは単に約束をしてごまかしているだけではありません。これは PHP Fibers と Matrix を利用した本物です。
  2. 使い慣れた構文: JavaScript 開発者はすぐに使いこなせるでしょうが、PHP 開発者はなぜこれがいつもこんなに簡単ではなかったのか不思議に思うでしょう。
  3. 柔軟なエラー処理: 要求をその場で再試行、一時停止、再開、またはキャンセルします。 HTTP リクエストをリモコンで操作できるようなものです。
  4. 強力でありながらシンプル: 複雑な操作は、ピザを注文するのと同じくらい簡単になりました (地元のピッツェリアによっては、さらに簡単になる可能性があります)。

未来は明るい (そして非同期)

FetchPHP 2.0 は単なるアップデートではありません。これは、PHP での HTTP リクエストの処理方法における革命です。小規模な API を構築している場合でも、数千の同時リクエストを処理する必要がある大規模なシステムを構築している場合でも、FetchPHP 2.0 があなたの力になります。

それで、非同期革命に参加する準備はできていますか?私たちの GitHub リポジトリにアクセスして、スターを付けて (私たちはそれが大好きです!)、PHP アプリケーションをより高速に、より効率的に、そしてあえて言えば、もっと楽しく作業できるようにしていきましょう!

FetchPHP 2.0 の世界では、唯一の制限はあなたの想像力 (そしておそらくサーバーのリソースですが、それは別の日の問題です) であることを忘れないでください。

コーディングを頑張ってください。リクエストが非同期になりますように! ?✨


追伸問題が発生した場合、または FetchPHP をさらに素晴らしいものにするためのアイデアがある場合は、ためらわずに問題をオープンするか、プル リクエストを送信してください。一度に 1 つのリクエストを実行して、PHP の世界をより良い場所にしましょう!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/thavarshan/fetchphp-20-an-update-to-bring-javascripts-fetch-true-async-to-php-now-with-superpowers-3g1m?1権利侵害、削除するには[email protected]までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3