/** * @param array * @return null */ private function setupInjectorEvents($pathParams) { $injector = $this->injector; $this->eventManager->on(Injector::EVENT_CREATE_INSTANCE_AFTER, function ($className, $instance) use($injector, $pathParams) { if ($instance instanceof Request) { $request = $instance; if ($injector->hasDependency(Request::class)) { throw new \Exception("Only one instance of " . Request::class . " is allowed"); } $this->setupRequest($request, $pathParams); $injector->setDependency($request, Request::class); } }); $this->eventManager->on(Injector::EVENT_CREATE_INSTANCE_AFTER, function ($className, $instance) { if ($instance instanceof Response) { $response = $instance; $this->setupResponse($response); } }); $this->eventManager->on(Injector::EVENT_CREATE_INSTANCE_AFTER, function ($className, $instance) use($injector) { if ($instance instanceof Session) { $session = $instance; if ($injector->hasDependency(Session::class)) { throw new \Exception("Only one instance of " . Session::class . " is allowed"); } if (!$injector->hasDependency(Request::class)) { throw new \Exception(Request::class . " must be injected before " . Session::class); } $request = $injector->getDependency(Request::class); $this->setupSession($session, $request); $injector->setDependency($session, Session::class); } }); }
private function trigger($name, $parameters) { $name = "websocket-" . $name; $this->eventManager->trigger($name, $parameters); }