jardissupport / factory
PSR-11 Container with pre-registered instances and reflection fallback
Requires
- php: >=8.2
- psr/container: ^2.0
Requires (Dev)
- phpstan/phpstan: ^2.0.4
- phpunit/phpunit: ^11.0
- squizlabs/php_codesniffer: ^3.11.2
This package is auto-updated.
Last update: 2026-04-18 09:23:32 UTC
README
Part of the Jardis Business Platform — Enterprise-grade PHP components for Domain-Driven Design
PSR-11 Container with pre-registered instances and reflection fallback. Three source files, one dependency (psr/container), zero configuration overhead.
Features
- PSR-11 ContainerInterface — standard
get()andhas()contract - Pre-registered Instances — pass objects at construction, retrieved by key
- Backend Container Delegation — delegates to Symfony, Laravel, PHP-DI, or any PSR-11 container
- Reflection Fallback — classes without required constructor params are instantiated automatically
- Resolution Order — Instances → Backend → Reflection, each step optional
- Immutable — all configuration via constructor, readonly after creation
Installation
composer require jardissupport/factory
Quick Start
use JardisSupport\Factory\Factory; // Minimal — uses reflection for instantiation $factory = new Factory(); $instance = $factory->get(MyService::class); // With pre-registered instances $factory = new Factory(instances: [ LoggerInterface::class => $logger, CacheInterface::class => $cache, ]); $factory->get(LoggerInterface::class); // → $logger $factory->get(SomeSimpleClass::class); // → new instance via reflection // With backend container $factory = new Factory(container: $symfonyContainer, instances: [ 'override.service' => $myOverride, ]); // Instances win over backend; backend wins over reflection
Resolution Order
get($id)
├── 1. Pre-registered instances (exact key match)
├── 2. Backend container ($container->has($id) ? $container->get($id))
└── 3. Reflection (class_exists($id) ? new $id())
If none matches → NotFoundException.
If class exists but has required constructor params → ContainerException.
Documentation
Full documentation, guides, and API reference:
docs.jardis.io/en/support/factory
License
This package is licensed under the MIT License.
Jardis · Documentation · Headgent
KI-gestützte Entwicklung
Dieses Package liefert einen Skill für Claude Code, Cursor, Continue und Aider mit. Installation im Konsumentenprojekt:
composer require --dev jardis/dev-skills
Mehr Details: https://docs.jardis.io/skills