diff --git a/sources/classes/ClassMapper.php b/sources/classes/ClassMapper.php index 0c98a7f..74b6675 100644 --- a/sources/classes/ClassMapper.php +++ b/sources/classes/ClassMapper.php @@ -6,6 +6,7 @@ use DateTimeImmutable; use DateTimeInterface; use Exception; use goodboyalex\php_components_pack\attributes\GetOnly; +use goodboyalex\php_components_pack\types\GUID; use ReflectionClass; use ReflectionException; use ReflectionProperty; @@ -341,6 +342,11 @@ final class ClassMapper */ $property->setAccessible(true); + // Если значение string, а требуется GUID + if (is_string($value) && $property->getType()->getName() === GUID::class) + // - то присваиваю значение GUID + $value = GUID::Parse($value, true); + // Если значение null if (!is_bool($value) && ($value == null || $value == "null")) // - то присваиваю значение по умолчанию diff --git a/sources/types/GUID.php b/sources/types/GUID.php index 78077f1..e04ab96 100644 --- a/sources/types/GUID.php +++ b/sources/types/GUID.php @@ -23,15 +23,15 @@ use Throwable; /** * Определение константы для пустого GUID как строки. */ -if (!defined('GUID_EMPTY_STRING')) - define('GUID_EMPTY_STRING', '00000000-0000-0000-0000-000000000000'); +if (!defined('GUID_EMPTY')) + define('GUID_EMPTY', '00000000-0000-0000-0000-000000000000'); /** * Класс GUID предназначен для работы с уникальными идентификаторами формата UUID/GUID. * * @author Александр Бабаев * @package php_components_pack - * @version 1.0 + * @version 1.0.1 * @since 1.2 */ final class GUID implements IArrayable, IDuplicated, ISerializable, IComparable, IHashable, JsonSerializable @@ -40,7 +40,7 @@ final class GUID implements IArrayable, IDuplicated, ISerializable, IComparable, * @var string $Value Внутреннее свойство для хранения значения GUID. */ private string $Value { - get => StringExtension::IsNullOrWhitespace($this->Value) ? GUID_EMPTY_STRING : $this->Value; + get => StringExtension::IsNullOrWhitespace($this->Value) ? GUID_EMPTY : $this->Value; set { if (!self::Validate($value)) throw new InvalidArgumentException('Неверный идентификатор (GUID) / Wrong GUID identifier.'); @@ -54,9 +54,9 @@ final class GUID implements IArrayable, IDuplicated, ISerializable, IComparable, * * @param string $value Значение GUID. По умолчанию, пустой GUID. * - * @see GUID_EMPTY_STRING + * @see GUID_EMPTY */ - public function __construct (string $value = GUID_EMPTY_STRING) + public function __construct (string $value = GUID_EMPTY) { $this->Value = $value; } @@ -94,7 +94,7 @@ final class GUID implements IArrayable, IDuplicated, ISerializable, IComparable, } catch (Throwable) { // Если возникла ошибка при генерации GUID, возвращаем пустой GUID - $guid = GUID_EMPTY_STRING; + $guid = GUID_EMPTY; } // Создание экземпляра GUID со сгенерированным значением и возврат его @@ -126,7 +126,7 @@ final class GUID implements IArrayable, IDuplicated, ISerializable, IComparable, * * @return bool True, если GUID недействителен или равен пустому значению. */ - public static function isInvalidOrEmpty (?GUID $guid): bool + public static function IsInvalidOrEmpty (?GUID $guid): bool { return !self::Validate($guid) || $guid->IsEqualsTo(self::Empty()); } diff --git a/tests/types/GUIDTest.php b/tests/types/GUIDTest.php index 7f2e047..ea8a2a9 100644 --- a/tests/types/GUIDTest.php +++ b/tests/types/GUIDTest.php @@ -53,9 +53,9 @@ class GUIDTest extends TestCase { $this->PrepareForTest(); - $this->assertFalse(GUID::isInvalidOrEmpty(new GUID ('5c0e5f0e-d033-44b1-a0b6-d0e2e369bdd1'))); - $this->assertTrue(GUID::isInvalidOrEmpty(new GUID ('00000000-0000-0000-0000-000000000000'))); - $this->assertTrue(GUID::isInvalidOrEmpty(null)); + $this->assertFalse(GUID::IsInvalidOrEmpty(new GUID ('5c0e5f0e-d033-44b1-a0b6-d0e2e369bdd1'))); + $this->assertTrue(GUID::IsInvalidOrEmpty(new GUID ('00000000-0000-0000-0000-000000000000'))); + $this->assertTrue(GUID::IsInvalidOrEmpty(null)); } public function testParse () @@ -117,7 +117,7 @@ class GUIDTest extends TestCase $guid = GUID::Generate(); - self::assertFalse(GUID::isInvalidOrEmpty($guid)); + self::assertFalse(GUID::IsInvalidOrEmpty($guid)); } public function testFromBytes ()