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

projek-xyz / container / 38006868365
100%
master: 100%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 09 Oct 2026 11:57PM UTC
Jobs 2
Files 14
Run time 1min
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

09 Oct 2026 11:57PM UTC coverage: 100.0%. Remained the same
38006868365

push

github

web-flow
refactor!: bump minimum PHP requirement to 8.4+ and replaces the container's own `Resolver` with the dedicated `projek-xyz/callable` ^0.4 (#94)

Replaces the container's own reflection engine (`Projek\Container\Resolver`, 
`UnresolvableArgumentException`) with the dedicated `projek-xyz/callable` ^0.4 package 
(`Resolver`, `Handler`, `ResolverInterface`), and rebuilds registration/resolution on 
a typed **Entry model** (abstract `Entry` + five factory entries) instead of `mixed $factory`.

- **`set()` is fully lazy** — classification + metadata extraction only: no construction, 
  no dependency resolution, no `ContainerAware` injection at registration.
- **Plain objects are no longer factories.** v1 accepted them, converted to the class name, 
  and *re-instantiated — discarding state*. Register instances as `fn () => $instance` or
  `new EntryFactory(...)`. **Callable objects (with `__invoke`) are accepted** and stored/
  invoked as-is.
- **No implicit `__invoke` in `get()`** — a class-string always builds an instance, even 
  for invokable classes.
- **`make()` has a strict acceptance contract** — registered id, instantiable `class-string`,
  `callable` shape, otherwise `InvalidArgumentException` (v1 attempted to build whatever 
  string it was handed; returned plain objects as-is — now rejected). `make()` now also runs 
  through the **same error boundary as `get()`**: package failures → `ResolutionException`, 
  missing auto-wired deps → `NotFoundException`, user exceptions untouched.
- **`make(Class::class, $args)` feeds the constructor** (v1 invoked `__invoke($args)` for 
  invokable classes) — migrate to `make([Class::class, '__invoke'], $args)`.
- **Alias factories must name a pre-registered id** — `interface`/`trait`/`abstract`/`enum` 
  names no longer slip through; typos fail fast with `InvalidArgumentException` (this is also 
  why `get()` never invokes: an invokable class-string builds).
- **Alias cycles are rejected at registration** — an... (continued)

174 of 174 new or added lines in 11 files covered. (100.0%)

197 of 197 relevant lines covered (100.0%)

17.47 hits per line

Jobs
ID Job ID Ran Files Coverage
1 php-8.4 - 38006868365.1 09 Oct 2026 11:57PM UTC 14
100.0
GitHub Action Run
2 php-8.5 - 38006868365.2 09 Oct 2026 11:57PM UTC 14
100.0
GitHub Action Run
Source Files on build 38006868365
  • Tree
  • List 14
  • Changed 4
  • Source Changed 4
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38006868365
  • 1dc9529e on github
  • Prev Build on main (#37570866038)
  • Next Build on main (#38076747083)
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