Pular para o conteúdo principal

Changelog - Version 7.0

Status: in development. This document tracks changes landing on the 7.0 branch. Nothing here is released yet, and the contents may still change.

Breaking Changes​

  • None.

New Features​

  • FakeSenderWrapper keeps every envelope it is given. FakeSenderWrapper::getSent() returns them, oldest first, and FakeSenderWrapper::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-7 UriInterface, but passed it as is to the wrappers, whose constructors require ByJG\Util\Uri, so another implementation (e.g. GuzzleHttp\Psr7\Uri) threw a TypeError. It is now converted to a ByJG\Util\Uri.

Requirements​

  • PHP 8.3, 8.4, 8.5 and 8.6 are now supported: "php": ">=8.3 <8.7". The previous <8.6 upper bound excluded PHP 8.6, since <8.6 is exclusive.

ByJG dependencies​

  • byjg/convert is now ^7.0.
  • byjg/webrequest is 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/phar instead of vimeo/psalm.

    vimeo/psalm lists the PHP versions it supports and no published release includes 8.6, so as a dev dependency it made composer install fail on the 8.6 build job before any test ran. psalm/phar requires only php ^8.2 and 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 psalm runs 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.dist renamed to phpunit.xml.
  • The wrapper tests now run. They were named *TestWrapper.php, which PHPUnit's default Test.php suffix 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 since getSesClient() gained its SesClient return type, now uses the SDK's Aws\MockHandler instead of the MockSender stand-in, which is removed.
  • phpunit.xml sets ignoreIndirectDeprecations="true". PHP 8.6 deprecates is as a class name, and guzzlehttp/promises (required by the AWS SDK) has a class called Is. Deprecations raised inside this package's own src/ still fail the suite.