allowEmptyWhenRequired = !empty( $options['allowEmptyWhenRequired'] ); } public function validate( $name, $value, array $settings, array $options ) { if ( !$this->allowEmptyWhenRequired && $value === '' && !empty( $settings[ParamValidator::PARAM_REQUIRED] ) ) { throw new ValidationException( $name, $value, $settings, 'missingparam', [] ); } if ( isset( $settings[self::PARAM_MAX_BYTES] ) && strlen( $value ) > $settings[self::PARAM_MAX_BYTES] ) { throw new ValidationException( $name, $value, $settings, 'maxbytes', [ 'maxbytes' => $settings[self::PARAM_MAX_BYTES] ?? '', 'maxchars' => $settings[self::PARAM_MAX_CHARS] ?? '', ] ); } if ( isset( $settings[self::PARAM_MAX_CHARS] ) && mb_strlen( $value, 'UTF-8' ) > $settings[self::PARAM_MAX_CHARS] ) { throw new ValidationException( $name, $value, $settings, 'maxchars', [ 'maxbytes' => $settings[self::PARAM_MAX_BYTES] ?? '', 'maxchars' => $settings[self::PARAM_MAX_CHARS] ?? '', ] ); } return $value; } }