PHPackages                             ecomdev/cache-key - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. ecomdev/cache-key

ActiveLibrary

ecomdev/cache-key
=================

Library that allows you to generate cache keys based on various data formats.

1.1.0(10y ago)11104.2k↓38.6%1MITPHPPHP ^5.6|&gt;=7.0

Since May 5Pushed 10y agoCompare

[ Source](https://github.com/EcomDev/cache-key)[ Packagist](https://packagist.org/packages/ecomdev/cache-key)[ RSS](/packages/ecomdev-cache-key/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (7)Versions (3)Used By (1)

Cache Key [![Build Status](https://camo.githubusercontent.com/90eb35952887700eb56ebfda65b2b301baf44a7ffe4fe3d4577e1d39ed14ffec/68747470733a2f2f7472617669732d63692e6f72672f45636f6d4465762f63616368652d6b65792e737667)](https://travis-ci.org/EcomDev/cache-key) [![Coverage Status](https://camo.githubusercontent.com/448c78e75a4a4f2e2dda92af2423085d7580948eae709a76b681d7bc20ef9c94/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f45636f6d4465762f63616368652d6b65792f62616467652e7376673f6272616e63683d646576656c6f70)](https://coveralls.io/github/EcomDev/cache-key?branch=develop)
=================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#cache-key---)

Library that allows you to generate cache keys based on various data formats.

Main components:

- **Key generator** Allows to generate a cache key based on different data input
- **Key converters** Allows to convert various php data types into key friendly data type
- **Key normalizer** Normalizes characters in generated string to match particular cache key sanity checks of your own cache adapter.

Installation
------------

[](#installation)

```
composer require ecomdev/cache-key
```

Usage
-----

[](#usage)

### Automatic non alpha-num characters encoding

[](#automatic-non-alpha-num-characters-encoding)

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Generator;

$generator = new Generator(new EncodeNormalizer());
$generator->generate('some_bad_#^.;:/\\_character'); // Generates "some_bad_235e2e3b3a2f5c_character"
```

### Multiple normalizers

[](#multiple-normalizers)

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Normalizer\LengthNormalizer;
use EcomDev\CacheKey\NormalizerChain;
use EcomDev\CacheKey\Generator;

$normalizer = new NormalizerChain([
    new EncodeNormalizer(),
    new LengthNormalizer(16)
]);

$generator = new Generator($normalizer);
$generator->generate('some_bad_#^.;:/\\_character'); // Generates "some_bad_235e2e3b3a2f5c_character"
```

### Using converter for key value map

[](#using-converter-for-key-value-map)

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Converter\KeyValueConverter;
use EcomDev\CacheKey\Converter\ScalarConverter;
use EcomDev\CacheKey\Generator;

$generator = new Generator(
    new EncodeNormalizer(),
    new KeyValueConverter(new ScalarConverter())
);

$generator->generate([
    'some-key' => 'some-value',
    'another-key' => 'another-value'
]); // Generates "some-key_some-value_another-key_another-value"
```

### Cache Key Info Provider Usage

[](#cache-key-info-provider-usage)

Your custom cache able model

```
class YourCustomModel implements EcomDev\CacheKey\InfoProviderInterface
{
    public function getCacheKeyInfo()
    {
        return [
            'some-key' => 'some-value',
            'another-key' => 'another-value'
        ];
    }
}
```

Usage in key generation

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Converter\KeyValueConverter;
use EcomDev\CacheKey\Converter\ScalarConverter;
use EcomDev\CacheKey\Generator;

$object = new YourCustomModel();

$generator = new Generator(
    new EncodeNormalizer(),
    new KeyValueConverter(new ScalarConverter())
);

$generator->generate($object); // Generates "some-key_some-value_another-key_another-value"
```

### PSR-6 compatible key generation

[](#psr-6-compatible-key-generation)

```
use EcomDev\CacheKey\Normalizer\Psr6Normalizer;
use EcomDev\CacheKey\Generator;

$generator = new Generator(Psr6Normalizer::create());
$generator->generate('give_me-psr-6-compatible_#^.;:/\\-key'); // Generates "give_me-psr-6-compatible_235e.3b3a2f5c-key"
```

### Prefixed Key Generation

[](#prefixed-key-generation)

```
use EcomDev\CacheKey\Normalizer\Psr6Normalizer;
use EcomDev\CacheKey\Generator;

$generator = new Generator(Psr6Normalizer::create(), null, 'prefix-');
$generator->generate('some-non-prefixed-key'); // Generates "prefix-some-non-prefixed-key"
```

Contribution
------------

[](#contribution)

Make a pull request based on develop branch

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~14 days

Total

2

Last Release

3650d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/190d12eae43e0d874394cbc7fc49ea94c6b6e1bc8b05f75b94fbd0b9c4b5d15f?d=identicon)[IvanChepurnyi](/maintainers/IvanChepurnyi)

---

Top Contributors

[![IvanChepurnyi](https://avatars.githubusercontent.com/u/866758?v=4)](https://github.com/IvanChepurnyi "IvanChepurnyi (10 commits)")

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/ecomdev-cache-key/health.svg)

```
[![Health](https://phpackages.com/badges/ecomdev-cache-key/health.svg)](https://phpackages.com/packages/ecomdev-cache-key)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
