annotate vendor/symfony/serializer/Mapping/Loader/LoaderChain.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the Symfony package.
Chris@0 5 *
Chris@0 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Symfony\Component\Serializer\Mapping\Loader;
Chris@0 13
Chris@0 14 use Symfony\Component\Serializer\Exception\MappingException;
Chris@0 15 use Symfony\Component\Serializer\Mapping\ClassMetadataInterface;
Chris@0 16
Chris@0 17 /**
Chris@0 18 * Calls multiple {@link LoaderInterface} instances in a chain.
Chris@0 19 *
Chris@0 20 * This class accepts multiple instances of LoaderInterface to be passed to the
Chris@0 21 * constructor. When {@link loadClassMetadata()} is called, the same method is called
Chris@0 22 * in <em>all</em> of these loaders, regardless of whether any of them was
Chris@0 23 * successful or not.
Chris@0 24 *
Chris@0 25 * @author Bernhard Schussek <bschussek@gmail.com>
Chris@0 26 * @author Kévin Dunglas <dunglas@gmail.com>
Chris@0 27 */
Chris@0 28 class LoaderChain implements LoaderInterface
Chris@0 29 {
Chris@0 30 private $loaders;
Chris@0 31
Chris@0 32 /**
Chris@0 33 * Accepts a list of LoaderInterface instances.
Chris@0 34 *
Chris@0 35 * @param LoaderInterface[] $loaders An array of LoaderInterface instances
Chris@0 36 *
Chris@0 37 * @throws MappingException If any of the loaders does not implement LoaderInterface
Chris@0 38 */
Chris@0 39 public function __construct(array $loaders)
Chris@0 40 {
Chris@0 41 foreach ($loaders as $loader) {
Chris@0 42 if (!$loader instanceof LoaderInterface) {
Chris@14 43 throw new MappingException(sprintf('Class %s is expected to implement LoaderInterface', \get_class($loader)));
Chris@0 44 }
Chris@0 45 }
Chris@0 46
Chris@0 47 $this->loaders = $loaders;
Chris@0 48 }
Chris@0 49
Chris@0 50 /**
Chris@0 51 * {@inheritdoc}
Chris@0 52 */
Chris@0 53 public function loadClassMetadata(ClassMetadataInterface $metadata)
Chris@0 54 {
Chris@0 55 $success = false;
Chris@0 56
Chris@0 57 foreach ($this->loaders as $loader) {
Chris@0 58 $success = $loader->loadClassMetadata($metadata) || $success;
Chris@0 59 }
Chris@0 60
Chris@0 61 return $success;
Chris@0 62 }
Chris@14 63
Chris@14 64 /**
Chris@14 65 * @return LoaderInterface[]
Chris@14 66 */
Chris@14 67 public function getLoaders()
Chris@14 68 {
Chris@14 69 return $this->loaders;
Chris@14 70 }
Chris@0 71 }