/** * Validates & completes the given field mapping. * * @param array $mapping The field mapping to validated & complete. * @return array The validated and completed field mapping. */ private function _validateAndCompleteFieldMapping(array &$mapping) { // Check mandatory fields if (!isset($mapping['fieldName'])) { throw MappingException::missingFieldName(); } if (!isset($mapping['type'])) { throw MappingException::missingType(); } // Complete fieldName and columnName mapping if (!isset($mapping['columnName'])) { $mapping['columnName'] = $mapping['fieldName']; } $lcColumnName = strtolower($mapping['columnName']); $this->columnNames[$mapping['fieldName']] = $mapping['columnName']; $this->fieldNames[$mapping['columnName']] = $mapping['fieldName']; $this->lcColumnToFieldNames[$lcColumnName] = $mapping['fieldName']; // Complete id mapping if (isset($mapping['id']) && $mapping['id'] === true) { if (!in_array($mapping['fieldName'], $this->identifier)) { $this->identifier[] = $mapping['fieldName']; } // Check for composite key if (!$this->isIdentifierComposite && count($this->identifier) > 1) { $this->isIdentifierComposite = true; } } // Store ReflectionProperty of mapped field $refProp = $this->reflClass->getProperty($mapping['fieldName']); $refProp->setAccessible(true); $this->reflFields[$mapping['fieldName']] = $refProp; }