"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > FetchPHP: تحديث لجلب خاصية جلب Javascript & True Async إلى PHP (الآن مع القوى العظمى!)

FetchPHP: تحديث لجلب خاصية جلب Javascript & True Async إلى PHP (الآن مع القوى العظمى!)

تم النشر بتاريخ 2024-11-04
تصفح:754

FetchPHP : An Update To Bring Javascript

مرحبًا يا عشاق PHP! ؟ هل تتذكر ذلك الوقت الذي كنت تقوم فيه بالبرمجة في وقت متأخر من الليل، وتتصارع مع طلبات HTTP في PHP، وفكرت، "لو كان هذا الأمر سهلاً مثل جلب JavaScript"؟ حسنًا، تناول قهوتك واستعد لبعض الأخبار المثيرة، لأن FetchPHP 2.0 موجود، وهو على وشك جعل طلبات PHP HTTP الخاصة بك أكثر سلاسة من أي آلة جيدة التجهيز!

قصة الأصل: من الجلب إلى الجلب الخارق

تصور هذا: إنه عام 2023، وأنا جالس في المقهى المفضل لدي، وأحتسي كوبًا كبيرًا جدًا من اللاتيه... لا، مجرد مزاح. كنت في الواقع في المنزل، غارقًا في جلسة Elden Ring، عندما جاءني الإلهام فجأة. فكرت "ماذا لو تمكنا من جلب بساطة JavaScript إلى عالم PHP؟" وهكذا، وُلدت خدمة FetchPHP. (لا تقلق، لقد أنهيت معركة الزعيم أولاً.)

ولكن هذا هو الشيء المتعلق بالإلهام - فهو لا يتوقف عند الإصدار 1.0. وبينما كنت أشاهد المطورين وهم يتبنون FetchPHP، أدركت أنه بإمكاننا أن نحقق تقدمًا أكبر. لذلك، حبست نفسي في كهف البرمجة الخاص بي (حسنًا، كان مجرد مكتب منزلي، ولكن بعد فترة شعرت وكأنه كهف)، تغذيه كمية غير صحية من مشروبات الطاقة، وخرجت مع FetchPHP 2.0.

ما الجديد في FetchPHP 2.0؟

اربط حزام الأمان، لأن هذا التحديث مليء بميزات أكثر من سكين الجيش السويسري! إليك ما يتم طهيه في الإصدار 2.0:

  1. القوى العظمى الحقيقية غير المتزامنة : هل تتذكر عندما شعرت أن المزامنة في PHP تبدو وكأنها تحاول تشغيل ماراثون في زحافات؟ لقد ولت تلك الأيام! يعمل FetchPHP 2.0 على تعزيز ألياف PHP (بفضل الحزمة الشقيقة لدينا، Matrix) لتوفير التزامن الحقيقي غير المحظور. إنه مثل إعطاء الكود الخاص بك زوجًا من الأحذية الصاروخية! تعمل Matrix، وهي حزمة صممتها بنفسي، على تبسيط إدارة المهام غير المتزامنة من خلال استخدام PHP Fibers. باستخدام Matrix، يستطيع FetchPHP تشغيل مهام غير متزامنة بشكل لم يسبق له مثيل.

  2. مطورو جافا سكريبت، اشعروا وكأنكم في المنزل: لقد قدمنا ​​صيغة غير متزامنة ()/تشبه الصيغة التي ستجعل مطوري جافا سكريبت يشعرون وكأنهم لم يغادروا المنزل أبدًا. إنها مألوفة جدًا، وقد تنسى أنك تكتب لغة PHP!

  3. واجهة برمجة التطبيقات السلسة للفوز : أصبحت طلبات البناء الآن أكثر سلاسة من فن اللاتيه المفضل لديك. طرق متسلسلة مع واجهة برمجة التطبيقات الجديدة لدينا، المستوحاة من عميل HTTP الخاص بـ Laravel. إنه أنيق جدًا، فهو يكتب نفسه عمليًا!

  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 للحصول على التزامن الحقيقي غير المحظور. إنه مثل وجود فريق من الطائرات الأسرع من الصوت تحت تصرفك، وذلك بفضل قوة حزمة Matrix الخاصة بي!

2. بناء الجملة الذي يبدو وكأنه المنزل

  • Guzzle: بناء جملة PHP التقليدي. إنها مألوفة، ولكن يمكن أن تصبح مطولة.
  • FetchPHP: بناء جملة غير متزامن/انتظار يشبه جافا سكريبت. إنه أمر بديهي للغاية، حيث ستعتقد أنك تكتب كود الواجهة الأمامية (ولكن مع كل قوة PHP).

3. واجهة برمجة التطبيقات بطلاقة

  • Guzzle: يقدم واجهة برمجة تطبيقات جيدة، لكنه قد يبدو متشددًا بعض الشيء بالنسبة للعمليات المعقدة.
  • 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. سواء كنت تقوم بإنشاء واجهة برمجة تطبيقات صغيرة أو نظام واسع النطاق يحتاج إلى التعامل مع الآلاف من الطلبات المتزامنة، فإن 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