refac: toArrayExcept를 toArray로 통합

This commit is contained in:
2022-06-09 01:21:21 +09:00
parent 4b436b1499
commit 52554048ae
+9 -15
View File
@@ -2,6 +2,7 @@
namespace sammo\DTO; namespace sammo\DTO;
use Ds\Set;
use sammo\DTO\Attr\Convert; use sammo\DTO\Attr\Convert;
use sammo\DTO\Converter\DefaultConverter; use sammo\DTO\Converter\DefaultConverter;
@@ -110,10 +111,13 @@ abstract class DTO
return $object; return $object;
} }
public function toArray(): array public function toArray(string ...$exceptKeys): array
{ {
$reflection = new \ReflectionClass($this::class); $reflection = new \ReflectionClass($this::class);
$result = []; $result = [];
$exceptKeySet = new Set($exceptKeys);
foreach ($reflection->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) { foreach ($reflection->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
$value = $property->getValue($this); $value = $property->getValue($this);
$attrs = Util\DTOUtil::getAttrs($property); $attrs = Util\DTOUtil::getAttrs($property);
@@ -123,6 +127,10 @@ abstract class DTO
continue; continue;
} }
if($exceptKeySet->contains($name)){
continue;
}
if (key_exists(Attr\RawName::class, $attrs)) { if (key_exists(Attr\RawName::class, $attrs)) {
$rawAttr = $attrs[Attr\RawName::class]; $rawAttr = $attrs[Attr\RawName::class];
$attr = new Attr\RawName(...$rawAttr->getArguments()); $attr = new Attr\RawName(...$rawAttr->getArguments());
@@ -153,18 +161,4 @@ abstract class DTO
} }
return $result; return $result;
} }
public function toArrayExcept(string ...$keys): array{
$reflection = new \ReflectionClass($this::class);
$values = $this->toArray();
foreach($keys as $key){
if(!$reflection->hasProperty($key)){
throw new \Exception("Key {$key} does not exist");
}
if(key_exists($key, $values)){
unset($values[$key]);
}
}
return $values;
}
} }