titasgailius / closure-cache
Cache method, function or closure results.
1.0
2017-05-05 20:59 UTC
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-11-12 12:53:30 UTC
README
A simple PHP cache mechanism for storing method, function or closure results.
It calculates result of the closure once and returns it on subsequent calls.
Usage
<?php use ClosureCache\ClosureCache; function somethingSlow() { return once(function () { // Code... }); }
Installation
With composer
$ composer require titasgailius/closure-cache
{ "require": { "titasgailius/closure-cache": "~1.00" } }
Example
Before
<?php use ClosureCache\ClosureCache; class SomeClass { public static function think() { sleep(10); return 'It takes some time to process this.'; } } /** * 10 seconds to process it. */ SomeClass::think(); /** * Another 10 seconds to process it * which makes it 20 seconds in total. */ SomeClass::think();
After
<?php use ClosureCache\ClosureCache; class SomeClass { public static function think() { return once(function () { sleep(10); return 'It takes some time to process this.'; }); } } /** * 10 seconds to process */ SomeClass::think(); /** * ClosureCache detects that this was already * processed and returns it from the cache. */ SomeClass::think();
ClosureCache is parameter-sensitive
<?php use ClosureCache\ClosureCache; class SomeClass { public static function think($message) { return once(function () use ($message) { sleep(10); return $message; }); } } /** * 10 seconds to process */ SomeClass::think('foo'); /** * Another 10 seconds to process it because * different parameters were passed. */ SomeClass::think('bar');