InterMix
is a modern, lightweight PHP toolkit for developers who love class-oriented design, clean architecture, and fast execution. From dependency injection to dynamic macros, every utility is designed to just work — with minimal config and maximum control.
- Dependency Injection (DI) — PSR-11 compliant container with:
- attribute-based injection
- scoped lifetimes
- lazy loading
- environment-specific overrides
- debug tracing & cache support
- Caching — Dual PSR-6 & PSR-16 compatible cache engine
- Fence — Enforce singleton-style class safety
- MacroMix — Dynamically extend objects or classes with macros
- Memoizer —
once()
andmemoize()
helpers for deterministic caching - Global Utilities — Like
pipe()
,retry()
,measure()
,flatten()
, and more
composer require infocyph/intermix
Supported PHP versions:
InterMix Version | PHP Version |
---|---|
2.x.x and above | 8.2 or newer |
1.x.x | 8.0–8.1 compatible |
use function Infocyph\InterMix\container;
$c = container();
$c->definitions()->bind('now', fn () => new DateTimeImmutable());
echo $c->get('now')->format('c');
Enable autowiring with attributes:
$c->options()->setOptions(
injection: true,
methodAttributes: true,
propertyAttributes: true
);
Tag-based resolution:
$c->definitions()->bind('a', A::class, tags: ['service']);
$c->definitions()->bind('b', B::class, tags: ['service']);
foreach ($c->findByTag('service') as $svc) {
$svc()->handle();
}
See full container guide at: 📖 https://intermix.readthedocs.io/en/latest/di/overview.html
MacroTest::mix(new class {
public function hello($name) {
return "Hey, $name!";
}
});
echo (new MacroTest)->hello('Ali'); // Hey, Ali!
use function Infocyph\InterMix\Remix\once;
$value = once(fn() => rand(1000, 9999)); // Only runs once per file+line
Full documentation available on ReadTheDocs:
🔗 https://intermix.readthedocs.io
Includes:
- ✅ Getting Started & Quickstart
- 📦 DI Container Guide (bindings, scopes, attributes, lifetimes)
- 🧩 Modules: Memoizer, Fence, MacroMix
- 🧪 Testing & Caching Tips
- 📘 PDF/ePub formats
composer install
composer test
Got ideas or improvements? Join us!
📂 Open issues 📬 Submit a PR — we welcome quality contributions
MIT Licensed — use it freely, modify it openly.