PHPZ icon indicating copy to clipboard operation
PHPZ copied to clipboard

Functional programming in PHP

PHPz

How to set up

In the .composer.json directory, just invoke composer.phar install and you'll get the vendor/autoloader.php you need.

The what

PHPz brings the power and expressiveness of functional programming to the PHP masses. It is heavily inspired from scalaz, which also brings functional constructs to an otherwise imperative language.

Like scalaz, PHPz uses the typeclass pattern to bind new behaviour to existing constructs.

Since PHP does not have a proper type system, PHPz needs some help to successfully get the needed typeclass instance.

A simple wrapper is provided:

$a = array("foo", "foobar", "foobarqix");


// __t($a) wraps around $a and adds typeclass behaviour
$b = __t($a)->map(function($x) { return strlen($x); })
            ->map(function($x) { return $x + 5; });

// You need to call the wrapped value with no args to unwrap it.
print_r($b()); // array(8, 11, 14)

$cs = array("foo", "foobar", "foobarqix");

$ds = __t($as)->map(function($x) { return strlen($x); })
              ->bind(function($x) { return array($x - 5, $x, $x + 5) ; });
print_r($ds()); // array(-2,3,8,1,6,11,4,9,14)

Try it for yourself !

$ php -f examples/phpz.php