optimus / onion
Installs: 103 804
Dependents: 15
Suggesters: 0
Security: 0
Stars: 72
Watchers: 6
Forks: 18
Open Issues: 1
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/testbench: ~3.1
- phpunit/phpunit: ~4.7
- satooshi/php-coveralls: dev-master@dev
This package is not auto-updated.
Last update: 2024-11-09 18:27:27 UTC
README
A standalone middleware library without dependencies inspired by middleware in Laravel (Illuminate/Pipeline).
I have written a small blog post about the library and how to use it: Implementing before/after middleware in PHP
Installation
composer require optimus/onion ~1.0
Usage
class BeforeLayer implements LayerInterface { public function peel($object, Closure $next) { $object->runs[] = 'before'; return $next($object); } } class AfterLayer implements LayerInterface { public function peel($object, Closure $next) { $response = $next($object); $object->runs[] = 'after'; return $response; } } $object = new StdClass; $object->runs = []; $onion = new Onion; $end = $onion->layer([ new AfterLayer(), new BeforeLayer(), new AfterLayer(), new BeforeLayer() ]) ->peel($object, function($object){ $object->runs[] = 'core'; return $object; }); var_dump($end);
Will output
..object(stdClass)#161 (1) {
["runs"]=>
array(5) {
[0]=>
string(6) "before"
[1]=>
string(6) "before"
[2]=>
string(4) "core"
[3]=>
string(5) "after"
[4]=>
string(5) "after"
}
}