Changelog - Version 7.0
Status: in development. This document tracks changes landing on the
7.0branch. Nothing here is released yet, and the contents may still change.
Breaking Changes
ProviderInterfacehas a new methodsendAsync(string|Phone $to, Message $envelope): HttpPromise. Providers that extendProviderBaseget it (it sends withsend()); a class that implements the interface directly has to add it.
New Features
sendAsync()returns aByJG\WebRequest\HttpPromisefulfilled with theReturnObject, or rejected with the error (it does not throw). The HTTP providers (ByJGSmsProvider,TwilioMessagingProvider,TwilioVerifyProvider) send in parallel withHttpClient::sendAsync()(curl_multi), so several messages can be sent at once withHttpPromise::all(); theirsend()issendAsync()->await().FakeProviderand providers that only implementsend()return a promise that is already settled.ProviderFactory::createAndSendAsync(), the async counterpart ofcreateAndSend(). For long lists,HttpPromise::map()(byjg/webrequest) limits the messages in progress (seedocs/basic-usage.md).ProviderBase::sendHttpRequestAsync()(the hook the HTTP providers use, which test mocks override).sendHttpRequest()is unchanged. Seedocs/basic-usage.mdanddocs/custom-providers.md.
Requirements
- PHP 8.3, 8.4, 8.5 and 8.6 are now supported:
"php": ">=8.3 <8.7". The previous<8.6upper bound excluded PHP 8.6, since<8.6is exclusive.
ByJG dependencies
byjg/webrequestis now^7.0.
While 7.0 is unreleased these resolve to 7.0.x-dev from each component's
7.0 branch, via minimum-stability: dev with prefer-stable: true.
Toolchain
-
PHPUnit updated to
^12.5. -
Psalm is installed as
psalm/pharinstead ofvimeo/psalm.vimeo/psalmlists the PHP versions it supports and no published release includes 8.6, so as a dev dependency it madecomposer installfail on the 8.6 build job before any test ran.psalm/pharrequires onlyphp ^8.2and bundles its own dependencies, so it installs on every PHP version in the matrix and cannot conflict with the project's. Psalm itself still refuses to run on 8.6, which is why the Psalm job uses 8.5.composer psalmruns it. -
PHPUnit 13 is deliberately not used. It requires PHP
>=8.4.1, breaking the 8.3 floor.
Continuous Integration
- The build matrix now includes PHP 8.6.
- The Psalm job runs on PHP 8.5.
Housekeeping
phpunit.xml.distrenamed tophpunit.xml.