subcosm / observatory
General Observation Pattern Component
v1.1
2017-04-07 22:09 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ~6.0
This package is not auto-updated.
Last update: 2024-11-10 02:17:41 UTC
README
General Observation Pattern Component
What is observatory?
Observatory is a general interface orchestration for observable
objects using a container for data transport. It's inspired by
the SplObserver
implementation of PHP.
What is the goal of observatory?
Providing an easy to use, easy to understand, lightweight event hub to specific implementations without provided methods for each event invoker registration.
How to use it?
Subcosm Observatory is available at Packagist:
# composer require subcosm/observatory ~1.0
Creating the Observable Object
use Subcosm\Observable\{ ObservableInterface, ObservableTrait, AbstractObservationContainer as Container }; class Foo implements ObservableInterface { use ObservableTrait; public function firstAction() { $message = 'Hello from firstAction!'; $container = new class($this, __METHOD__, $message) extends Container { protected $message; public function __construct($object, string $stage, string $message) { $this->message = $message; parent::__construct($object, $stage); } public function getMessage() { $this->message; } }; $this->notify($container); } public function secondAction() { $message = 'Another hello from secondAction!'; $container = new class($this, __METHOD__, $message) extends Container { protected $message; public function __construct($object, string $stage, string $message) { $this->message = $message; parent::__construct($object, $stage); } public function getMessage() { $this->message; } }; $this->notify($container); } }
Creating an Observer
use Subcosm\Observable\{ ObserverInterface, ObservationContainerInterface as Container }; class EchoMessageObserver implements ObserverInterface { public function update(Container $container) { echo $container->getMessage().PHP_EOL; } }
Using the Observable and Observer
$observable = new Foo; $observer = new EchoMessageObserver; $observable->attach($observer); $observable->firstAction(); $observable->secondAction();
Results in:
Hello from firstAction!
Another hello from secondAction!
Package Stability and Maintainers
This package is considered stable. The maintainers of this package are:
License
This package is licensed under the MIT-License.