crypto_scythe/observ_r

通过PHP Traits实现的动态观察者模式

1.0.0 2015-09-26 17:15 UTC

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)

?>