98aa57ce8024b137c56a0d6c5032fe2d83724387
[yaffs-website] / vendor / symfony / validator / Tests / Fixtures / FakeMetadataFactory.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\Validator\Tests\Fixtures;
13
14 use Symfony\Component\Validator\Exception\NoSuchMetadataException;
15 use Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface;
16 use Symfony\Component\Validator\MetadataInterface;
17
18 class FakeMetadataFactory implements MetadataFactoryInterface
19 {
20     protected $metadatas = array();
21
22     public function getMetadataFor($class)
23     {
24         $hash = null;
25
26         if (is_object($class)) {
27             $hash = spl_object_hash($class);
28             $class = get_class($class);
29         }
30
31         if (!is_string($class)) {
32             throw new NoSuchMetadataException(sprintf('No metadata for type %s', gettype($class)));
33         }
34
35         if (!isset($this->metadatas[$class])) {
36             if (isset($this->metadatas[$hash])) {
37                 return $this->metadatas[$hash];
38             }
39
40             throw new NoSuchMetadataException(sprintf('No metadata for "%s"', $class));
41         }
42
43         return $this->metadatas[$class];
44     }
45
46     public function hasMetadataFor($class)
47     {
48         $hash = null;
49
50         if (is_object($class)) {
51             $hash = spl_object_hash($class);
52             $class = get_class($class);
53         }
54
55         if (!is_string($class)) {
56             return false;
57         }
58
59         return isset($this->metadatas[$class]) || isset($this->metadatas[$hash]);
60     }
61
62     public function addMetadata($metadata)
63     {
64         $this->metadatas[$metadata->getClassName()] = $metadata;
65     }
66
67     public function addMetadataForValue($value, MetadataInterface $metadata)
68     {
69         $key = is_object($value) ? spl_object_hash($value) : $value;
70         $this->metadatas[$key] = $metadata;
71     }
72 }