wol-soft/php-json-schema-model-generator

View on GitHub
src/Templates/Validator/ArrayTuple.phptpl

Summary

Maintainability
Test Coverage
is_array($value) && (function (&$items) use (&$invalidTuples, $modelData) {
    {% if generatorConfiguration.collectErrors() %}
        $originalErrorRegistry = $this->_errorRegistry;
    {% endif %}

    $index = 0;
    {% foreach tupleProperties as tuple %}
        // ---------------- validate a single tuple of the array ------------------
        try {
            if ($index === count($items)) {
                return !empty($invalidTuples);
            }

            {% if generatorConfiguration.collectErrors() %}
                $this->_errorRegistry = new {{ viewHelper.getSimpleClassName(generatorConfiguration.getErrorRegistryClass()) }}();
            {% endif %}

            $value = &$items[$index++];
            {{ viewHelper.resolvePropertyDecorator(tuple) }}

            {% foreach tuple.getOrderedValidators() as validator %}
                {{ viewHelper.renderValidator(validator, schema) }}
            {% endforeach %}

            {% if generatorConfiguration.collectErrors() %}
                if ($this->_errorRegistry->getErrors()) {
                    $invalidTuples[$index] = $this->_errorRegistry->getErrors();
                }
            {% endif %}
        } catch (\Exception $e) {
            // collect all errors concerning invalid tuples
            isset($invalidTuples[$index])
                ? $invalidTuples[$index][] = $e
                : $invalidTuples[$index] = [$e];
        }
    {% endforeach %}

    {% if generatorConfiguration.collectErrors() %}
        $this->_errorRegistry = $originalErrorRegistry;
    {% endif %}

    return !empty($invalidTuples);
})($value)