20250712 1.1.1 Beta 4
This commit is contained in:
56
tests/data/D.php
Normal file
56
tests/data/D.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\tests\data;
|
||||
|
||||
use Closure;
|
||||
use goodboyalex\php_components_pack\extensions\TypeExtension;
|
||||
|
||||
class D
|
||||
{
|
||||
public string $stringD;
|
||||
public int $intD;
|
||||
public bool $boolD;
|
||||
public A $a;
|
||||
public B $b;
|
||||
public C $c;
|
||||
|
||||
public function __construct (string $string = "", int $int = 0, bool $bool = false, ?A $a = null, ?B $b = null,
|
||||
?C $c = null)
|
||||
{
|
||||
$this->stringD = $string;
|
||||
$this->intD = $int;
|
||||
$this->boolD = $bool;
|
||||
|
||||
$this->a = $a ?? new A();
|
||||
$this->b = $b ?? new B();
|
||||
$this->c = $c ?? new C();
|
||||
}
|
||||
|
||||
public static function CLOSURE_FROM_ARRAY (): Closure
|
||||
{
|
||||
return fn (array $classArray): object
|
||||
=> $classArray['type_class'] == C::class
|
||||
? self::CLOSURE_FROM_FOR_C($classArray["type_value"]) : TypeExtension::FromArray($classArray);
|
||||
}
|
||||
|
||||
private static function CLOSURE_FROM_FOR_C (string $serializedC): object
|
||||
{
|
||||
$classC = new C();
|
||||
$classC->UnSerialize($serializedC);
|
||||
return $classC;
|
||||
}
|
||||
|
||||
public static function CLOSURE_TO_ARRAY (): Closure
|
||||
{
|
||||
return fn (object $class): array => $class instanceof C ? self::CLOSURE_TO_FOR_C($class)
|
||||
: TypeExtension::ToArray($class);
|
||||
}
|
||||
|
||||
private static function CLOSURE_TO_FOR_C (C $class): array
|
||||
{
|
||||
return [
|
||||
"type_class" => C::class,
|
||||
"type_value" => $class->Serialize()
|
||||
];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user