route = $route; $this->_injectParams($callback); $this->callback = $callback; $dispatcher = Kiri::getDi()->get(EventProvider::class); $dispatcher->on(OnAfterWorkerStart::class, function () { if ($this->callback instanceof Closure) { return; } $this->_middlewares = MiddlewareManager::get($this->callback); $aspect = NoteManager::getSpecify_annotation(Aspect::class, $this->callback[0], $this->callback[1]); $this->callback[0] = Kiri::getDi()->get($this->callback[0]); if (!is_null($aspect)) { $this->recover($aspect); } }); } /** * @param Aspect $aspect */ public function recover(Aspect $aspect) { $aspect = Kiri::getDi()->get($aspect->aspect); if (empty($aspect)) { return; } $this->_aspect = $aspect; } /** * @param array|Closure $callback * @throws \ReflectionException */ private function _injectParams(array|Closure $callback) { $container = Kiri::getDi(); if (!($callback instanceof Closure)) { $this->params = $container->getMethodParameters($callback[0], $callback[1]); } else { $this->params = $container->getFunctionParameters($callback); } } }