/** * @param array $mappedClass * @param Mapping $mapping * @param string $className * * @throws MappingException */ protected static function setAliasedProperties(array &$mappedClass, Mapping $mapping, string $className) { if (false === empty($mappedClass[static::ALIASED_PROPERTIES_KEY])) { $mapping->setPropertyNameAliases($mappedClass[static::ALIASED_PROPERTIES_KEY]); foreach (\array_keys($mapping->getAliasedProperties()) as $propertyName) { if (false === \in_array($propertyName, static::getClassProperties($className), true)) { throw new MappingException(\sprintf('Could not alias property %s in class %s because it does not exist.', $propertyName, $className)); } } } }
/** * @param \NilPortugues\Api\Mapping\Mapping $mapping * * @link http://jsonapi.org/format/#document-member-names-allowed-characters */ protected function buildValidPropertyAlias($mapping) { $aliases = $mapping->getAliasedProperties(); foreach ($aliases as &$alias) { $alias = DataAttributesHelper::transformToValidMemberName($alias); } $mapping->setPropertyNameAliases($aliases); }
/** * @param Mapping $mapping * * @return array */ protected function getPropertiesFromMapping(Mapping $mapping) { $properties = array_merge(array_combine($mapping->getProperties(), $mapping->getProperties()), $mapping->getAliasedProperties()); return $properties; }
public function testAliasedPropertiesRenamedIdProperties() { $this->mapping->setPropertyNameAliases(['postId' => 'newId']); $this->assertEquals(['postId' => 'newId'], $this->mapping->getAliasedProperties()); $this->assertEquals(['newId'], $this->mapping->getIdProperties()); }