• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

valkyrjaio / valkyrja-php / 30722873509
100%

Build:
DEFAULT BRANCH: 26.x
Ran 01 Aug 2026 11:14PM UTC
Jobs 1
Files 1198
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

01 Aug 2026 11:12PM UTC coverage: 100.0%. Remained the same
30722873509

push

github

web-flow
[Mail] feat!: Configure the mail component with typed config contracts (#1022)

# Description

`Valkyrja\Application\Env\Env` is deprecated. It is one non-final class
that holds
about 120 `public const` env variables for every component at once. This
pull
request gives the Mail component its own typed config contracts. It also
converts
`MailServiceProvider` to read those contracts.

`MailServiceProvider` no longer reads `Env`. An application that sets an
`Env::MAIL_*` constant loses that setting, so this change breaks a
public
contract.

This pull request does not change `Env.php`. Each component gets its own
pull
request, and all of those pull requests are independent. A pull request
that
deleted its own constants would conflict with every sibling pull request
on that
one file. `Env` therefore stays in place and goes unread. A later pull
request
removes the whole class.

## The shape

The component config holds only the component-wide setting, and each
adapter gets
its own contract, its own default class, and its own container binding:

- `MailConfigContract` holds `defaultMailer`.
- `MailMailgunConfigContract` holds `mailgunDomain` and `mailgunApiKey`.
- `MailPhpMailerConfigContract` holds the five `phpMailer*` settings.

An application that sends through Mailgun never constructs the PHPMailer
settings, because the container resolves an adapter config only when
something
asks for that adapter.

Each property carries the adapter name as a prefix, so one application
config
class can implement several of these contracts at once.
`tests/Tests/Fixtures/Mail/Data/MailConfigFixture.php` implements all
three.

valkyrjaio/architecture#131 records this shape as a rule.

## Types of changes

- [ ] Improvement _(non-breaking change which improves code)_
- [ ] Bug fix _(non-breaking change which fixes an issue)_
- [x] New feature _(non-breaking change which adds functionality)_
- [ ] Deprecation _(breaking change which removes functionality)_
- [x] Breaking chan... (continued)

57 of 57 new or added lines in 4 files covered. (100.0%)

12802 of 12802 relevant lines covered (100.0%)

24.38 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30722873509.1 01 Aug 2026 11:14PM UTC 1198
100.0
GitHub Action Run
Source Files on build 30722873509
  • Tree
  • List 1198
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30722873509
  • 0b203775 on github
  • Prev Build on 26.x (#30722854124)
  • Next Build on 26.x (#30722918436)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc