public function testOn() { $emitter = new Emitter(); $emitter->on('foo', function ($a, $b) { $this->assertSame('a', $a); $this->assertSame('b', $b); }); $emitter->emit('foo', 'a', 'b'); }
/** * Makes this mapping to a multiple. * * @param Mapping $mapping The mapping object * * @return Mapping */ public function multiple(Mapping $proto) { $emitter = new Emitter(); $mapping = new Mapping($emitter, $proto->getExtensions()); $emitter->on(Events::APPLY, function (Data $data) use($mapping, $proto) { if (null === $data->getInput()) { $data->setInput([]); } $this->resize($mapping, $proto, $data->getInput()); }); $emitter->on(Events::UNAPPLY, function (Data $data) use($mapping, $proto) { $this->resize($mapping, $proto, $data->getInput()); }); return $mapping; }