From 73c9af71ab5e905c8eaf4f28be004cca04d422a3 Mon Sep 17 00:00:00 2001 From: User Date: Mon, 24 Feb 2025 19:02:59 +0300 Subject: [PATCH] 20250224#2 --- src/Component/AbstractDataObject.php | 18 +----------------- src/Repository/AbstractRepository.php | 2 +- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/src/Component/AbstractDataObject.php b/src/Component/AbstractDataObject.php index cb107a3..d79b34c 100644 --- a/src/Component/AbstractDataObject.php +++ b/src/Component/AbstractDataObject.php @@ -9,7 +9,6 @@ use ReflectionException; class AbstractDataObject { private static array $constructorEmptyAvailableClasses = []; - private static array $constructorNullAvailableClasses = []; private static array $stack = []; /** @@ -49,10 +48,6 @@ class AbstractDataObject { elseif(isset($value[$property->getName()])){ $object->{$property->getName()} = new ($property->getType()->getName())($value[$property->getName()]); } - // Значение NULL и VO может принимать null в виде единственного значения - elseif(array_key_exists($property->getName(), $value) && self::isNullAvailable($property->getType()->getName())) { - $object->{$property->getName()} = new ($property->getType()->getName())(null); - } // Значения нет и VO может быть без параметров elseif(self::isEmptyAvailable($property->getType()->getName())) { $object->{$property->getName()} = new ($property->getType()->getName())(); @@ -85,18 +80,6 @@ class AbstractDataObject { } - /** - * @throws ReflectionException - */ - private static function isNullAvailable(string $class) : bool { - if(isset(self::$constructorNullAvailableClasses[$class])) return self::$constructorNullAvailableClasses[$class]; - if(!$constructor = (new \ReflectionClass($class))->getConstructor()) return self::$constructorNullAvailableClasses[$class] = false; - $parameters = $constructor->getParameters(); - if(count($parameters) == 1 && $parameters[0]->allowsNull()) return self::$constructorNullAvailableClasses[$class] = true; - return self::$constructorNullAvailableClasses[$class] = false; - } - - /** * @throws ReflectionException */ @@ -111,6 +94,7 @@ class AbstractDataObject { return self::$constructorEmptyAvailableClasses[$class] = true; } + /** * @return array */ diff --git a/src/Repository/AbstractRepository.php b/src/Repository/AbstractRepository.php index a5d01a8..1618792 100644 --- a/src/Repository/AbstractRepository.php +++ b/src/Repository/AbstractRepository.php @@ -37,7 +37,7 @@ abstract class AbstractRepository extends AbstractDataObject implements Reposito $fieldValue[$property->getName()] = $property->getValue($object); } - if(false !== $fieldValue[$property->getName()]) { + if(array_key_exists($property->getName(), $fieldValue) && false !== $fieldValue[$property->getName()]) { $out[strtolower(preg_replace("'([A-Z])'", "_$1", $property->getName()))] = $fieldValue[$property->getName()]; } }