20250721 1.2 Бета 1
This commit is contained in:
43
sources/traits/GUID/GUIDArrayableTrait.php
Normal file
43
sources/traits/GUID/GUIDArrayableTrait.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\GUID;
|
||||
|
||||
use goodboyalex\php_components_pack\exceptions\TypeException;
|
||||
use goodboyalex\php_components_pack\types\GUID;
|
||||
|
||||
/**
|
||||
* Часть кода класса GUID, отвечающая за реализацию интерфейса IArrayable.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.2
|
||||
*/
|
||||
trait GUIDArrayableTrait
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function ToArray (): array
|
||||
{
|
||||
return [
|
||||
"type_class" => GUID::class,
|
||||
"value" => $this->Value
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* @throws TypeException Если тип не соответствует.
|
||||
*/
|
||||
public function FromArray (array $array): void
|
||||
{
|
||||
// Проверка типа
|
||||
if (!isset($array["type_class"]) || $array["type_class"] != GUID::class)
|
||||
// - если тип не соответствует, выбрасываем исключение
|
||||
throw new TypeException($array["type_class"] ?? "", 'Неверный тип данных / Wrong data type.');
|
||||
|
||||
// Получаем значение GUID
|
||||
$this->Value = $array["value"];
|
||||
}
|
||||
}
|
56
sources/traits/GUID/GUIDComparableTrait.php
Normal file
56
sources/traits/GUID/GUIDComparableTrait.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\GUID;
|
||||
|
||||
use Deprecated;
|
||||
|
||||
/**
|
||||
* Часть кода класса GUID, отвечающая за реализацию интерфейса IComparable.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.2
|
||||
*/
|
||||
trait GUIDComparableTrait
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function IsEqualsTo (mixed $other): bool
|
||||
{
|
||||
return $this->Value === $other->ToString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function CompareTo (mixed $other): int
|
||||
{
|
||||
// Сравниваем строковые значения GUID
|
||||
$compareResult = strcmp($this->Value, $other->ToString());
|
||||
|
||||
// Возвращаем результат сравнения
|
||||
// - если текущий GUID меньше, чем второй
|
||||
if ($compareResult < 0)
|
||||
// - возвращаем -1
|
||||
return -1;
|
||||
// - если текущий GUID больше, чем второй
|
||||
else if ($compareResult > 0)
|
||||
// - возвращаем 1
|
||||
return 1;
|
||||
else
|
||||
// - иначе если GUID равны, то возвращаем 0
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
#[Deprecated('Этот класс не имеет свойств. Данные методы не будут работать корректно. / This class has no properties. These methods will not work correctly.', '1.2')]
|
||||
public function CompareByProperty (string $propertyName, mixed $other): int
|
||||
{
|
||||
// Этот класс не имеет свойств, поэтому возвращаем 0
|
||||
return 0;
|
||||
}
|
||||
}
|
24
sources/traits/GUID/GUIDDuplicatedTrait.php
Normal file
24
sources/traits/GUID/GUIDDuplicatedTrait.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\GUID;
|
||||
|
||||
use goodboyalex\php_components_pack\types\GUID;
|
||||
|
||||
/**
|
||||
* Часть кода класса GUID, отвечающая за реализацию интерфейса IDuplicated.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.2
|
||||
*/
|
||||
trait GUIDDuplicatedTrait
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function Duplicate (): object
|
||||
{
|
||||
return GUID::Parse($this->Value);
|
||||
}
|
||||
}
|
22
sources/traits/GUID/GUIDHashableTrait.php
Normal file
22
sources/traits/GUID/GUIDHashableTrait.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\GUID;
|
||||
|
||||
/**
|
||||
* Часть кода класса GUID, отвечающая за реализацию интерфейса IHashable.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.2
|
||||
*/
|
||||
trait GUIDHashableTrait
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function Hash (): string
|
||||
{
|
||||
return md5($this->Value);
|
||||
}
|
||||
}
|
22
sources/traits/GUID/GUIDJsonSerializableTrait.php
Normal file
22
sources/traits/GUID/GUIDJsonSerializableTrait.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\GUID;
|
||||
|
||||
/**
|
||||
* Часть кода класса GUID, отвечающая за реализацию интерфейса JsonSerializable.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.2
|
||||
*/
|
||||
trait GUIDJsonSerializableTrait
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function jsonSerialize (): string
|
||||
{
|
||||
return $this->Value;
|
||||
}
|
||||
}
|
41
sources/traits/GUID/GUIDSerializeTrait.php
Normal file
41
sources/traits/GUID/GUIDSerializeTrait.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\GUID;
|
||||
|
||||
use goodboyalex\php_components_pack\exceptions\TypeException;
|
||||
|
||||
/**
|
||||
* Часть кода класса GUID, отвечающая за реализацию интерфейса ISerializable.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.2
|
||||
*/
|
||||
trait GUIDSerializeTrait
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function Serialize (): string
|
||||
{
|
||||
// Получаем массив
|
||||
$array = $this->ToArray();
|
||||
|
||||
// Преобразуем в JSON
|
||||
return json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* @throws TypeException Если тип не соответствует.
|
||||
*/
|
||||
public function UnSerialize (string $serialized): void
|
||||
{
|
||||
// Преобразуем в массив
|
||||
$array = json_decode($serialized, true, flags: JSON_UNESCAPED_UNICODE);
|
||||
|
||||
// Получаем значение
|
||||
$this->FromArray($array);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user