subcosm/observatory 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

subcosm/observatory

Composer 安装命令:

composer require subcosm/observatory

包简介

General Observation Pattern Component

README 文档

README

General Observation Pattern Component

Build Status codecov SensioLabsInsight Code Climate Gittip

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.

统计信息

  • 总下载量: 45
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-04-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固