/** * Adds the type data module to the type system. * * @param ITypeDataModule $module * * @return void */ public function registerTypeDataModule(ITypeDataModule $module) { $this->typeDataModules[] = $module; foreach ($module->functions() as $name => $returnType) { $normalizedFunctionName = $this->normalizeFunctionName($name); $this->functionTypeMap[$normalizedFunctionName] = $returnType; unset($this->functions[$normalizedFunctionName]); } foreach ($module->types() as $name => $typeData) { $normalizedClassName = $this->normalizeClassName($name); $this->classTypeMap[$normalizedClassName] = $typeData; unset($this->objectTypes[$normalizedClassName]); } }