Download the PHP package yitznewton/maybe-php without Composer
On this page you can find all versions of the php package yitznewton/maybe-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download yitznewton/maybe-php
More information about yitznewton/maybe-php
Files in yitznewton/maybe-php
Package maybe-php
Short Description A Maybe monad implementation for PHP
License BSD-2-Clause
Informations about the package maybe-php
A Maybe monad implementation for PHP
This project was wholly inspired by a blog post by @linepogl.
Motivation
Dealing with null
values (and, in PHP, falsy values) is tedious and prone
to developer error (viz the null pointer exception, trying to dereference
a null
).
In my exposure to Haskell, I learned about the awesomeness of pattern matching,
whereby you can get the compiler to force yourself to handle all possibilities.
This combines with a tool called Maybe
to require specific handling for
"null" and "non-null" possibilities.
PHP does not offer pattern matching, but we can still use classes to wrap raw values, and require us to handle null conditions, without repeated explicit null checking and conditionals.
Examples
Simple
Before:
After:
With callback
Loose-falsy
Performance
In a simple test using PHP 5.5, performance was approximately 20% that of
a straight is_null()
check in an if/else conditional. In other words it
takes 5 times as long to run.
You can reproduce the test locally by running the profiling testsuite in
PHPUnit. You will first need to install XHProf, and override the XHProf lib
directory using a local phpunit.xml
config.
Dictionary wrapper
maybe-php includes an array wrapper called Dictionary
, whereby trying to
access properties on the wrapper will return a Maybe
object. You can specify
whether to return a plain Maybe
(default) or a LooseMaybe
.