snapshotpl/lazy-container

Lazy loading PSR-11 容器装饰器

1.2.1 2019-08-08 21:05 UTC

This package is auto-updated.

Last update: 2024-08-29 03:36:46 UTC


README

PSR-11 容器的懒加载

从任何 PSR-11 容器 获取可懒加载的对象!由 Proxy Manager 驱动

用法

// Build LazyLoadingValueHolderFactory as you want
$lazyLoadingFactory = new ProxyManager\Factory\LazyLoadingValueHolderFactory();

// Prepare you favorite container
$pimple = new Pimple\Container();
$pimple['service'] = function ($container) {
    return new HeavyService($container->get('dependency'));
};

// Create map (service name => class name) where you choose which services should be lazy loaded
$classMap = ['service' => HeavyService::class];

// Put all things to LazyContainer
$container = new LazyContainer($pimple, $lazyLoadingFactory, $classMap);

// Use LazyContainer exactly same like other PSR-11 container (thanks for interface)
$service = $container->get('service');

// Now $service is a proxy, so HeavyService wasn't created yet

// After first usage of $service is real HeavyService!
$result = $service->doSomething();

安装

您可以通过 Composer 安装此包

composer require snapshotpl/lazy-container