HEX
Server: LiteSpeed
System: Linux cpir1.prohostdns.com 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP Thu May 7 23:17:13 UTC 2026 x86_64
User: pelakir (2976)
PHP: 8.2.31
Disabled: exec, shell_exec, system, passthru, proc_open, proc_close, proc_terminate, proc_get_status, popen, pclose, pcntl_exec
Upload Files
File: /home/pelakir/www/wp-content/plugins/wordpress-seo/src/schema-aggregator/domain/schema-piece.php
<?php

// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.
namespace Yoast\WP\SEO\Schema_Aggregator\Domain;

/**
 * Represents a piece of schema.org data.
 */
class Schema_Piece {

	/**
	 * The type(s) of the schema piece.
	 *
	 * @var string|array<string>
	 */
	private $type;

	/**
	 * The data of the schema piece.
	 *
	 * @var array<string, string|int|bool>
	 */
	private $data;

	/**
	 * Class constructor.
	 *
	 * @param array<string, string|int|bool> $data The data of the schema piece.
	 * @param string|array<string>           $type The type of the schema piece.
	 */
	public function __construct( array $data, $type ) {
		$this->data = $data;
		$this->type = $type;
	}

	/**
	 * Gets the type of the schema piece.
	 *
	 * @return string|array<string> The type(s) of the schema piece.
	 */
	public function get_type() {
		return $this->type;
	}

	/**
	 * Gets the data of the schema piece.
	 *
	 * @return array<string, string|int|bool> The data of the schema piece.
	 */
	public function get_data(): array {
		return $this->data;
	}

	/**
	 * Gets the ID of the schema piece.
	 *
	 * @return string|null The ID of the schema piece, or null if not set.
	 */
	public function get_id(): ?string {
		return ( $this->data['@id'] ?? null );
	}

	/**
	 * Converts multiple schema pieces to a JSON-LD-encoded graph.
	 *
	 * @return array<string, string|int|bool> The JSON-LD graph representation.
	 */
	public function to_json_ld_graph(): array {
		return [
			'@graph'   => $this->data,
		];
	}
}