namespace Elementor\Core\Utils\Api;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
* @var array<array{key: string, error: string}>
private array $errors = [];
public static function make() {
public function add( string $key, string $error ): self {
public function is_empty(): bool {
return empty( $this->errors );
public function all(): array {
public function to_string(): string {
foreach ( $this->errors as $error ) {
$errors[] = $error['key'] . ': ' . $error['error'];
return implode( ', ', $errors );
public function merge( Parse_Errors $errors, ?string $prefix = null ): self {
foreach ( $errors->all() as $error ) {
$new_key = $prefix ? "{$prefix}.{$error['key']}" : $error['key'];
$this->add( $new_key, $error['error'] );