* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Resource\Provider\Node; /** * Abstract Node Properties Base Class * * Provides common implementation for node properties * * @since 2025.05.01 */ abstract class NodePropertiesBaseAbstract implements NodePropertiesBaseInterface { protected array $data = []; public function __construct(array $data) { if (!isset($data[static::JSON_PROPERTY_TYPE])) { $data[static::JSON_PROPERTY_TYPE] = static::JSON_TYPE; } if (!isset($data[static::JSON_PROPERTY_VERSION])) { $data[static::JSON_PROPERTY_VERSION] = 1; } $this->data = $data; } /** * @inheritDoc */ public function jsonSerialize(): array { return $this->data; } /** * @inheritDoc */ public function type(): string { return $this->data[static::JSON_PROPERTY_TYPE]; } /** * @inheritDoc */ public function version(): int { return $this->data[static::JSON_PROPERTY_VERSION]; } }