https://github.com/decodelabs/fluidity
Tools for creating fluent interfaces in PHP
https://github.com/decodelabs/fluidity
fluid-interface php
Last synced: 3 months ago
JSON representation
Tools for creating fluent interfaces in PHP
- Host: GitHub
- URL: https://github.com/decodelabs/fluidity
- Owner: decodelabs
- License: mit
- Created: 2020-10-06T09:38:35.000Z (over 4 years ago)
- Default Branch: develop
- Last Pushed: 2025-04-14T08:47:18.000Z (3 months ago)
- Last Synced: 2025-04-15T14:07:04.234Z (3 months ago)
- Topics: fluid-interface, php
- Language: PHP
- Homepage:
- Size: 54.7 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Fluidity
[](https://packagist.org/packages/decodelabs/fluidity)
[](https://packagist.org/packages/decodelabs/fluidity)
[](https://packagist.org/packages/decodelabs/fluidity)
[](https://github.com/decodelabs/fluidity/actions/workflows/integrate.yml)
[](https://github.com/phpstan/phpstan)
[](https://packagist.org/packages/decodelabs/fluidity)### 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.
---
## Installation
Install via Composer:
```bash
composer require decodelabs/fluidity
```## Usage
### Method chaining
```php
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.
```php
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](./LICENSE) for the full license text.