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); } }