snapshotpl / lazy-container
Lazy loading PSR-11 container decorator
1.2.1
2019-08-08 21:05 UTC
Requires
- php: ^5.6 || ^7.0
- ocramius/proxy-manager: ^1.0 || ^2.0
- psr/container: ^1.0
Requires (Dev)
- container-interop/container-interop: ^1.2.0
- phpunit/phpunit: ^5.7.27 || ^6.5.7
- snapshotpl/nano-container: ^1.0
This package is auto-updated.
Last update: 2024-11-29 04:14:33 UTC
README
Lazy loading for PSR-11 container
Get lazy loadable object from any PSR-11 container! Powered by Proxy Manager
Usage
// 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();
Installation
You can install this package through Composer:
composer require snapshotpl/lazy-container