Fluidity provides a set of middleware interfaces that aid in the development of libraries that themselves aim to provide fluid interfaces.
Get news and updates on the DecodeLabs blog.
Install via Composer:
composer require decodelabs/fluidity
namespace DecodeLabs\Fluidity;
interface Then
{
public function then(callable $callback): Then;
public function thenEach(iterable $values, callable $callback): Then;
public function thenIf(?bool $truth, callable $yes, callable $no=null): Then;
public function thenUnless(?bool $truth, callable $no, callable $yes=null): Then;
}
Create fluent object interfaces with basic generic logic structure support.
use DecodeLabs\Fluidity\Then;
use DecodeLabs\Fluidity\ThenTrait;
$test = new class() implements Then {
use ThenTrait;
public function doThing(int $value=null) {}
};
$truth = true;
$test
->then(function($test) {
$test->doThing();
})
->thenEach([1, 2, 3], function($test, $value) {
// Called three times
$test->doThing($value);
})
->thenIf($truth, function($test) {
// This gets called if($truth)
}, function($test) {
// This get called otherwise
})
->thenUnless($truth, function($test) {
// This gets called if(!$truth)
}, function($test) {
// This get called otherwise
});
Fluidity is licensed under the MIT License. See LICENSE for the full license text.