PHPackages                             ecks/ecks - 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. ecks/ecks

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

ecks/ecks
=========

An array decorator that adds a fluid functional interface similar to that of an Array in Ruby. Inspired by underscore.php.

0.0.12(11y ago)051GPL3PHP

Since Feb 6Pushed 8y ago2 watchersCompare

[ Source](https://github.com/crantok/ecks)[ Packagist](https://packagist.org/packages/ecks/ecks)[ RSS](/packages/ecks-ecks/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (1)Versions (13)Used By (0)

Ecks is...

- inspired by underscore.php
- far from complete
- highly likely to be broken

Ecks will be great because...

- it will have a "fluid" (i.e. call-chaining) interface, but without underscore.php's need for chain() and value() methods
- it provides a KeyValuePair class which callbacks may return. Unlike underscore.php, this can give client code control over the indexing of a result array
- instances of Ecks will be (almost, see below) interchangeable with arrays
- it includes an array decorator (which implements Ecks' array interchangeability) that you can reuse for your own classes

Depending on what you want to do with Ecks, it may be a waste of your time because...

- PHP has global functions that operate on arrays and that check that a "native" PHP array is passed to them. Examples of this kind of function are array\_intersect() and array\_map(). If you inject an instance of Ecks in to your code where you would normally inject an array, and if you use this kind of global function in that code, then your code will fall over. You can always get the undecorated (i.e. unwrapped) array out of an instance of Ecks using Ecks::asArray(). It's up to you whether this meets your requirements.
- Most of Ecks' methods are already available for native arrays as global PHP functions. A few of them are (or will be) new or different. For instance PHP's array\_diff is dependent on the order of arguments. Ecks::diff() will not be. (It will return all elements that are not common to both arrays.) A few of Ecks' planned methods do not exist at all as global functions in PHP, e.g. Ecks::reduceRight().

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity60

Established project with proven stability

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

Total

12

Last Release

4041d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/442892?v=4)[Jay Hellings](/maintainers/crantok)[@crantok](https://github.com/crantok)

---

Top Contributors

[![crantok](https://avatars.githubusercontent.com/u/442892?v=4)](https://github.com/crantok "crantok (30 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

PHPackages © 2026

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