Skip to content

Commit

Permalink
style: naming, etc (#130)
Browse files Browse the repository at this point in the history
  • Loading branch information
priyadi authored Sep 22, 2024
1 parent 5492af6 commit a31910f
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 22 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
* refactor: remove unneeded `initializableTargetPropertiesNotInSource`
* fix: `Map` class property is now inheritance aware
* feat: `AllowDelete` now can be attached to remover methods to take effect
* style: naming, etc

## 1.7.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,15 +165,13 @@ public function createObjectToObjectMetadata(

// determine properties to map

$propertyMappingResolver = new PropertyMappingResolver(
$propertiesToMap = PropertyMappingResolver::resolvePropertiesToMap(
propertyListExtractor: $this->propertyListExtractor,
sourceClass: $sourceClass,
targetClass: $targetClass,
targetAllowsDynamicProperties: $targetAllowsDynamicProperties,
);

$propertiesToMap = $propertyMappingResolver->getPropertiesToMap();

// iterate over properties to map

$effectivePropertiesToMap = [];
Expand All @@ -192,19 +190,19 @@ public function createObjectToObjectMetadata(
->getReadInfo($targetClass, $targetProperty);
$targetConstructorWriteInfo = $this
->getConstructorWriteInfo($targetClass, $targetProperty);
$targetSetterWriteInfo = $this
$targetWriteInfo = $this
->getSetterWriteInfo($targetClass, $targetProperty);

// determine if target allows delete

$targetAllowsDelete = AllowDeleteResolver::allowDelete(
$sourceClass,
$sourceProperty,
$targetClass,
$targetProperty,
$sourceReadInfo,
$targetReadInfo,
$targetSetterWriteInfo,
sourceClass: $sourceClass,
sourceProperty: $sourceProperty,
targetClass: $targetClass,
targetProperty: $targetProperty,
sourceReadInfo: $sourceReadInfo,
targetReadInfo: $targetReadInfo,
targetWriteInfo: $targetWriteInfo,
);

// process source read mode
Expand Down Expand Up @@ -269,7 +267,7 @@ public function createObjectToObjectMetadata(

// skip if target is not writable

if ($targetConstructorWriteInfo === null && $targetSetterWriteInfo === null) {
if ($targetConstructorWriteInfo === null && $targetWriteInfo === null) {
continue;
}

Expand All @@ -291,28 +289,28 @@ public function createObjectToObjectMetadata(
$targetRemoverWriteName = null;
$targetRemoverWriteVisibility = Visibility::None;

if ($targetSetterWriteInfo === null) {
if ($targetWriteInfo === null) {
$targetSetterWriteMode = WriteMode::None;
$targetSetterWriteName = null;
$targetSetterWriteVisibility = Visibility::None;
} elseif ($targetSetterWriteInfo->getType() === PropertyWriteInfo::TYPE_ADDER_AND_REMOVER) {
} elseif ($targetWriteInfo->getType() === PropertyWriteInfo::TYPE_ADDER_AND_REMOVER) {
$targetSetterWriteMode = WriteMode::AdderRemover;
$targetSetterWriteName = $targetSetterWriteInfo->getAdderInfo()->getName();
$targetRemoverWriteName = $targetSetterWriteInfo->getRemoverInfo()->getName();
$targetSetterWriteVisibility = match ($targetSetterWriteInfo->getAdderInfo()->getVisibility()) {
$targetSetterWriteName = $targetWriteInfo->getAdderInfo()->getName();
$targetRemoverWriteName = $targetWriteInfo->getRemoverInfo()->getName();
$targetSetterWriteVisibility = match ($targetWriteInfo->getAdderInfo()->getVisibility()) {
PropertyWriteInfo::VISIBILITY_PUBLIC => Visibility::Public,
PropertyWriteInfo::VISIBILITY_PROTECTED => Visibility::Protected,
PropertyWriteInfo::VISIBILITY_PRIVATE => Visibility::Private,
default => Visibility::None,
};
$targetRemoverWriteVisibility = match ($targetSetterWriteInfo->getRemoverInfo()->getVisibility()) {
$targetRemoverWriteVisibility = match ($targetWriteInfo->getRemoverInfo()->getVisibility()) {
PropertyWriteInfo::VISIBILITY_PUBLIC => Visibility::Public,
PropertyWriteInfo::VISIBILITY_PROTECTED => Visibility::Protected,
PropertyWriteInfo::VISIBILITY_PRIVATE => Visibility::Private,
default => Visibility::None,
};
} else {
$targetSetterWriteMode = match ($targetSetterWriteInfo->getType()) {
$targetSetterWriteMode = match ($targetWriteInfo->getType()) {
PropertyWriteInfo::TYPE_METHOD => WriteMode::Method,
PropertyWriteInfo::TYPE_PROPERTY => WriteMode::Property,
default => WriteMode::None,
Expand All @@ -328,8 +326,8 @@ public function createObjectToObjectMetadata(
$targetSetterWriteVisibility = Visibility::None;
}
} else {
$targetSetterWriteName = $targetSetterWriteInfo->getName();
$targetSetterWriteVisibility = match ($targetSetterWriteInfo->getVisibility()) {
$targetSetterWriteName = $targetWriteInfo->getName();
$targetSetterWriteVisibility = match ($targetWriteInfo->getVisibility()) {
PropertyWriteInfo::VISIBILITY_PUBLIC => Visibility::Public,
PropertyWriteInfo::VISIBILITY_PROTECTED => Visibility::Protected,
PropertyWriteInfo::VISIBILITY_PRIVATE => Visibility::Private,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,27 @@
*/
final class PropertyMappingResolver
{
/**
* @param class-string $sourceClass
* @param class-string $targetClass
* @return array<int,array{string,string}>
*/
public static function resolvePropertiesToMap(
PropertyListExtractorInterface $propertyListExtractor,
string $sourceClass,
string $targetClass,
bool $targetAllowsDynamicProperties,
): array {
$resolver = new self(
propertyListExtractor: $propertyListExtractor,
sourceClass: $sourceClass,
targetClass: $targetClass,
targetAllowsDynamicProperties: $targetAllowsDynamicProperties,
);

return $resolver->getPropertiesToMap();
}

/**
* @var array<string,string>
*/
Expand All @@ -41,7 +62,7 @@ final class PropertyMappingResolver
* @param class-string $sourceClass
* @param class-string $targetClass
*/
public function __construct(
private function __construct(
private readonly PropertyListExtractorInterface $propertyListExtractor,
private readonly string $sourceClass,
private readonly string $targetClass,
Expand Down

0 comments on commit a31910f

Please sign in to comment.