PHPackages                             amtgard/amtgard-interfaces - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. amtgard/amtgard-interfaces

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

amtgard/amtgard-interfaces
==========================

Generic interfaces for use by Amtgard dependencies

v1.0.2(9mo ago)051MITPHPPHP &gt;=8.1

Since Jul 15Pushed 9mo agoCompare

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

READMEChangelog (3)DependenciesVersions (5)Used By (1)

amtgard-interfaces
==================

[](#amtgard-interfaces)

Generic interfaces package

Interfaces Defined
------------------

[](#interfaces-defined)

- **EntryInterface** - a key value pair
- **HashSetInterface** - a set interface using EntryInterface elements
- **QueueInterface** - a queue interface using EntryInterface elements
- **RedrivableQueueInterface** - a redrivable queue interface (see below)
- **SetQueue** - a Queue that dedupes entries based on a Set
- **PubSubQueueInterface** - a pub/sub topic provider based on a redrivable SetQueue

Definitions
-----------

[](#definitions)

### RedrivableQueueInterface

[](#redrivablequeueinterface)

A redrivable queue operates just like a normal queue (`enqueue()`, `dequeue()`) but adds two new interface methods:

- `redrive()` - replays all un-`commit()`ed `dequeue()`ed entries. All `dequeue()`ed entries are automatically appended to the redrive queue.
- `commit()` - marks an entry as non-redrivable (removes from the redrive queue)

So in operation, your workflow would be something like this:

```
$entry = $redrivableQ->dequeue();
$requiresRedrive = false;
try {
  $processStatus = processEntry($entry);
  if (SUCCESS == $processStatus) {
    $redrivableQ->commit($entry);
  }
} catch (\ProcessingException $e) {
    $requiresRedrive = true;
}
```

###  Health Score

32

—

LowBetter than 71% of packages

Maintenance60

Regular maintenance activity

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity47

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 ~17 days

Total

2

Last Release

281d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1b6d7e891827c823a1d8bbef786eb928fe33647f76f0ae469c3bea4757b51888?d=identicon)[amtgard](/maintainers/amtgard)

---

Top Contributors

[![esdraelon](https://avatars.githubusercontent.com/u/7896847?v=4)](https://github.com/esdraelon "esdraelon (3 commits)")

### Embed Badge

![Health badge](/badges/amtgard-amtgard-interfaces/health.svg)

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

###  Alternatives

[razonyang/yii2-rate-limiter

Yii2 Rate Limiter

1025.0k1](/packages/razonyang-yii2-rate-limiter)

PHPackages © 2026

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