walnut/lib_container

该软件包的最新版本(dev-main)没有可用的许可信息。

dev-main 2024-01-21 16:48 UTC

This package is not auto-updated.

Last update: 2024-09-29 19:54:21 UTC


README

一个非常易于使用的DI-container实现。

示例

final class DbUserRepository implements UserRepository {
    public function __construct(
        private /*readonly*/ QueryExecutor $queryExecutor
    ) {}
    //...
}

$mapping = [
    UserRepository::class => DbUserRepository::class,
    QueryExecutor::class => PdoQueryExecutor::class,
    PdoQueryExecutor::class => [
        'dsn' => 'mysql:host=localhost;dbname=demo',
        'user' => 'root',
        'pwd' => 'root'
    ],
    UserService::class => fn(UserRepository $userRepository)
        => new UserService($userRepository, [
            'tokenValidityInMinutes' => 180
        ]
    ),
    LoggerInterface::class => FileLogger::class,
    FileLogger::class => LocalFileLogger::class
];
$container = new ContainerAdapter(new Container($mapping));
$container->get(UserService::class); //returns UserService with injected DbUserRepository
$container->get(LoggerInterface::class); //returns LocalFileLogger