Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Validator/AbstractTranslatableValidator.php
Строк: 123
<?php

namespace ConcreteCoreValidator;

/**
 * Class AbstractTranslatableValidator
 * Abstract class for managing translatable requirements and errors.
 *
 * @package ConcreteCoreValidator
 */
abstract class AbstractTranslatableValidator implements TranslatableValidatorInterface
{

    
/**
     * @type array
     */
    
protected $translatable_requirements = array();
    protected 
$translatable_errors = array();

    
/**
     * Get an error string given a code and a passed value
     *
     * @param int   $code
     * @param mixed $value
     * @param mixed $default
     * @return string|mixed Returns a string or $default
     */
    
protected function getErrorString($code$value$default=null)
    {
        if (
array_key_exists($code$this->translatable_errors)) {
            
$resolver $this->translatable_errors[$code];
            if (
$resolver instanceof Closure) {
                return 
$resolver($this$code$value);
            } else {
                return 
$resolver;
            }
        }

        return 
$default;
    }

    
/**
     * Check to see if $value a valid stand in for a translatable string
     *
     * @param $value
     * @return bool
     */
    
protected function isTranslatableStringValueValid($value)
    {
        return 
is_string($value) || $value instanceof Closure;
    }

    
/**
     * Set the requirement string to a mixed value
     * Closure format:
     *    function(TranslatableValidatorInterface $validator, int $code): string
     *
     * @param int $code The error code
     * @param string|Closure $message Either a plain string, or a closure that returns a string
     * @return void
     */
    
public function setRequirementString($code$message)
    {
        if (!
$this->isTranslatableStringValueValid($message)) {
            throw new 
InvalidArgumentException('Invalid translatable string value provided for Validator');
        }

        
$this->translatable_requirements[$code] = $message;
    }

    
/**
     * Set the error string to a string or to a closure
     * Closure format:
     *    function(TranslatableValidatorInterface $validator, int $code, mixed $passed): string
     *
     * where `$passed` is whatever was passed to `ValidatorInterface::isValid`
     *
     * @param int $code The error code
     * @param string|Closure $message Either a plain string, or a closure that returns a string
     * @return void
     */
    
public function setErrorString($code$message)
    {
        if (!
$this->isTranslatableStringValueValid($message)) {
            throw new 
InvalidArgumentException('Invalid translatable string value provided for Validator');
        }

        
$this->translatable_errors[$code] = $message;
    }

    
/**
     * Get the validator requirements in the form of an array keyed by it's respective error code
     *
     * Example:
     *    [ self::E_TOO_SHORT => 'Must be at least 10 characters' ]
     *
     * @return string[]
     */
    
public function getRequirementStrings()
    {
        
$map $this->translatable_requirements;
        foreach (
$map as $key => &$value) {
            if (
$value instanceof Closure) {
                
$value $value($this$key);
            }
        }

        return 
$map;
    }

}
Онлайн: 2
Реклама