Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/zendframework/zend-validator/src/Explode.php
Строк: 176
<?php
/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

namespace ZendValidator;

use 
Traversable;
use 
ZendStdlibArrayUtils;

class 
Explode extends AbstractValidator implements ValidatorPluginManagerAwareInterface
{
    const 
INVALID 'explodeInvalid';

    protected 
$pluginManager;

    
/**
     * @var array
     */
    
protected $messageTemplates = array(
        
self::INVALID => "Invalid type given",
    );

    
/**
     * @var array
     */
    
protected $messageVariables = array();

    
/**
     * @var string
     */
    
protected $valueDelimiter ',';

    
/**
     * @var ValidatorInterface
     */
    
protected $validator;

    
/**
     * @var bool
     */
    
protected $breakOnFirstFailure false;

    
/**
     * Sets the delimiter string that the values will be split upon
     *
     * @param string $delimiter
     * @return Explode
     */
    
public function setValueDelimiter($delimiter)
    {
        
$this->valueDelimiter $delimiter;
        return 
$this;
    }

    
/**
     * Returns the delimiter string that the values will be split upon
     *
     * @return string
     */
    
public function getValueDelimiter()
    {
        return 
$this->valueDelimiter;
    }

    
/**
     * Set validator plugin manager
     *
     * @param ValidatorPluginManager $pluginManager
     */
    
public function setValidatorPluginManager(ValidatorPluginManager $pluginManager)
    {
        
$this->pluginManager $pluginManager;
    }

    
/**
     * Get validator plugin manager
     *
     * @return ValidatorPluginManager
     */
    
public function getValidatorPluginManager()
    {
        if (!
$this->pluginManager) {
            
$this->setValidatorPluginManager(new ValidatorPluginManager());
        }

        return 
$this->pluginManager;
    }

    
/**
     * Sets the Validator for validating each value
     *
     * @param ValidatorInterface|array $validator
     * @throws ExceptionRuntimeException
     * @return Explode
     */
    
public function setValidator($validator)
    {
        if (
is_array($validator)) {
            if (!isset(
$validator['name'])) {
                throw new 
ExceptionRuntimeException(
                    
'Invalid validator specification provided; does not include "name" key'
                
);
            }
            
$name $validator['name'];
            
$options = isset($validator['options']) ? $validator['options'] : array();
            
$validator $this->getValidatorPluginManager()->get($name$options);
        }

        if (!
$validator instanceof ValidatorInterface) {
            throw new 
ExceptionRuntimeException(
                
'Invalid validator given'
            
);
        }

        
$this->validator $validator;
        return 
$this;
    }

    
/**
     * Gets the Validator for validating each value
     *
     * @return ValidatorInterface
     */
    
public function getValidator()
    {
        return 
$this->validator;
    }

    
/**
     * Set break on first failure setting
     *
     * @param  bool $break
     * @return Explode
     */
    
public function setBreakOnFirstFailure($break)
    {
        
$this->breakOnFirstFailure = (bool) $break;
        return 
$this;
    }

    
/**
     * Get break on first failure setting
     *
     * @return bool
     */
    
public function isBreakOnFirstFailure()
    {
        return 
$this->breakOnFirstFailure;
    }

    
/**
     * Defined by ZendValidatorValidatorInterface
     *
     * Returns true if all values validate true
     *
     * @param  mixed $value
     * @return bool
     * @throws ExceptionRuntimeException
     */
    
public function isValid($value)
    {
        
$this->setValue($value);

        if (
$value instanceof Traversable) {
            
$value ArrayUtils::iteratorToArray($value);
        }

        if (
is_array($value)) {
            
$values $value;
        } elseif (
is_string($value)) {
            
$delimiter $this->getValueDelimiter();
            
// Skip explode if delimiter is null,
            // used when value is expected to be either an
            // array when multiple values and a string for
            // single values (ie. MultiCheckbox form behavior)
            
$values = (null !== $delimiter)
                      ? 
explode($this->valueDelimiter$value)
                      : array(
$value);
        } else {
            
$values = array($value);
        }

        
$retval    true;
        
$messages  = array();
        
$validator $this->getValidator();

        if (!
$validator) {
            throw new 
ExceptionRuntimeException(sprintf(
                
'%s expects a validator to be set; none given',
                
__METHOD__
            
));
        }

        foreach (
$values as $value) {
            if (!
$validator->isValid($value)) {
                
$messages[] = $validator->getMessages();
                
$retval false;

                if (
$this->isBreakOnFirstFailure()) {
                    break;
                }
            }
        }

        
$this->abstractOptions['messages'] = $messages;

        return 
$retval;
    }
}
Онлайн: 3
Реклама