Example #1
0
 public function testEventCanBeStopped()
 {
     $mediator = new Mediator();
     $mediator->attach('foo.bar', function ($event) {
         $event->foo = 'bar';
         $event->stop();
     });
     $mediator->attach('foo.bar', function ($event) {
         $event->bar = 'foo';
     });
     $event = $mediator->trigger('foo.bar', new Event());
     $this->assertEquals('bar', $event->foo);
     $this->assertFalse(isset($event->bar));
 }
Example #2
0
 public function testMediatorCanUseWildcardsForBindingToEvents()
 {
     $mediator = new Mediator();
     $mediator->attach('*', function ($event) {
         $event->triggered[] = '*';
     });
     $mediator->attach('foo.*', function ($event) {
         $event->triggered[] = 'foo.*';
     }, 100);
     $mediator->attach('foo.barz', function ($event) {
         $event->triggered[] = 'foo.barz';
     }, 99);
     $mediator->attach('*.bar*', function ($event) {
         $event->triggered[] = '*.bar*';
     }, 101);
     $event = $mediator->trigger('foo.barz', new Event());
     $this->assertEquals(['*.bar*', 'foo.*', 'foo.barz', '*'], $event->triggered);
     $underscored = $mediator->trigger('foo.bar_baz', new Event());
     $this->assertEquals(['*.bar*', 'foo.*', '*'], $underscored->triggered);
 }