هذه المكتبة ليست في التطوير النشط.
يرجى النظر في guzzlehttp/guzze أو مكتبة أخرى بدلاً من ذلك.
إصلاحات الأخطاء فقط.
Hyper هو عميل HTTP يهدف إلى توفير واجهة بسيطة ولكنها قوية لإجراء مكالمات HTTP وجلب بيانات API ومعالجتها.
Hyper::get('http://some/url') .Hyper::make(...)->get('http://some/url') .Response يوفر معلومات مفيدة مثل رمز حالة HTTP والجسم والرؤوس.Response تمزج في Rexlabs Array-Object والتي تتيح لك استجواب API بسهولة.Request الأصلي عبر $response->getRequest() . <?php
use Rexlabs HyperHttp Hyper ;
$ response = Hyper:: get ( ' http://openlibrary.org/subjects/love.json ' );
// The first book for 'love' is: Wuthering Heights
echo " The first book for ' { $ response -> name } ' is: { $ response -> works -> first ()-> title }n" ;
echo " Total works: { $ response -> works -> count ()} books n" ;للتثبيت في مشروعك:
composer require rexlabs/hyper-http تقوم جميع الطرق المريحة بإرجاع كائن Response يجعل التفاعل مع الاستجابات بسيطًا.
<?php
use Rexlabs HyperHttp Hyper ;
$ response = Hyper:: get ( ' https://example.com/url ' );
echo ' Status Code: ' . $ response -> getStatusCode (). "n" ;
echo ( string ) $ response ; // Output the response bodyنظرًا لأن الاستجابات تخلط بين ArrayObject ، يمكنك بسهولة جلب القيم ومعالجتها من الاستجابة:
<?php
use Rexlabs HyperHttp Hyper ;
// Fetch historical price via CryptoCompare's public API for Ethereum
$ response = Hyper:: get ( ' https://min-api.cryptocompare.com/data/pricehistorical ' , [
' fsym ' => ' ETH ' ,
' tsyms ' => ' BTC,USD ' ,
' ts ' => ' 1452680400 ' ,
]);
// Output prices
printf ( " ETH->USD: %s n" , $ response -> get ( ' ETH.USD ' ));
printf ( " ETH->BTC: %s n" , $ response -> get ( ' ETH.BTC ' )); استخدم make() لتبسيط مثيله ثم قم بإعداد الكائن للطلبات المستقبلية:
<?php
use Rexlabs HyperHttp Hyper ;
use Rexlabs Logger CustomLogger ;
$ hyper = Hyper:: make ()
-> setBaseUri ( ' http://example.com/api/v1 ' )
-> setHeader ( ' X-App-Identity ' , ' Some App ' )
-> setHeader ( ' X-Correlation-Id ' , ' 12345 ' )
-> setLogger ( new CustomLogger );$hyper = Hyper::make(array $config = [], GuzzleHttpClient $guzzle, PsrLogLoggerInterface $logger)للحصول على سيطرة كاملة على مثيله ، استخدم المُنشئ وتمريره في مثيل Guzzle:
<?php
use Rexlabs HyperHttp Client ;
use GuzzleHttp Client as GuzzleClient ;
use Psr Log NullLogger ;
$ hyper = new Client ( new GuzzleClient (), new NullLogger (), [
' base_uri ' => ' http://example.com/api/v1 ' ,
' headers ' => [
' X-App-Identity ' => ' Some App ' ,
],
]);
$ response = $ hyper -> get ( ' /messages ' );يمكنك بسهولة إنشاء طلب حليقة للتشغيل من سطر الأوامر لإعادة إنتاج طلبك الأخير:
<?php
use Rexlabs HyperHttp Hyper ;
echo Hyper:: get ( ' https://example.com/api/v1/resources ' )
-> getCurlRequest ();الإخراج:
curl
' https://min-api.cryptocompare.com/data/pricehistorical?fsym=ETH&tsyms=BTC%2CUSD&ts=1452680400&extraParams=your_app_name '
-H ' Content-Type: application/json ' -H ' Accept: application/json ' يوفر Hyper الطرق التالية للتفاعل مع نقاط النهاية البعيدة:
get(mixed $uri, array $query = [], array $headers = [], array $options = []): Response
أرسل طلب HTTP ، وأرجع الاستجابة:
$ response = Hyper:: get ( ' https://example.com ' , [ ' sort ' => ' latest ' ], [ ' X-Greeting ' => ' Hello! ' ]);
$ response = $ hyper -> get ( ' /v1/people ' );$uri هي سلسلة أو Uri . إذا لم تكن السلسلة مطلقة ، فسيتم إلحاقها بقاعدة URI.$query هي مجموعة اختيارية من معلمات الاستعلام التي سيتم إلحاقها بـ URI.$headers هي مجموعة اختيارية من الرؤوس (مفهرسة باسم الرأس) والتي سيتم دمجها مع أي رؤوس عالمية.$options هي مجموعة اختيارية من خيارات عميل Guzzle. post(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
إرسال طلب نشر HTTP ، وإرجاع الاستجابة:
$ response = Hyper:: post ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> post ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri هي سلسلة أو Uri . إذا لم تكن السلسلة مطلقة ، فسيتم إلحاقها بقاعدة URI.$body هو الحمولة. إذا قدمت صفيفًا ، فسيتم تحويله ونقله إلى JSON.$headers هي مجموعة اختيارية من الرؤوس (مفهرسة باسم الرأس) والتي سيتم دمجها مع أي رؤوس عالمية.$options هي مجموعة اختيارية من خيارات عميل Guzzle.طرق بديلة:
$response = $hyper->postForm($uri, $formParams, $headers, $options);$response = $hyper->postMultipartForm($uri, $formParams, $headers, $options); put(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
أرسل طلب HTTP PUT ، وأرجع الاستجابة:
$ response = Hyper:: put ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> put ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri هي سلسلة أو Uri . إذا لم تكن السلسلة مطلقة ، فسيتم إلحاقها بقاعدة URI.$body هو الحمولة. إذا قدمت صفيفًا ، فسيتم تحويله ونقله إلى JSON.$headers هي مجموعة اختيارية من الرؤوس (مفهرسة باسم الرأس) والتي سيتم دمجها مع أي رؤوس عالمية.$options هي مجموعة اختيارية من خيارات عميل Guzzle. patch(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
أرسل طلب تصحيح HTTP ، وأرجع الاستجابة:
$ response = Hyper:: patch ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> patch ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri هي سلسلة أو Uri . إذا لم تكن السلسلة مطلقة ، فسيتم إلحاقها بقاعدة URI.$body هو الحمولة. إذا قدمت صفيفًا ، فسيتم تحويله ونقله إلى JSON.$headers هي مجموعة اختيارية من الرؤوس (مفهرسة باسم الرأس) والتي سيتم دمجها مع أي رؤوس عالمية.$options هي مجموعة اختيارية من خيارات عميل Guzzle. delete(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
أرسل طلب HTTP DELETE ، وإرجاع الاستجابة:
$ response = Hyper:: delete ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> delete ( ' /v1/people/1 ' );$uri هي سلسلة أو Uri . إذا لم تكن السلسلة مطلقة ، فسيتم إلحاقها بقاعدة URI.$body هو الحمولة الاختيارية. إذا قدمت صفيفًا ، فسيتم تحويله ونقله إلى JSON.$headers هي مجموعة اختيارية من الرؤوس (مفهرسة باسم الرأس) والتي سيتم دمجها مع أي رؤوس عالمية.$options هي مجموعة اختيارية من خيارات عميل Guzzle. call(string $method, mixed $uri, mixed $body, array $headers, array $options): Response
إرسال طلب HTTP عام عن طريق تحديد method كوسيطة الأولى.
// Statically
$ response = Hyper:: call ( ' MOVE ' , ' myfile1234 ' , [ ' new_location ' => ' some_folder ' ]);
// Http method verbs may also be invoked via method name
$ response = Hyper:: move ( ' myfile1234 ' , [ ' new_location ' => ' some_folder ' ]);
$ response = Hyper:: somethingelse (...);
// Via object
$ response = $ hyper -> call ( ' MOVE ' , ' myfile1234 ' , [ ' new_location ' => ' some_folder ' ]);$method هي الفعل HTTP. على سبيل المثال. GET شيء أو شيء ليس جزءًا من المعيار.$uri هي سلسلة أو Uri . إذا لم تكن السلسلة مطلقة ، فسيتم إلحاقها بقاعدة URI.$body هو الحمولة الاختيارية. إذا قدمت صفيفًا ، فسيتم تحويله ونقله إلى JSON.$headers هي مجموعة اختيارية من الرؤوس (مفهرسة باسم الرأس) والتي سيتم دمجها مع أي رؤوس عالمية.$options هي مجموعة اختيارية من خيارات عميل Guzzle. الأساليب المتاحة من RexlabsHyperHttpMessageRequest كائن:
إرجاع كائن uriinterface الذي يتضمن URI/URL لهذا الطلب.
إرجاع الفعل طريقة HTTP لهذا الطلب.
استمع إلى مجموعة من الرؤوس لهذا Request
إرجاع طلب Curl (سلسلة) مناسب للتشغيل من سطر الأوامر. مفيد لطلبات تصحيح الأخطاء.
الأساليب المتاحة من RexlabsHyperHttpMessageResponse كائن:
إرجاع RexlabsHyperHttpMessageRequest كائن مرتبط Response
إرجاع طلب Curl (سلسلة) مناسب للتشغيل من سطر الأوامر. مفيد لطلبات تصحيح الأخطاء.
إرجاع رمز حالة HTTP لهذا Response . على سبيل المثال. 200
إرجاع عبارة عقل HTTP المرتبطة برمز الحالة. على سبيل المثال. "نعم"
يعود true إذا كان هذا استجابة JSON.
يحول استجابة JSON إلى صفيف ويعيد الصفيف.
يحول استجابة JSON إلى ArrayObject
يحتوي كل كائن Response على جميع طرق ووظائف فئة ArrayObject من حزمة rexlabsarray-object .
هذا يعني بناءً على حمولة الاستجابة التالية:
{
"books" : [
{
"id" : 1 ,
"title" : " 1984 " ,
"author" : " George Orwell "
},
{
"id" : 2 ,
"title" : " Pride and Prejudice " ,
"author" : " Jane Austen "
}
]
}يمكنك تنفيذ الوظائف التالية:
$ response -> books ; // Instance of ArrayObject
$ response -> books -> pluckArray ( ' author ' ); // array [ 'George Orwell', 'Jane Austen' ]
$ response -> pluckArray ( ' books.author ' ); // array [ 'George Orwell', 'Jane Austen' ]
$ response -> books -> count (); // 2
$ response -> books -> isCollection (); // true
$ response -> books [ 0 ]; // Instance of ArrayObject
$ response -> books [ 0 ]-> isCollection (); // false
$ response -> books [ 0 ]-> id ; // 1
$ response -> get ( ' books.1.title ' ); // "Pride and Prejudice"
foreach ( $ response -> books as $ book ) {
echo "{ $ book -> title } by { $ book -> author }n" ;
}يمكنك أيضا الاتصال:
$ obj = $ response -> toObject (); // Instance of Arraybject اضبط التكوين الافتراضي لجميع العميل (الافتراضيات إلى [])
Hyper:: setDefaultConfig ( $ config );تعيين التكوين لهذا العميل (سيتم تجاوز / دمج القيم مع الافتراضي)
$ client = Hyper:: make ( $ config ); قم بتعيين المسجل الافتراضي الذي يستخدمه جميع العملاء الذين لا يقدمون واحد.
يجب تنفيذ LoggerInterface (الافتراضية إلى NullLogger )
Hyper:: setDefaultLogger ( $ logger );قم بتسجيل سلسلة حليقة لجميع الطلبات (تتطلب مجموعة مسجل)
$ config = [
' log_curl ' => true ,
]; اضبط التهيئة التي تم تمريرها على GuzzleClient الأساسي
$ config = [
' guzzle ' => [
' verify ' => false ,
],
];
// Set for all clients
Hyper:: setDefaultConfig ( $ config );
// Set for one client
$ client = Hyper:: make ( $ config );لتشغيل الاختبارات:
composer testsلتشغيل تقرير التغطية:
composer coverage تقرير التغطية هو الإخراج إلى ./tests/report/index.html
يسمح Hyper بتمديد للعملاء المخصصين بواسطة:
MyHyperSubclass MyHyperSubclassHyper إلى إرجاع المثيل الصحيح الذي تم إنشاؤه بواسطة Hyperprotected static function makeClient لتخصيص فئة العميل (على سبيل المثال ، استبدل new Client بـ new MyClient )protected static function makeConfig لتخصيص تكوين العميل الافتراضيprotected static function makeGuzzleConfig لتخصيص عميل Guzz الافتراضيprotected static function getBaseUri لتوفير قاعدة افتراضية للعميل المساهمات موضع ترحيب ، يرجى تقديم طلب سحب أو إنشاء مشكلة. يجب تنسيق الرمز المقدم باستخدام معايير PSR-1/PSR-2.