"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > FetchPHP: Javascript&#s Fetch & True Async를 PHP로 가져오기 위한 업데이트(이제 초강력 기능 포함!)

FetchPHP: Javascript&#s Fetch & True Async를 PHP로 가져오기 위한 업데이트(이제 초강력 기능 포함!)

2024-11-04에 게시됨
검색:928

FetchPHP : An Update To Bring Javascript

안녕하세요, PHP 매니아 여러분! ? 밤늦게 코딩을 하면서 PHP의 HTTP 요청과 씨름하면서 "이것이 JavaScript의 가져오기만큼 쉬웠더라면"이라고 생각했던 때를 기억하십니까? 자, 커피를 마시고 흥미로운 소식을 준비하세요. FetchPHP 2.0이 출시되어 PHP HTTP 요청을 기름칠이 잘 된 기계보다 더 원활하게 만들어줄 것입니다!

기원 이야기: 가져오기에서 초강력 가져오기까지

생각해 보세요. 지금은 2023년입니다. 저는 제가 가장 좋아하는 커피숍에 앉아 특대형 라떼를 홀짝이고 있습니다... 아니, 농담이에요. 나는 실제로 집에서 무릎까지 꿇고 Elden Ring 세션을 진행하고 있었는데 갑자기 영감이 떠올랐습니다. "만약 우리가 PHP 세계에 JavaScript 가져오기의 단순성을 가져올 수 있다면 어떨까?"라고 생각했습니다. 그리고 그렇게 해서 FetchPHP가 탄생했습니다. (걱정하지 마세요. 보스전은 제가 먼저 끝냈습니다.)

하지만 영감에 관한 것은 버전 1.0에서 끝나지 않습니다. 개발자들이 FetchPHP를 채택하는 것을 보면서 우리가 한계를 더욱 뛰어넘을 수 있다는 것을 깨달았습니다. 그래서 저는 코딩 동굴에 몸을 가두고(괜찮습니다. 그냥 홈 오피스였지만 시간이 지나면 동굴처럼 느껴졌습니다) 건강에 해로운 양의 에너지 드링크를 마시고 FetchPHP 2.0을 출시했습니다.

FetchPHP 2.0의 새로운 기능은 무엇입니까?

이 업데이트에는 스위스 군용 칼보다 더 많은 기능이 포함되어 있으므로 버클을 채우세요! 버전 2.0의 요리 내용은 다음과 같습니다.

  1. 진정한 비동기 슈퍼파워: PHP의 비동기가 슬리퍼를 신고 마라톤을 뛰는 것 같았던 때를 기억하시나요? 그런 시절은 지나갔습니다! FetchPHP 2.0은 PHP Fibers(형제 패키지인 Matrix 덕분에)를 활용하여 진정한 비차단 동시성을 제공합니다. 이는 코드에 로켓 부츠를 주는 것과 같습니다! 내가 직접 만든 패키지인 Matrix는 PHP Fibers를 활용하여 비동기 작업 관리를 단순화합니다. Matrix를 사용하면 FetchPHP는 이전과는 전혀 다른 방식으로 비동기 작업을 실행할 수 있습니다.

  2. JavaScript 개발자 여러분, 집처럼 편안하게: JavaScript 개발자가 집을 떠나지 않은 것처럼 느끼게 해주는 async()/await 유사 구문을 도입했습니다. 너무 익숙해서 PHP를 작성하고 있다는 사실조차 잊어버릴 수도 있습니다!

  3. Win용 Fluent API: 이제 좋아하는 바리스타의 라떼 아트보다 요청 작성이 더 매끄러워졌습니다. Laravel의 HTTP 클라이언트에서 영감을 받은 새로운 Fluent API와 함께 메소드를 연결하세요. 너무 우아해서 사실상 저절로 쓰여집니다!

  4. 스테로이드 오류 처리: 새로운 맞춤형 ErrorHandler를 사용하면 오류 관리가 더 이상 악몽이 아닙니다. 즉시 작업을 일시 중지, 재개, 재시도 또는 취소할 수 있습니다. 이는 HTTP 요청에 대한 타임머신을 갖는 것과 같습니다!

  5. 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));

저 아름다움을 보세요! 프록시, 재시도, 시간 초과 등을 모두 비동기식으로 유지하면서 멋지게 처리합니다.

FetchPHP vs Guzzle: 여러분이 기다려온 대결

이제 당신이 무슨 생각을 하는지 알겠습니다. "하지만 저는 수년 동안 Guzzle을 사용해 왔습니다. 왜 전환해야 합니까?" FetchPHP 2.0이 왜 PHP HTTP 클라이언트의 새로운 헤비급 챔피언인지 알아보겠습니다.

1. 진정한 비동기식 성능

  • Guzzle: 비동기 작업에 약속을 사용합니다. 이는 마치 운반비둘기를 보내고 그것이 돌아오기를 바라는 것과 같습니다.
  • FetchPHP: 진정한 비차단 동시성을 위해 PHP Fiber를 활용합니다. 내 Matrix 패키지의 강력한 기능 덕분에 초음속 제트기 팀을 마음대로 사용할 수 있는 것과 같습니다!

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을 사용하면 훌륭한 작업을 수행할 수 있지만 한 번에 하나의 악기만 연주할 수 있습니다. 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를 더욱 훌륭하게 만들기 위한 아이디어가 있다면 주저하지 말고 문제를 공개하거나 끌어오기 요청을 제출하세요. 한 번에 하나씩 요청하면서 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