ock / adaptism
Library to map adapter classes.
dev-main
2025-05-23 12:35 UTC
Requires
- php: >=8.3
- ock/class-discovery: dev-main
- ock/dependency-injection: dev-main
- ock/egg: dev-main
- ock/helpers: dev-main
- psr/container: ^2.0
- symfony/dependency-injection: ^7.1.5
Requires (Dev)
- ock/testing: dev-main
- phpstan/phpstan: 2.0.x-dev
- phpunit/phpunit: ^10.5.38
- symfony/yaml: ^7.1.5
This package is auto-updated.
Last update: 2026-05-29 02:02:50 UTC
README
Adaptism
Adaptism is a package that finds adapters for objects using a dispatch map.
Adapters can be annotated with attributes for discovery.
Convert objects
use Ock\Adaptism\Tests\Fixtures\Color\Hex\HexColorInterface; use Ock\Adaptism\Tests\Fixtures\Color\Rgb\RgbColor; use Ock\Adaptism\UniversalAdapter\UniversalAdapterInterface; function f(UniversalAdapterInterface $universalAdapter): void { $rgb = new RgbColor(255, 0, 0); $hex = $universalAdapter->adapt($rgb, HexColorInterface::class); assert($hex instanceof HexColorInterface); assert($hex->getHexCode() === 'ff0000'); }
Declare adapters
use Ock\Adaptism\Attribute\Adapter; use Ock\Adaptism\Attribute\Parameter\Adaptee; use Ock\Adaptism\Tests\Fixtures\Color\Hex\HexColorInterface; use Ock\Adaptism\Tests\Fixtures\Color\Rgb\RgbColor; use Ock\Adaptism\Tests\Fixtures\Color\Rgb\RgbColorInterface; class C { #[Adapter] public static function adapt( #[Adaptee] RgbColorInterface $rgb, ): HexColorInterface { return new RgbColor( sprintf( '%02x%02x%02x', $rgbColor->red(), $rgbColor->green(), $rgbColor->blue())); } }
More examples?
Study the tests!