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

Breadcrumb

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

class Factory

Same name in this branch
  1. 11.1.x vendor/phpunit/phpunit/src/Runner/Filter/Factory.php \PHPUnit\Runner\Filter\Factory
  2. 11.1.x vendor/phpunit/php-file-iterator/src/Factory.php \SebastianBergmann\FileIterator\Factory
  3. 11.1.x vendor/sebastian/comparator/src/Factory.php \SebastianBergmann\Comparator\Factory
  4. 11.1.x vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php \Prophecy\Comparator\Factory
  5. 11.1.x vendor/composer/composer/src/Composer/Factory.php \Composer\Factory

Factory for centralize constraint initialization.

Hierarchy

  • class \JsonSchema\Constraints\Factory

Expanded class hierarchy of Factory

5 string references to 'Factory'
FileLoader::registerClasses in vendor/symfony/dependency-injection/Loader/FileLoader.php
Registers a set of classes as services using PSR-4 for discovery.
XmlDumper::addService in vendor/symfony/dependency-injection/Dumper/XmlDumper.php
XmlFileLoader::parseDefinition in vendor/symfony/dependency-injection/Loader/XmlFileLoader.php
Parses an individual Definition.
YamlFileLoader::parseCallable in vendor/symfony/dependency-injection/Loader/YamlFileLoader.php
YamlFileLoader::parseDefinition in vendor/symfony/dependency-injection/Loader/YamlFileLoader.php

File

vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php, line 22

Namespace

JsonSchema\Constraints
View source
class Factory {
    
    /**
     * @var SchemaStorage
     */
    protected $schemaStorage;
    
    /**
     * @var UriRetriever
     */
    protected $uriRetriever;
    
    /**
     * @var int
     */
    private $checkMode = Constraint::CHECK_MODE_NORMAL;
    
    /**
     * @var TypeCheck\TypeCheckInterface[]
     */
    private $typeCheck = array();
    
    /**
     * @var int Validation context
     */
    protected $errorContext = Validator::ERROR_DOCUMENT_VALIDATION;
    
    /**
     * @var array
     */
    protected $constraintMap = array(
        'array' => 'JsonSchema\\Constraints\\CollectionConstraint',
        'collection' => 'JsonSchema\\Constraints\\CollectionConstraint',
        'object' => 'JsonSchema\\Constraints\\ObjectConstraint',
        'type' => 'JsonSchema\\Constraints\\TypeConstraint',
        'undefined' => 'JsonSchema\\Constraints\\UndefinedConstraint',
        'string' => 'JsonSchema\\Constraints\\StringConstraint',
        'number' => 'JsonSchema\\Constraints\\NumberConstraint',
        'enum' => 'JsonSchema\\Constraints\\EnumConstraint',
        'format' => 'JsonSchema\\Constraints\\FormatConstraint',
        'schema' => 'JsonSchema\\Constraints\\SchemaConstraint',
        'validator' => 'JsonSchema\\Validator',
    );
    
    /**
     * @var array<ConstraintInterface>
     */
    private $instanceCache = array();
    
    /**
     * @param SchemaStorage         $schemaStorage
     * @param UriRetrieverInterface $uriRetriever
     * @param int                   $checkMode
     */
    public function __construct(?SchemaStorageInterface $schemaStorage = null, ?UriRetrieverInterface $uriRetriever = null, $checkMode = Constraint::CHECK_MODE_NORMAL) {
        // set provided config options
        $this->setConfig($checkMode);
        $this->uriRetriever = $uriRetriever ?: new UriRetriever();
        $this->schemaStorage = $schemaStorage ?: new SchemaStorage($this->uriRetriever);
    }
    
    /**
     * Set config values
     *
     * @param int $checkMode Set checkMode options - does not preserve existing flags
     */
    public function setConfig($checkMode = Constraint::CHECK_MODE_NORMAL) {
        $this->checkMode = $checkMode;
    }
    
    /**
     * Enable checkMode flags
     *
     * @param int $options
     */
    public function addConfig($options) {
        $this->checkMode |= $options;
    }
    
    /**
     * Disable checkMode flags
     *
     * @param int $options
     */
    public function removeConfig($options) {
        $this->checkMode &= ~$options;
    }
    
    /**
     * Get checkMode option
     *
     * @param int $options Options to get, if null then return entire bitmask
     *
     * @return int
     */
    public function getConfig($options = null) {
        if ($options === null) {
            return $this->checkMode;
        }
        return $this->checkMode & $options;
    }
    
    /**
     * @return UriRetrieverInterface
     */
    public function getUriRetriever() {
        return $this->uriRetriever;
    }
    public function getSchemaStorage() {
        return $this->schemaStorage;
    }
    public function getTypeCheck() {
        if (!isset($this->typeCheck[$this->checkMode])) {
            $this->typeCheck[$this->checkMode] = $this->checkMode & Constraint::CHECK_MODE_TYPE_CAST ? new TypeCheck\LooseTypeCheck() : new TypeCheck\StrictTypeCheck();
        }
        return $this->typeCheck[$this->checkMode];
    }
    
    /**
     * @param string $name
     * @param string $class
     *
     * @return Factory
     */
    public function setConstraintClass($name, $class) {
        // Ensure class exists
        if (!class_exists($class)) {
            throw new InvalidArgumentException('Unknown constraint ' . $name);
        }
        // Ensure class is appropriate
        if (!in_array('JsonSchema\\Constraints\\ConstraintInterface', class_implements($class))) {
            throw new InvalidArgumentException('Invalid class ' . $name);
        }
        $this->constraintMap[$name] = $class;
        return $this;
    }
    
    /**
     * Create a constraint instance for the given constraint name.
     *
     * @param string $constraintName
     *
     * @throws InvalidArgumentException if is not possible create the constraint instance
     *
     * @return ConstraintInterface|ObjectConstraint
     */
    public function createInstanceFor($constraintName) {
        if (!isset($this->constraintMap[$constraintName])) {
            throw new InvalidArgumentException('Unknown constraint ' . $constraintName);
        }
        if (!isset($this->instanceCache[$constraintName])) {
            $this->instanceCache[$constraintName] = new $this->constraintMap[$constraintName]($this);
        }
        return clone $this->instanceCache[$constraintName];
    }
    
    /**
     * Get the error context
     *
     * @return string
     */
    public function getErrorContext() {
        return $this->errorContext;
    }
    
    /**
     * Set the error context
     *
     * @param string $validationContext
     */
    public function setErrorContext($errorContext) {
        $this->errorContext = $errorContext;
    }

}

Members

Title Sort descending Modifiers Object type Summary
Factory::$checkMode private property
Factory::$constraintMap protected property
Factory::$errorContext protected property
Factory::$instanceCache private property
Factory::$schemaStorage protected property
Factory::$typeCheck private property
Factory::$uriRetriever protected property
Factory::addConfig public function Enable checkMode flags
Factory::createInstanceFor public function Create a constraint instance for the given constraint name.
Factory::getConfig public function Get checkMode option
Factory::getErrorContext public function Get the error context
Factory::getSchemaStorage public function
Factory::getTypeCheck public function
Factory::getUriRetriever public function
Factory::removeConfig public function Disable checkMode flags
Factory::setConfig public function Set config values
Factory::setConstraintClass public function
Factory::setErrorContext public function Set the error context
Factory::__construct public function

API Navigation

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