<?php

namespace KimaAI\Exceptions;

use RuntimeException;

/**
 * Exception for attempting a mutation on properties that are made readonly through magic getters and setters.
 */
class ForbiddenPropertyMutationException extends RuntimeException {

  /**
   * Creates a Forbidden_Property_Mutation_Exception exception when an attempt is made
   * to assign a value to an immutable property.
   *
   * @param string $property_name The name of the immutable property.
   *
   * @return ForbiddenPropertyMutationException The exception.
   */
  public static function cannotSetBecausePropertyIsImmutable($property_name) {
    return new self(\sprintf('Setting property $%s is not supported.', esc_html($property_name)));
  }

  /**
   * Creates a Forbidden_Property_Mutation_Exception exception when an attempt is made to unset an immutable property.
   *
   * @param string $property_name The name of the immutable property.
   *
   * @return ForbiddenPropertyMutationException The exception.
   */
  public static function cannotUnsetBecausePropertyIsImmutable($property_name) {
    return new self(\sprintf('Unsetting property $%s is not supported.', esc_html($property_name)));
  }
}
