genkgo/cache

There is no license information available for the latest version (0.4.3) of this package.

0.4.3 2022-11-25 14:12 UTC

This package is auto-updated.

Last update: 2024-11-25 18:36:52 UTC


README

PHP Cache library using mechanisms as originally proposed by Anthony Ferrara.

Credit to Anthony Ferrara.

All the credit for the cache mechanisms go to @ircmaxell. Please go and read his blog post explaining why cache should be implemented this way.

Installation

Requires PHP 5.5 or later. There are no plans to support PHP 5.4 or PHP 5.3. In case this is an obstacle for you, conversion should be no problem. The library is very small.

It is installable and autoloadable via Composer as genkgo/cache.

Quality

Scrutinizer Code Quality Code Coverage Build Status

To run the unit tests at the command line, issue phpunit -c tests/. PHPUnit is required.

This library attempts to comply with PSR-1, PSR-2, and PSR-4. If you notice compliance oversights, please send a patch via pull request.

Getting Started

Create your own adapter

Create an adapter that implements the CacheAdapterInterface. A simple array adapter would look as follows. The array adapter is also shipped with this library.

<?php
namespace My\Namespace;

use Genkgo\Cache\CacheAdapterInterface;

class ArrayAdapter implements CacheAdapterInterface
{
    private $data = [];

    public function set($key, $value)
    {
        $this->data[$key] = $value;
    }

    public function get($key)
    {
        if ($this->exists($key)) {
            return $this->data[$key];
        }
    }

    public function delete($key)
    {
        if ($this->exists($key)) {
            unset($this->data[$key]);
        }
    }

    private function exists($key)
    {
        return isset($this->data[$key]) || array_key_exists($key, $this->data);
    }
}

Inject the adapter

To use your adapter, inject it into another object and start using the api. If you do not want any cache, but your class relies on a cache adapter being there, inject the NullAdapter.

Contributing

  • Found a bug? Please try to solve it yourself first and issue a pull request. If you are not able to fix it, at least give a clear description what goes wrong. We will have a look when there is time.
  • Want to see a feature added, issue a pull request and see what happens. You could also file a bug of the missing feature and we can discuss how to implement it.