From c2eec0667e9819c54d7729b3d1423815e15f14d4 Mon Sep 17 00:00:00 2001 From: Zach Borboa Date: Fri, 19 Aug 2022 09:08:59 -0400 Subject: [PATCH] Fix building post data for object PHP 8 error messages: TypeError: array_keys(): Argument #1 ($array) must be of type array, stdClass given TypeError: array_values(): Argument #1 ($array) must be of type array, stdClass given PHP 7 error messages: TypeError: array_keys() expects parameter 1 to be array, object given TypeError: array_values() expects parameter 1 to be array, object given --- src/Curl/Curl.php | 2 +- tests/PHPCurlClass/PHPCurlClassTest.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Curl/Curl.php b/src/Curl/Curl.php index e29592f..9bb6593 100644 --- a/src/Curl/Curl.php +++ b/src/Curl/Curl.php @@ -208,7 +208,7 @@ class Curl // php_url_encode() // https://github.com/php/php-src/blob/master/ext/standard/http.c return urlencode(strval($k)) . '=' . urlencode(strval($v)); - }, array_keys($data), array_values($data))); + }, array_keys((array)$data), array_values((array)$data))); } return $data; diff --git a/tests/PHPCurlClass/PHPCurlClassTest.php b/tests/PHPCurlClass/PHPCurlClassTest.php index c44cda8..8a93088 100644 --- a/tests/PHPCurlClass/PHPCurlClassTest.php +++ b/tests/PHPCurlClass/PHPCurlClassTest.php @@ -81,6 +81,15 @@ class CurlTest extends \PHPUnit\Framework\TestCase ])); } + public function testBuildPostDataObject() + { + $data = new \stdClass(); + $data->{'abc'} = 'foo'; + $data->{'123'} = 'bar'; + $curl = new Curl(); + $curl->buildPostData($data); + } + public function testUserAgent() { $php_version = preg_replace('/([\.\+\?\*\(\)\[\]\^\$\/])/', '\\\\\1', 'PHP/' . PHP_VERSION);