decodelabs / fluidity
Tools for creating fluent interfaces
Installs: 26 502
Dependents: 7
Suggesters: 0
Security: 0
Stars: 4
Watchers: 4
Forks: 1
Open Issues: 1
Requires
- php: ^8.0
Requires (Dev)
README
Tools for creating fluent interfaces.
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.
Installation
Install via Composer:
composer require decodelabs/fluidity
Usage
Method chaining
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 });
Licensing
Fluidity is licensed under the MIT License. See LICENSE for the full license text.