netolabs / simple-container

PSR-11 标准的极简且快速实现

v0.2.4 2021-11-03 05:26 UTC

This package is auto-updated.

Last update: 2024-08-29 05:24:47 UTC


README

PSR-11 容器标准的极简且快速实现。它不打算进行复杂的依赖注入,只是最基本的实现。考虑使用 PHP-DI 或 Symfony DI 来实现更完整的依赖注入。

安装

通过 Composer

$ composer require netolabs/simple-container

需求

需要 PHP 7.3 及以上版本。

使用方法

向容器中添加定义

$container = new SimpleContainer();
$service = new MySuperCoolService();

$container->set(MySuperCoolService::class, $service);

从容器中获取

if ($container->has(MySuperCoolService::class) {
    $service = $container->get(MySuperCoolService::class);
}

添加可调用定义

在此处,我们添加了一个匿名函数,该函数将在第一次通过 set() 访问定义时被调用。计算后的值将被缓存以供后续访问。

$container = new SimpleContainer();

$container->set('myCallable', function() {
    return 'a computed value';
});

$value = $container->get('myCallable');
// value is 'a computed value'

每次访问时调用可调用对象

如果您需要每次访问定义时都调用可调用对象,可以使用 resolve() 方法。

$value = $container->resolve('myCallable');
// value is 'a computed value'

许可证

MIT 许可证 (MIT)。请参阅许可证文件获取更多信息。