PHPackages                             digital-backstage/searchable - 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. digital-backstage/searchable

ActiveLibrary

digital-backstage/searchable
============================

Provides interoperability with pagination libs

v1.3.1(8y ago)13.0kMITPHP

Since Nov 21Pushed 8y ago2 watchersCompare

[ Source](https://github.com/DigitalBackstage/searchable)[ Packagist](https://packagist.org/packages/digital-backstage/searchable)[ RSS](/packages/digital-backstage-searchable/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (2)Versions (6)Used By (0)

Searchable
==========

[](#searchable)

Provides interfaces that allow to search repositories implemented in our libraries in a standardized way.

It defines the following interfaces:

`DigitalBackstage\Searchable\Paginable`
---------------------------------------

[](#digitalbackstagesearchablepaginable)

This one defines the interface for what a `Searchable` repository should return when queried. It should be immutable, provide a subset of all available items, and pagination information, namely:

- the number of the current page;
- the number of the last page;
- the number of items per page;
- the number of available items.

Page numbers start from 1. It extends `\Traversable`, but not `\Countable`, because that would be very confusing: should it return the number of page? Of available items? Of items in the current page?

`DigitalBackstage\Searchable\SearchQuery`
-----------------------------------------

[](#digitalbackstagesearchablesearchquery)

`Searchable` repositories are queried with this object. It consists in an expression, which should be translated to DQL, SQL or JSON by the repository, and should provide information about the desired page number and page size.

`DigitalBackstage\Searchable\QueryExpression`
---------------------------------------------

[](#digitalbackstagesearchablequeryexpression)

This represents an expression, and has several implementations. Repositories should list which implementations they support.

`DigitalBackstage\Searchable\SortedSearchQuery`
-----------------------------------------------

[](#digitalbackstagesearchablesortedsearchquery)

If the client wants to specify a sort order other than the default one, it must implement `SortedSearchQuery`.

`DigitalBackstage\Searchable\Searchable`
----------------------------------------

[](#digitalbackstagesearchablesearchable)

A repository of objects. Must be queried with a `SearchQuery`, and must return a `Paginable`. Must advertise what fields it supports for querying. Should throw `PageOutOfRange`, and `UnsupportedSearchField` when appropriate.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 80% 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 ~4 days

Total

5

Last Release

3080d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/67cd398fd8b3fb3e756fe20dcc85bed5db3bc417ed0529932dd6befa9371fd06?d=identicon)[greg0ire](/maintainers/greg0ire)

---

Top Contributors

[![achevillard](https://avatars.githubusercontent.com/u/4919665?v=4)](https://github.com/achevillard "achevillard (4 commits)")[![greg0ire](https://avatars.githubusercontent.com/u/657779?v=4)](https://github.com/greg0ire "greg0ire (1 commits)")

### Embed Badge

![Health badge](/badges/digital-backstage-searchable/health.svg)

```
[![Health](https://phpackages.com/badges/digital-backstage-searchable/health.svg)](https://phpackages.com/packages/digital-backstage-searchable)
```

PHPackages © 2026

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