«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > FetchPHP: обновление для добавления Javascript Fetch и True Async в PHP (теперь с суперспособностями!)

FetchPHP: обновление для добавления Javascript Fetch и True Async в PHP (теперь с суперспособностями!)

Опубликовано 4 ноября 2024 г.
Просматривать:978

FetchPHP : An Update To Bring Javascript

Привет, энтузиасты PHP! ? Помните тот случай, когда вы программировали поздно ночью, борясь с HTTP-запросами в PHP, и думали: «Если бы это было так же просто, как извлечение данных в JavaScript»? Что ж, пейте кофе и готовьтесь к интересным новостям, потому что FetchPHP 2.0 уже здесь, и он сделает ваши HTTP-запросы PHP более плавными, чем хорошо смазанная машина!

История происхождения: от Fetch к сверхмощному Fetch

Представьте себе: на дворе 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, чувствуйте себя как дома: мы представили синтаксис, подобный async()/await, который позволит разработчикам JavaScript чувствовать себя так, будто они никогда не покидали дом. Это настолько знакомо, что вы можете забыть, что пишете PHP!

  3. Свободный API для Win: создание запросов теперь проще, чем латте-арт вашего любимого бариста. Объедините методы вместе с нашим новым гибким API, вдохновленным HTTP-клиентом Laravel. Он настолько элегантный, что практически пишет сам!

  4. Обработка ошибок на стероидах: благодаря нашему новому настраиваемому ErrorHandler управление ошибками больше не является кошмаром. Приостанавливайте, возобновляйте, повторяйте или отменяйте задачи на лету. Это похоже на машину времени для обработки HTTP-запросов!

  5. 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 против Guzzle: битва, которую вы ждали

Теперь я знаю, о чем вы думаете. «Но я использую Guzzle уже много лет! Зачем мне переходить?» Что ж, пристегнитесь, потому что мы собираемся углубиться в то, почему FetchPHP 2.0 является новым чемпионом среди PHP HTTP-клиентов.

1. Настоящие асинхронные возможности

  • Guzzle: использует промисы для асинхронных операций. Это все равно, что отправить почтового голубя и надеяться, что он вернется.
  • FetchPHP: использует PHP Fibers для истинного неблокирующего параллелизма. Это похоже на то, что в вашем распоряжении есть команда сверхзвуковых самолетов благодаря мощности моего пакета Matrix!

2. Синтаксис, который чувствует себя как дома

  • Guzzle: традиционный синтаксис PHP. Это знакомо, но может оказаться многословным.
  • FetchPHP: синтаксис async/await, подобный JavaScript. Это настолько интуитивно понятно, что вы подумаете, что пишете код внешнего интерфейса (но со всей мощью PHP).

3. Свободный API

  • Guzzle: предлагает достойный API, но может показаться немного жестким для сложных операций.
  • FetchPHP: объединяемые в цепочки методы, которые позволяют даже самым сложным запросам читаться как красивое стихотворение.

4. Обработка ошибок и управление задачами

  • Guzzle: базовая обработка ошибок на основе промисов.
  • 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 вы отлично справляетесь со своей задачей, но вы ограничены игрой на одном инструменте за раз. ПолучитьPHP 2.0? Он превращает вас в маэстро, дирижирующего полной симфонией асинхронных запросов, каждый из которых играет в идеальной гармонии.

Вот почему FetchPHP 2.0 — это HTTP-клиент, о котором вы даже не подозревали:

  1. True Async: мы не просто притворяемся обещаниями. Это настоящая сделка, основанная на PHP Fibers и Matrix.
  2. Знакомый синтаксис: разработчики JavaScript будут чувствовать себя как дома, а разработчики PHP зададутся вопросом, почему это не всегда было так просто.
  3. Гибкая обработка ошибок: повторите, приостановите, возобновите или отмените запросы на лету. Это похоже на удаленное управление вашими HTTP-запросами.
  4. Мощно, но просто: сложные операции теперь так же просты, как заказ пиццы (возможно, даже проще, в зависимости от вашей местной пиццерии).

Будущее яркое (и асинхронное)

FetchPHP 2.0 — это не просто обновление; это революция в том, как мы обрабатываем HTTP-запросы в PHP. Независимо от того, создаете ли вы небольшой API или крупномасштабную систему, которая должна обрабатывать тысячи одновременных запросов, FetchPHP 2.0 вам поможет.

Итак, готовы ли вы присоединиться к асинхронной революции? Зайдите в наш репозиторий GitHub, поставьте нам звездочку (нам она нравится!) и начните делать свои PHP-приложения быстрее, эффективнее и, смею сказать, с ними веселее работать!

Помните, что в мире FetchPHP 2.0 единственным ограничением является ваше воображение (и, возможно, ресурсы вашего сервера, но это проблема для другого дня).

Удачного кодирования, и пусть ваши запросы всегда будут асинхронными! ?✨


P.S. Если у вас возникнут какие-либо проблемы или у вас есть идеи, как сделать 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