crypto_scythe / observ_r
通过PHP Traits实现的动态观察者模式
1.0.0
2015-09-26 17:15 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-08-29 04:39:51 UTC
README
通过PHP Traits实现的动态观察者模式,带有观察者以对特定主题更新通知做出不同反应
安装
文件 composer.json
{
"require": {
"crypto_scythe/observ_r": "*"
}
}
然后在命令行中
composer install
用法(类似于 examples/basic_example.php)
<?php
require( 'vendor/autoload.php' );
class testSubject {
use crypto_scythe\Observ_r\Subject;
public function testObservers() {
echo 'Notifying attached observers' . PHP_EOL;
$this->subjectNotify( array( 'code' => true, 'text' => 'Lorem Ipsum dolor...' ) );
}
}
class testObserverCode {
use crypto_scythe\Observ_r\Observer;
public function __construct( $subject ) {
$this->observerAttach( $subject, 'operate' );
}
public function operate( $data ) {
var_dump( $data['code'] );
}
}
class testObserverText {
use crypto_scythe\Observ_r\Observer;
public function __construct( $subject ) {
$this->observerAttach( $subject, 'operation' );
}
public function operation( $data ) {
var_dump( $data['text'] );
}
}
$subject = new testSubject();
$observerText = new testObserverText( $subject );
$observerCode = new testObserverCode( $subject );
$subject->testObservers();
// Each observer reacts to the update
// Detach the first observer (Text)
$observerText->observerDetach( $subject );
$subject->testObservers();
// Now only the remaining observer reacts (Code)
?>