Guzzle 7 Released
Published on by Paul Redmond
The popular Guzzle HTTP client reached version 7 last week, with the exciting news that most users (the changelog says 95% of users) will be able to upgrade without modification. This release focused on increasing the minimum supported PHP version and introducing new language features found in PHP 7.
The main features of the 7.0 release include:
- Implement PSR-18
- Dropped PHP 5 support—the minimum PHP version is now
7.2
- Type hints and return types for functions and methods have been added whenever possible
- IDN support for redirects (see #2424 for details)
Be sure to check out the 6.0 to 7.0 upgrade guide for a list of known backward compatibility breaking changes with 6.x.
One update I found of note was client HTTP methods (i.e., get, post, etc.) with strong typing:
The
get
,head
,put
,post
,patch
,delete
,getAsync
,headAsync
,putAsync
,postAsync
,patchAsync
, anddeleteAsync
methods are now implemented as genuine methods onGuzzleHttp\Client
, with strong typing. The original__call
implementation remains unchanged for now, for maximum backward compatibility, but won’t be invoked under normal operation.
If you still need to access the v6 documentation and otherwise may need to use both Guzzle 6 and 7, check out the version guidance table in the project’s readme. At the time of writing, the latest docs have “Guzzle 6” in the heading, but docs.guzzlephp.org/en/latest/ are the Latest Guzzle 7 docs.
Release Notes
If you’re interested in the source code changes leading to v7.0.0, you can compare Guzzle 6.5 to 7.0. Below are the release notes from the project’s changelog:
7.0.1 – 2020-06-27
- Fix multiply defined functions fatal error #2699
7.0.0 – 2020-06-27
No changes since 7.0.0-rc1.
7.0.0-rc1 – 2020-06-15
Changed
- Use error level for logging errors in Middleware #2629
- Disabled IDN support by default and require ext-intl to use it #2675
7.0.0-beta2 – 2020-05-25
Added
- Using
Utils
class instead of functions in theGuzzleHttp
namespace. #2546 -
ClientInterface::MAJOR_VERSION
#2583
Changed
- Avoid the
getenv
function when unsafe #2531 - Added real client methods #2529
- Avoid functions due to global install conflicts #2546
- Use Symfony intl-idn polyfill #2550
- Adding methods for HTTP verbs like
Client::get()
,Client::head()
,Client::patch()
etc #2529 -
ConnectException
extendsTransferException
#2541 - Updated the default User Agent to “GuzzleHttp/7” #2654
Fixed
- Various intl icu issues #2626
Removed
- Pool option
pool_size
#2528
7.0.0-beta1 – 2019-12-30
Added
- Implement PSR-18 and dropped PHP 5 support #2421 #2474
- PHP 7 types #2442 #2449 #2466 #2497 #2499
- IDN support for redirects 2424
Changed
- Dont allow passing null as third argument to
BadResponseException::__construct()
#2427 - Use SAPI constant instead of method call #2450
- Use native function invocation #2444
- Better defaults for PHP installations with old ICU lib 2454
- Added visibility to all constants #2462
- Dont allow passing
null
as URI toClient::request()
andClient::requestAsync()
#2461 - Widen the exception argument to throwable #2495
Fixed
- Logging when Promise rejected with a string #2311