Skip to content

Commit

Permalink
Remove aggregate and delegator dispensers.
Browse files Browse the repository at this point in the history
Reflect changes in docs.
  • Loading branch information
kamalkhan committed Aug 24, 2019
1 parent efb890e commit 7c4c02a
Show file tree
Hide file tree
Showing 8 changed files with 0 additions and 524 deletions.
65 changes: 0 additions & 65 deletions README.md
Expand Up @@ -16,8 +16,6 @@ Dispense entities under a disciplined regime.
- [Pipeline Dispenser](#pipeline-dispenser)
- [Chain Dispenser](#chain-dispenser)
- [Using the chain dispenser as an http middleware](#using-the-chain-dispenser-as-an-http-middleware)
- [Aggregate Dispenser](#aggregate-dispenser)
- [Delegator Dispenser](#delegator-dispenser)
- [Creating custom/extended dispensers](#creating-customextended-dispensers)
- [Example dispenser implementation](#example-dispenser-implementation)
- [Changelog](#changelog)
Expand Down Expand Up @@ -224,69 +222,6 @@ $middlewares->push(new Dispenser(function ($request, $next) {
$chain->dispense($request);
```

### Aggregate Dispenser

An aggregate stores dispensers tagged by a unique key/slug.

```php
<?php
require_once __DIR__ . '/vendor/autoload.php';

use Bhittani\Dispenser\Dispenser;
use Bhittani\Dispenser\AggregateDispenser;

$aggregate = new AggregateDispenser;

// Add a dispenser.
$aggregate->add('lc', new Dispenser(function ($str) {
return strtolower($str);
}));

// Add a built-in php function string as a dispenser.
$aggregate->add('uc', new Dispenser('strtoupper');

$aggregate->has('foo'); // false

$aggregate->has('lc'); // true

$toLowerCase = $aggregate->get('lc');
$toLowerCase->dispense(['FoO']); // foo

$toUpperCase = $aggregate->get('uc');
$toUppercase->dispense(['FoO']); // FOO
```

> The aggregate keeps a unique key/slug store. A collision replaces the previous delegate at the specified key.
### Delegator Dispenser

A delegator accepts aggregate dispenser delegations. This is more practically used for accepting fallback aggregate lookups that are provided by strangers in your library.

```php
<?php
require_once __DIR__ . '/vendor/autoload.php';

use Bhittani\Dispenser\Dispenser;
use Bhittani\Dispenser\AggregateDispenser;
use Bhittani\Dispenser\DelegatorDispenser;

$aggregate1 = new AggregateDispenser;
$aggregate1->add('foo', new Dispenser(function ($str) {
return strtolower($str);
}));

$aggregate2 = new AggregateDispenser;
$aggregate2->add('bar', new Dispenser(function ($str) {
return strtoupper($str);
}));

$delegator = new DelegatorDispenser;
$delegator->delegate($aggregate1);
$delegator->delegate($aggregate2);

$delegator->dispense(['foo', 'BaR']); // bar
```

### Creating custom/extended dispensers

Extended dispensers can be created by implementing the `Bhittani\Dispenser\DispenserInterface` interface. It has only one required method `dispense` which accepts variadic arguments. This makes it very simple to mix and utilize other dispensers. The power is in your hands.
Expand Down
145 changes: 0 additions & 145 deletions src/AggregateDispenser.php

This file was deleted.

35 changes: 0 additions & 35 deletions src/AggregateDispenserInterface.php

This file was deleted.

48 changes: 0 additions & 48 deletions src/DelegatorDispenser.php

This file was deleted.

18 changes: 0 additions & 18 deletions src/IteratorInterface.php

This file was deleted.

25 changes: 0 additions & 25 deletions src/NotFoundException.php

This file was deleted.

0 comments on commit 7c4c02a

Please sign in to comment.