https://github.com/tarcisiojr/php-cache
POC PHP Cache System
https://github.com/tarcisiojr/php-cache
cache persistent php strategy ttl
Last synced: 6 months ago
JSON representation
POC PHP Cache System
- Host: GitHub
- URL: https://github.com/tarcisiojr/php-cache
- Owner: tarcisiojr
- License: mit
- Created: 2017-04-21T03:32:13.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-04-29T02:57:06.000Z (almost 9 years ago)
- Last Synced: 2025-08-23T07:43:33.132Z (7 months ago)
- Topics: cache, persistent, php, strategy, ttl
- Language: PHP
- Homepage:
- Size: 73.2 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PHP-CACHE
[](https://travis-ci.org/tarcisiojr/php-cache)
[](https://codecov.io/gh/tarcisiojr/php-cache)
[](https://packagist.org/packages/tarcisiojr/php-cache)
[](https://packagist.org/packages/tarcisiojr/php-cache)
[](https://packagist.org/packages/tarcisiojr/php-cache)
[](https://packagist.org/packages/tarcisiojr/php-cache)
[](https://insight.sensiolabs.com/projects/eafc1a0d-c3a7-41b9-ada3-f73f00ca3c87)
Biblioteca para baseada na ideia do pacote [once]('https://github.com/spatie/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
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:
```json
```
## 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
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.