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/intermixSupported 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+lineFull 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 testGot ideas or improvements? Join us!
๐ Open issues ๐ฌ Submit a PR โ we welcome quality contributions
MIT Licensed โ use it freely, modify it openly.