tarcisiojr/php-cache

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

Sistema para cache de métodos baseado em https://github.com/spatie/once

0.0.1 2017-04-29 01:19 UTC

This package is not auto-updated.

Last update: 2024-06-17 05:11:01 UTC


README

PHP-CACHE

Build Status codecov Latest Stable Version Total Downloads Latest Unstable Version composer.lock SensioLabsInsight

Biblioteca para baseada na ideia do pacote once. Esta biblioteca permite cachear métodos podendo utilizar diversas estratégias para o comportamento do cache.

Segue abaixo um exemplo simples de utilização:

<?php

class ClasseQualquer  {

    public function gerarNroAleatorio() {
        return Cache::create(function () {
            return rand(1, 100);
        })
            ->once()        // Cacheia o valor uma única vez.
            ->statefull()   // Cache existente apenas em nivel de request.
            ->scope(false)  // Cache do método entre instâncias.
            ->ttl(10)       // Tempo do cache sera de 10 segundos.
            ->get();        // Executa a obtenção do valor
    }
}

Instalação

Editar seu arquivo composer.json e adicionar a sequinte dependência:


Interface para sistemas de Cache

Algumas estratégias de ache utilizam um sistema próprio para cachear os valores. Estes sistemas podem ser alterados configurando a própria estrategia através de uma implementação da interface PHP\Cache\API\CacheSystem.

Como recurso básico existem duas implementações:

  • PHP\Cache\Core\System\FileCacheSystem: neste sistema de cache persisente, onde os valores são salvos em um arquivo JSON configurado, os valores serão matidos enquanto o arquivo não for excluídos e/ou seus valores expurgados.

  • PHP\Cache\Core\System\StaticArrayCacheSystem: neste sistema os valores são persistidos apenas durante a execução do script, utilizando-se um array estático para mantê-lo.

Uso

Configure os sistemas de cache, se desejar:

  • PHP\Cache\Core\Cache::setStateCacheSystem(CacheSystem) : cache utilizado para armazenar os estados das estratégias. Caso deseje manter este estado através das execuções dos scripts, este deve ser um sistema de cache persistente.

  • PHP\Cache\Core\Strategy\StatefullCacheStrategy::setCacheSystem(CacheSystem): cache persistente utilizado pela estratégia Statefull.

  • PHP\Cache\Core\Strategy\StatelessCacheStrategy::setCacheSystem(CacheSystem): cache de request utilizado pela estratégia Stateless.

Em seguida basta selecionar o método (podendo ser static ou não) e/ou função a ser cacheada, utilize o método estático PHP\Cache\Core\Cache::create para criar uma instância do cache.

A partir da instância de cache você poderá selecionar a estrágias de armazenado e expiração, bem como escopo.

Por fim, para o obter o valor cachead (ou não) basta executar o método get().

Exemplo:

<?php

class ClasseQualquer  {

    public function gerarNroAleatorio() {
        return Cache::create(function () {
            return rand(1, 100);
        })
            ->once()        // Cacheia o valor uma única vez.
            ->statefull()   // Cache existente apenas em nivel de request.
            ->scope(false)  // Cache do método entre instâncias.
            ->ttl(10)       // Tempo do cache sera de 10 segundos.
            ->get();        // Executa a obtenção do valor
    }
}

Respeitando as estratégias configuradas, todas a vezes que método gerarNroAleatorio da classe ClasseQualquer for executado, a partir da segunda execução, o valor retornado será idêntico ao primeiro valor retornado. Este valor se será expirado após 10 segundos devido a extratégia ttl(10), portanto após este tempo será retornado um novo valor.