kikimarik / strict-di-container
Composer PSR-11 package for Dependency Injection Container
v1.0.1
2022-09-27 14:51 UTC
Requires
- php: >=7.4
- psr/container: ^2.0.2
Requires (Dev)
- codeception/codeception: 4.2.0
- codeception/module-asserts: ^1.0.0
- codeception/module-phpbrowser: ^1.0.0
This package is auto-updated.
Last update: 2024-10-27 19:17:42 UTC
README
Features
- Object-oriented design (without static methods etc.)
- Compatible with PHP 7.4 and later, including PHP 8.1
- Compatible with PSR-11
Why do you need it
The library helps you project to inject it dependencies. It has a nice object-oriented design, and it is going to please you with its simplicity. Before testing a class that depends on that library component, it is easy to replace that dependency with a fake class.
A Simple Example
<?php //Load Composer's autoloader use kikimarik\di\identity\DefaultClassIdentityFactory; use kikimarik\di\identity\HashClassIdentity; use kikimarik\di\map\UniqueClassEntityMap; use kikimarik\di\StrictContainer; use kikimarik\di\tests\unit\Bar; use kikimarik\di\tests\unit\Foo; use kikimarik\di\tests\unit\FooBar; require_once __DIR__ . "/vendor/autoload.php"; $classMap = new UniqueClassEntityMap(); $classMap->put(new HashClassIdentity(Foo::class, "md5"), new Foo("foo")); $classMap->put(new HashClassIdentity(Bar::class, "md5"), new Bar("bar")); $container = new StrictContainer( $classMap, new DefaultClassIdentityFactory( HashClassIdentity::class, [ "algo" => "md5" ] ) ); if ($container->has(Foo::class)) { print_r($container->get(Foo::class)); // got object from container } if (!$container->has(FooBar::class)) { print_r("Container does not contain class " . FooBar::class); }
License
This software is distributed under the MIT license.
Installation
- via composer
composer require kikimarik/strict-di-container
Tests
Lognote tests use the Codeception 4.2.0 framework. All unit tests must be passed.
For tests running you can run the command:
./vendor/bin/codecept run