안녕하세요, PHP 매니아 여러분! ? 밤늦게 코딩을 하면서 PHP의 HTTP 요청과 씨름하면서 "이것이 JavaScript의 가져오기만큼 쉬웠더라면"이라고 생각했던 때를 기억하십니까? 자, 커피를 마시고 흥미로운 소식을 준비하세요. FetchPHP 2.0이 출시되어 PHP HTTP 요청을 기름칠이 잘 된 기계보다 더 원활하게 만들어줄 것입니다!
생각해 보세요. 지금은 2023년입니다. 저는 제가 가장 좋아하는 커피숍에 앉아 특대형 라떼를 홀짝이고 있습니다... 아니, 농담이에요. 나는 실제로 집에서 무릎까지 꿇고 Elden Ring 세션을 진행하고 있었는데 갑자기 영감이 떠올랐습니다. "만약 우리가 PHP 세계에 JavaScript 가져오기의 단순성을 가져올 수 있다면 어떨까?"라고 생각했습니다. 그리고 그렇게 해서 FetchPHP가 탄생했습니다. (걱정하지 마세요. 보스전은 제가 먼저 끝냈습니다.)
하지만 영감에 관한 것은 버전 1.0에서 끝나지 않습니다. 개발자들이 FetchPHP를 채택하는 것을 보면서 우리가 한계를 더욱 뛰어넘을 수 있다는 것을 깨달았습니다. 그래서 저는 코딩 동굴에 몸을 가두고(괜찮습니다. 그냥 홈 오피스였지만 시간이 지나면 동굴처럼 느껴졌습니다) 건강에 해로운 양의 에너지 드링크를 마시고 FetchPHP 2.0을 출시했습니다.
이 업데이트에는 스위스 군용 칼보다 더 많은 기능이 포함되어 있으므로 버클을 채우세요! 버전 2.0의 요리 내용은 다음과 같습니다.
진정한 비동기 슈퍼파워: PHP의 비동기가 슬리퍼를 신고 마라톤을 뛰는 것 같았던 때를 기억하시나요? 그런 시절은 지나갔습니다! FetchPHP 2.0은 PHP Fibers(형제 패키지인 Matrix 덕분에)를 활용하여 진정한 비차단 동시성을 제공합니다. 이는 코드에 로켓 부츠를 주는 것과 같습니다! 내가 직접 만든 패키지인 Matrix는 PHP Fibers를 활용하여 비동기 작업 관리를 단순화합니다. Matrix를 사용하면 FetchPHP는 이전과는 전혀 다른 방식으로 비동기 작업을 실행할 수 있습니다.
JavaScript 개발자 여러분, 집처럼 편안하게: JavaScript 개발자가 집을 떠나지 않은 것처럼 느끼게 해주는 async()/await 유사 구문을 도입했습니다. 너무 익숙해서 PHP를 작성하고 있다는 사실조차 잊어버릴 수도 있습니다!
Win용 Fluent API: 이제 좋아하는 바리스타의 라떼 아트보다 요청 작성이 더 매끄러워졌습니다. Laravel의 HTTP 클라이언트에서 영감을 받은 새로운 Fluent 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을 사용하면 훌륭한 작업을 수행할 수 있지만 한 번에 하나의 악기만 연주할 수 있습니다. FetchPHP 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