subcosm / 观测站
通用观测模式组件
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-09-29 01:48:12 UTC
README
通用观测模式组件
什么是观测站?
观测站是一个通用接口编排工具,用于使用数据传输容器进行可观察对象。它受到 PHP 的 SplObserver 实现的启发。
观测站的目标是什么?
提供一个易于使用、易于理解、轻量级的事件中心,为特定实现提供无需为每个事件调用者注册方法的方法。
如何使用它?
Subcosm 观测站在 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();
结果
Hello from firstAction!
Another hello from secondAction!
包稳定性与维护者
此包被认为是稳定的。此包的维护者是
许可协议
此包根据 MIT 许可证 许可。