Cache that expires in the blink of an eye
, (*1)
This package contains a helper function (and a Facade should you prefer that) called blink that can cache values. The cache only spans the length of a single request., (*2)
blink()->put('key', 'value');
blink()->get('key'); // Returns 'value'
blink()->get('prefix*'); // Returns an array of values whose keys start with 'prefix'
// once will only execute the given callable if the given key didn't exist yet
$expensiveFunction = function() {
   return rand();
});
blink()->once('random', $expensiveFunction); // returns random number
blink()->once('random', $expensiveFunction); // returns the same number
blink()->has('key'); // Returns true
blink()->has('prefix*'); // Returns true if the blink contains a key that starts with 'prefix'
// Specify a default value for when the specified key does not exist
blink()->get('non existing key', 'default') // Returns 'default'
blink()->put('anotherKey', 'anotherValue');
// Put multiple items in one go
blink()->put(['ringo' => 'drums', 'paul' => 'bass']);
blink()->all(); // Returns an array with all items
blink()->forget('key'); // Removes the item
blink()->forget('prefix*'); // Forget all items of which the key starts with 'prefix'
blink()->flush(); // Empty the entire blink
blink()->flushStartingWith('somekey'); // Remove all items whose keys start with "somekey"
blink()->increment('number'); // blink()->get('number') will return 1 
blink()->increment('number'); // blink()->get('number') will return 2
blink()->increment('number', 3); // blink()->get('number') will return 5
// Blink implements ArrayAccess
blink()['key'] = 'value';
blink()['key']; // Returns 'value'
isset(blink()['key']); // Returns true
unset(blink()['key']); // Equivalent to removing the value
// Blink implements Countable
count(blink()); // Returns 0
blink()->put('key', 'value');
count(blink()); // Returns 1
Support us
, (*3)
We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products., (*4)
We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall., (*5)
Installation
You can install the package via composer:, (*6)
composer require spatie/laravel-blink
To enable the package, register the service provider, and optionally register the facade:, (*7)
// config/app.php
'providers' => [
    // ...
    Spatie\LaravelBlink\BlinkServiceProvider::class,
],
'aliases' => [
    ...
    'Blink' => Spatie\LaravelBlink\BlinkFacade::class,
],
Usage
A Blink instance can just be newed up., (*8)
$blink = new \Spatie\Blink\Blink()
You can call the following methods on it:, (*9)
put
/**
 * Put a value in the blink cache.
 *
 * @param string|array $name
 * @param string|int|null $value
 * 
 * @return $this
 */
public function put($name, $value = null)
get
/**
 * Get a value from the blink cache.
 *
 * This function has support for the '*' wildcard.
 *
 * @param string $name
 *
 * @return null|string
 */
public function get(string $name)
has
/*
 * Determine if the blink cache has a value for the given name.
 *
 * This function has support for the '*' wildcard.
 */
public function has(string $name) : bool
once
/**
 * Only if the given key is not present in the blink cache the callable will be executed.
 * 
 * The result of the callable will be stored in the given key and returned.
 * 
 * @param $key
 * @param callable $callable
 *
 * @return mixed
 */
You can use this to avoid using static variables to cache stuff., (*10)
This piece of code, (*11)
function foo()
{
    static $result = null;
    if (is_null($result) {
        $result = ...// do some expensive stuff here
    }
    return $result;
}
can be rewritten to, (*12)
function foo()
{
    return blink()->once('fooCache', function() {
       return ... // do some expensive stuff here
    });
}
all
/*
* Get all values in the blink cache.
*/
public function all() : array
allStartingWith
/**
 * Get all values from the blink cache which keys start with the given string.
 *
 * @param string $startingWith
 *
 * @return array
*/
public function allStartingWith(string $startingWith = '') : array
forget
/**
 * Forget a value from the blink cache.
 *
 * This function has support for the '*' wildcard.
 *
 * @param string $key
 *
 * @return $this
 */
public function forget(string $key)
flush
/**
 * Flush all values from the blink cache.
 *
 * @return $this
 */
 public function flush()
flushStartingWith
/**
 * Flush all values from the blink cache which keys start with the specified value.
 *
 * @param string $startingWith
 *
 * @return $this
 */
 public function flushStartingWith(string $startingWith)
pull
/**
 * Get and forget a value from the blink cache.
 *
 * This function has support for the '*' wildcard.
 *
 * @param string $name 
 *
 * @return null|string
 */
public function pull(string $name)
increment
/**
 * Increment a value from the blink cache.
 *
 * @param string $name
 * @param int $by
 *
 * @return int|null|string
 */
 public function increment(string $name, int $by = 1)
decrement
/**
 * Decrement a value from the blink cache.
 *
 * @param string $name
 * @param int $by
 *
 * @return int|null|string
 */
 public function decrement(string $name, int $by = 1)
Changelog
Please see CHANGELOG for more information on what has changed recently., (*13)
Testing
bash
$ composer test, (*14)
Contributing
Please see CONTRIBUTING for details., (*15)
Security
If you've found a bug regarding security please mail security@spatie.be instead of using the issue tracker., (*16)
Credits
License
The MIT License (MIT). Please see License File for more information., (*17)