Part of Jardis — the Domain-Driven Design platform for PHP. You model your domain; Jardis generates the production-ready hexagonal code (DTOs, Command/Query handlers, repositories, persistence). This package is part of the open-source foundation that generated code runs on.
Lightweight PSR-11 container for PHP with pre-registered instances and reflection fallback. Three source files, one dependency (psr/container), zero configuration overhead.
- 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
composer require jardissupport/factoryuse 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 reflectionget($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.
Full documentation, guides, and API reference:
docs.jardis.io/en/support/factory
This package is licensed under the MIT License.
Jardis · Documentation · Headgent
Dieses Package liefert einen Skill für Claude Code, Cursor, Continue und Aider mit. Installation im Konsumentenprojekt:
composer require --dev jardis/dev-skillsMehr Details: https://docs.jardis.io/en/skills