You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.5 KiB

<?php
namespace Darksparrow\DeegraphInteractions\DataStructures;
use DateTime;
class DeegraphNodeDetails
{
public string $ID;
public DateTime $CreatedAt;
public string $CreatorID;
public array $OtherProperties;
public function __construct(array $nodeDetails)
{
// $this->ID = $nodeDetails["@id"];
// $this->CreatedAt = new DateTime($nodeDetails["@created"]);
// $this->CreatorID = $nodeDetails["@creator"];
foreach($nodeDetails as $key=>$value) {
switch($key)
{
case "@id":
$this->ID = $value;
break;
case "@created":
$this->CreatedAt = new DateTime($value);
break;
case "@creator":
$this->CreatorID = $value;
break;
default:
$this->OtherProperties[$key] = $value;
break;
}
}
}
public function asJSON(): string
{
$createdAt = null;
if (isset($this->CreatedAt))
$createdAt = $this->CreatedAt->format(format: 'Y-m-d\TH:i:s.v\Z');
$builder = [
"@id" => $this->ID ?? null,
"@created" => $createdAt,
"@creator" => $this->CreatorID ?? null,
];
foreach($this->OtherProperties as $key=>$value) {
$builder[$key] = $value;
}
return json_encode($builder);
}
}