/** * Asserts that item type is collection defined type * * @param string $instanceName * @param string|int|null $index * @return void * @throws \InvalidArgumentException */ private function assertValidTypeLazy($instanceName, $index = null) { $realType = $this->configInterface->getInstanceType($this->configInterface->getPreference($instanceName)); if (!in_array($this->type, $this->classReaderInterface->getParents($realType), true)) { $this->throwTypeException($realType, $index); } }
/** * Retrieve list of parents * * @param string $type * @return array */ public function getParents($type) { if (!class_exists($type)) { return $this->_default; } return $this->_classReader->getParents($type) ?: $this->_default; }
/** * Get list of method parameters * * Retrieve an ordered list of constructor parameters. * Each value is an array with following entries: * * array( * 0, // string: Parameter name * 1, // string|null: Parameter type * 2, // bool: whether this param is required * 3, // mixed: default value * ); * * @param string $className * @return array|null */ public function getParameters($className) { // if the definition isn't found in the list gathered from the compiled file then using reflection to find it if (!array_key_exists($className, $this->_definitions)) { return $this->reader->getConstructor($className); } $definition = $this->_definitions[$className]; if ($definition !== null) { if (is_string($this->_signatures[$definition])) { $this->_signatures[$definition] = $this->_unpack($this->_signatures[$definition]); } return $this->_signatures[$definition]; } return null; }