Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. BaseConstraint.php

class BaseConstraint

A more basic constraint definition - used for the public interface to avoid exposing library internals.

Hierarchy

  • class \JsonSchema\Constraints\BaseConstraint

Expanded class hierarchy of BaseConstraint

2 files declare their use of BaseConstraint
SchemaStorage.php in vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php
Validator.php in vendor/justinrainbow/json-schema/src/JsonSchema/Validator.php

File

vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php, line 21

Namespace

JsonSchema\Constraints
View source
class BaseConstraint {
    
    /**
     * @var array Errors
     */
    protected $errors = array();
    
    /**
     * @var int All error types which have occurred
     */
    protected $errorMask = Validator::ERROR_NONE;
    
    /**
     * @var Factory
     */
    protected $factory;
    
    /**
     * @param Factory $factory
     */
    public function __construct(?Factory $factory = null) {
        $this->factory = $factory ?: new Factory();
    }
    public function addError(?JsonPointer $path, $message, $constraint = '', ?array $more = null) {
        $error = array(
            'property' => $this->convertJsonPointerIntoPropertyPath($path ?: new JsonPointer('')),
            'pointer' => ltrim(strval($path ?: new JsonPointer('')), '#'),
            'message' => $message,
            'constraint' => $constraint,
            'context' => $this->factory
                ->getErrorContext(),
        );
        if ($this->factory
            ->getConfig(Constraint::CHECK_MODE_EXCEPTIONS)) {
            throw new ValidationException(sprintf('Error validating %s: %s', $error['pointer'], $error['message']));
        }
        if (is_array($more) && count($more) > 0) {
            $error += $more;
        }
        $this->errors[] = $error;
        $this->errorMask |= $error['context'];
    }
    public function addErrors(array $errors) {
        if ($errors) {
            $this->errors = array_merge($this->errors, $errors);
            $errorMask =& $this->errorMask;
            array_walk($errors, function ($error) use (&$errorMask) {
                if (isset($error['context'])) {
                    $errorMask |= $error['context'];
                }
            });
        }
    }
    public function getErrors($errorContext = Validator::ERROR_ALL) {
        if ($errorContext === Validator::ERROR_ALL) {
            return $this->errors;
        }
        return array_filter($this->errors, function ($error) use ($errorContext) {
            if ($errorContext & $error['context']) {
                return true;
            }
        });
    }
    public function numErrors($errorContext = Validator::ERROR_ALL) {
        if ($errorContext === Validator::ERROR_ALL) {
            return count($this->errors);
        }
        return count($this->getErrors($errorContext));
    }
    public function isValid() {
        return !$this->getErrors();
    }
    
    /**
     * Clears any reported errors.  Should be used between
     * multiple validation checks.
     */
    public function reset() {
        $this->errors = array();
        $this->errorMask = Validator::ERROR_NONE;
    }
    
    /**
     * Get the error mask
     *
     * @return int
     */
    public function getErrorMask() {
        return $this->errorMask;
    }
    
    /**
     * Recursively cast an associative array to an object
     *
     * @param array $array
     *
     * @return object
     */
    public static function arrayToObjectRecursive($array) {
        $json = json_encode($array);
        if (json_last_error() !== \JSON_ERROR_NONE) {
            $message = 'Unable to encode schema array as JSON';
            if (function_exists('json_last_error_msg')) {
                $message .= ': ' . json_last_error_msg();
            }
            throw new InvalidArgumentException($message);
        }
        return (object) json_decode($json);
    }

}

Members

Title Sort descending Modifiers Object type Summary
BaseConstraint::$errorMask protected property
BaseConstraint::$errors protected property
BaseConstraint::$factory protected property
BaseConstraint::addError public function
BaseConstraint::addErrors public function
BaseConstraint::arrayToObjectRecursive public static function Recursively cast an associative array to an object
BaseConstraint::getErrorMask public function Get the error mask
BaseConstraint::getErrors public function
BaseConstraint::isValid public function
BaseConstraint::numErrors public function
BaseConstraint::reset public function Clears any reported errors. Should be used between
multiple validation checks.
BaseConstraint::__construct public function

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal