PHPackages                             kununu/projections - 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. [Caching](/categories/caching)
4. /
5. kununu/projections

ActiveLibrary[Caching](/categories/caching)

kununu/projections
==================

Handle projections of items to cache

v6.0.0(3mo ago)118.0k—2.6%[3 PRs](https://github.com/kununu/projections/pulls)MITPHPPHP &gt;=8.4CI passing

Since Jul 23Pushed 3mo ago7 watchersCompare

[ Source](https://github.com/kununu/projections)[ Packagist](https://packagist.org/packages/kununu/projections)[ RSS](/packages/kununu-projections/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (11)Versions (18)Used By (0)

Kununu Projections
==================

[](#kununu-projections)

Projections are a temporary storage and are a way to access data faster than fetching it from a regular storage (e.g. getting data from a cache vs from the database).

Data needs to be projected first so that its projection can be accessed without the need to access the actual source of truth, which is usually a slower process.

Projections have a short lifetime, and are not updated automatically if data in source of truth changes. So they need to be frequently refreshed.

Overview
--------

[](#overview)

This repository contains the interfaces to implement projections logic.

It also includes an implementation of the projection over the Symfony's Tag Aware Cache Pool component, which can use several cache providers, like Memcached, Redis or simply process memory, amongst others.

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

[](#installation)

### Require this library to your project

[](#require-this-library-to-your-project)

```
composer require kununu/projections
```

### If you wish to have projections implemented via Symfony's Tag Aware Cache Pool, you must also request the required packages for that implementation

[](#if-you-wish-to-have-projections-implemented-via-symfonys-tag-aware-cache-pool-you-must-also-request-the-required-packages-for-that-implementation)

```
composer require symfony/cache
```

Also you will need to include a serializer (e.g. JMSSerializer)

```
composer require jms/serializer
```

(Or, in this example, if you want to use this library on a Symfony App you may want to require the `jms/serializer-bundle` instead of `jms/serializer`)

```
composer require jms/serializer-bundle
```

Concepts
--------

[](#concepts)

- [Cache Cleaner](docs/cache-cleaner.md)
- [Projection Item](docs/projection-item.md)
- [Provider](docs/provider.md)
- [Repository](docs/repository.md)
- [Serialization](docs/serialization.md)

Integrations
------------

[](#integrations)

- [Symfony Integrations](docs/symfony.md)

---

[![Continuous Integration](https://github.com/kununu/projections/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/kununu/projections/actions/workflows/continuous-integration.yml/badge.svg)[![Quality Gate Status](https://camo.githubusercontent.com/bb334f83331c56dcbab54c2245cdac7e2c760523141b1bbff1ce07813340170c/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d6b756e756e755f70726f6a656374696f6e73266d65747269633d616c6572745f737461747573)](https://sonarcloud.io/dashboard?id=kununu_projections)

###  Health Score

57

—

FairBetter than 98% of packages

Maintenance82

Actively maintained with recent releases

Popularity28

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity85

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 70.4% 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 ~184 days

Total

14

Last Release

95d ago

Major Versions

v1.3.0 → v2.0.02023-01-16

v2.1.0 → v3.0.02024-01-19

v3.0.0 → v4.0.02024-04-08

v4.0.1 → v5.0.02025-03-03

v5.0.0 → v6.0.02026-02-12

PHP version history (6 changes)v1.0.0PHP ^7.2

v1.3.0PHP &gt;=7.2

v3.0.0PHP &gt;=8.0

v4.0.0PHP &gt;=8.1

v5.0.0PHP &gt;=8.3

v6.0.0PHP &gt;=8.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/41483600?v=4)[Hugo Gonçalves](/maintainers/hugo-goncalves-kununu)[@hugo-goncalves-kununu](https://github.com/hugo-goncalves-kununu)

---

Top Contributors

[![hugo-goncalves-kununu](https://avatars.githubusercontent.com/u/41483600?v=4)](https://github.com/hugo-goncalves-kununu "hugo-goncalves-kununu (19 commits)")[![joaoalves-kununu](https://avatars.githubusercontent.com/u/22587229?v=4)](https://github.com/joaoalves-kununu "joaoalves-kununu (3 commits)")[![kununu-drocha](https://avatars.githubusercontent.com/u/47111094?v=4)](https://github.com/kununu-drocha "kununu-drocha (3 commits)")[![csizmazia](https://avatars.githubusercontent.com/u/2581924?v=4)](https://github.com/csizmazia "csizmazia (1 commits)")[![usmichael](https://avatars.githubusercontent.com/u/25005284?v=4)](https://github.com/usmichael "usmichael (1 commits)")

---

Tags

symfonycacheprojections

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Type Coverage Yes

### Embed Badge

![Health badge](/badges/kununu-projections/health.svg)

```
[![Health](https://phpackages.com/badges/kununu-projections/health.svg)](https://phpackages.com/packages/kununu-projections)
```

###  Alternatives

[tedivm/stash-bundle

Incorporates the Stash caching library into Symfony.

841.4M16](/packages/tedivm-stash-bundle)

PHPackages © 2026

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