嘿,PHP 爱好者! ?还记得有一次您在深夜编码,用 PHP 处理 HTTP 请求,并想:“如果这像 JavaScript 的 fetch 一样简单就好了”?好吧,喝杯咖啡,准备好听一些令人兴奋的消息吧,因为 FetchPHP 2.0 已经到来,它将让您的 PHP HTTP 请求比运转良好的机器更顺畅!
想象一下:现在是 2023 年,我坐在我最喜欢的咖啡店里,喝着一杯超大拿铁咖啡……不,只是开玩笑。事实上,我当时正在家里,沉浸在《Elden Ring》的练习中,突然,灵感袭来。我想:“如果我们可以将 JavaScript 获取的简单性引入到 PHP 世界呢?”就这样,FetchPHP 诞生了。 (别担心,我先打完了那场boss。)
但这就是关于灵感的事情——它并不止于 1.0 版本。当我看到开发人员拥抱 FetchPHP 时,我意识到我们可以进一步挑战极限。所以,我把自己锁在我的编码洞穴里(好吧,这只是我的家庭办公室,但一段时间后感觉就像一个洞穴),喝了不健康的能量饮料,然后带着 FetchPHP 2.0 出现了。
系好安全带,因为此更新包含比瑞士军刀更多的功能!以下是 2.0 版本中的内容:
真正的异步超级能力:还记得 PHP 中的异步感觉就像穿着人字拖跑马拉松吗?那些日子已经一去不复返了! FetchPHP 2.0 利用 PHP Fibers(感谢我们的兄弟包 Matrix)来提供真正的非阻塞并发。这就像给你的代码一双火箭靴! Matrix 是我自己构建的一个包,它通过利用 PHP Fibers 简化了异步任务管理。借助 Matrix,FetchPHP 可以前所未有地运行异步任务。
JavaScript 开发人员,宾至如归:我们引入了类似 async()/await 的语法,这将使 JavaScript 开发人员感觉从未离开过家。它是如此熟悉,您可能会忘记您正在编写 PHP!
Win 的流畅 API:构建请求现在比您最喜欢的咖啡师的拿铁艺术更流畅。受到 Laravel 的 HTTP 客户端的启发,将方法与我们新的流畅 API 结合在一起。太优雅了,几乎是自己写的!
类固醇上的错误处理:使用我们新的可定制ErrorHandler,管理错误不再是一场噩梦。即时暂停、恢复、重试或取消任务。这就像为您的 HTTP 请求配备了一台时间机器!
Guzzle Who?:虽然我们仍然向 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));
看看那美女!它可以处理代理、重试、超时等,同时保持异步并且看起来很漂亮。
现在,我知道你在想什么。 “但我已经使用 Guzzle 多年了!我为什么要换?”好吧,系好安全带,因为我们即将深入探讨为什么 FetchPHP 2.0 是 PHP HTTP 客户端的新重量级冠军。
这里有一个快速比较来说明这一点:
// 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 世界,同时保持复杂应用程序所需的功能和灵活性。
想象一下您是一名指挥,您的 HTTP 请求就是您的管弦乐队。使用 Guzzle,您可以做得很好,但您只能一次演奏一种乐器。获取PHP 2.0?它将您变成一位大师,指挥异步请求的完整交响曲,每个请求都完美和谐地演奏。
这就是为什么 FetchPHP 2.0 是您永远不知道您需要的 HTTP 客户端:
FetchPHP 2.0 不仅仅是一个更新;这是我们在 PHP 中处理 HTTP 请求方式的一场革命。无论您是构建小型 API 还是需要处理数千个并发请求的大型系统,FetchPHP 2.0 都能为您提供支持。
那么,您准备好加入异步革命了吗?前往我们的 GitHub 存储库,给我们一颗星(我们喜欢这些!),然后开始让您的 PHP 应用程序更快、更高效,而且,我敢说,使用起来更有趣!
请记住,在 FetchPHP 2.0 的世界中,唯一的限制是您的想象力(也许还有您服务器的资源,但这是另一天的问题)。
祝您编码愉快,祝您的请求永远异步! ?✨
附注如果您遇到任何问题或有让 FetchPHP 变得更加出色的想法,请随时提出问题或提交拉取请求。让我们一次一个请求,让 PHP 世界变得更美好!
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3