General Observation Pattern Component
Observatory is a general interface orchestration for observable
objects using a container for data transport. It's inspired by
the SplObserver
implementation of PHP.
Providing an easy to use, easy to understand, lightweight event hub to specific implementations without provided methods for each event invoker registration.
Subcosm Observatory is available at Packagist:
# composer require subcosm/observatory ~1.0
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);
}
}
use Subcosm\Observable\{
ObserverInterface,
ObservationContainerInterface as Container
};
class EchoMessageObserver implements ObserverInterface {
public function update(Container $container)
{
echo $container->getMessage().PHP_EOL;
}
}
$observable = new Foo;
$observer = new EchoMessageObserver;
$observable->attach($observer);
$observable->firstAction();
$observable->secondAction();
Results in:
Hello from firstAction!
Another hello from secondAction!
This package is considered stable. The maintainers of this package are:
This package is licensed under the MIT-License.