getHooks($hooks, $annotationData); foreach ($providers as $provider) { $this->callInitializeHook($provider, $input, $annotationData); } } protected function callInitializeHook($provider, $input, AnnotationData $annotationData) { $state = StateHelper::injectIntoCallbackObject($provider, $input); $result = $this->doInitializeHook($provider, $input, $annotationData); $state->restore(); return $result; } private function doInitializeHook($provider, $input, AnnotationData $annotationData) { if ($provider instanceof InitializeHookInterface) { return $provider->initialize($input, $annotationData); } if (is_callable($provider)) { return $provider($input, $annotationData); } } }