1<?php
2/**
3 * Zend Framework (http://framework.zend.com/)
4 *
5 * @link      http://github.com/zendframework/zf2 for the canonical source repository
6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
7 * @license   http://framework.zend.com/license/new-bsd New BSD License
8 */
9
10namespace Zend\Validator;
11
12class StaticValidator
13{
14    /**
15     * @var ValidatorPluginManager
16     */
17    protected static $plugins;
18
19    /**
20     * Set plugin manager to use for locating validators
21     *
22     * @param  ValidatorPluginManager|null $plugins
23     * @return void
24     */
25    public static function setPluginManager(ValidatorPluginManager $plugins = null)
26    {
27        // Don't share by default to allow different arguments on subsequent calls
28        if ($plugins instanceof ValidatorPluginManager) {
29            $plugins->setShareByDefault(false);
30        }
31        static::$plugins = $plugins;
32    }
33
34    /**
35     * Get plugin manager for locating validators
36     *
37     * @return ValidatorPluginManager
38     */
39    public static function getPluginManager()
40    {
41        if (null === static::$plugins) {
42            static::setPluginManager(new ValidatorPluginManager());
43        }
44        return static::$plugins;
45    }
46
47    /**
48     * @param  mixed    $value
49     * @param  string   $classBaseName
50     * @param  array    $args          OPTIONAL
51     * @return bool
52     */
53    public static function execute($value, $classBaseName, array $args = array())
54    {
55        $plugins = static::getPluginManager();
56
57        $validator = $plugins->get($classBaseName, $args);
58        return $validator->isValid($value);
59    }
60}
61