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
- None.
New Features
FakeSenderWrapperkeeps every envelope it is given.FakeSenderWrapper::getSent()returns them, oldest first, andFakeSenderWrapper::clear()forgets them, so a test can check what the application would have sent. Sending still does nothing and always succeeds.
Bug Fixes
MailerFactory::create()accepted any PSR-7UriInterface, but passed it as is to the wrappers, whose constructors requireByJG\Util\Uri, so another implementation (e.g.GuzzleHttp\Psr7\Uri) threw aTypeError. It is now converted to aByJG\Util\Uri.
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/convertis now^7.0.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.- The wrapper tests now run. They were named
*TestWrapper.php, which PHPUnit's defaultTest.phpsuffix skips, so the Amazon SES, FakeSender, Mailgun and PHPMailer tests had not been running. They are renamed to*WrapperTest.php. The Amazon SES test, broken unnoticed sincegetSesClient()gained itsSesClientreturn type, now uses the SDK'sAws\MockHandlerinstead of theMockSenderstand-in, which is removed. phpunit.xmlsetsignoreIndirectDeprecations="true". PHP 8.6 deprecatesisas a class name, andguzzlehttp/promises(required by the AWS SDK) has a class calledIs. Deprecations raised inside this package's ownsrc/still fail the suite.