public function testInitServiceEvent() { $this->assertEquals('blah blah blah', Dummy::saySomething()); $this->appPkg->addEventListener(Event\Type\System\InitService::toType(), function ($event) { $pkgName = $event->getCurrentNode()->getComposerName(); if ($event->getShortClassName() == 'Dummy') { return function () use($pkgName) { $this->pkgName = $pkgName; $this->sentence = 'I hope it will work'; }; } }); $ext = $this->appPkg->getExtensions()[0]; $this->assertEquals(spl_object_hash($ext), spl_object_hash($this->appPkg->getChildNodes()[0])); // this event handler would not be triggered $ext->addEventListener(Event\Type\System\InitService::toType(), function ($event) { $pkgName = $event->getCurrentNode()->getComposerName(); if ($event->getShortClassName() == 'Dummy') { return function () use($pkgName) { $this->pkgName = $pkgName; $this->sentence = "Wanna sleep"; }; } }); // fire event by creating a service instance $dummy = Dummy::create(); $this->assertEquals('I hope it will work', $dummy->saySomething()); $this->assertEquals('phpcrystal/phpcrystaltest', $dummy->getPackageName()); }
/** * @return PHPCrystal\PHPCrystal\Service\Event\Type\InitService */ public function dispatchInitServiceEvent($serviceInstance) { $initServiceEvent = Event\Type\System\InitService::create($serviceInstance); return parent::dispatch($initServiceEvent); }