This package is abandoned and no longer maintained. No replacement package was suggested.

Utilities for PHP 7.1 and up

0.2.32 2022-02-17 10:09 UTC


Latest Stable Version Latest Unstable Version License Maintainability Test Coverage SensioLabsInsight


some utilities for php, nothing special, nothing new, just to my taste


installation is simply done via composer composer require chris-kruining/utilities


The main component of the library is the Collection at the moment. The goal of the Collection is to provide a object oriented interface for array functions. It also has a couple of extra's like method chaining and linq-esc implementation(NOT DONE YET) so that you may interact with the Collection as if it was a database table

for example

CPB\Utilities\Collections\Collection::from([ 'these', 'are', null, null, 'some', null, 'test', 'values', null ])
  ->toString(' ');

would yield

'these are some test values'

which is the same as

join(' ', array_filter([ 'these', 'are', null, null, 'some', null, 'test', 'values', null ]));

I agree, the vannilla way is shorter now but the strength really comes into play when we start adding callbacks and increase the chain length

CPB\Utilities\Collections\Collection::from([ 'these', '', '', 'are', null, 'some', null, 'test', '', 'values', '' ])
  ->filter(fn($v) => $v !== null && strlen($v) > 0)
  ->map(fn($k, $v) => $k . '::' . $v)

would yield


which is the same as

$filtered = array_filter(
  [ 'these', '', '', 'are', null, 'some', null, 'test', '', 'values', '' ], 
  fn($v) => $v !== null && strlen($v) > 0

join('|', array_map(fn($k, $v) => $k . '::' . $v, array_keys($filtered), $filtered));

As you can see the collection version maintains readability whereas the vannilla version loses in my opinion it's charm because to achieve a single goal you need to spread it out over multiple variables


  • Implement basic features to Collection
  • Bloat Collection with features :P
  • Split of features into an inheritance tree
  • Split lazy mode from Collection into LazyCollection and implement PHP's array functions as generators
  • Finish inheritance structure
  • Implement LazyCollection
  • (Better) implement the Queryable interface in a new class so the Collection doesn't become bloated