*/ private ResourceIdentifier|array|null $data; /** * @param array $links * @param array $meta * @return self */ public static function toOne(?ResourceIdentifier $data, array $links = [], array $meta = []) { return new self($data, $links, $meta); } /** * @param array $data * @param array $links * @param array $meta * @return self */ public static function toMany(array $data, array $links = [], array $meta = []) { return new self($data, $links, $meta); } /** * @param ResourceIdentifier|null|array $data * @param array $links * @param array $meta */ private function __construct(ResourceIdentifier|array|null $data, array $links = [], array $meta = []) { $this->data = $data; $this->links = $links; $this->meta = $meta; } /** * @return array{data: ResourceIdentifier|null|array, meta?: stdClass, links?: stdClass} */ public function jsonSerialize(): array { return [ 'data' => $this->data, ...$this->meta ? ['meta' => (object) $this->meta] : [], ...$this->links ? ['links' => (object) self::parseLinks($this->links)] : [], ]; } }