annotate vendor/symfony/serializer/Mapping/Loader/LoaderChain.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
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 /**
Chris@0 31 * @var LoaderInterface[]
Chris@0 32 */
Chris@0 33 private $loaders;
Chris@0 34
Chris@0 35 /**
Chris@0 36 * Accepts a list of LoaderInterface instances.
Chris@0 37 *
Chris@0 38 * @param LoaderInterface[] $loaders An array of LoaderInterface instances
Chris@0 39 *
Chris@0 40 * @throws MappingException If any of the loaders does not implement LoaderInterface
Chris@0 41 */
Chris@0 42 public function __construct(array $loaders)
Chris@0 43 {
Chris@0 44 foreach ($loaders as $loader) {
Chris@0 45 if (!$loader instanceof LoaderInterface) {
Chris@0 46 throw new MappingException(sprintf('Class %s is expected to implement LoaderInterface', get_class($loader)));
Chris@0 47 }
Chris@0 48 }
Chris@0 49
Chris@0 50 $this->loaders = $loaders;
Chris@0 51 }
Chris@0 52
Chris@0 53 /**
Chris@0 54 * {@inheritdoc}
Chris@0 55 */
Chris@0 56 public function loadClassMetadata(ClassMetadataInterface $metadata)
Chris@0 57 {
Chris@0 58 $success = false;
Chris@0 59
Chris@0 60 foreach ($this->loaders as $loader) {
Chris@0 61 $success = $loader->loadClassMetadata($metadata) || $success;
Chris@0 62 }
Chris@0 63
Chris@0 64 return $success;
Chris@0 65 }
Chris@0 66 }